Ignore:
Timestamp:
10/16/21 18:10:51 (3 years ago)
Author:
Ema <ema_spirova@…>
Branches:
master
Children:
eed0bf8
Parents:
6a3a178
Message:

adding new components

Location:
trip-planner-front/node_modules/@angular/material
Files:
12 added
38 edited

Legend:

Unmodified
Added
Removed
  • trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/badge.js

    r6a3a178 rfa375fe  
    1919const _MatBadgeBase = mixinDisabled(class {
    2020});
    21 const BADGE_CONTENT_CLASS = 'mat-badge-content';
    2221/** Directive to display a text badge. */
    2322class MatBadge extends _MatBadgeBase {
     
    2928        this._renderer = _renderer;
    3029        this._animationMode = _animationMode;
     30        /** Whether the badge has any content. */
     31        this._hasContent = false;
    3132        this._color = 'primary';
    3233        this._overlap = true;
     
    4041        /** Unique id for the badge */
    4142        this._id = nextId++;
    42         /** Whether the OnInit lifecycle hook has run yet */
    43         this._isInitialized = false;
    4443        if (typeof ngDevMode === 'undefined' || ngDevMode) {
    4544            const nativeElement = _elementRef.nativeElement;
     
    6059        this._overlap = coerceBooleanProperty(val);
    6160    }
    62     /** The content for the badge */
    63     get content() {
    64         return this._content;
    65     }
    66     set content(newContent) {
    67         this._updateRenderedContent(newContent);
    68     }
    6961    /** Message used to describe the decorated element via aria-describedby */
    7062    get description() { return this._description; }
    7163    set description(newDescription) {
    72         this._updateHostAriaDescription(newDescription);
     64        if (newDescription !== this._description) {
     65            const badgeElement = this._badgeElement;
     66            this._updateHostAriaDescription(newDescription, this._description);
     67            this._description = newDescription;
     68            if (badgeElement) {
     69                newDescription ? badgeElement.setAttribute('aria-label', newDescription) :
     70                    badgeElement.removeAttribute('aria-label');
     71            }
     72        }
    7373    }
    7474    /** Whether the badge is hidden. */
     
    8585        return this.position.indexOf('before') === -1;
    8686    }
     87    ngOnChanges(changes) {
     88        const contentChange = changes['content'];
     89        if (contentChange) {
     90            const value = contentChange.currentValue;
     91            this._hasContent = value != null && `${value}`.trim().length > 0;
     92            this._updateTextContent();
     93        }
     94    }
     95    ngOnDestroy() {
     96        const badgeElement = this._badgeElement;
     97        if (badgeElement) {
     98            if (this.description) {
     99                this._ariaDescriber.removeDescription(badgeElement, this.description);
     100            }
     101            // When creating a badge through the Renderer, Angular will keep it in an index.
     102            // We have to destroy it ourselves, otherwise it'll be retained in memory.
     103            if (this._renderer.destroyNode) {
     104                this._renderer.destroyNode(badgeElement);
     105            }
     106        }
     107    }
    87108    /**
    88      * Gets the element into which the badge's content is being rendered. Undefined if the element
    89      * hasn't been created (e.g. if the badge doesn't have content).
     109     * Gets the element into which the badge's content is being rendered.
     110     * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).
    90111     */
    91112    getBadgeElement() {
    92113        return this._badgeElement;
    93114    }
    94     ngOnInit() {
    95         // We may have server-side rendered badge that we need to clear.
    96         // We need to do this in ngOnInit because the full content of the component
    97         // on which the badge is attached won't necessarily be in the DOM until this point.
    98         this._clearExistingBadges();
    99         if (this.content && !this._badgeElement) {
     115    /** Injects a span element into the DOM with the content. */
     116    _updateTextContent() {
     117        if (!this._badgeElement) {
    100118            this._badgeElement = this._createBadgeElement();
    101             this._updateRenderedContent(this.content);
    102         }
    103         this._isInitialized = true;
    104     }
    105     ngOnDestroy() {
    106         // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.
    107         // We have to destroy it ourselves, otherwise it'll be retained in memory.
    108         if (this._renderer.destroyNode) {
    109             this._renderer.destroyNode(this._badgeElement);
    110         }
    111         this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);
     119        }
     120        else {
     121            this._badgeElement.textContent = this._stringifyContent();
     122        }
     123        return this._badgeElement;
    112124    }
    113125    /** Creates the badge element */
     
    115127        const badgeElement = this._renderer.createElement('span');
    116128        const activeClass = 'mat-badge-active';
     129        const contentClass = 'mat-badge-content';
     130        // Clear any existing badges which may have persisted from a server-side render.
     131        this._clearExistingBadges(contentClass);
    117132        badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);
    118         // The badge is aria-hidden because we don't want it to appear in the page's navigation
    119         // flow. Instead, we use the badge to describe the decorated element with aria-describedby.
    120         badgeElement.setAttribute('aria-hidden', 'true');
    121         badgeElement.classList.add(BADGE_CONTENT_CLASS);
     133        badgeElement.classList.add(contentClass);
     134        badgeElement.textContent = this._stringifyContent();
    122135        if (this._animationMode === 'NoopAnimations') {
    123136            badgeElement.classList.add('_mat-animation-noopable');
     137        }
     138        if (this.description) {
     139            badgeElement.setAttribute('aria-label', this.description);
    124140        }
    125141        this._elementRef.nativeElement.appendChild(badgeElement);
     
    137153        return badgeElement;
    138154    }
    139     /** Update the text content of the badge element in the DOM, creating the element if necessary. */
    140     _updateRenderedContent(newContent) {
    141         const newContentNormalized = `${newContent !== null && newContent !== void 0 ? newContent : ''}`.trim();
    142         // Don't create the badge element if the directive isn't initialized because we want to
    143         // append the badge element to the *end* of the host element's content for backwards
    144         // compatibility.
    145         if (this._isInitialized && newContentNormalized && !this._badgeElement) {
    146             this._badgeElement = this._createBadgeElement();
    147         }
    148         if (this._badgeElement) {
    149             this._badgeElement.textContent = newContentNormalized;
    150         }
    151         this._content = newContentNormalized;
    152     }
    153     /** Updates the host element's aria description via AriaDescriber. */
    154     _updateHostAriaDescription(newDescription) {
    155         this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);
     155    /** Sets the aria-label property on the element */
     156    _updateHostAriaDescription(newDescription, oldDescription) {
     157        // ensure content available before setting label
     158        const content = this._updateTextContent();
     159        if (oldDescription) {
     160            this._ariaDescriber.removeDescription(content, oldDescription);
     161        }
    156162        if (newDescription) {
    157             this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);
    158         }
    159         this._description = newDescription;
     163            this._ariaDescriber.describe(content, newDescription);
     164        }
    160165    }
    161166    /** Adds css theme class given the color to the component host */
    162167    _setColor(colorPalette) {
    163         const classList = this._elementRef.nativeElement.classList;
    164         classList.remove(`mat-badge-${this._color}`);
    165         if (colorPalette) {
    166             classList.add(`mat-badge-${colorPalette}`);
     168        if (colorPalette !== this._color) {
     169            const classList = this._elementRef.nativeElement.classList;
     170            if (this._color) {
     171                classList.remove(`mat-badge-${this._color}`);
     172            }
     173            if (colorPalette) {
     174                classList.add(`mat-badge-${colorPalette}`);
     175            }
    167176        }
    168177    }
    169178    /** Clears any existing badges that might be left over from server-side rendering. */
    170     _clearExistingBadges() {
    171         // Only check direct children of this host element in order to avoid deleting
    172         // any badges that might exist in descendant elements.
    173         const badges = this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);
    174         for (const badgeElement of Array.from(badges)) {
    175             if (badgeElement !== this._badgeElement) {
    176                 badgeElement.remove();
    177             }
    178         }
     179    _clearExistingBadges(cssClass) {
     180        const element = this._elementRef.nativeElement;
     181        let childCount = element.children.length;
     182        // Use a reverse while, because we'll be removing elements from the list as we're iterating.
     183        while (childCount--) {
     184            const currentChild = element.children[childCount];
     185            if (currentChild.classList.contains(cssClass)) {
     186                element.removeChild(currentChild);
     187            }
     188        }
     189    }
     190    /** Gets the string representation of the badge content. */
     191    _stringifyContent() {
     192        // Convert null and undefined to an empty string which is consistent
     193        // with how Angular handles them in inside template interpolations.
     194        const content = this.content;
     195        return content == null ? '' : `${content}`;
    179196    }
    180197}
    181198MatBadge.ɵfac = function MatBadge_Factory(t) { return new (t || MatBadge)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.AriaDescriber), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8)); };
    182199MatBadge.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MatBadge, selectors: [["", "matBadge", ""]], hostAttrs: [1, "mat-badge"], hostVars: 20, hostBindings: function MatBadge_HostBindings(rf, ctx) { if (rf & 2) {
    183         ɵngcc0.ɵɵclassProp("mat-badge-overlap", ctx.overlap)("mat-badge-above", ctx.isAbove())("mat-badge-below", !ctx.isAbove())("mat-badge-before", !ctx.isAfter())("mat-badge-after", ctx.isAfter())("mat-badge-small", ctx.size === "small")("mat-badge-medium", ctx.size === "medium")("mat-badge-large", ctx.size === "large")("mat-badge-hidden", ctx.hidden || !ctx.content)("mat-badge-disabled", ctx.disabled);
    184     } }, inputs: { disabled: ["matBadgeDisabled", "disabled"], position: ["matBadgePosition", "position"], size: ["matBadgeSize", "size"], color: ["matBadgeColor", "color"], overlap: ["matBadgeOverlap", "overlap"], content: ["matBadge", "content"], description: ["matBadgeDescription", "description"], hidden: ["matBadgeHidden", "hidden"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });
     200        ɵngcc0.ɵɵclassProp("mat-badge-overlap", ctx.overlap)("mat-badge-above", ctx.isAbove())("mat-badge-below", !ctx.isAbove())("mat-badge-before", !ctx.isAfter())("mat-badge-after", ctx.isAfter())("mat-badge-small", ctx.size === "small")("mat-badge-medium", ctx.size === "medium")("mat-badge-large", ctx.size === "large")("mat-badge-hidden", ctx.hidden || !ctx._hasContent)("mat-badge-disabled", ctx.disabled);
     201    } }, inputs: { disabled: ["matBadgeDisabled", "disabled"], position: ["matBadgePosition", "position"], size: ["matBadgeSize", "size"], color: ["matBadgeColor", "color"], overlap: ["matBadgeOverlap", "overlap"], description: ["matBadgeDescription", "description"], hidden: ["matBadgeHidden", "hidden"], content: ["matBadge", "content"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });
    185202MatBadge.ctorParameters = () => [
    186203    { type: NgZone },
     
    214231                    '[class.mat-badge-medium]': 'size === "medium"',
    215232                    '[class.mat-badge-large]': 'size === "large"',
    216                     '[class.mat-badge-hidden]': 'hidden || !content',
     233                    '[class.mat-badge-hidden]': 'hidden || !_hasContent',
    217234                    '[class.mat-badge-disabled]': 'disabled'
    218235                }
     
    235252            type: Input,
    236253            args: ['matBadgeOverlap']
    237         }], content: [{
    238             type: Input,
    239             args: ['matBadge']
    240254        }], description: [{
    241255            type: Input,
     
    244258            type: Input,
    245259            args: ['matBadgeHidden']
     260        }], content: [{
     261            type: Input,
     262            args: ['matBadge']
    246263        }] }); })();
    247264
  • trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/badge.js.map

    r6a3a178 rfa375fe  
    1 {"version":3,"file":"badge.js","sources":["../../../../../../src/material/badge/badge.ts","../../../../../../src/material/badge/badge-module.ts","../../../../../../src/material/badge/public-api.ts","../../../../../../src/material/badge/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AriaDescriber} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Renderer2,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled, ThemePalette} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextId = 0;\n\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {});\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n    'above after' | 'above before' | 'below before' | 'below after' |\n    'before' | 'after' | 'above' | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n\n/** Directive to display a text badge. */\n@Directive({\n  selector: '[matBadge]',\n  inputs: ['disabled: matBadgeDisabled'],\n  host: {\n    'class': 'mat-badge',\n    '[class.mat-badge-overlap]': 'overlap',\n    '[class.mat-badge-above]': 'isAbove()',\n    '[class.mat-badge-below]': '!isAbove()',\n    '[class.mat-badge-before]': '!isAfter()',\n    '[class.mat-badge-after]': 'isAfter()',\n    '[class.mat-badge-small]': 'size === \"small\"',\n    '[class.mat-badge-medium]': 'size === \"medium\"',\n    '[class.mat-badge-large]': 'size === \"large\"',\n    '[class.mat-badge-hidden]': 'hidden || !content',\n    '[class.mat-badge-disabled]': 'disabled',\n  },\n})\nexport class MatBadge extends _MatBadgeBase implements OnInit, OnDestroy, CanDisable {\n  /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n  @Input('matBadgeColor')\n  get color(): ThemePalette { return this._color; }\n  set color(value: ThemePalette) {\n    this._setColor(value);\n    this._color = value;\n  }\n  private _color: ThemePalette = 'primary';\n\n  /** Whether the badge should overlap its contents or not */\n  @Input('matBadgeOverlap')\n  get overlap(): boolean { return this._overlap; }\n  set overlap(val: boolean) {\n    this._overlap = coerceBooleanProperty(val);\n  }\n  private _overlap: boolean = true;\n\n  /**\n   * Position the badge should reside.\n   * Accepts any combination of 'above'|'below' and 'before'|'after'\n   */\n  @Input('matBadgePosition') position: MatBadgePosition = 'above after';\n\n  /** The content for the badge */\n  @Input('matBadge')\n  get content(): string | number | undefined | null {\n    return this._content;\n  }\n  set content(newContent: string | number | undefined | null) {\n    this._updateRenderedContent(newContent);\n  }\n  private _content: string | number | undefined | null;\n\n  /** Message used to describe the decorated element via aria-describedby */\n  @Input('matBadgeDescription')\n  get description(): string { return this._description; }\n  set description(newDescription: string) {\n    this._updateHostAriaDescription(newDescription);\n  }\n  private _description: string;\n\n  /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n  @Input('matBadgeSize') size: MatBadgeSize = 'medium';\n\n  /** Whether the badge is hidden. */\n  @Input('matBadgeHidden')\n  get hidden(): boolean { return this._hidden; }\n  set hidden(val: boolean) {\n    this._hidden = coerceBooleanProperty(val);\n  }\n  private _hidden: boolean;\n\n  /** Unique id for the badge */\n  _id: number = nextId++;\n\n  /** Visible badge element. */\n  private _badgeElement: HTMLElement | undefined;\n\n  /** Whether the OnInit lifecycle hook has run yet */\n  private _isInitialized = false;\n\n  constructor(\n      private _ngZone: NgZone,\n      private _elementRef: ElementRef<HTMLElement>,\n      private _ariaDescriber: AriaDescriber,\n      private _renderer: Renderer2,\n      @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n      super();\n\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        const nativeElement = _elementRef.nativeElement;\n        if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n          throw Error('matBadge must be attached to an element node.');\n        }\n      }\n    }\n\n  /** Whether the badge is above the host or not */\n  isAbove(): boolean {\n    return this.position.indexOf('below') === -1;\n  }\n\n  /** Whether the badge is after the host or not */\n  isAfter(): boolean {\n    return this.position.indexOf('before') === -1;\n  }\n\n  /**\n   * Gets the element into which the badge's content is being rendered. Undefined if the element\n   * hasn't been created (e.g. if the badge doesn't have content).\n   */\n  getBadgeElement(): HTMLElement | undefined {\n    return this._badgeElement;\n  }\n\n  ngOnInit() {\n    // We may have server-side rendered badge that we need to clear.\n    // We need to do this in ngOnInit because the full content of the component\n    // on which the badge is attached won't necessarily be in the DOM until this point.\n    this._clearExistingBadges();\n\n    if (this.content && !this._badgeElement) {\n      this._badgeElement = this._createBadgeElement();\n      this._updateRenderedContent(this.content);\n    }\n\n    this._isInitialized = true;\n  }\n\n  ngOnDestroy() {\n    // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n    // We have to destroy it ourselves, otherwise it'll be retained in memory.\n    if (this._renderer.destroyNode) {\n      this._renderer.destroyNode(this._badgeElement);\n    }\n\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n  }\n\n  /** Creates the badge element */\n  private _createBadgeElement(): HTMLElement {\n    const badgeElement = this._renderer.createElement('span');\n    const activeClass = 'mat-badge-active';\n\n    badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n\n    // The badge is aria-hidden because we don't want it to appear in the page's navigation\n    // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n    badgeElement.setAttribute('aria-hidden', 'true');\n    badgeElement.classList.add(BADGE_CONTENT_CLASS);\n\n    if (this._animationMode === 'NoopAnimations') {\n      badgeElement.classList.add('_mat-animation-noopable');\n    }\n\n    this._elementRef.nativeElement.appendChild(badgeElement);\n\n    // animate in after insertion\n    if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n      this._ngZone.runOutsideAngular(() => {\n        requestAnimationFrame(() => {\n          badgeElement.classList.add(activeClass);\n        });\n      });\n    } else {\n      badgeElement.classList.add(activeClass);\n    }\n\n    return badgeElement;\n  }\n\n  /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n  private _updateRenderedContent(newContent: string | number | undefined | null): void {\n    const newContentNormalized: string = `${newContent ?? ''}`.trim();\n\n    // Don't create the badge element if the directive isn't initialized because we want to\n    // append the badge element to the *end* of the host element's content for backwards\n    // compatibility.\n    if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n      this._badgeElement = this._createBadgeElement();\n    }\n\n    if (this._badgeElement) {\n      this._badgeElement.textContent = newContentNormalized;\n    }\n\n    this._content = newContentNormalized;\n  }\n\n  /** Updates the host element's aria description via AriaDescriber. */\n  private _updateHostAriaDescription(newDescription: string): void {\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n    if (newDescription) {\n      this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n    }\n    this._description = newDescription;\n  }\n\n  /** Adds css theme class given the color to the component host */\n  private _setColor(colorPalette: ThemePalette) {\n    const classList = this._elementRef.nativeElement.classList;\n    classList.remove(`mat-badge-${this._color}`);\n    if (colorPalette) {\n      classList.add(`mat-badge-${colorPalette}`);\n    }\n  }\n\n  /** Clears any existing badges that might be left over from server-side rendering. */\n  private _clearExistingBadges() {\n    // Only check direct children of this host element in order to avoid deleting\n    // any badges that might exist in descendant elements.\n    const badges =\n        this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);\n    for (const badgeElement of Array.from(badges)) {\n      if (badgeElement !== this._badgeElement) {\n        badgeElement.remove();\n      }\n    }\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_hidden: BooleanInput;\n  static ngAcceptInputType_overlap: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatBadge} from './badge';\n\n\n@NgModule({\n  imports: [\n    A11yModule,\n    MatCommonModule\n  ],\n  exports: [MatBadge, MatCommonModule],\n  declarations: [MatBadge],\n})\nexport class MatBadgeModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './badge-module';\nexport * from './badge';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}
     1{"version":3,"file":"badge.js","sources":["../../../../../../src/material/badge/badge.ts","../../../../../../src/material/badge/badge-module.ts","../../../../../../src/material/badge/public-api.ts","../../../../../../src/material/badge/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AriaDescriber} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Renderer2,\n  SimpleChanges,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled, ThemePalette} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextId = 0;\n\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {});\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n    'above after' | 'above before' | 'below before' | 'below after' |\n    'before' | 'after' | 'above' | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\n/** Directive to display a text badge. */\n@Directive({\n  selector: '[matBadge]',\n  inputs: ['disabled: matBadgeDisabled'],\n  host: {\n    'class': 'mat-badge',\n    '[class.mat-badge-overlap]': 'overlap',\n    '[class.mat-badge-above]': 'isAbove()',\n    '[class.mat-badge-below]': '!isAbove()',\n    '[class.mat-badge-before]': '!isAfter()',\n    '[class.mat-badge-after]': 'isAfter()',\n    '[class.mat-badge-small]': 'size === \"small\"',\n    '[class.mat-badge-medium]': 'size === \"medium\"',\n    '[class.mat-badge-large]': 'size === \"large\"',\n    '[class.mat-badge-hidden]': 'hidden || !_hasContent',\n    '[class.mat-badge-disabled]': 'disabled',\n  },\n})\nexport class MatBadge extends _MatBadgeBase implements OnDestroy, OnChanges, CanDisable {\n  /** Whether the badge has any content. */\n  _hasContent = false;\n\n  /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n  @Input('matBadgeColor')\n  get color(): ThemePalette { return this._color; }\n  set color(value: ThemePalette) {\n    this._setColor(value);\n    this._color = value;\n  }\n  private _color: ThemePalette = 'primary';\n\n  /** Whether the badge should overlap its contents or not */\n  @Input('matBadgeOverlap')\n  get overlap(): boolean { return this._overlap; }\n  set overlap(val: boolean) {\n    this._overlap = coerceBooleanProperty(val);\n  }\n  private _overlap: boolean = true;\n\n  /**\n   * Position the badge should reside.\n   * Accepts any combination of 'above'|'below' and 'before'|'after'\n   */\n  @Input('matBadgePosition') position: MatBadgePosition = 'above after';\n\n  /** The content for the badge */\n  @Input('matBadge') content: string | number | undefined | null;\n\n  /** Message used to describe the decorated element via aria-describedby */\n  @Input('matBadgeDescription')\n  get description(): string { return this._description; }\n  set description(newDescription: string) {\n    if (newDescription !== this._description) {\n      const badgeElement = this._badgeElement;\n      this._updateHostAriaDescription(newDescription, this._description);\n      this._description = newDescription;\n\n      if (badgeElement) {\n        newDescription ? badgeElement.setAttribute('aria-label', newDescription) :\n            badgeElement.removeAttribute('aria-label');\n      }\n    }\n  }\n  private _description: string;\n\n  /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n  @Input('matBadgeSize') size: MatBadgeSize = 'medium';\n\n  /** Whether the badge is hidden. */\n  @Input('matBadgeHidden')\n  get hidden(): boolean { return this._hidden; }\n  set hidden(val: boolean) {\n    this._hidden = coerceBooleanProperty(val);\n  }\n  private _hidden: boolean;\n\n  /** Unique id for the badge */\n  _id: number = nextId++;\n\n  private _badgeElement: HTMLElement | undefined;\n\n  constructor(\n      private _ngZone: NgZone,\n      private _elementRef: ElementRef<HTMLElement>,\n      private _ariaDescriber: AriaDescriber,\n      private _renderer: Renderer2,\n      @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n      super();\n\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        const nativeElement = _elementRef.nativeElement;\n        if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n          throw Error('matBadge must be attached to an element node.');\n        }\n      }\n    }\n\n  /** Whether the badge is above the host or not */\n  isAbove(): boolean {\n    return this.position.indexOf('below') === -1;\n  }\n\n  /** Whether the badge is after the host or not */\n  isAfter(): boolean {\n    return this.position.indexOf('before') === -1;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const contentChange = changes['content'];\n\n    if (contentChange) {\n      const value = contentChange.currentValue;\n      this._hasContent = value != null && `${value}`.trim().length > 0;\n      this._updateTextContent();\n    }\n  }\n\n  ngOnDestroy() {\n    const badgeElement = this._badgeElement;\n\n    if (badgeElement) {\n      if (this.description) {\n        this._ariaDescriber.removeDescription(badgeElement, this.description);\n      }\n\n      // When creating a badge through the Renderer, Angular will keep it in an index.\n      // We have to destroy it ourselves, otherwise it'll be retained in memory.\n      if (this._renderer.destroyNode) {\n        this._renderer.destroyNode(badgeElement);\n      }\n    }\n  }\n\n  /**\n   * Gets the element into which the badge's content is being rendered.\n   * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).\n   */\n  getBadgeElement(): HTMLElement | undefined {\n    return this._badgeElement;\n  }\n\n  /** Injects a span element into the DOM with the content. */\n  private _updateTextContent(): HTMLSpanElement {\n    if (!this._badgeElement) {\n      this._badgeElement = this._createBadgeElement();\n    } else {\n      this._badgeElement.textContent = this._stringifyContent();\n    }\n    return this._badgeElement;\n  }\n\n  /** Creates the badge element */\n  private _createBadgeElement(): HTMLElement {\n    const badgeElement = this._renderer.createElement('span');\n    const activeClass = 'mat-badge-active';\n    const contentClass = 'mat-badge-content';\n\n    // Clear any existing badges which may have persisted from a server-side render.\n    this._clearExistingBadges(contentClass);\n    badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n    badgeElement.classList.add(contentClass);\n    badgeElement.textContent = this._stringifyContent();\n\n    if (this._animationMode === 'NoopAnimations') {\n      badgeElement.classList.add('_mat-animation-noopable');\n    }\n\n    if (this.description) {\n      badgeElement.setAttribute('aria-label', this.description);\n    }\n\n    this._elementRef.nativeElement.appendChild(badgeElement);\n\n    // animate in after insertion\n    if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n      this._ngZone.runOutsideAngular(() => {\n        requestAnimationFrame(() => {\n          badgeElement.classList.add(activeClass);\n        });\n      });\n    } else {\n      badgeElement.classList.add(activeClass);\n    }\n\n    return badgeElement;\n  }\n\n  /** Sets the aria-label property on the element */\n  private _updateHostAriaDescription(newDescription: string, oldDescription: string): void {\n    // ensure content available before setting label\n    const content = this._updateTextContent();\n\n    if (oldDescription) {\n      this._ariaDescriber.removeDescription(content, oldDescription);\n    }\n\n    if (newDescription) {\n      this._ariaDescriber.describe(content, newDescription);\n    }\n  }\n\n  /** Adds css theme class given the color to the component host */\n  private _setColor(colorPalette: ThemePalette) {\n    if (colorPalette !== this._color) {\n      const classList = this._elementRef.nativeElement.classList;\n      if (this._color) {\n        classList.remove(`mat-badge-${this._color}`);\n      }\n      if (colorPalette) {\n        classList.add(`mat-badge-${colorPalette}`);\n      }\n    }\n  }\n\n  /** Clears any existing badges that might be left over from server-side rendering. */\n  private _clearExistingBadges(cssClass: string) {\n    const element = this._elementRef.nativeElement;\n    let childCount = element.children.length;\n\n    // Use a reverse while, because we'll be removing elements from the list as we're iterating.\n    while (childCount--) {\n      const currentChild = element.children[childCount];\n\n      if (currentChild.classList.contains(cssClass)) {\n        element.removeChild(currentChild);\n      }\n    }\n  }\n\n  /** Gets the string representation of the badge content. */\n  private _stringifyContent(): string {\n    // Convert null and undefined to an empty string which is consistent\n    // with how Angular handles them in inside template interpolations.\n    const content = this.content;\n    return content == null ? '' : `${content}`;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_hidden: BooleanInput;\n  static ngAcceptInputType_overlap: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatBadge} from './badge';\n\n\n@NgModule({\n  imports: [\n    A11yModule,\n    MatCommonModule\n  ],\n  exports: [MatBadge, MatCommonModule],\n  declarations: [MatBadge],\n})\nexport class MatBadgeModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './badge-module';\nexport * from './badge';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}
  • trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/core.js

    r6a3a178 rfa375fe  
    4343} }
    4444const _c2 = ["*"];
    45 const VERSION$1 = new Version('12.2.9');
     45const VERSION$1 = new Version('12.2.10');
    4646
    4747/**
     
    7777// Can be removed once the Material primary entry-point no longer
    7878// re-exports all secondary entry-points
    79 const VERSION = new Version('12.2.9');
     79const VERSION = new Version('12.2.10');
    8080/** @docs-private */
    8181function MATERIAL_SANITY_CHECKS_FACTORY() {
  • trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/core.js.map

    r6a3a178 rfa375fe  
    1 {"version":3,"file":"core.js","sources":["../../../../../../src/material/core/version.ts","../../../../../../src/material/core/animation/animation.ts","../../../../../../src/material/core/common-behaviors/common-module.ts","../../../../../../src/material/core/common-behaviors/disabled.ts","../../../../../../src/material/core/common-behaviors/color.ts","../../../../../../src/material/core/common-behaviors/disable-ripple.ts","../../../../../../src/material/core/common-behaviors/tabindex.ts","../../../../../../src/material/core/common-behaviors/error-state.ts","../../../../../../src/material/core/common-behaviors/initialized.ts","../../../../../../src/material/core/common-behaviors/index.ts","../../../../../../src/material/core/datetime/date-adapter.ts","../../../../../../src/material/core/datetime/date-formats.ts","../../../../../../src/material/core/datetime/native-date-adapter.ts","../../../../../../src/material/core/datetime/native-date-formats.ts","../../../../../../src/material/core/datetime/index.ts","../../../../../../src/material/core/error/error-options.ts","../../../../../../src/material/core/line/line.ts","../../../../../../src/material/core/ripple/ripple-ref.ts","../../../../../../src/material/core/ripple/ripple-renderer.ts","../../../../../../src/material/core/ripple/ripple.ts","../../../../../../src/material/core/ripple/index.ts","../../../../../../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../../../../src/material/core/selection/index.ts","../../../../../../src/material/core/option/option-parent.ts","../../../../../../src/material/core/option/optgroup.ts","../../../../../../src/material/core/option/option.ts","../../../../../../src/material/core/option/index.ts","../../../../../../src/material/core/public-api.ts","../../../../../../src/material/core/index.ts"],"names":["VERSION","CDK_VERSION"],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('12.2.9');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport class AnimationCurves {\n  static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n  static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n  static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n  static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n\n/** @docs-private */\nexport class AnimationDurations {\n  static COMPLEX = '375ms';\n  static ENTERING = '225ms';\n  static EXITING = '195ms';\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {HighContrastModeDetector} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Inject, InjectionToken, isDevMode, NgModule, Optional, Version} from '@angular/core';\nimport {VERSION as CDK_VERSION} from '@angular/cdk';\nimport {DOCUMENT} from '@angular/common';\nimport {_isTestEnvironment} from '@angular/cdk/platform';\n\n// Private version constant to circumvent test/build issues,\n// i.e. avoid core to depend on the @angular/material primary entry-point\n// Can be removed once the Material primary entry-point no longer\n// re-exports all secondary entry-points\nconst VERSION = new Version('12.2.9');\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): SanityChecks {\n  return true;\n}\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<SanityChecks>('mat-sanity-checks', {\n  providedIn: 'root',\n  factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n\n/**\n * Possible sanity checks that can be enabled. If set to\n * true/false, all checks will be enabled/disabled.\n */\nexport type SanityChecks = boolean | GranularSanityChecks;\n\n/** Object that can be used to configure the sanity checks granularly. */\nexport interface GranularSanityChecks {\n  doctype: boolean;\n  theme: boolean;\n  version: boolean;\n}\n\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\n@NgModule({\n  imports: [BidiModule],\n  exports: [BidiModule],\n})\nexport class MatCommonModule {\n  /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n  private _hasDoneGlobalChecks = false;\n\n  /** Configured sanity checks. */\n  private _sanityChecks: SanityChecks;\n\n  /** Used to reference correct document/window */\n  protected _document: Document;\n\n  constructor(\n      highContrastModeDetector: HighContrastModeDetector,\n      @Optional() @Inject(MATERIAL_SANITY_CHECKS) sanityChecks: any,\n      @Inject(DOCUMENT) document: any) {\n    this._document = document;\n\n    // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n    // in MatCommonModule.\n    highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n\n    // Note that `_sanityChecks` is typed to `any`, because AoT\n    // throws an error if we use the `SanityChecks` type directly.\n    this._sanityChecks = sanityChecks;\n\n    if (!this._hasDoneGlobalChecks) {\n      this._checkDoctypeIsDefined();\n      this._checkThemeIsPresent();\n      this._checkCdkVersionMatch();\n      this._hasDoneGlobalChecks = true;\n    }\n  }\n\n  /** Gets whether a specific sanity check is enabled. */\n  private _checkIsEnabled(name: keyof GranularSanityChecks): boolean {\n    // TODO(crisbeto): we can't use `ngDevMode` here yet, because ViewEngine apps might not support\n    // it. Since these checks can have performance implications and they aren't tree shakeable\n    // in their current form, we can leave the `isDevMode` check in for now.\n    // tslint:disable-next-line:ban\n    if (!isDevMode() || _isTestEnvironment()) {\n      return false;\n    }\n\n    if (typeof this._sanityChecks === 'boolean') {\n      return this._sanityChecks;\n    }\n\n    return !!this._sanityChecks[name];\n  }\n\n  private _checkDoctypeIsDefined(): void {\n    if (this._checkIsEnabled('doctype') && !this._document.doctype) {\n      console.warn(\n        'Current document does not have a doctype. This may cause ' +\n        'some Angular Material components not to behave as expected.'\n      );\n    }\n  }\n\n  private _checkThemeIsPresent(): void {\n    // We need to assert that the `body` is defined, because these checks run very early\n    // and the `body` won't be defined if the consumer put their scripts in the `head`.\n    if (!this._checkIsEnabled('theme') || !this._document.body ||\n        typeof getComputedStyle !== 'function') {\n      return;\n    }\n\n    const testElement = this._document.createElement('div');\n\n    testElement.classList.add('mat-theme-loaded-marker');\n    this._document.body.appendChild(testElement);\n\n    const computedStyle = getComputedStyle(testElement);\n\n    // In some situations the computed style of the test element can be null. For example in\n    // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n    // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n    if (computedStyle && computedStyle.display !== 'none') {\n      console.warn(\n        'Could not find Angular Material core theme. Most Material ' +\n        'components may not work as expected. For more info refer ' +\n        'to the theming guide: https://material.angular.io/guide/theming'\n      );\n    }\n\n    this._document.body.removeChild(testElement);\n  }\n\n  /** Checks whether the material version matches the cdk version */\n  private _checkCdkVersionMatch(): void {\n    if (this._checkIsEnabled('version') && VERSION.full !== CDK_VERSION.full) {\n      console.warn(\n          'The Angular Material version (' + VERSION.full + ') does not match ' +\n          'the Angular CDK version (' + CDK_VERSION.full + ').\\n' +\n          'Please ensure the versions of these two packages exactly match.'\n      );\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisable {\n  /** Whether the component is disabled. */\n  disabled: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n  return class extends base {\n    private _disabled: boolean = false;\n\n    get disabled() { return this._disabled; }\n    set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AbstractConstructor, Constructor} from './constructor';\nimport {ElementRef} from '@angular/core';\n\n/** @docs-private */\nexport interface CanColor {\n  /** Theme color palette for the component. */\n  color: ThemePalette;\n\n  /** Default color to fall back to if no value is set. */\n  defaultColor: ThemePalette | undefined;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\n/** @docs-private */\nexport interface HasElementRef {\n  _elementRef: ElementRef;\n}\n\n/** Possible color palette values. */\nexport type ThemePalette = 'primary' | 'accent' | 'warn' | undefined;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T;\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T {\n  return class extends base {\n    private _color: ThemePalette;\n    defaultColor = defaultColor;\n\n    get color(): ThemePalette { return this._color; }\n    set color(value: ThemePalette) {\n      const colorPalette = value || this.defaultColor;\n\n      if (colorPalette !== this._color) {\n        if (this._color) {\n          this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n        }\n        if (colorPalette) {\n          this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n        }\n\n        this._color = colorPalette;\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n\n      // Set the default color that can be specified from the mixin.\n      this.color = defaultColor;\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n  /** Whether ripples are disabled. */\n  disableRipple: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableRippleCtor = Constructor<CanDisableRipple> &\n                                   AbstractConstructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends AbstractConstructor<{}>>(base: T):\n  CanDisableRippleCtor & T;\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): CanDisableRippleCtor & T {\n  return class extends base {\n    private _disableRipple: boolean = false;\n\n    /** Whether the ripple effect is disabled or not. */\n    get disableRipple() { return this._disableRipple; }\n    set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Constructor, AbstractConstructor} from './constructor';\nimport {CanDisable} from './disabled';\n\n\n/** @docs-private */\nexport interface HasTabIndex {\n  /** Tabindex of the component. */\n  tabIndex: number;\n\n  /** Tabindex to which to fall back to if no value is set. */\n  defaultTabIndex: number;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(base: T,\n  defaultTabIndex?: number): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n  base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n  return class extends base implements HasTabIndex {\n    private _tabIndex: number = defaultTabIndex;\n    defaultTabIndex = defaultTabIndex;\n\n    get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\n    set tabIndex(value: number) {\n      // If the specified tabIndex value is null or undefined, fall back to the default value.\n      this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n  /** Emits whenever the component state changes. */\n  readonly stateChanges: Subject<void>;\n  /** Updates the error state based on the provided error state matcher. */\n  updateErrorState(): void;\n  /** Whether the component is in an error state. */\n  errorState: boolean;\n  /** An object used to control the error state of the component. */\n  errorStateMatcher: ErrorStateMatcher;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState> &\n                                      AbstractConstructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n  _parentFormGroup: FormGroupDirective;\n  _parentForm: NgForm;\n  _defaultErrorStateMatcher: ErrorStateMatcher;\n  ngControl: NgControl;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T {\n  return class extends base {\n    // This class member exists as an interop with `MatFormFieldControl` which expects\n    // a public `stateChanges` observable to emit whenever the form field should be updated.\n    // The description is not specifically mentioning the error state, as classes using this\n    // mixin can/should emit an event in other cases too.\n    /** Emits whenever the component state changes. */\n    readonly stateChanges = new Subject<void>();\n\n    /** Whether the component is in an error state. */\n    errorState: boolean = false;\n\n    /** An object used to control the error state of the component. */\n    errorStateMatcher: ErrorStateMatcher;\n\n    /** Updates the error state based on the provided error state matcher. */\n    updateErrorState() {\n      const oldState = this.errorState;\n      const parent = this._parentFormGroup || this._parentForm;\n      const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n      const control = this.ngControl ? this.ngControl.control as FormControl : null;\n      const newState = matcher.isErrorState(control, parent);\n\n      if (newState !== oldState) {\n        this.errorState = newState;\n        this.stateChanges.next();\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Observable, Subscriber} from 'rxjs';\nimport {Constructor} from './constructor';\n\n\n/**\n * Mixin that adds an initialized property to a directive which, when subscribed to, will emit a\n * value once markInitialized has been called, which should be done during the ngOnInit function.\n * If the subscription is made after it has already been marked as initialized, then it will trigger\n * an emit immediately.\n * @docs-private\n */\nexport interface HasInitialized {\n  /** Stream that emits once during the directive/component's ngOnInit. */\n  initialized: Observable<void>;\n\n  /**\n   * Sets the state as initialized and must be called during ngOnInit to notify subscribers that\n   * the directive has been initialized.\n   * @docs-private\n   */\n  _markInitialized: () => void;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasInitializedCtor = Constructor<HasInitialized>;\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nexport function mixinInitialized<T extends Constructor<{}>>(base: T):\n    HasInitializedCtor & T {\n  return class extends base {\n    /** Whether this directive has been marked as initialized. */\n    _isInitialized = false;\n\n    /**\n     * List of subscribers that subscribed before the directive was initialized. Should be notified\n     * during _markInitialized. Set to null after pending subscribers are notified, and should\n     * not expect to be populated after.\n     */\n    _pendingSubscribers: Subscriber<void>[] | null = [];\n\n    /**\n     * Observable stream that emits when the directive initializes. If already initialized, the\n     * subscriber is stored to be notified once _markInitialized is called.\n     */\n    initialized = new Observable<void>(subscriber => {\n      // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n      // when _markInitialized is called.\n      if (this._isInitialized) {\n        this._notifySubscriber(subscriber);\n      } else {\n        this._pendingSubscribers!.push(subscriber);\n      }\n    });\n\n    constructor(...args: any[]) { super(...args); }\n\n    /**\n     * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n     * of ngOnInit.\n     * @docs-private\n     */\n    _markInitialized(): void {\n      if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('This directive has already been marked as initialized and ' +\n            'should not be called twice.');\n      }\n\n      this._isInitialized = true;\n\n      this._pendingSubscribers!.forEach(this._notifySubscriber);\n      this._pendingSubscribers = null;\n    }\n\n    /** Emits and completes the subscriber stream (should only emit once). */\n    _notifySubscriber(subscriber: Subscriber<void>): void {\n      subscriber.next();\n      subscriber.complete();\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport {\n  MatCommonModule,\n  MATERIAL_SANITY_CHECKS,\n  SanityChecks,\n  GranularSanityChecks,\n} from './common-module';\nexport {CanDisable, CanDisableCtor, mixinDisabled} from './disabled';\nexport {CanColor, CanColorCtor, mixinColor, ThemePalette} from './color';\nexport {CanDisableRipple, CanDisableRippleCtor, mixinDisableRipple} from './disable-ripple';\nexport {HasTabIndex, HasTabIndexCtor, mixinTabIndex} from './tabindex';\nexport {CanUpdateErrorState, CanUpdateErrorStateCtor, mixinErrorState} from './error-state';\nexport {HasInitialized, HasInitializedCtor, mixinInitialized} from './initialized';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n  providedIn: 'root',\n  factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n  return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n  /** The locale to use for all dates. */\n  protected locale: any;\n  protected readonly _localeChanges = new Subject<void>();\n\n  /** A stream that emits when the locale changes. */\n  readonly localeChanges: Observable<void> = this._localeChanges;\n\n  /**\n   * Gets the year component of the given date.\n   * @param date The date to extract the year from.\n   * @returns The year component.\n   */\n  abstract getYear(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   * @param date The date to extract the month from.\n   * @returns The month component (0-indexed, 0 = January).\n   */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the date of the month component of the given date.\n   * @param date The date to extract the date of the month from.\n   * @returns The month component (1-indexed, 1 = first of month).\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the day of the week component of the given date.\n   * @param date The date to extract the day of the week from.\n   * @returns The month component (0-indexed, 0 = Sunday).\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Gets a list of names for the months.\n   * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n   * @returns An ordered list of all month names, starting with January.\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets a list of names for the dates of the month.\n   * @returns An ordered list of all date of the month names, starting with '1'.\n   */\n  abstract getDateNames(): string[];\n\n  /**\n   * Gets a list of names for the days of the week.\n   * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n   * @returns An ordered list of all weekday names, starting with Sunday.\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets the name for the year of the given date.\n   * @param date The date to get the year name for.\n   * @returns The name of the given year (e.g. '2017').\n   */\n  abstract getYearName(date: D): string;\n\n  /**\n   * Gets the first day of the week.\n   * @returns The first day of the week (0-indexed, 0 = Sunday).\n   */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   * @param date The date whose month should be checked.\n   * @returns The number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: D): number;\n\n  /**\n   * Clones the given date.\n   * @param date The date to clone\n   * @returns A new date equal to the given date.\n   */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n   * month and date.\n   * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n   * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n   * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n   * @returns The new date, or null if invalid.\n   */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Gets today's date.\n   * @returns Today's date.\n   */\n  abstract today(): D;\n\n  /**\n   * Parses a date from a user-provided value.\n   * @param value The value to parse.\n   * @param parseFormat The expected format of the value being parsed\n   *     (type is implementation-dependent).\n   * @returns The parsed date.\n   */\n  abstract parse(value: any, parseFormat: any): D | null;\n\n  /**\n   * Formats a date as a string according to the given format.\n   * @param date The value to format.\n   * @param displayFormat The format to use to display the date as a string.\n   * @returns The formatted date string.\n   */\n  abstract format(date: D, displayFormat: any): string;\n\n  /**\n   * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n   * calendar for each year and then finding the closest date in the new month. For example when\n   * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n   * @param date The date to add years to.\n   * @param years The number of years to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of years added.\n   */\n  abstract addCalendarYears(date: D, years: number): D;\n\n  /**\n   * Adds the given number of months to the date. Months are counted as if flipping a page on the\n   * calendar for each month and then finding the closest date in the new month. For example when\n   * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n   * @param date The date to add months to.\n   * @param months The number of months to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of months added.\n   */\n  abstract addCalendarMonths(date: D, months: number): D;\n\n  /**\n   * Adds the given number of days to the date. Days are counted as if moving one cell on the\n   * calendar for each day.\n   * @param date The date to add days to.\n   * @param days The number of days to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of days added.\n   */\n  abstract addCalendarDays(date: D, days: number): D;\n\n  /**\n   * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n   * This method is used to generate date strings that are compatible with native HTML attributes\n   * such as the `min` or `max` attribute of an `<input>`.\n   * @param date The date to get the ISO date string for.\n   * @returns The ISO date string date string.\n   */\n  abstract toIso8601(date: D): string;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateAdapter.\n   * @param obj The object to check\n   * @returns Whether the object is a date instance.\n   */\n  abstract isDateInstance(obj: any): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   * @param date The date to check.\n   * @returns Whether the date is valid.\n   */\n  abstract isValid(date: D): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   * @returns An invalid date.\n   */\n  abstract invalid(): D;\n\n /**\n  * Given a potential date object, returns that same date object if it is\n  * a valid date, or `null` if it's not a valid date.\n  * @param obj The object to check.\n  * @returns A date or `null`.\n  */\n  getValidDateOrNull(obj: unknown): D | null {\n    return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n   * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   * @param value The value to be deserialized into a date object.\n   * @returns The deserialized date object, either a valid date, null if the value can be\n   *     deserialized into a null date (e.g. the empty string), or an invalid date.\n   */\n  deserialize(value: any): D | null {\n    if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   * @param locale The new locale.\n   */\n  setLocale(locale: any) {\n    this.locale = locale;\n    this._localeChanges.next();\n  }\n\n  /**\n   * Compares two dates.\n   * @param first The first date to compare.\n   * @param second The second date to compare.\n   * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n   *     a number greater than 0 if the first date is later.\n   */\n  compareDate(first: D, second: D): number {\n    return this.getYear(first) - this.getYear(second) ||\n        this.getMonth(first) - this.getMonth(second) ||\n        this.getDate(first) - this.getDate(second);\n  }\n\n  /**\n   * Checks if two dates are equal.\n   * @param first The first date to check.\n   * @param second The second date to check.\n   * @returns Whether the two dates are equal.\n   *     Null dates are considered equal to other null dates.\n   */\n  sameDate(first: D | null, second: D | null): boolean {\n    if (first && second) {\n      let firstValid = this.isValid(first);\n      let secondValid = this.isValid(second);\n      if (firstValid && secondValid) {\n        return !this.compareDate(first, second);\n      }\n      return firstValid == secondValid;\n    }\n    return first == second;\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   * @param date The date to clamp.\n   * @param min The minimum value to allow. If null or omitted no min is enforced.\n   * @param max The maximum value to allow. If null or omitted no max is enforced.\n   * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n   *     otherwise `date`.\n   */\n  clampDate(date: D, min?: D | null, max?: D | null): D {\n    if (min && this.compareDate(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compareDate(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n\nexport type MatDateFormats = {\n  parse: {\n    dateInput: any\n  },\n  display: {\n    dateInput: any,\n    monthLabel?: any,\n    monthYearLabel: any,\n    dateA11yLabel: any,\n    monthYearA11yLabel: any,\n  }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n  SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n  SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n  'long': [\n    'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n    'October', 'November', 'December'\n  ],\n  'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n  'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n    /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   *\n   * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n   * getting the string representation of a Date object from its utc representation. We're keeping\n   * it here for sometime, just for precaution, in case we decide to revert some of these changes\n   * though.\n   */\n  useUtcForDisplay: boolean = true;\n\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string, platform: Platform) {\n    super();\n    super.setLocale(matDateLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\n  }\n\n  getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  getDayOfWeek(date: Date): number {\n    return date.getDay();\n  }\n\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n      return range(12, i =>\n          this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n    }\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  getDateNames(): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n      return range(31, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DATE_NAMES;\n  }\n\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n      return range(7, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  getYearName(date: Date): string {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return String(this.getYear(date));\n  }\n\n  getFirstDayOfWeek(): number {\n    // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n    return 0;\n  }\n\n  getNumDaysInMonth(date: Date): number {\n    return this.getDate(this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + 1, 0));\n  }\n\n  clone(date: Date): Date {\n    return new Date(date.getTime());\n  }\n\n  createDate(year: number, month: number, date: number): Date {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      // Check for invalid month and date (except upper bound on date which we have to check after\n      // creating the Date).\n      if (month < 0 || month > 11) {\n        throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n      }\n\n      if (date < 1) {\n        throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n      }\n    }\n\n    let result = this._createDateWithOverflow(year, month, date);\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result;\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  parse(value: any): Date | null {\n    // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n    // parameters.\n    if (typeof value == 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value)) : null;\n  }\n\n  format(date: Date, displayFormat: Object): string {\n    if (!this.isValid(date)) {\n      throw Error('NativeDateAdapter: Cannot format invalid date.');\n    }\n\n    if (SUPPORTS_INTL_API) {\n      // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n      // if we attempt to format a date whose year is less than 1 or greater than 9999.\n      if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n        date = this.clone(date);\n        date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n      }\n\n      displayFormat = {...displayFormat, timeZone: 'utc'};\n\n      const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return this._stripDirectionalityCharacters(date.toDateString());\n  }\n\n  addCalendarYears(date: Date, years: number): Date {\n    return this.addCalendarMonths(date, years * 12);\n  }\n\n  addCalendarMonths(date: Date, months: number): Date {\n    let newDate = this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n    // It's possible to wind up in the wrong month if the original month has more days than the new\n    // month. In this case we want to go to the last day of the desired month.\n    // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n    // guarantee this.\n    if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n      newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n    }\n\n    return newDate;\n  }\n\n  addCalendarDays(date: Date, days: number): Date {\n    return this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n  }\n\n  toIso8601(date: Date): string {\n    return [\n      date.getUTCFullYear(),\n      this._2digit(date.getUTCMonth() + 1),\n      this._2digit(date.getUTCDate())\n    ].join('-');\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  override deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        let date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  isDateInstance(obj: any) {\n    return obj instanceof Date;\n  }\n\n  isValid(date: Date) {\n    return !isNaN(date.getTime());\n  }\n\n  invalid(): Date {\n    return new Date(NaN);\n  }\n\n  /** Creates a date but allows the month and date to overflow. */\n  private _createDateWithOverflow(year: number, month: number, date: number) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setFullYear` and `setHours` instead.\n    const d = new Date();\n    d.setFullYear(year, month, date);\n    d.setHours(0, 0, 0, 0);\n    return d;\n  }\n\n  /**\n   * Pads a number to make it two digits.\n   * @param n The number to pad.\n   * @returns The padded number.\n   */\n  private _2digit(n: number) {\n    return ('00' + n).slice(-2);\n  }\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   * @param str The string to strip direction characters from.\n   * @returns The stripped string.\n   */\n  private _stripDirectionalityCharacters(str: string) {\n    return str.replace(/[\\u200e\\u200f]/g, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n   *    timeZone set to 'utc' to work fine.\n   * @param date Date from which we want to get the string representation according to dtf\n   * @returns A Date object with its UTC representation based on the passed in date info\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n    const d = new Date();\n    d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    return dtf.format(d);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {MatDateFormats} from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n  parse: {\n    dateInput: null,\n  },\n  display: {\n    dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n    monthYearLabel: {year: 'numeric', month: 'short'},\n    dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n    monthYearA11yLabel: {year: 'numeric', month: 'long'},\n  }\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n\n@NgModule({\n  imports: [PlatformModule],\n  providers: [\n    {provide: DateAdapter, useClass: NativeDateAdapter},\n  ],\n})\nexport class NativeDateModule {}\n\n\n@NgModule({\n  imports: [NativeDateModule],\n  providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS}],\n})\nexport class MatNativeDateModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, FormControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n  }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  NgModule,\n  Directive,\n  ElementRef,\n  QueryList,\n} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n  selector: '[mat-line], [matLine]',\n  host: {'class': 'mat-line'}\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(lines: QueryList<unknown>, element: ElementRef<HTMLElement>,\n                         prefix = 'mat') {\n  // Note: doesn't need to unsubscribe, because `changes`\n  // gets completed by Angular when the view is destroyed.\n  lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n    setClass(element, `${prefix}-2-line`, false);\n    setClass(element, `${prefix}-3-line`, false);\n    setClass(element, `${prefix}-multi-line`, false);\n\n    if (length === 2 || length === 3) {\n      setClass(element, `${prefix}-${length}-line`, true);\n    } else if (length > 3) {\n      setClass(element, `${prefix}-multi-line`, true);\n    }\n  });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n  const classList = element.nativeElement.classList;\n  isAdd ? classList.add(className) : classList.remove(className);\n}\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatLine, MatCommonModule],\n  declarations: [MatLine],\n})\nexport class MatLineModule { }\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** Possible states for a ripple element. */\nexport const enum RippleState {\n  FADING_IN, VISIBLE, FADING_OUT, HIDDEN\n}\n\nexport type RippleConfig = {\n  color?: string;\n  centered?: boolean;\n  radius?: number;\n  persistent?: boolean;\n  animation?: RippleAnimationConfig;\n  terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n  /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n  enterDuration?: number;\n  /** Duration in milliseconds for the exit animation (fade-out). */\n  exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n\n  /** Current state of the ripple. */\n  state: RippleState = RippleState.HIDDEN;\n\n  constructor(\n    private _renderer: {fadeOutRipple(ref: RippleRef): void},\n    /** Reference to the ripple HTML element. */\n    public element: HTMLElement,\n    /** Ripple configuration used for the ripple. */\n    public config: RippleConfig) {\n  }\n\n  /** Fades out the ripple element. */\n  fadeOut() {\n    this._renderer.fadeOutRipple(this);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 {ElementRef, NgZone} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n  /** Configuration for ripples that are launched on pointer down. */\n  rippleConfig: RippleConfig;\n  /** Whether ripples on pointer down should be disabled. */\n  rippleDisabled: boolean;\n}\n\n\n// TODO: import these values from `@material/ripple` eventually.\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n  enterDuration: 225,\n  exitDuration: 150\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options that apply to all the event listeners that are bound by the ripple renderer. */\nconst passiveEventOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n  /** Element where the ripples are being added to. */\n  private _containerElement: HTMLElement;\n\n  /** Element which triggers the ripple elements on mouse events. */\n  private _triggerElement: HTMLElement | null;\n\n  /** Whether the pointer is currently down or not. */\n  private _isPointerDown = false;\n\n  /** Set of currently active ripple references. */\n  private _activeRipples = new Set<RippleRef>();\n\n  /** Latest non-persistent ripple that was triggered. */\n  private _mostRecentTransientRipple: RippleRef | null;\n\n  /** Time in milliseconds when the last touchstart event happened. */\n  private _lastTouchStartEvent: number;\n\n  /** Whether pointer-up event listeners have been registered. */\n  private _pointerUpEventsRegistered = false;\n\n  /**\n   * Cached dimensions of the ripple container. Set when the first\n   * ripple is shown and cleared once no more ripples are visible.\n   */\n  private _containerRect: ClientRect | null;\n\n  constructor(private _target: RippleTarget,\n              private _ngZone: NgZone,\n              elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n              platform: Platform) {\n\n    // Only do anything if we're on the browser.\n    if (platform.isBrowser) {\n      this._containerElement = coerceElement(elementOrElementRef);\n    }\n  }\n\n  /**\n   * Fades in a ripple at the given coordinates.\n   * @param x Coordinate within the element, along the X axis at which to start the ripple.\n   * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n   * @param config Extra ripple options.\n   */\n  fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n    const containerRect = this._containerRect =\n                          this._containerRect || this._containerElement.getBoundingClientRect();\n    const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n    if (config.centered) {\n      x = containerRect.left + containerRect.width / 2;\n      y = containerRect.top + containerRect.height / 2;\n    }\n\n    const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n    const offsetX = x - containerRect.left;\n    const offsetY = y - containerRect.top;\n    const duration = animationConfig.enterDuration;\n\n    const ripple = document.createElement('div');\n    ripple.classList.add('mat-ripple-element');\n\n    ripple.style.left = `${offsetX - radius}px`;\n    ripple.style.top = `${offsetY - radius}px`;\n    ripple.style.height = `${radius * 2}px`;\n    ripple.style.width = `${radius * 2}px`;\n\n    // If a custom color has been specified, set it as inline style. If no color is\n    // set, the default color will be applied through the ripple theme styles.\n    if (config.color != null) {\n      ripple.style.backgroundColor = config.color;\n    }\n\n    ripple.style.transitionDuration = `${duration}ms`;\n\n    this._containerElement.appendChild(ripple);\n\n    // By default the browser does not recalculate the styles of dynamically created\n    // ripple elements. This is critical because then the `scale` would not animate properly.\n    enforceStyleRecalculation(ripple);\n\n    ripple.style.transform = 'scale(1)';\n\n    // Exposed reference to the ripple that will be returned.\n    const rippleRef = new RippleRef(this, ripple, config);\n\n    rippleRef.state = RippleState.FADING_IN;\n\n    // Add the ripple reference to the list of all active ripples.\n    this._activeRipples.add(rippleRef);\n\n    if (!config.persistent) {\n      this._mostRecentTransientRipple = rippleRef;\n    }\n\n    // Wait for the ripple element to be completely faded in.\n    // Once it's faded in, the ripple can be hidden immediately if the mouse is released.\n    this._runTimeoutOutsideZone(() => {\n      const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n\n      rippleRef.state = RippleState.VISIBLE;\n\n      // When the timer runs out while the user has kept their pointer down, we want to\n      // keep only the persistent ripples and the latest transient ripple. We do this,\n      // because we don't want stacked transient ripples to appear after their enter\n      // animation has finished.\n      if (!config.persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n        rippleRef.fadeOut();\n      }\n    }, duration);\n\n    return rippleRef;\n  }\n\n  /** Fades out a ripple reference. */\n  fadeOutRipple(rippleRef: RippleRef) {\n    const wasActive = this._activeRipples.delete(rippleRef);\n\n    if (rippleRef === this._mostRecentTransientRipple) {\n      this._mostRecentTransientRipple = null;\n    }\n\n    // Clear out the cached bounding rect if we have no more ripples.\n    if (!this._activeRipples.size) {\n      this._containerRect = null;\n    }\n\n    // For ripples that are not active anymore, don't re-run the fade-out animation.\n    if (!wasActive) {\n      return;\n    }\n\n    const rippleEl = rippleRef.element;\n    const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n    rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n    rippleEl.style.opacity = '0';\n    rippleRef.state = RippleState.FADING_OUT;\n\n    // Once the ripple faded out, the ripple can be safely removed from the DOM.\n    this._runTimeoutOutsideZone(() => {\n      rippleRef.state = RippleState.HIDDEN;\n      rippleEl.parentNode!.removeChild(rippleEl);\n    }, animationConfig.exitDuration);\n  }\n\n  /** Fades out all currently active ripples. */\n  fadeOutAll() {\n    this._activeRipples.forEach(ripple => ripple.fadeOut());\n  }\n\n  /** Fades out all currently active non-persistent ripples. */\n  fadeOutAllNonPersistent() {\n    this._activeRipples.forEach(ripple => {\n      if (!ripple.config.persistent) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Sets up the trigger event listeners */\n  setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n    const element = coerceElement(elementOrElementRef);\n\n    if (!element || element === this._triggerElement) {\n      return;\n    }\n\n    // Remove all previously registered event listeners from the trigger element.\n    this._removeTriggerEvents();\n\n    this._triggerElement = element;\n    this._registerEvents(pointerDownEvents);\n  }\n\n  /**\n   * Handles all registered events.\n   * @docs-private\n   */\n  handleEvent(event: Event) {\n    if (event.type === 'mousedown') {\n      this._onMousedown(event as MouseEvent);\n    } else if (event.type === 'touchstart') {\n      this._onTouchStart(event as TouchEvent);\n    } else {\n      this._onPointerUp();\n    }\n\n    // If pointer-up events haven't been registered yet, do so now.\n    // We do this on-demand in order to reduce the total number of event listeners\n    // registered by the ripples, which speeds up the rendering time for large UIs.\n    if (!this._pointerUpEventsRegistered) {\n      this._registerEvents(pointerUpEvents);\n      this._pointerUpEventsRegistered = true;\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using mouse. */\n  private _onMousedown(event: MouseEvent) {\n    // Screen readers will fire fake mouse events for space/enter. Skip launching a\n    // ripple in this case for consistency with the non-screen-reader experience.\n    const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n    const isSyntheticEvent = this._lastTouchStartEvent &&\n        Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n    if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n      this._isPointerDown = true;\n      this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using touch. */\n  private _onTouchStart(event: TouchEvent) {\n    if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n      // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n      // events will launch a second ripple if we don't ignore mouse events for a specific\n      // time after a touchstart event.\n      this._lastTouchStartEvent = Date.now();\n      this._isPointerDown = true;\n\n      // Use `changedTouches` so we skip any touches where the user put\n      // their finger down, but used another finger to tap the element again.\n      const touches = event.changedTouches;\n\n      for (let i = 0; i < touches.length; i++) {\n        this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n      }\n    }\n  }\n\n  /** Function being called whenever the trigger is being released. */\n  private _onPointerUp() {\n    if (!this._isPointerDown) {\n      return;\n    }\n\n    this._isPointerDown = false;\n\n    // Fade-out all ripples that are visible and not persistent.\n    this._activeRipples.forEach(ripple => {\n      // By default, only ripples that are completely visible will fade out on pointer release.\n      // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n      const isVisible = ripple.state === RippleState.VISIBLE ||\n        ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN;\n\n      if (!ripple.config.persistent && isVisible) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n  private _runTimeoutOutsideZone(fn: Function, delay = 0) {\n    this._ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n  }\n\n  /** Registers event listeners for a given list of events. */\n  private _registerEvents(eventTypes: string[]) {\n    this._ngZone.runOutsideAngular(() => {\n      eventTypes.forEach((type) => {\n        this._triggerElement!.addEventListener(type, this, passiveEventOptions);\n      });\n    });\n  }\n\n  /** Removes previously registered event listeners from the trigger element. */\n  _removeTriggerEvents() {\n    if (this._triggerElement) {\n      pointerDownEvents.forEach((type) => {\n        this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n      });\n\n      if (this._pointerUpEventsRegistered) {\n        pointerUpEvents.forEach((type) => {\n          this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n        });\n      }\n    }\n  }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n  // Enforce a style recalculation by calling `getComputedStyle` and accessing any property.\n  // Calling `getPropertyValue` is important to let optimizers know that this is not a noop.\n  // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n  window.getComputedStyle(element).getPropertyValue('opacity');\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: ClientRect) {\n  const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n  const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n  return Math.sqrt(distX * distX + distY * distY);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n} from '@angular/core';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n  /**\n   * Whether ripples should be disabled. Ripples can be still launched manually by using\n   * the `launch()` method. Therefore focus indicators will still show up.\n   */\n  disabled?: boolean;\n\n  /**\n   * Default configuration for the animation duration of the ripples. There are two phases with\n   * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n   * by the value of `matRippleAnimation` or if the `NoopAnimationsModule` is included.\n   */\n  animation?: RippleAnimationConfig;\n\n  /**\n   * Whether ripples should start fading out immediately after the mouse or touch is released. By\n   * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n   */\n  terminateOnPointerUp?: boolean;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\n    new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\n\n@Directive({\n  selector: '[mat-ripple], [matRipple]',\n  exportAs: 'matRipple',\n  host: {\n    'class': 'mat-ripple',\n    '[class.mat-ripple-unbounded]': 'unbounded'\n  }\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n\n  /** Custom color for all ripples. */\n  @Input('matRippleColor') color: string;\n\n  /** Whether the ripples should be visible outside the component's bounds. */\n  @Input('matRippleUnbounded') unbounded: boolean;\n\n  /**\n   * Whether the ripple always originates from the center of the host element's bounds, rather\n   * than originating from the location of the click event.\n   */\n  @Input('matRippleCentered') centered: boolean;\n\n  /**\n   * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n   * will be the distance from the center of the ripple to the furthest corner of the host element's\n   * bounding rectangle.\n   */\n  @Input('matRippleRadius') radius: number = 0;\n\n  /**\n   * Configuration for the ripple animation. Allows modifying the enter and exit animation\n   * duration of the ripples. The animation durations will be overwritten if the\n   * `NoopAnimationsModule` is being used.\n   */\n  @Input('matRippleAnimation') animation: RippleAnimationConfig;\n\n  /**\n   * Whether click events will not trigger the ripple. Ripples can be still launched manually\n   * by using the `launch()` method.\n   */\n  @Input('matRippleDisabled')\n  get disabled() { return this._disabled; }\n  set disabled(value: boolean) {\n    if (value) {\n      this.fadeOutAllNonPersistent();\n    }\n    this._disabled = value;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _disabled: boolean = false;\n\n  /**\n   * The element that triggers the ripple when click events are received.\n   * Defaults to the directive's host element.\n   */\n  @Input('matRippleTrigger')\n  get trigger() { return this._trigger || this._elementRef.nativeElement; }\n  set trigger(trigger: HTMLElement) {\n    this._trigger = trigger;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _trigger: HTMLElement;\n\n  /** Renderer for the ripple DOM manipulations. */\n  private _rippleRenderer: RippleRenderer;\n\n  /** Options that are set globally for all ripples. */\n  private _globalOptions: RippleGlobalOptions;\n\n  /** Whether ripple directive is initialized and the input bindings are set. */\n  private _isInitialized: boolean = false;\n\n  constructor(private _elementRef: ElementRef<HTMLElement>,\n              ngZone: NgZone,\n              platform: Platform,\n              @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions?: RippleGlobalOptions,\n              @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n    this._globalOptions = globalOptions || {};\n    this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n  }\n\n  ngOnInit() {\n    this._isInitialized = true;\n    this._setupTriggerEventsIfEnabled();\n  }\n\n  ngOnDestroy() {\n    this._rippleRenderer._removeTriggerEvents();\n  }\n\n  /** Fades out all currently showing ripple elements. */\n  fadeOutAll() {\n    this._rippleRenderer.fadeOutAll();\n  }\n\n  /** Fades out all currently showing non-persistent ripple elements. */\n  fadeOutAllNonPersistent() {\n    this._rippleRenderer.fadeOutAllNonPersistent();\n  }\n\n  /**\n   * Ripple configuration from the directive's input values.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleConfig(): RippleConfig {\n    return {\n      centered: this.centered,\n      radius: this.radius,\n      color: this.color,\n      animation: {\n        ...this._globalOptions.animation,\n        ...(this._animationMode === 'NoopAnimations' ? {enterDuration: 0, exitDuration: 0} : {}),\n        ...this.animation\n      },\n      terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n    };\n  }\n\n  /**\n   * Whether ripples on pointer-down are disabled or not.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleDisabled(): boolean {\n    return this.disabled || !!this._globalOptions.disabled;\n  }\n\n  /** Sets up the trigger event listeners if ripples are enabled. */\n  private _setupTriggerEventsIfEnabled() {\n    if (!this.disabled && this._isInitialized) {\n      this._rippleRenderer.setupTriggerEvents(this.trigger);\n    }\n  }\n\n  /**\n   * Launches a manual ripple using the specified ripple configuration.\n   * @param config Configuration for the manual ripple.\n   */\n  launch(config: RippleConfig): RippleRef;\n\n  /**\n   * Launches a manual ripple at the specified coordinates relative to the viewport.\n   * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param config Optional ripple configuration for the manual ripple.\n   */\n  launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n  /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n  launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n    if (typeof configOrX === 'number') {\n      return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n    } else {\n      return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatRipple} from './ripple';\n\nexport * from './ripple';\nexport * from './ripple-ref';\nexport * from './ripple-renderer';\n\n@NgModule({\n  imports: [MatCommonModule, PlatformModule],\n  exports: [MatRipple, MatCommonModule],\n  declarations: [MatRipple],\n})\nexport class MatRippleModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  Component,\n  ViewEncapsulation,\n  Input,\n  ChangeDetectionStrategy,\n  Inject,\n  Optional,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'mat-pseudo-checkbox',\n  styleUrls: ['pseudo-checkbox.css'],\n  template: '',\n  host: {\n    'class': 'mat-pseudo-checkbox',\n    '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n    '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n    '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n    '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n  },\n})\nexport class MatPseudoCheckbox {\n  /** Display state of the checkbox. */\n  @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n  /** Whether the checkbox is disabled. */\n  @Input() disabled: boolean = false;\n\n  constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox/pseudo-checkbox';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatPseudoCheckbox],\n  declarations: [MatPseudoCheckbox]\n})\nexport class MatPseudoCheckboxModule { }\n\n\nexport * from './pseudo-checkbox/pseudo-checkbox';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n  disableRipple?: boolean;\n  multiple?: boolean;\n  inertGroups?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT =\n    new InjectionToken<MatOptionParentComponent>('MAT_OPTION_PARENT_COMPONENT');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  InjectionToken,\n  Input,\n  ViewEncapsulation,\n  Directive, Inject, Optional\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '../common-behaviors/disabled';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n//    when the text will be read out so sometimes it comes in too late or never if the user\n//    navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n//    won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n//     doesn't read out the text at all. Furthermore, on\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nconst _MatOptgroupMixinBase = mixinDisabled(class {});\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n@Directive()\nexport class _MatOptgroupBase extends _MatOptgroupMixinBase implements CanDisable {\n  /** Label for the option group. */\n  @Input() label: string;\n\n  /** Unique id for the underlying label. */\n  _labelId: string = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n\n  /** Whether the group is in inert a11y mode. */\n  _inert: boolean;\n\n  constructor(@Inject(MAT_OPTION_PARENT_COMPONENT) @Optional() parent?: MatOptionParentComponent) {\n    super();\n    this._inert = parent?.inertGroups ?? false;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n  selector: 'mat-optgroup',\n  exportAs: 'matOptgroup',\n  templateUrl: 'optgroup.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  styleUrls: ['optgroup.css'],\n  host: {\n    'class': 'mat-optgroup',\n    '[attr.role]': '_inert ? null : \"group\"',\n    '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n    '[attr.aria-labelledby]': '_inert ? null : _labelId',\n    '[class.mat-optgroup-disabled]': 'disabled',\n  },\n  providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup extends _MatOptgroupBase {\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n  Directive,\n} from '@angular/core';\nimport {FocusOptions, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {MatOptgroup, _MatOptgroupBase, MAT_OPTGROUP} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange {\n  constructor(\n    /** Reference to the option that emitted the event. */\n    public source: _MatOptionBase,\n    /** Whether the change in the option's value was a result of a user action. */\n    public isUserInput = false) { }\n}\n\n@Directive()\nexport class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy {\n  private _selected = false;\n  private _active = false;\n  private _disabled = false;\n  private _mostRecentViewValue = '';\n\n  /** Whether the wrapping component is in multiple selection mode. */\n  get multiple() { return this._parent && this._parent.multiple; }\n\n  /** Whether or not the option is currently selected. */\n  get selected(): boolean { return this._selected; }\n\n  /** The form value of the option. */\n  @Input() value: any;\n\n  /** The unique ID of the option. */\n  @Input() id: string = `mat-option-${_uniqueIdCounter++}`;\n\n  /** Whether the option is disabled. */\n  @Input()\n  get disabled() { return (this.group && this.group.disabled) || this._disabled; }\n  set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n  /** Whether ripples for the option are disabled. */\n  get disableRipple() { return this._parent && this._parent.disableRipple; }\n\n  /** Event emitted when the option is selected or deselected. */\n  // tslint:disable-next-line:no-output-on-prefix\n  @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange>();\n\n  /** Emits when the state of the option changes and any parents have to be notified. */\n  readonly _stateChanges = new Subject<void>();\n\n  constructor(\n    private _element: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _parent: MatOptionParentComponent,\n    readonly group: _MatOptgroupBase) {}\n\n  /**\n   * Whether or not the option is currently active and ready to be selected.\n   * An active option displays styles as if it is focused, but the\n   * focus is actually retained somewhere else. This comes in handy\n   * for components like autocomplete where focus must remain on the input.\n   */\n  get active(): boolean {\n    return this._active;\n  }\n\n  /**\n   * The displayed value of the option. It is necessary to show the selected option in the\n   * select's trigger.\n   */\n  get viewValue(): string {\n    // TODO(kara): Add input property alternative for node envs.\n    return (this._getHostElement().textContent || '').trim();\n  }\n\n  /** Selects the option. */\n  select(): void {\n    if (!this._selected) {\n      this._selected = true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Deselects the option. */\n  deselect(): void {\n    if (this._selected) {\n      this._selected = false;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Sets focus onto this option. */\n  focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n    // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n    // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n    const element = this._getHostElement();\n\n    if (typeof element.focus === 'function') {\n      element.focus(options);\n    }\n  }\n\n  /**\n   * This method sets display styles on the option to make it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setActiveStyles(): void {\n    if (!this._active) {\n      this._active = true;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * This method removes display styles on the option that made it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setInactiveStyles(): void {\n    if (this._active) {\n      this._active = false;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    return this.viewValue;\n  }\n\n  /** Ensures the option is selected when activated from the keyboard. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n      this._selectViaInteraction();\n\n      // Prevent the page from scrolling down and form submits.\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * `Selects the option while indicating the selection came from the user. Used to\n   * determine if the select's view -> model callback should be invoked.`\n   */\n  _selectViaInteraction(): void {\n    if (!this.disabled) {\n      this._selected = this.multiple ? !this._selected : true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent(true);\n    }\n  }\n\n  /**\n   * Gets the `aria-selected` value for the option. We explicitly omit the `aria-selected`\n   * attribute from single-selection, unselected options. Including the `aria-selected=\"false\"`\n   * attributes adds a significant amount of noise to screen-reader users without providing useful\n   * information.\n   */\n  _getAriaSelected(): boolean|null {\n    return this.selected || (this.multiple ? false : null);\n  }\n\n  /** Returns the correct tabindex for the option depending on disabled state. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Gets the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._element.nativeElement;\n  }\n\n  ngAfterViewChecked() {\n    // Since parent components could be using the option's label to display the selected values\n    // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n    // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n    // relatively cheap, however we still limit them only to selected options in order to avoid\n    // hitting the DOM too often.\n    if (this._selected) {\n      const viewValue = this.viewValue;\n\n      if (viewValue !== this._mostRecentViewValue) {\n        this._mostRecentViewValue = viewValue;\n        this._stateChanges.next();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  /** Emits the selection change event. */\n  private _emitSelectionChangeEvent(isUserInput = false): void {\n    this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n  selector: 'mat-option',\n  exportAs: 'matOption',\n  host: {\n    'role': 'option',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[class.mat-selected]': 'selected',\n    '[class.mat-option-multiple]': 'multiple',\n    '[class.mat-active]': 'active',\n    '[id]': 'id',\n    '[attr.aria-selected]': '_getAriaSelected()',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[class.mat-option-disabled]': 'disabled',\n    '(click)': '_selectViaInteraction()',\n    '(keydown)': '_handleKeydown($event)',\n    'class': 'mat-option mat-focus-indicator',\n  },\n  styleUrls: ['option.css'],\n  templateUrl: 'option.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption extends _MatOptionBase {\n  constructor(\n    element: ElementRef<HTMLElement>,\n    changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(MAT_OPTION_PARENT_COMPONENT) parent: MatOptionParentComponent,\n    @Optional() @Inject(MAT_OPTGROUP) group: MatOptgroup) {\n    super(element, changeDetectorRef, parent, group);\n  }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(optionIndex: number, options: QueryList<MatOption>,\n  optionGroups: QueryList<MatOptgroup>): number {\n\n  if (optionGroups.length) {\n    let optionsArray = options.toArray();\n    let groups = optionGroups.toArray();\n    let groupCounter = 0;\n\n    for (let i = 0; i < optionIndex + 1; i++) {\n      if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n        groupCounter++;\n      }\n    }\n\n    return groupCounter;\n  }\n\n  return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(optionOffset: number, optionHeight: number,\n    currentScrollPosition: number, panelHeight: number): number {\n  if (optionOffset < currentScrollPosition) {\n    return optionOffset;\n  }\n\n  if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n    return Math.max(0, optionOffset - panelHeight + optionHeight);\n  }\n\n  return currentScrollPosition;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatRippleModule} from '../ripple/index';\nimport {MatPseudoCheckboxModule} from '../selection/index';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n\n@NgModule({\n  imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n  exports: [MatOption, MatOptgroup],\n  declarations: [MatOption, MatOptgroup]\n})\nexport class MatOptionModule {}\n\n\nexport * from './option';\nexport * from './optgroup';\nexport * from './option-parent';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './version';\nexport * from './animation/animation';\nexport * from './common-behaviors/index';\nexport * from './datetime/index';\nexport * from './error/error-options';\nexport * from './line/line';\nexport * from './option/index';\nexport * from './ripple/index';\nexport * from './selection/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MATERIAL_SANITY_CHECKS_FACTORY as ɵangular_material_src_material_core_core_a} from './common-behaviors/common-module';"]}
     1{"version":3,"file":"core.js","sources":["../../../../../../src/material/core/version.ts","../../../../../../src/material/core/animation/animation.ts","../../../../../../src/material/core/common-behaviors/common-module.ts","../../../../../../src/material/core/common-behaviors/disabled.ts","../../../../../../src/material/core/common-behaviors/color.ts","../../../../../../src/material/core/common-behaviors/disable-ripple.ts","../../../../../../src/material/core/common-behaviors/tabindex.ts","../../../../../../src/material/core/common-behaviors/error-state.ts","../../../../../../src/material/core/common-behaviors/initialized.ts","../../../../../../src/material/core/common-behaviors/index.ts","../../../../../../src/material/core/datetime/date-adapter.ts","../../../../../../src/material/core/datetime/date-formats.ts","../../../../../../src/material/core/datetime/native-date-adapter.ts","../../../../../../src/material/core/datetime/native-date-formats.ts","../../../../../../src/material/core/datetime/index.ts","../../../../../../src/material/core/error/error-options.ts","../../../../../../src/material/core/line/line.ts","../../../../../../src/material/core/ripple/ripple-ref.ts","../../../../../../src/material/core/ripple/ripple-renderer.ts","../../../../../../src/material/core/ripple/ripple.ts","../../../../../../src/material/core/ripple/index.ts","../../../../../../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../../../../src/material/core/selection/index.ts","../../../../../../src/material/core/option/option-parent.ts","../../../../../../src/material/core/option/optgroup.ts","../../../../../../src/material/core/option/option.ts","../../../../../../src/material/core/option/index.ts","../../../../../../src/material/core/public-api.ts","../../../../../../src/material/core/index.ts"],"names":["VERSION","CDK_VERSION"],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('12.2.10');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport class AnimationCurves {\n  static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n  static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n  static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n  static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n\n/** @docs-private */\nexport class AnimationDurations {\n  static COMPLEX = '375ms';\n  static ENTERING = '225ms';\n  static EXITING = '195ms';\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {HighContrastModeDetector} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Inject, InjectionToken, isDevMode, NgModule, Optional, Version} from '@angular/core';\nimport {VERSION as CDK_VERSION} from '@angular/cdk';\nimport {DOCUMENT} from '@angular/common';\nimport {_isTestEnvironment} from '@angular/cdk/platform';\n\n// Private version constant to circumvent test/build issues,\n// i.e. avoid core to depend on the @angular/material primary entry-point\n// Can be removed once the Material primary entry-point no longer\n// re-exports all secondary entry-points\nconst VERSION = new Version('12.2.10');\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): SanityChecks {\n  return true;\n}\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<SanityChecks>('mat-sanity-checks', {\n  providedIn: 'root',\n  factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n\n/**\n * Possible sanity checks that can be enabled. If set to\n * true/false, all checks will be enabled/disabled.\n */\nexport type SanityChecks = boolean | GranularSanityChecks;\n\n/** Object that can be used to configure the sanity checks granularly. */\nexport interface GranularSanityChecks {\n  doctype: boolean;\n  theme: boolean;\n  version: boolean;\n}\n\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\n@NgModule({\n  imports: [BidiModule],\n  exports: [BidiModule],\n})\nexport class MatCommonModule {\n  /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n  private _hasDoneGlobalChecks = false;\n\n  /** Configured sanity checks. */\n  private _sanityChecks: SanityChecks;\n\n  /** Used to reference correct document/window */\n  protected _document: Document;\n\n  constructor(\n      highContrastModeDetector: HighContrastModeDetector,\n      @Optional() @Inject(MATERIAL_SANITY_CHECKS) sanityChecks: any,\n      @Inject(DOCUMENT) document: any) {\n    this._document = document;\n\n    // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n    // in MatCommonModule.\n    highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n\n    // Note that `_sanityChecks` is typed to `any`, because AoT\n    // throws an error if we use the `SanityChecks` type directly.\n    this._sanityChecks = sanityChecks;\n\n    if (!this._hasDoneGlobalChecks) {\n      this._checkDoctypeIsDefined();\n      this._checkThemeIsPresent();\n      this._checkCdkVersionMatch();\n      this._hasDoneGlobalChecks = true;\n    }\n  }\n\n  /** Gets whether a specific sanity check is enabled. */\n  private _checkIsEnabled(name: keyof GranularSanityChecks): boolean {\n    // TODO(crisbeto): we can't use `ngDevMode` here yet, because ViewEngine apps might not support\n    // it. Since these checks can have performance implications and they aren't tree shakeable\n    // in their current form, we can leave the `isDevMode` check in for now.\n    // tslint:disable-next-line:ban\n    if (!isDevMode() || _isTestEnvironment()) {\n      return false;\n    }\n\n    if (typeof this._sanityChecks === 'boolean') {\n      return this._sanityChecks;\n    }\n\n    return !!this._sanityChecks[name];\n  }\n\n  private _checkDoctypeIsDefined(): void {\n    if (this._checkIsEnabled('doctype') && !this._document.doctype) {\n      console.warn(\n        'Current document does not have a doctype. This may cause ' +\n        'some Angular Material components not to behave as expected.'\n      );\n    }\n  }\n\n  private _checkThemeIsPresent(): void {\n    // We need to assert that the `body` is defined, because these checks run very early\n    // and the `body` won't be defined if the consumer put their scripts in the `head`.\n    if (!this._checkIsEnabled('theme') || !this._document.body ||\n        typeof getComputedStyle !== 'function') {\n      return;\n    }\n\n    const testElement = this._document.createElement('div');\n\n    testElement.classList.add('mat-theme-loaded-marker');\n    this._document.body.appendChild(testElement);\n\n    const computedStyle = getComputedStyle(testElement);\n\n    // In some situations the computed style of the test element can be null. For example in\n    // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n    // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n    if (computedStyle && computedStyle.display !== 'none') {\n      console.warn(\n        'Could not find Angular Material core theme. Most Material ' +\n        'components may not work as expected. For more info refer ' +\n        'to the theming guide: https://material.angular.io/guide/theming'\n      );\n    }\n\n    this._document.body.removeChild(testElement);\n  }\n\n  /** Checks whether the material version matches the cdk version */\n  private _checkCdkVersionMatch(): void {\n    if (this._checkIsEnabled('version') && VERSION.full !== CDK_VERSION.full) {\n      console.warn(\n          'The Angular Material version (' + VERSION.full + ') does not match ' +\n          'the Angular CDK version (' + CDK_VERSION.full + ').\\n' +\n          'Please ensure the versions of these two packages exactly match.'\n      );\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisable {\n  /** Whether the component is disabled. */\n  disabled: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n  return class extends base {\n    private _disabled: boolean = false;\n\n    get disabled() { return this._disabled; }\n    set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AbstractConstructor, Constructor} from './constructor';\nimport {ElementRef} from '@angular/core';\n\n/** @docs-private */\nexport interface CanColor {\n  /** Theme color palette for the component. */\n  color: ThemePalette;\n\n  /** Default color to fall back to if no value is set. */\n  defaultColor: ThemePalette | undefined;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\n/** @docs-private */\nexport interface HasElementRef {\n  _elementRef: ElementRef;\n}\n\n/** Possible color palette values. */\nexport type ThemePalette = 'primary' | 'accent' | 'warn' | undefined;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T;\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T {\n  return class extends base {\n    private _color: ThemePalette;\n    defaultColor = defaultColor;\n\n    get color(): ThemePalette { return this._color; }\n    set color(value: ThemePalette) {\n      const colorPalette = value || this.defaultColor;\n\n      if (colorPalette !== this._color) {\n        if (this._color) {\n          this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n        }\n        if (colorPalette) {\n          this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n        }\n\n        this._color = colorPalette;\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n\n      // Set the default color that can be specified from the mixin.\n      this.color = defaultColor;\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n  /** Whether ripples are disabled. */\n  disableRipple: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableRippleCtor = Constructor<CanDisableRipple> &\n                                   AbstractConstructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends AbstractConstructor<{}>>(base: T):\n  CanDisableRippleCtor & T;\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): CanDisableRippleCtor & T {\n  return class extends base {\n    private _disableRipple: boolean = false;\n\n    /** Whether the ripple effect is disabled or not. */\n    get disableRipple() { return this._disableRipple; }\n    set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Constructor, AbstractConstructor} from './constructor';\nimport {CanDisable} from './disabled';\n\n\n/** @docs-private */\nexport interface HasTabIndex {\n  /** Tabindex of the component. */\n  tabIndex: number;\n\n  /** Tabindex to which to fall back to if no value is set. */\n  defaultTabIndex: number;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(base: T,\n  defaultTabIndex?: number): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n  base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n  return class extends base implements HasTabIndex {\n    private _tabIndex: number = defaultTabIndex;\n    defaultTabIndex = defaultTabIndex;\n\n    get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\n    set tabIndex(value: number) {\n      // If the specified tabIndex value is null or undefined, fall back to the default value.\n      this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n  /** Emits whenever the component state changes. */\n  readonly stateChanges: Subject<void>;\n  /** Updates the error state based on the provided error state matcher. */\n  updateErrorState(): void;\n  /** Whether the component is in an error state. */\n  errorState: boolean;\n  /** An object used to control the error state of the component. */\n  errorStateMatcher: ErrorStateMatcher;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState> &\n                                      AbstractConstructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n  _parentFormGroup: FormGroupDirective;\n  _parentForm: NgForm;\n  _defaultErrorStateMatcher: ErrorStateMatcher;\n  ngControl: NgControl;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T {\n  return class extends base {\n    // This class member exists as an interop with `MatFormFieldControl` which expects\n    // a public `stateChanges` observable to emit whenever the form field should be updated.\n    // The description is not specifically mentioning the error state, as classes using this\n    // mixin can/should emit an event in other cases too.\n    /** Emits whenever the component state changes. */\n    readonly stateChanges = new Subject<void>();\n\n    /** Whether the component is in an error state. */\n    errorState: boolean = false;\n\n    /** An object used to control the error state of the component. */\n    errorStateMatcher: ErrorStateMatcher;\n\n    /** Updates the error state based on the provided error state matcher. */\n    updateErrorState() {\n      const oldState = this.errorState;\n      const parent = this._parentFormGroup || this._parentForm;\n      const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n      const control = this.ngControl ? this.ngControl.control as FormControl : null;\n      const newState = matcher.isErrorState(control, parent);\n\n      if (newState !== oldState) {\n        this.errorState = newState;\n        this.stateChanges.next();\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Observable, Subscriber} from 'rxjs';\nimport {Constructor} from './constructor';\n\n\n/**\n * Mixin that adds an initialized property to a directive which, when subscribed to, will emit a\n * value once markInitialized has been called, which should be done during the ngOnInit function.\n * If the subscription is made after it has already been marked as initialized, then it will trigger\n * an emit immediately.\n * @docs-private\n */\nexport interface HasInitialized {\n  /** Stream that emits once during the directive/component's ngOnInit. */\n  initialized: Observable<void>;\n\n  /**\n   * Sets the state as initialized and must be called during ngOnInit to notify subscribers that\n   * the directive has been initialized.\n   * @docs-private\n   */\n  _markInitialized: () => void;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasInitializedCtor = Constructor<HasInitialized>;\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nexport function mixinInitialized<T extends Constructor<{}>>(base: T):\n    HasInitializedCtor & T {\n  return class extends base {\n    /** Whether this directive has been marked as initialized. */\n    _isInitialized = false;\n\n    /**\n     * List of subscribers that subscribed before the directive was initialized. Should be notified\n     * during _markInitialized. Set to null after pending subscribers are notified, and should\n     * not expect to be populated after.\n     */\n    _pendingSubscribers: Subscriber<void>[] | null = [];\n\n    /**\n     * Observable stream that emits when the directive initializes. If already initialized, the\n     * subscriber is stored to be notified once _markInitialized is called.\n     */\n    initialized = new Observable<void>(subscriber => {\n      // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n      // when _markInitialized is called.\n      if (this._isInitialized) {\n        this._notifySubscriber(subscriber);\n      } else {\n        this._pendingSubscribers!.push(subscriber);\n      }\n    });\n\n    constructor(...args: any[]) { super(...args); }\n\n    /**\n     * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n     * of ngOnInit.\n     * @docs-private\n     */\n    _markInitialized(): void {\n      if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('This directive has already been marked as initialized and ' +\n            'should not be called twice.');\n      }\n\n      this._isInitialized = true;\n\n      this._pendingSubscribers!.forEach(this._notifySubscriber);\n      this._pendingSubscribers = null;\n    }\n\n    /** Emits and completes the subscriber stream (should only emit once). */\n    _notifySubscriber(subscriber: Subscriber<void>): void {\n      subscriber.next();\n      subscriber.complete();\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport {\n  MatCommonModule,\n  MATERIAL_SANITY_CHECKS,\n  SanityChecks,\n  GranularSanityChecks,\n} from './common-module';\nexport {CanDisable, CanDisableCtor, mixinDisabled} from './disabled';\nexport {CanColor, CanColorCtor, mixinColor, ThemePalette} from './color';\nexport {CanDisableRipple, CanDisableRippleCtor, mixinDisableRipple} from './disable-ripple';\nexport {HasTabIndex, HasTabIndexCtor, mixinTabIndex} from './tabindex';\nexport {CanUpdateErrorState, CanUpdateErrorStateCtor, mixinErrorState} from './error-state';\nexport {HasInitialized, HasInitializedCtor, mixinInitialized} from './initialized';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n  providedIn: 'root',\n  factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n  return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n  /** The locale to use for all dates. */\n  protected locale: any;\n  protected readonly _localeChanges = new Subject<void>();\n\n  /** A stream that emits when the locale changes. */\n  readonly localeChanges: Observable<void> = this._localeChanges;\n\n  /**\n   * Gets the year component of the given date.\n   * @param date The date to extract the year from.\n   * @returns The year component.\n   */\n  abstract getYear(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   * @param date The date to extract the month from.\n   * @returns The month component (0-indexed, 0 = January).\n   */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the date of the month component of the given date.\n   * @param date The date to extract the date of the month from.\n   * @returns The month component (1-indexed, 1 = first of month).\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the day of the week component of the given date.\n   * @param date The date to extract the day of the week from.\n   * @returns The month component (0-indexed, 0 = Sunday).\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Gets a list of names for the months.\n   * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n   * @returns An ordered list of all month names, starting with January.\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets a list of names for the dates of the month.\n   * @returns An ordered list of all date of the month names, starting with '1'.\n   */\n  abstract getDateNames(): string[];\n\n  /**\n   * Gets a list of names for the days of the week.\n   * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n   * @returns An ordered list of all weekday names, starting with Sunday.\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets the name for the year of the given date.\n   * @param date The date to get the year name for.\n   * @returns The name of the given year (e.g. '2017').\n   */\n  abstract getYearName(date: D): string;\n\n  /**\n   * Gets the first day of the week.\n   * @returns The first day of the week (0-indexed, 0 = Sunday).\n   */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   * @param date The date whose month should be checked.\n   * @returns The number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: D): number;\n\n  /**\n   * Clones the given date.\n   * @param date The date to clone\n   * @returns A new date equal to the given date.\n   */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n   * month and date.\n   * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n   * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n   * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n   * @returns The new date, or null if invalid.\n   */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Gets today's date.\n   * @returns Today's date.\n   */\n  abstract today(): D;\n\n  /**\n   * Parses a date from a user-provided value.\n   * @param value The value to parse.\n   * @param parseFormat The expected format of the value being parsed\n   *     (type is implementation-dependent).\n   * @returns The parsed date.\n   */\n  abstract parse(value: any, parseFormat: any): D | null;\n\n  /**\n   * Formats a date as a string according to the given format.\n   * @param date The value to format.\n   * @param displayFormat The format to use to display the date as a string.\n   * @returns The formatted date string.\n   */\n  abstract format(date: D, displayFormat: any): string;\n\n  /**\n   * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n   * calendar for each year and then finding the closest date in the new month. For example when\n   * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n   * @param date The date to add years to.\n   * @param years The number of years to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of years added.\n   */\n  abstract addCalendarYears(date: D, years: number): D;\n\n  /**\n   * Adds the given number of months to the date. Months are counted as if flipping a page on the\n   * calendar for each month and then finding the closest date in the new month. For example when\n   * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n   * @param date The date to add months to.\n   * @param months The number of months to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of months added.\n   */\n  abstract addCalendarMonths(date: D, months: number): D;\n\n  /**\n   * Adds the given number of days to the date. Days are counted as if moving one cell on the\n   * calendar for each day.\n   * @param date The date to add days to.\n   * @param days The number of days to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of days added.\n   */\n  abstract addCalendarDays(date: D, days: number): D;\n\n  /**\n   * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n   * This method is used to generate date strings that are compatible with native HTML attributes\n   * such as the `min` or `max` attribute of an `<input>`.\n   * @param date The date to get the ISO date string for.\n   * @returns The ISO date string date string.\n   */\n  abstract toIso8601(date: D): string;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateAdapter.\n   * @param obj The object to check\n   * @returns Whether the object is a date instance.\n   */\n  abstract isDateInstance(obj: any): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   * @param date The date to check.\n   * @returns Whether the date is valid.\n   */\n  abstract isValid(date: D): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   * @returns An invalid date.\n   */\n  abstract invalid(): D;\n\n /**\n  * Given a potential date object, returns that same date object if it is\n  * a valid date, or `null` if it's not a valid date.\n  * @param obj The object to check.\n  * @returns A date or `null`.\n  */\n  getValidDateOrNull(obj: unknown): D | null {\n    return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n   * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   * @param value The value to be deserialized into a date object.\n   * @returns The deserialized date object, either a valid date, null if the value can be\n   *     deserialized into a null date (e.g. the empty string), or an invalid date.\n   */\n  deserialize(value: any): D | null {\n    if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   * @param locale The new locale.\n   */\n  setLocale(locale: any) {\n    this.locale = locale;\n    this._localeChanges.next();\n  }\n\n  /**\n   * Compares two dates.\n   * @param first The first date to compare.\n   * @param second The second date to compare.\n   * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n   *     a number greater than 0 if the first date is later.\n   */\n  compareDate(first: D, second: D): number {\n    return this.getYear(first) - this.getYear(second) ||\n        this.getMonth(first) - this.getMonth(second) ||\n        this.getDate(first) - this.getDate(second);\n  }\n\n  /**\n   * Checks if two dates are equal.\n   * @param first The first date to check.\n   * @param second The second date to check.\n   * @returns Whether the two dates are equal.\n   *     Null dates are considered equal to other null dates.\n   */\n  sameDate(first: D | null, second: D | null): boolean {\n    if (first && second) {\n      let firstValid = this.isValid(first);\n      let secondValid = this.isValid(second);\n      if (firstValid && secondValid) {\n        return !this.compareDate(first, second);\n      }\n      return firstValid == secondValid;\n    }\n    return first == second;\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   * @param date The date to clamp.\n   * @param min The minimum value to allow. If null or omitted no min is enforced.\n   * @param max The maximum value to allow. If null or omitted no max is enforced.\n   * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n   *     otherwise `date`.\n   */\n  clampDate(date: D, min?: D | null, max?: D | null): D {\n    if (min && this.compareDate(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compareDate(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n\nexport type MatDateFormats = {\n  parse: {\n    dateInput: any\n  },\n  display: {\n    dateInput: any,\n    monthLabel?: any,\n    monthYearLabel: any,\n    dateA11yLabel: any,\n    monthYearA11yLabel: any,\n  }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n  SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n  SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n  'long': [\n    'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n    'October', 'November', 'December'\n  ],\n  'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n  'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n    /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   *\n   * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n   * getting the string representation of a Date object from its utc representation. We're keeping\n   * it here for sometime, just for precaution, in case we decide to revert some of these changes\n   * though.\n   */\n  useUtcForDisplay: boolean = true;\n\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string, platform: Platform) {\n    super();\n    super.setLocale(matDateLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\n  }\n\n  getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  getDayOfWeek(date: Date): number {\n    return date.getDay();\n  }\n\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n      return range(12, i =>\n          this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n    }\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  getDateNames(): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n      return range(31, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DATE_NAMES;\n  }\n\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n      return range(7, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  getYearName(date: Date): string {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return String(this.getYear(date));\n  }\n\n  getFirstDayOfWeek(): number {\n    // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n    return 0;\n  }\n\n  getNumDaysInMonth(date: Date): number {\n    return this.getDate(this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + 1, 0));\n  }\n\n  clone(date: Date): Date {\n    return new Date(date.getTime());\n  }\n\n  createDate(year: number, month: number, date: number): Date {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      // Check for invalid month and date (except upper bound on date which we have to check after\n      // creating the Date).\n      if (month < 0 || month > 11) {\n        throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n      }\n\n      if (date < 1) {\n        throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n      }\n    }\n\n    let result = this._createDateWithOverflow(year, month, date);\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result;\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  parse(value: any): Date | null {\n    // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n    // parameters.\n    if (typeof value == 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value)) : null;\n  }\n\n  format(date: Date, displayFormat: Object): string {\n    if (!this.isValid(date)) {\n      throw Error('NativeDateAdapter: Cannot format invalid date.');\n    }\n\n    if (SUPPORTS_INTL_API) {\n      // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n      // if we attempt to format a date whose year is less than 1 or greater than 9999.\n      if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n        date = this.clone(date);\n        date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n      }\n\n      displayFormat = {...displayFormat, timeZone: 'utc'};\n\n      const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return this._stripDirectionalityCharacters(date.toDateString());\n  }\n\n  addCalendarYears(date: Date, years: number): Date {\n    return this.addCalendarMonths(date, years * 12);\n  }\n\n  addCalendarMonths(date: Date, months: number): Date {\n    let newDate = this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n    // It's possible to wind up in the wrong month if the original month has more days than the new\n    // month. In this case we want to go to the last day of the desired month.\n    // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n    // guarantee this.\n    if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n      newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n    }\n\n    return newDate;\n  }\n\n  addCalendarDays(date: Date, days: number): Date {\n    return this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n  }\n\n  toIso8601(date: Date): string {\n    return [\n      date.getUTCFullYear(),\n      this._2digit(date.getUTCMonth() + 1),\n      this._2digit(date.getUTCDate())\n    ].join('-');\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  override deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        let date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  isDateInstance(obj: any) {\n    return obj instanceof Date;\n  }\n\n  isValid(date: Date) {\n    return !isNaN(date.getTime());\n  }\n\n  invalid(): Date {\n    return new Date(NaN);\n  }\n\n  /** Creates a date but allows the month and date to overflow. */\n  private _createDateWithOverflow(year: number, month: number, date: number) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setFullYear` and `setHours` instead.\n    const d = new Date();\n    d.setFullYear(year, month, date);\n    d.setHours(0, 0, 0, 0);\n    return d;\n  }\n\n  /**\n   * Pads a number to make it two digits.\n   * @param n The number to pad.\n   * @returns The padded number.\n   */\n  private _2digit(n: number) {\n    return ('00' + n).slice(-2);\n  }\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   * @param str The string to strip direction characters from.\n   * @returns The stripped string.\n   */\n  private _stripDirectionalityCharacters(str: string) {\n    return str.replace(/[\\u200e\\u200f]/g, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n   *    timeZone set to 'utc' to work fine.\n   * @param date Date from which we want to get the string representation according to dtf\n   * @returns A Date object with its UTC representation based on the passed in date info\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n    const d = new Date();\n    d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    return dtf.format(d);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {MatDateFormats} from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n  parse: {\n    dateInput: null,\n  },\n  display: {\n    dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n    monthYearLabel: {year: 'numeric', month: 'short'},\n    dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n    monthYearA11yLabel: {year: 'numeric', month: 'long'},\n  }\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n\n@NgModule({\n  imports: [PlatformModule],\n  providers: [\n    {provide: DateAdapter, useClass: NativeDateAdapter},\n  ],\n})\nexport class NativeDateModule {}\n\n\n@NgModule({\n  imports: [NativeDateModule],\n  providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS}],\n})\nexport class MatNativeDateModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, FormControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n  }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  NgModule,\n  Directive,\n  ElementRef,\n  QueryList,\n} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n  selector: '[mat-line], [matLine]',\n  host: {'class': 'mat-line'}\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(lines: QueryList<unknown>, element: ElementRef<HTMLElement>,\n                         prefix = 'mat') {\n  // Note: doesn't need to unsubscribe, because `changes`\n  // gets completed by Angular when the view is destroyed.\n  lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n    setClass(element, `${prefix}-2-line`, false);\n    setClass(element, `${prefix}-3-line`, false);\n    setClass(element, `${prefix}-multi-line`, false);\n\n    if (length === 2 || length === 3) {\n      setClass(element, `${prefix}-${length}-line`, true);\n    } else if (length > 3) {\n      setClass(element, `${prefix}-multi-line`, true);\n    }\n  });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n  const classList = element.nativeElement.classList;\n  isAdd ? classList.add(className) : classList.remove(className);\n}\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatLine, MatCommonModule],\n  declarations: [MatLine],\n})\nexport class MatLineModule { }\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** Possible states for a ripple element. */\nexport const enum RippleState {\n  FADING_IN, VISIBLE, FADING_OUT, HIDDEN\n}\n\nexport type RippleConfig = {\n  color?: string;\n  centered?: boolean;\n  radius?: number;\n  persistent?: boolean;\n  animation?: RippleAnimationConfig;\n  terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n  /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n  enterDuration?: number;\n  /** Duration in milliseconds for the exit animation (fade-out). */\n  exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n\n  /** Current state of the ripple. */\n  state: RippleState = RippleState.HIDDEN;\n\n  constructor(\n    private _renderer: {fadeOutRipple(ref: RippleRef): void},\n    /** Reference to the ripple HTML element. */\n    public element: HTMLElement,\n    /** Ripple configuration used for the ripple. */\n    public config: RippleConfig) {\n  }\n\n  /** Fades out the ripple element. */\n  fadeOut() {\n    this._renderer.fadeOutRipple(this);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 {ElementRef, NgZone} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n  /** Configuration for ripples that are launched on pointer down. */\n  rippleConfig: RippleConfig;\n  /** Whether ripples on pointer down should be disabled. */\n  rippleDisabled: boolean;\n}\n\n\n// TODO: import these values from `@material/ripple` eventually.\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n  enterDuration: 225,\n  exitDuration: 150\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options that apply to all the event listeners that are bound by the ripple renderer. */\nconst passiveEventOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n  /** Element where the ripples are being added to. */\n  private _containerElement: HTMLElement;\n\n  /** Element which triggers the ripple elements on mouse events. */\n  private _triggerElement: HTMLElement | null;\n\n  /** Whether the pointer is currently down or not. */\n  private _isPointerDown = false;\n\n  /** Set of currently active ripple references. */\n  private _activeRipples = new Set<RippleRef>();\n\n  /** Latest non-persistent ripple that was triggered. */\n  private _mostRecentTransientRipple: RippleRef | null;\n\n  /** Time in milliseconds when the last touchstart event happened. */\n  private _lastTouchStartEvent: number;\n\n  /** Whether pointer-up event listeners have been registered. */\n  private _pointerUpEventsRegistered = false;\n\n  /**\n   * Cached dimensions of the ripple container. Set when the first\n   * ripple is shown and cleared once no more ripples are visible.\n   */\n  private _containerRect: ClientRect | null;\n\n  constructor(private _target: RippleTarget,\n              private _ngZone: NgZone,\n              elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n              platform: Platform) {\n\n    // Only do anything if we're on the browser.\n    if (platform.isBrowser) {\n      this._containerElement = coerceElement(elementOrElementRef);\n    }\n  }\n\n  /**\n   * Fades in a ripple at the given coordinates.\n   * @param x Coordinate within the element, along the X axis at which to start the ripple.\n   * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n   * @param config Extra ripple options.\n   */\n  fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n    const containerRect = this._containerRect =\n                          this._containerRect || this._containerElement.getBoundingClientRect();\n    const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n    if (config.centered) {\n      x = containerRect.left + containerRect.width / 2;\n      y = containerRect.top + containerRect.height / 2;\n    }\n\n    const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n    const offsetX = x - containerRect.left;\n    const offsetY = y - containerRect.top;\n    const duration = animationConfig.enterDuration;\n\n    const ripple = document.createElement('div');\n    ripple.classList.add('mat-ripple-element');\n\n    ripple.style.left = `${offsetX - radius}px`;\n    ripple.style.top = `${offsetY - radius}px`;\n    ripple.style.height = `${radius * 2}px`;\n    ripple.style.width = `${radius * 2}px`;\n\n    // If a custom color has been specified, set it as inline style. If no color is\n    // set, the default color will be applied through the ripple theme styles.\n    if (config.color != null) {\n      ripple.style.backgroundColor = config.color;\n    }\n\n    ripple.style.transitionDuration = `${duration}ms`;\n\n    this._containerElement.appendChild(ripple);\n\n    // By default the browser does not recalculate the styles of dynamically created\n    // ripple elements. This is critical because then the `scale` would not animate properly.\n    enforceStyleRecalculation(ripple);\n\n    ripple.style.transform = 'scale(1)';\n\n    // Exposed reference to the ripple that will be returned.\n    const rippleRef = new RippleRef(this, ripple, config);\n\n    rippleRef.state = RippleState.FADING_IN;\n\n    // Add the ripple reference to the list of all active ripples.\n    this._activeRipples.add(rippleRef);\n\n    if (!config.persistent) {\n      this._mostRecentTransientRipple = rippleRef;\n    }\n\n    // Wait for the ripple element to be completely faded in.\n    // Once it's faded in, the ripple can be hidden immediately if the mouse is released.\n    this._runTimeoutOutsideZone(() => {\n      const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n\n      rippleRef.state = RippleState.VISIBLE;\n\n      // When the timer runs out while the user has kept their pointer down, we want to\n      // keep only the persistent ripples and the latest transient ripple. We do this,\n      // because we don't want stacked transient ripples to appear after their enter\n      // animation has finished.\n      if (!config.persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n        rippleRef.fadeOut();\n      }\n    }, duration);\n\n    return rippleRef;\n  }\n\n  /** Fades out a ripple reference. */\n  fadeOutRipple(rippleRef: RippleRef) {\n    const wasActive = this._activeRipples.delete(rippleRef);\n\n    if (rippleRef === this._mostRecentTransientRipple) {\n      this._mostRecentTransientRipple = null;\n    }\n\n    // Clear out the cached bounding rect if we have no more ripples.\n    if (!this._activeRipples.size) {\n      this._containerRect = null;\n    }\n\n    // For ripples that are not active anymore, don't re-run the fade-out animation.\n    if (!wasActive) {\n      return;\n    }\n\n    const rippleEl = rippleRef.element;\n    const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n    rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n    rippleEl.style.opacity = '0';\n    rippleRef.state = RippleState.FADING_OUT;\n\n    // Once the ripple faded out, the ripple can be safely removed from the DOM.\n    this._runTimeoutOutsideZone(() => {\n      rippleRef.state = RippleState.HIDDEN;\n      rippleEl.parentNode!.removeChild(rippleEl);\n    }, animationConfig.exitDuration);\n  }\n\n  /** Fades out all currently active ripples. */\n  fadeOutAll() {\n    this._activeRipples.forEach(ripple => ripple.fadeOut());\n  }\n\n  /** Fades out all currently active non-persistent ripples. */\n  fadeOutAllNonPersistent() {\n    this._activeRipples.forEach(ripple => {\n      if (!ripple.config.persistent) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Sets up the trigger event listeners */\n  setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n    const element = coerceElement(elementOrElementRef);\n\n    if (!element || element === this._triggerElement) {\n      return;\n    }\n\n    // Remove all previously registered event listeners from the trigger element.\n    this._removeTriggerEvents();\n\n    this._triggerElement = element;\n    this._registerEvents(pointerDownEvents);\n  }\n\n  /**\n   * Handles all registered events.\n   * @docs-private\n   */\n  handleEvent(event: Event) {\n    if (event.type === 'mousedown') {\n      this._onMousedown(event as MouseEvent);\n    } else if (event.type === 'touchstart') {\n      this._onTouchStart(event as TouchEvent);\n    } else {\n      this._onPointerUp();\n    }\n\n    // If pointer-up events haven't been registered yet, do so now.\n    // We do this on-demand in order to reduce the total number of event listeners\n    // registered by the ripples, which speeds up the rendering time for large UIs.\n    if (!this._pointerUpEventsRegistered) {\n      this._registerEvents(pointerUpEvents);\n      this._pointerUpEventsRegistered = true;\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using mouse. */\n  private _onMousedown(event: MouseEvent) {\n    // Screen readers will fire fake mouse events for space/enter. Skip launching a\n    // ripple in this case for consistency with the non-screen-reader experience.\n    const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n    const isSyntheticEvent = this._lastTouchStartEvent &&\n        Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n    if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n      this._isPointerDown = true;\n      this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using touch. */\n  private _onTouchStart(event: TouchEvent) {\n    if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n      // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n      // events will launch a second ripple if we don't ignore mouse events for a specific\n      // time after a touchstart event.\n      this._lastTouchStartEvent = Date.now();\n      this._isPointerDown = true;\n\n      // Use `changedTouches` so we skip any touches where the user put\n      // their finger down, but used another finger to tap the element again.\n      const touches = event.changedTouches;\n\n      for (let i = 0; i < touches.length; i++) {\n        this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n      }\n    }\n  }\n\n  /** Function being called whenever the trigger is being released. */\n  private _onPointerUp() {\n    if (!this._isPointerDown) {\n      return;\n    }\n\n    this._isPointerDown = false;\n\n    // Fade-out all ripples that are visible and not persistent.\n    this._activeRipples.forEach(ripple => {\n      // By default, only ripples that are completely visible will fade out on pointer release.\n      // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n      const isVisible = ripple.state === RippleState.VISIBLE ||\n        ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN;\n\n      if (!ripple.config.persistent && isVisible) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n  private _runTimeoutOutsideZone(fn: Function, delay = 0) {\n    this._ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n  }\n\n  /** Registers event listeners for a given list of events. */\n  private _registerEvents(eventTypes: string[]) {\n    this._ngZone.runOutsideAngular(() => {\n      eventTypes.forEach((type) => {\n        this._triggerElement!.addEventListener(type, this, passiveEventOptions);\n      });\n    });\n  }\n\n  /** Removes previously registered event listeners from the trigger element. */\n  _removeTriggerEvents() {\n    if (this._triggerElement) {\n      pointerDownEvents.forEach((type) => {\n        this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n      });\n\n      if (this._pointerUpEventsRegistered) {\n        pointerUpEvents.forEach((type) => {\n          this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n        });\n      }\n    }\n  }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n  // Enforce a style recalculation by calling `getComputedStyle` and accessing any property.\n  // Calling `getPropertyValue` is important to let optimizers know that this is not a noop.\n  // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n  window.getComputedStyle(element).getPropertyValue('opacity');\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: ClientRect) {\n  const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n  const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n  return Math.sqrt(distX * distX + distY * distY);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n} from '@angular/core';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n  /**\n   * Whether ripples should be disabled. Ripples can be still launched manually by using\n   * the `launch()` method. Therefore focus indicators will still show up.\n   */\n  disabled?: boolean;\n\n  /**\n   * Default configuration for the animation duration of the ripples. There are two phases with\n   * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n   * by the value of `matRippleAnimation` or if the `NoopAnimationsModule` is included.\n   */\n  animation?: RippleAnimationConfig;\n\n  /**\n   * Whether ripples should start fading out immediately after the mouse or touch is released. By\n   * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n   */\n  terminateOnPointerUp?: boolean;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\n    new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\n\n@Directive({\n  selector: '[mat-ripple], [matRipple]',\n  exportAs: 'matRipple',\n  host: {\n    'class': 'mat-ripple',\n    '[class.mat-ripple-unbounded]': 'unbounded'\n  }\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n\n  /** Custom color for all ripples. */\n  @Input('matRippleColor') color: string;\n\n  /** Whether the ripples should be visible outside the component's bounds. */\n  @Input('matRippleUnbounded') unbounded: boolean;\n\n  /**\n   * Whether the ripple always originates from the center of the host element's bounds, rather\n   * than originating from the location of the click event.\n   */\n  @Input('matRippleCentered') centered: boolean;\n\n  /**\n   * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n   * will be the distance from the center of the ripple to the furthest corner of the host element's\n   * bounding rectangle.\n   */\n  @Input('matRippleRadius') radius: number = 0;\n\n  /**\n   * Configuration for the ripple animation. Allows modifying the enter and exit animation\n   * duration of the ripples. The animation durations will be overwritten if the\n   * `NoopAnimationsModule` is being used.\n   */\n  @Input('matRippleAnimation') animation: RippleAnimationConfig;\n\n  /**\n   * Whether click events will not trigger the ripple. Ripples can be still launched manually\n   * by using the `launch()` method.\n   */\n  @Input('matRippleDisabled')\n  get disabled() { return this._disabled; }\n  set disabled(value: boolean) {\n    if (value) {\n      this.fadeOutAllNonPersistent();\n    }\n    this._disabled = value;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _disabled: boolean = false;\n\n  /**\n   * The element that triggers the ripple when click events are received.\n   * Defaults to the directive's host element.\n   */\n  @Input('matRippleTrigger')\n  get trigger() { return this._trigger || this._elementRef.nativeElement; }\n  set trigger(trigger: HTMLElement) {\n    this._trigger = trigger;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _trigger: HTMLElement;\n\n  /** Renderer for the ripple DOM manipulations. */\n  private _rippleRenderer: RippleRenderer;\n\n  /** Options that are set globally for all ripples. */\n  private _globalOptions: RippleGlobalOptions;\n\n  /** Whether ripple directive is initialized and the input bindings are set. */\n  private _isInitialized: boolean = false;\n\n  constructor(private _elementRef: ElementRef<HTMLElement>,\n              ngZone: NgZone,\n              platform: Platform,\n              @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions?: RippleGlobalOptions,\n              @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n    this._globalOptions = globalOptions || {};\n    this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n  }\n\n  ngOnInit() {\n    this._isInitialized = true;\n    this._setupTriggerEventsIfEnabled();\n  }\n\n  ngOnDestroy() {\n    this._rippleRenderer._removeTriggerEvents();\n  }\n\n  /** Fades out all currently showing ripple elements. */\n  fadeOutAll() {\n    this._rippleRenderer.fadeOutAll();\n  }\n\n  /** Fades out all currently showing non-persistent ripple elements. */\n  fadeOutAllNonPersistent() {\n    this._rippleRenderer.fadeOutAllNonPersistent();\n  }\n\n  /**\n   * Ripple configuration from the directive's input values.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleConfig(): RippleConfig {\n    return {\n      centered: this.centered,\n      radius: this.radius,\n      color: this.color,\n      animation: {\n        ...this._globalOptions.animation,\n        ...(this._animationMode === 'NoopAnimations' ? {enterDuration: 0, exitDuration: 0} : {}),\n        ...this.animation\n      },\n      terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n    };\n  }\n\n  /**\n   * Whether ripples on pointer-down are disabled or not.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleDisabled(): boolean {\n    return this.disabled || !!this._globalOptions.disabled;\n  }\n\n  /** Sets up the trigger event listeners if ripples are enabled. */\n  private _setupTriggerEventsIfEnabled() {\n    if (!this.disabled && this._isInitialized) {\n      this._rippleRenderer.setupTriggerEvents(this.trigger);\n    }\n  }\n\n  /**\n   * Launches a manual ripple using the specified ripple configuration.\n   * @param config Configuration for the manual ripple.\n   */\n  launch(config: RippleConfig): RippleRef;\n\n  /**\n   * Launches a manual ripple at the specified coordinates relative to the viewport.\n   * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param config Optional ripple configuration for the manual ripple.\n   */\n  launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n  /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n  launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n    if (typeof configOrX === 'number') {\n      return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n    } else {\n      return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatRipple} from './ripple';\n\nexport * from './ripple';\nexport * from './ripple-ref';\nexport * from './ripple-renderer';\n\n@NgModule({\n  imports: [MatCommonModule, PlatformModule],\n  exports: [MatRipple, MatCommonModule],\n  declarations: [MatRipple],\n})\nexport class MatRippleModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  Component,\n  ViewEncapsulation,\n  Input,\n  ChangeDetectionStrategy,\n  Inject,\n  Optional,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'mat-pseudo-checkbox',\n  styleUrls: ['pseudo-checkbox.css'],\n  template: '',\n  host: {\n    'class': 'mat-pseudo-checkbox',\n    '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n    '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n    '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n    '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n  },\n})\nexport class MatPseudoCheckbox {\n  /** Display state of the checkbox. */\n  @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n  /** Whether the checkbox is disabled. */\n  @Input() disabled: boolean = false;\n\n  constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox/pseudo-checkbox';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatPseudoCheckbox],\n  declarations: [MatPseudoCheckbox]\n})\nexport class MatPseudoCheckboxModule { }\n\n\nexport * from './pseudo-checkbox/pseudo-checkbox';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n  disableRipple?: boolean;\n  multiple?: boolean;\n  inertGroups?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT =\n    new InjectionToken<MatOptionParentComponent>('MAT_OPTION_PARENT_COMPONENT');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  InjectionToken,\n  Input,\n  ViewEncapsulation,\n  Directive, Inject, Optional\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '../common-behaviors/disabled';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n//    when the text will be read out so sometimes it comes in too late or never if the user\n//    navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n//    won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n//     doesn't read out the text at all. Furthermore, on\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nconst _MatOptgroupMixinBase = mixinDisabled(class {});\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n@Directive()\nexport class _MatOptgroupBase extends _MatOptgroupMixinBase implements CanDisable {\n  /** Label for the option group. */\n  @Input() label: string;\n\n  /** Unique id for the underlying label. */\n  _labelId: string = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n\n  /** Whether the group is in inert a11y mode. */\n  _inert: boolean;\n\n  constructor(@Inject(MAT_OPTION_PARENT_COMPONENT) @Optional() parent?: MatOptionParentComponent) {\n    super();\n    this._inert = parent?.inertGroups ?? false;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n  selector: 'mat-optgroup',\n  exportAs: 'matOptgroup',\n  templateUrl: 'optgroup.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  styleUrls: ['optgroup.css'],\n  host: {\n    'class': 'mat-optgroup',\n    '[attr.role]': '_inert ? null : \"group\"',\n    '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n    '[attr.aria-labelledby]': '_inert ? null : _labelId',\n    '[class.mat-optgroup-disabled]': 'disabled',\n  },\n  providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup extends _MatOptgroupBase {\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n  Directive,\n} from '@angular/core';\nimport {FocusOptions, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {MatOptgroup, _MatOptgroupBase, MAT_OPTGROUP} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange {\n  constructor(\n    /** Reference to the option that emitted the event. */\n    public source: _MatOptionBase,\n    /** Whether the change in the option's value was a result of a user action. */\n    public isUserInput = false) { }\n}\n\n@Directive()\nexport class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy {\n  private _selected = false;\n  private _active = false;\n  private _disabled = false;\n  private _mostRecentViewValue = '';\n\n  /** Whether the wrapping component is in multiple selection mode. */\n  get multiple() { return this._parent && this._parent.multiple; }\n\n  /** Whether or not the option is currently selected. */\n  get selected(): boolean { return this._selected; }\n\n  /** The form value of the option. */\n  @Input() value: any;\n\n  /** The unique ID of the option. */\n  @Input() id: string = `mat-option-${_uniqueIdCounter++}`;\n\n  /** Whether the option is disabled. */\n  @Input()\n  get disabled() { return (this.group && this.group.disabled) || this._disabled; }\n  set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n  /** Whether ripples for the option are disabled. */\n  get disableRipple() { return this._parent && this._parent.disableRipple; }\n\n  /** Event emitted when the option is selected or deselected. */\n  // tslint:disable-next-line:no-output-on-prefix\n  @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange>();\n\n  /** Emits when the state of the option changes and any parents have to be notified. */\n  readonly _stateChanges = new Subject<void>();\n\n  constructor(\n    private _element: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _parent: MatOptionParentComponent,\n    readonly group: _MatOptgroupBase) {}\n\n  /**\n   * Whether or not the option is currently active and ready to be selected.\n   * An active option displays styles as if it is focused, but the\n   * focus is actually retained somewhere else. This comes in handy\n   * for components like autocomplete where focus must remain on the input.\n   */\n  get active(): boolean {\n    return this._active;\n  }\n\n  /**\n   * The displayed value of the option. It is necessary to show the selected option in the\n   * select's trigger.\n   */\n  get viewValue(): string {\n    // TODO(kara): Add input property alternative for node envs.\n    return (this._getHostElement().textContent || '').trim();\n  }\n\n  /** Selects the option. */\n  select(): void {\n    if (!this._selected) {\n      this._selected = true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Deselects the option. */\n  deselect(): void {\n    if (this._selected) {\n      this._selected = false;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Sets focus onto this option. */\n  focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n    // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n    // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n    const element = this._getHostElement();\n\n    if (typeof element.focus === 'function') {\n      element.focus(options);\n    }\n  }\n\n  /**\n   * This method sets display styles on the option to make it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setActiveStyles(): void {\n    if (!this._active) {\n      this._active = true;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * This method removes display styles on the option that made it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setInactiveStyles(): void {\n    if (this._active) {\n      this._active = false;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    return this.viewValue;\n  }\n\n  /** Ensures the option is selected when activated from the keyboard. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n      this._selectViaInteraction();\n\n      // Prevent the page from scrolling down and form submits.\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * `Selects the option while indicating the selection came from the user. Used to\n   * determine if the select's view -> model callback should be invoked.`\n   */\n  _selectViaInteraction(): void {\n    if (!this.disabled) {\n      this._selected = this.multiple ? !this._selected : true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent(true);\n    }\n  }\n\n  /**\n   * Gets the `aria-selected` value for the option. We explicitly omit the `aria-selected`\n   * attribute from single-selection, unselected options. Including the `aria-selected=\"false\"`\n   * attributes adds a significant amount of noise to screen-reader users without providing useful\n   * information.\n   */\n  _getAriaSelected(): boolean|null {\n    return this.selected || (this.multiple ? false : null);\n  }\n\n  /** Returns the correct tabindex for the option depending on disabled state. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Gets the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._element.nativeElement;\n  }\n\n  ngAfterViewChecked() {\n    // Since parent components could be using the option's label to display the selected values\n    // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n    // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n    // relatively cheap, however we still limit them only to selected options in order to avoid\n    // hitting the DOM too often.\n    if (this._selected) {\n      const viewValue = this.viewValue;\n\n      if (viewValue !== this._mostRecentViewValue) {\n        this._mostRecentViewValue = viewValue;\n        this._stateChanges.next();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  /** Emits the selection change event. */\n  private _emitSelectionChangeEvent(isUserInput = false): void {\n    this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n  selector: 'mat-option',\n  exportAs: 'matOption',\n  host: {\n    'role': 'option',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[class.mat-selected]': 'selected',\n    '[class.mat-option-multiple]': 'multiple',\n    '[class.mat-active]': 'active',\n    '[id]': 'id',\n    '[attr.aria-selected]': '_getAriaSelected()',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[class.mat-option-disabled]': 'disabled',\n    '(click)': '_selectViaInteraction()',\n    '(keydown)': '_handleKeydown($event)',\n    'class': 'mat-option mat-focus-indicator',\n  },\n  styleUrls: ['option.css'],\n  templateUrl: 'option.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption extends _MatOptionBase {\n  constructor(\n    element: ElementRef<HTMLElement>,\n    changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(MAT_OPTION_PARENT_COMPONENT) parent: MatOptionParentComponent,\n    @Optional() @Inject(MAT_OPTGROUP) group: MatOptgroup) {\n    super(element, changeDetectorRef, parent, group);\n  }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(optionIndex: number, options: QueryList<MatOption>,\n  optionGroups: QueryList<MatOptgroup>): number {\n\n  if (optionGroups.length) {\n    let optionsArray = options.toArray();\n    let groups = optionGroups.toArray();\n    let groupCounter = 0;\n\n    for (let i = 0; i < optionIndex + 1; i++) {\n      if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n        groupCounter++;\n      }\n    }\n\n    return groupCounter;\n  }\n\n  return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(optionOffset: number, optionHeight: number,\n    currentScrollPosition: number, panelHeight: number): number {\n  if (optionOffset < currentScrollPosition) {\n    return optionOffset;\n  }\n\n  if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n    return Math.max(0, optionOffset - panelHeight + optionHeight);\n  }\n\n  return currentScrollPosition;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatRippleModule} from '../ripple/index';\nimport {MatPseudoCheckboxModule} from '../selection/index';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n\n@NgModule({\n  imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n  exports: [MatOption, MatOptgroup],\n  declarations: [MatOption, MatOptgroup]\n})\nexport class MatOptionModule {}\n\n\nexport * from './option';\nexport * from './optgroup';\nexport * from './option-parent';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './version';\nexport * from './animation/animation';\nexport * from './common-behaviors/index';\nexport * from './datetime/index';\nexport * from './error/error-options';\nexport * from './line/line';\nexport * from './option/index';\nexport * from './ripple/index';\nexport * from './selection/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MATERIAL_SANITY_CHECKS_FACTORY as ɵangular_material_src_material_core_core_a} from './common-behaviors/common-module';"]}
  • trip-planner-front/node_modules/@angular/material/autocomplete/autocomplete-module.d.ts

    r6a3a178 rfa375fe  
    66 * found in the LICENSE file at https://angular.io/license
    77 */
     8import * as ɵngcc0 from '@angular/core';
     9import * as ɵngcc1 from './autocomplete';
     10import * as ɵngcc2 from './autocomplete-trigger';
     11import * as ɵngcc3 from './autocomplete-origin';
     12import * as ɵngcc4 from '@angular/cdk/overlay';
     13import * as ɵngcc5 from '@angular/material/core';
     14import * as ɵngcc6 from '@angular/common';
     15import * as ɵngcc7 from '@angular/cdk/scrolling';
    816export declare class MatAutocompleteModule {
     17    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatAutocompleteModule, never>;
     18    static ɵmod: ɵngcc0.ɵɵNgModuleDeclaration<MatAutocompleteModule, [typeof ɵngcc1.MatAutocomplete, typeof ɵngcc2.MatAutocompleteTrigger, typeof ɵngcc3.MatAutocompleteOrigin], [typeof ɵngcc4.OverlayModule, typeof ɵngcc5.MatOptionModule, typeof ɵngcc5.MatCommonModule, typeof ɵngcc6.CommonModule], [typeof ɵngcc1.MatAutocomplete, typeof ɵngcc2.MatAutocompleteTrigger, typeof ɵngcc3.MatAutocompleteOrigin, typeof ɵngcc7.CdkScrollableModule, typeof ɵngcc5.MatOptionModule, typeof ɵngcc5.MatCommonModule]>;
     19    static ɵinj: ɵngcc0.ɵɵInjectorDeclaration<MatAutocompleteModule>;
    920}
     21
     22//# sourceMappingURL=autocomplete-module.d.ts.map
  • trip-planner-front/node_modules/@angular/material/autocomplete/autocomplete-origin.d.ts

    r6a3a178 rfa375fe  
    88import { ElementRef } from '@angular/core';
    99/** Base class containing all of the functionality for `MatAutocompleteOrigin`. */
     10import * as ɵngcc0 from '@angular/core';
    1011export declare abstract class _MatAutocompleteOriginBase {
    1112    /** Reference to the element on which the directive is applied. */
     
    1415    /** Reference to the element on which the directive is applied. */
    1516    elementRef: ElementRef<HTMLElement>);
     17    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<_MatAutocompleteOriginBase, never>;
     18    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<_MatAutocompleteOriginBase, never, never, {}, {}, never>;
    1619}
    1720/**
     
    2023 */
    2124export declare class MatAutocompleteOrigin extends _MatAutocompleteOriginBase {
     25    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatAutocompleteOrigin, never>;
     26    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<MatAutocompleteOrigin, "[matAutocompleteOrigin]", ["matAutocompleteOrigin"], {}, {}, never>;
    2227}
     28
     29//# sourceMappingURL=autocomplete-origin.d.ts.map
  • trip-planner-front/node_modules/@angular/material/autocomplete/autocomplete-trigger.d.ts

    r6a3a178 rfa375fe  
    1818import { _MatAutocompleteOriginBase } from './autocomplete-origin';
    1919/** Injection token that determines the scroll handling while the autocomplete panel is open. */
     20import * as ɵngcc0 from '@angular/core';
    2021export declare const MAT_AUTOCOMPLETE_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>;
    2122/** @docs-private */
     
    191192    private _scrollToOption;
    192193    static ngAcceptInputType_autocompleteDisabled: BooleanInput;
     194    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<_MatAutocompleteTriggerBase, [null, null, null, null, null, null, { optional: true; }, { optional: true; host: true; }, { optional: true; }, null, { optional: true; }]>;
     195    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<_MatAutocompleteTriggerBase, never, never, { "position": "matAutocompletePosition"; "autocompleteAttribute": "autocomplete"; "autocompleteDisabled": "matAutocompleteDisabled"; "autocomplete": "matAutocomplete"; "connectedTo": "matAutocompleteConnectedTo"; }, {}, never>;
    193196}
    194197export declare class MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {
    195198    protected _aboveClass: string;
     199    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatAutocompleteTrigger, never>;
     200    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<MatAutocompleteTrigger, "input[matAutocomplete], textarea[matAutocomplete]", ["matAutocompleteTrigger"], {}, {}, never>;
    196201}
     202
     203//# sourceMappingURL=autocomplete-trigger.d.ts.map
  • trip-planner-front/node_modules/@angular/material/autocomplete/autocomplete.d.ts

    r6a3a178 rfa375fe  
    1212import { CanDisableRipple, _MatOptgroupBase, _MatOptionBase, MatOption, MatOptgroup } from '@angular/material/core';
    1313/** Event object that is emitted when an autocomplete option is selected. */
     14import * as ɵngcc0 from '@angular/core';
    1415export declare class MatAutocompleteSelectedEvent {
    1516    /** Reference to the autocomplete panel that emitted the event. */
     
    130131    static ngAcceptInputType_autoActiveFirstOption: BooleanInput;
    131132    static ngAcceptInputType_disableRipple: BooleanInput;
     133    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<_MatAutocompleteBase, never>;
     134    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<_MatAutocompleteBase, never, never, { "displayWith": "displayWith"; "autoActiveFirstOption": "autoActiveFirstOption"; "classList": "class"; "ariaLabel": "aria-label"; "ariaLabelledby": "aria-labelledby"; "panelWidth": "panelWidth"; }, { "optionSelected": "optionSelected"; "opened": "opened"; "closed": "closed"; "optionActivated": "optionActivated"; }, never>;
    132135}
    133136export declare class MatAutocomplete extends _MatAutocompleteBase {
     
    138141    protected _visibleClass: string;
    139142    protected _hiddenClass: string;
     143    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatAutocomplete, never>;
     144    static ɵcmp: ɵngcc0.ɵɵComponentDeclaration<MatAutocomplete, "mat-autocomplete", ["matAutocomplete"], { "disableRipple": "disableRipple"; }, {}, ["optionGroups", "options"], ["*"]>;
    140145}
    141146export {};
     147
     148//# sourceMappingURL=autocomplete.d.ts.map
  • trip-planner-front/node_modules/@angular/material/autocomplete/index.d.ts

    r6a3a178 rfa375fe  
    33 */
    44export * from './public-api';
     5
     6//# sourceMappingURL=index.d.ts.map
  • trip-planner-front/node_modules/@angular/material/autocomplete/package.json

    r6a3a178 rfa375fe  
    22  "name": "@angular/material/autocomplete",
    33  "main": "../bundles/material-autocomplete.umd.js",
     4  "fesm2015_ivy_ngcc": "../__ivy_ngcc__/fesm2015/autocomplete.js",
    45  "fesm2015": "../fesm2015/autocomplete.js",
    56  "esm2015": "../esm2015/autocomplete/index.js",
    67  "typings": "./index.d.ts",
     8  "module_ivy_ngcc": "../__ivy_ngcc__/fesm2015/autocomplete.js",
    79  "module": "../fesm2015/autocomplete.js",
    8   "es2015": "../fesm2015/autocomplete.js"
     10  "es2015_ivy_ngcc": "../__ivy_ngcc__/fesm2015/autocomplete.js",
     11  "es2015": "../fesm2015/autocomplete.js",
     12  "__processed_by_ivy_ngcc__": {
     13    "es2015": "12.2.9",
     14    "fesm2015": "12.2.9",
     15    "module": "12.2.9",
     16    "typings": "12.2.9"
     17  },
     18  "scripts": {
     19    "prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled by NGCC. This is not allowed.\\nPlease delete and rebuild the package, without compiling with NGCC, before attempting to publish.\\nNote that NGCC may have been run by importing this package into another project that is being built with Ivy enabled.\\n')\" && exit 1"
     20  }
    921}
  • trip-planner-front/node_modules/@angular/material/badge/badge.d.ts

    r6a3a178 rfa375fe  
    88import { AriaDescriber } from '@angular/cdk/a11y';
    99import { BooleanInput } from '@angular/cdk/coercion';
    10 import { ElementRef, NgZone, OnDestroy, OnInit, Renderer2 } from '@angular/core';
     10import { ElementRef, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';
    1111import { CanDisable, ThemePalette } from '@angular/material/core';
    1212/** @docs-private */
     
    2020export declare type MatBadgeSize = 'small' | 'medium' | 'large';
    2121/** Directive to display a text badge. */
    22 export declare class MatBadge extends _MatBadgeBase implements OnInit, OnDestroy, CanDisable {
     22export declare class MatBadge extends _MatBadgeBase implements OnDestroy, OnChanges, CanDisable {
    2323    private _ngZone;
    2424    private _elementRef;
     
    2626    private _renderer;
    2727    private _animationMode?;
     28    /** Whether the badge has any content. */
     29    _hasContent: boolean;
    2830    /** The color of the badge. Can be `primary`, `accent`, or `warn`. */
    2931    get color(): ThemePalette;
     
    4042    position: MatBadgePosition;
    4143    /** The content for the badge */
    42     get content(): string | number | undefined | null;
    43     set content(newContent: string | number | undefined | null);
    44     private _content;
     44    content: string | number | undefined | null;
    4545    /** Message used to describe the decorated element via aria-describedby */
    4646    get description(): string;
     
    5555    /** Unique id for the badge */
    5656    _id: number;
    57     /** Visible badge element. */
    5857    private _badgeElement;
    59     /** Whether the OnInit lifecycle hook has run yet */
    60     private _isInitialized;
    6158    constructor(_ngZone: NgZone, _elementRef: ElementRef<HTMLElement>, _ariaDescriber: AriaDescriber, _renderer: Renderer2, _animationMode?: string | undefined);
    6259    /** Whether the badge is above the host or not */
     
    6461    /** Whether the badge is after the host or not */
    6562    isAfter(): boolean;
     63    ngOnChanges(changes: SimpleChanges): void;
     64    ngOnDestroy(): void;
    6665    /**
    67      * Gets the element into which the badge's content is being rendered. Undefined if the element
    68      * hasn't been created (e.g. if the badge doesn't have content).
     66     * Gets the element into which the badge's content is being rendered.
     67     * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).
    6968     */
    7069    getBadgeElement(): HTMLElement | undefined;
    71     ngOnInit(): void;
    72     ngOnDestroy(): void;
     70    /** Injects a span element into the DOM with the content. */
     71    private _updateTextContent;
    7372    /** Creates the badge element */
    7473    private _createBadgeElement;
    75     /** Update the text content of the badge element in the DOM, creating the element if necessary. */
    76     private _updateRenderedContent;
    77     /** Updates the host element's aria description via AriaDescriber. */
     74    /** Sets the aria-label property on the element */
    7875    private _updateHostAriaDescription;
    7976    /** Adds css theme class given the color to the component host */
     
    8178    /** Clears any existing badges that might be left over from server-side rendering. */
    8279    private _clearExistingBadges;
     80    /** Gets the string representation of the badge content. */
     81    private _stringifyContent;
    8382    static ngAcceptInputType_disabled: BooleanInput;
    8483    static ngAcceptInputType_hidden: BooleanInput;
    8584    static ngAcceptInputType_overlap: BooleanInput;
    8685    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatBadge, [null, null, null, null, { optional: true; }]>;
    87     static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<MatBadge, "[matBadge]", never, { "disabled": "matBadgeDisabled"; "position": "matBadgePosition"; "size": "matBadgeSize"; "color": "matBadgeColor"; "overlap": "matBadgeOverlap"; "content": "matBadge"; "description": "matBadgeDescription"; "hidden": "matBadgeHidden"; }, {}, never>;
     86    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<MatBadge, "[matBadge]", never, { "disabled": "matBadgeDisabled"; "position": "matBadgePosition"; "size": "matBadgeSize"; "color": "matBadgeColor"; "overlap": "matBadgeOverlap"; "description": "matBadgeDescription"; "hidden": "matBadgeHidden"; "content": "matBadge"; }, {}, never>;
    8887}
    8988export {};
  • trip-planner-front/node_modules/@angular/material/badge/badge.d.ts.__ivy_ngcc_bak

    r6a3a178 rfa375fe  
    88import { AriaDescriber } from '@angular/cdk/a11y';
    99import { BooleanInput } from '@angular/cdk/coercion';
    10 import { ElementRef, NgZone, OnDestroy, OnInit, Renderer2 } from '@angular/core';
     10import { ElementRef, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';
    1111import { CanDisable, ThemePalette } from '@angular/material/core';
    1212/** @docs-private */
     
    1919export declare type MatBadgeSize = 'small' | 'medium' | 'large';
    2020/** Directive to display a text badge. */
    21 export declare class MatBadge extends _MatBadgeBase implements OnInit, OnDestroy, CanDisable {
     21export declare class MatBadge extends _MatBadgeBase implements OnDestroy, OnChanges, CanDisable {
    2222    private _ngZone;
    2323    private _elementRef;
     
    2525    private _renderer;
    2626    private _animationMode?;
     27    /** Whether the badge has any content. */
     28    _hasContent: boolean;
    2729    /** The color of the badge. Can be `primary`, `accent`, or `warn`. */
    2830    get color(): ThemePalette;
     
    3941    position: MatBadgePosition;
    4042    /** The content for the badge */
    41     get content(): string | number | undefined | null;
    42     set content(newContent: string | number | undefined | null);
    43     private _content;
     43    content: string | number | undefined | null;
    4444    /** Message used to describe the decorated element via aria-describedby */
    4545    get description(): string;
     
    5454    /** Unique id for the badge */
    5555    _id: number;
    56     /** Visible badge element. */
    5756    private _badgeElement;
    58     /** Whether the OnInit lifecycle hook has run yet */
    59     private _isInitialized;
    6057    constructor(_ngZone: NgZone, _elementRef: ElementRef<HTMLElement>, _ariaDescriber: AriaDescriber, _renderer: Renderer2, _animationMode?: string | undefined);
    6158    /** Whether the badge is above the host or not */
     
    6360    /** Whether the badge is after the host or not */
    6461    isAfter(): boolean;
     62    ngOnChanges(changes: SimpleChanges): void;
     63    ngOnDestroy(): void;
    6564    /**
    66      * Gets the element into which the badge's content is being rendered. Undefined if the element
    67      * hasn't been created (e.g. if the badge doesn't have content).
     65     * Gets the element into which the badge's content is being rendered.
     66     * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).
    6867     */
    6968    getBadgeElement(): HTMLElement | undefined;
    70     ngOnInit(): void;
    71     ngOnDestroy(): void;
     69    /** Injects a span element into the DOM with the content. */
     70    private _updateTextContent;
    7271    /** Creates the badge element */
    7372    private _createBadgeElement;
    74     /** Update the text content of the badge element in the DOM, creating the element if necessary. */
    75     private _updateRenderedContent;
    76     /** Updates the host element's aria description via AriaDescriber. */
     73    /** Sets the aria-label property on the element */
    7774    private _updateHostAriaDescription;
    7875    /** Adds css theme class given the color to the component host */
     
    8077    /** Clears any existing badges that might be left over from server-side rendering. */
    8178    private _clearExistingBadges;
     79    /** Gets the string representation of the badge content. */
     80    private _stringifyContent;
    8281    static ngAcceptInputType_disabled: BooleanInput;
    8382    static ngAcceptInputType_hidden: BooleanInput;
  • trip-planner-front/node_modules/@angular/material/badge/badge.d.ts.map

    r6a3a178 rfa375fe  
    1 {"version":3,"file":"badge.d.ts","sources":["badge.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 { AriaDescriber } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { ElementRef, NgZone, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { CanDisable, ThemePalette } from '@angular/material/core';\n/** @docs-private */\ndeclare const _MatBadgeBase: import(\"@angular/material/core/common-behaviors/constructor\").Constructor<CanDisable> & import(\"@angular/material/core/common-behaviors/constructor\").AbstractConstructor<CanDisable> & {\n    new (): {};\n};\n/** Allowed position options for matBadgePosition */\nexport declare type MatBadgePosition = 'above after' | 'above before' | 'below before' | 'below after' | 'before' | 'after' | 'above' | 'below';\n/** Allowed size options for matBadgeSize */\nexport declare type MatBadgeSize = 'small' | 'medium' | 'large';\n/** Directive to display a text badge. */\nexport declare class MatBadge extends _MatBadgeBase implements OnInit, OnDestroy, CanDisable {\n    private _ngZone;\n    private _elementRef;\n    private _ariaDescriber;\n    private _renderer;\n    private _animationMode?;\n    /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n    get color(): ThemePalette;\n    set color(value: ThemePalette);\n    private _color;\n    /** Whether the badge should overlap its contents or not */\n    get overlap(): boolean;\n    set overlap(val: boolean);\n    private _overlap;\n    /**\n     * Position the badge should reside.\n     * Accepts any combination of 'above'|'below' and 'before'|'after'\n     */\n    position: MatBadgePosition;\n    /** The content for the badge */\n    get content(): string | number | undefined | null;\n    set content(newContent: string | number | undefined | null);\n    private _content;\n    /** Message used to describe the decorated element via aria-describedby */\n    get description(): string;\n    set description(newDescription: string);\n    private _description;\n    /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n    size: MatBadgeSize;\n    /** Whether the badge is hidden. */\n    get hidden(): boolean;\n    set hidden(val: boolean);\n    private _hidden;\n    /** Unique id for the badge */\n    _id: number;\n    /** Visible badge element. */\n    private _badgeElement;\n    /** Whether the OnInit lifecycle hook has run yet */\n    private _isInitialized;\n    constructor(_ngZone: NgZone, _elementRef: ElementRef<HTMLElement>, _ariaDescriber: AriaDescriber, _renderer: Renderer2, _animationMode?: string | undefined);\n    /** Whether the badge is above the host or not */\n    isAbove(): boolean;\n    /** Whether the badge is after the host or not */\n    isAfter(): boolean;\n    /**\n     * Gets the element into which the badge's content is being rendered. Undefined if the element\n     * hasn't been created (e.g. if the badge doesn't have content).\n     */\n    getBadgeElement(): HTMLElement | undefined;\n    ngOnInit(): void;\n    ngOnDestroy(): void;\n    /** Creates the badge element */\n    private _createBadgeElement;\n    /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n    private _updateRenderedContent;\n    /** Updates the host element's aria description via AriaDescriber. */\n    private _updateHostAriaDescription;\n    /** Adds css theme class given the color to the component host */\n    private _setColor;\n    /** Clears any existing badges that might be left over from server-side rendering. */\n    private _clearExistingBadges;\n    static ngAcceptInputType_disabled: BooleanInput;\n    static ngAcceptInputType_hidden: BooleanInput;\n    static ngAcceptInputType_overlap: BooleanInput;\n}\nexport {};\n"]}
     1{"version":3,"file":"badge.d.ts","sources":["badge.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 { AriaDescriber } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { ElementRef, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';\nimport { CanDisable, ThemePalette } from '@angular/material/core';\n/** @docs-private */\ndeclare const _MatBadgeBase: import(\"@angular/material/core/common-behaviors/constructor\").Constructor<CanDisable> & import(\"@angular/material/core/common-behaviors/constructor\").AbstractConstructor<CanDisable> & {\n    new (): {};\n};\n/** Allowed position options for matBadgePosition */\nexport declare type MatBadgePosition = 'above after' | 'above before' | 'below before' | 'below after' | 'before' | 'after' | 'above' | 'below';\n/** Allowed size options for matBadgeSize */\nexport declare type MatBadgeSize = 'small' | 'medium' | 'large';\n/** Directive to display a text badge. */\nexport declare class MatBadge extends _MatBadgeBase implements OnDestroy, OnChanges, CanDisable {\n    private _ngZone;\n    private _elementRef;\n    private _ariaDescriber;\n    private _renderer;\n    private _animationMode?;\n    /** Whether the badge has any content. */\n    _hasContent: boolean;\n    /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n    get color(): ThemePalette;\n    set color(value: ThemePalette);\n    private _color;\n    /** Whether the badge should overlap its contents or not */\n    get overlap(): boolean;\n    set overlap(val: boolean);\n    private _overlap;\n    /**\n     * Position the badge should reside.\n     * Accepts any combination of 'above'|'below' and 'before'|'after'\n     */\n    position: MatBadgePosition;\n    /** The content for the badge */\n    content: string | number | undefined | null;\n    /** Message used to describe the decorated element via aria-describedby */\n    get description(): string;\n    set description(newDescription: string);\n    private _description;\n    /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n    size: MatBadgeSize;\n    /** Whether the badge is hidden. */\n    get hidden(): boolean;\n    set hidden(val: boolean);\n    private _hidden;\n    /** Unique id for the badge */\n    _id: number;\n    private _badgeElement;\n    constructor(_ngZone: NgZone, _elementRef: ElementRef<HTMLElement>, _ariaDescriber: AriaDescriber, _renderer: Renderer2, _animationMode?: string | undefined);\n    /** Whether the badge is above the host or not */\n    isAbove(): boolean;\n    /** Whether the badge is after the host or not */\n    isAfter(): boolean;\n    ngOnChanges(changes: SimpleChanges): void;\n    ngOnDestroy(): void;\n    /**\n     * Gets the element into which the badge's content is being rendered.\n     * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).\n     */\n    getBadgeElement(): HTMLElement | undefined;\n    /** Injects a span element into the DOM with the content. */\n    private _updateTextContent;\n    /** Creates the badge element */\n    private _createBadgeElement;\n    /** Sets the aria-label property on the element */\n    private _updateHostAriaDescription;\n    /** Adds css theme class given the color to the component host */\n    private _setColor;\n    /** Clears any existing badges that might be left over from server-side rendering. */\n    private _clearExistingBadges;\n    /** Gets the string representation of the badge content. */\n    private _stringifyContent;\n    static ngAcceptInputType_disabled: BooleanInput;\n    static ngAcceptInputType_hidden: BooleanInput;\n    static ngAcceptInputType_overlap: BooleanInput;\n}\nexport {};\n"]}
  • trip-planner-front/node_modules/@angular/material/badge/index.metadata.json

    r6a3a178 rfa375fe  
    1 {"__symbolic":"module","version":4,"metadata":{"MatBadgeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"A11yModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":17,"character":4}],"exports":[{"__symbolic":"reference","name":"MatBadge"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":19,"character":22}],"declarations":[{"__symbolic":"reference","name":"MatBadge"}]}]}],"members":{}},"MatBadgePosition":{"__symbolic":"interface"},"MatBadgeSize":{"__symbolic":"interface"},"MatBadge":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":59,"character":30,"module":"./badge"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":42,"character":1},"arguments":[{"selector":"[matBadge]","inputs":["disabled: matBadgeDisabled"],"host":{"class":"mat-badge","[class.mat-badge-overlap]":"overlap","[class.mat-badge-above]":"isAbove()","[class.mat-badge-below]":"!isAbove()","[class.mat-badge-before]":"!isAfter()","[class.mat-badge-after]":"isAfter()","[class.mat-badge-small]":"size === \"small\"","[class.mat-badge-medium]":"size === \"medium\"","[class.mat-badge-large]":"size === \"large\"","[class.mat-badge-hidden]":"hidden || !content","[class.mat-badge-disabled]":"disabled","$quoted$":["class","[class.mat-badge-overlap]","[class.mat-badge-above]","[class.mat-badge-below]","[class.mat-badge-before]","[class.mat-badge-after]","[class.mat-badge-small]","[class.mat-badge-medium]","[class.mat-badge-large]","[class.mat-badge-hidden]","[class.mat-badge-disabled]"]}}]}],"members":{"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3},"arguments":["matBadgeColor"]}]}],"overlap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3},"arguments":["matBadgeOverlap"]}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3},"arguments":["matBadgePosition"]}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3},"arguments":["matBadge"]}]}],"description":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3},"arguments":["matBadgeDescription"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":102,"character":3},"arguments":["matBadgeSize"]}]}],"hidden":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3},"arguments":["matBadgeHidden"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":126,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":126,"character":19},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":126,"character":26}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":122,"character":23},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":123,"character":38,"context":{"typeName":"HTMLElement"},"module":"./badge"}]},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"AriaDescriber","line":124,"character":30},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":125,"character":25},{"__symbolic":"reference","name":"string"}]}],"isAbove":[{"__symbolic":"method"}],"isAfter":[{"__symbolic":"method"}],"getBadgeElement":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_createBadgeElement":[{"__symbolic":"method"}],"_updateRenderedContent":[{"__symbolic":"method"}],"_updateHostAriaDescription":[{"__symbolic":"method"}],"_setColor":[{"__symbolic":"method"}],"_clearExistingBadges":[{"__symbolic":"method"}]}}},"origins":{"MatBadgeModule":"./badge-module","MatBadgePosition":"./badge","MatBadgeSize":"./badge","MatBadge":"./badge"},"importAs":"@angular/material/badge"}
     1{"__symbolic":"module","version":4,"metadata":{"MatBadgeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"A11yModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":17,"character":4}],"exports":[{"__symbolic":"reference","name":"MatBadge"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":19,"character":22}],"declarations":[{"__symbolic":"reference","name":"MatBadge"}]}]}],"members":{}},"MatBadgePosition":{"__symbolic":"interface"},"MatBadgeSize":{"__symbolic":"interface"},"MatBadge":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":58,"character":30,"module":"./badge"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":41,"character":1},"arguments":[{"selector":"[matBadge]","inputs":["disabled: matBadgeDisabled"],"host":{"class":"mat-badge","[class.mat-badge-overlap]":"overlap","[class.mat-badge-above]":"isAbove()","[class.mat-badge-below]":"!isAbove()","[class.mat-badge-before]":"!isAfter()","[class.mat-badge-after]":"isAfter()","[class.mat-badge-small]":"size === \"small\"","[class.mat-badge-medium]":"size === \"medium\"","[class.mat-badge-large]":"size === \"large\"","[class.mat-badge-hidden]":"hidden || !_hasContent","[class.mat-badge-disabled]":"disabled","$quoted$":["class","[class.mat-badge-overlap]","[class.mat-badge-above]","[class.mat-badge-below]","[class.mat-badge-before]","[class.mat-badge-after]","[class.mat-badge-small]","[class.mat-badge-medium]","[class.mat-badge-large]","[class.mat-badge-hidden]","[class.mat-badge-disabled]"]}}]}],"members":{"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3},"arguments":["matBadgeColor"]}]}],"overlap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3},"arguments":["matBadgeOverlap"]}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3},"arguments":["matBadgePosition"]}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3},"arguments":["matBadge"]}]}],"description":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":89,"character":3},"arguments":["matBadgeDescription"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":106,"character":3},"arguments":["matBadgeSize"]}]}],"hidden":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":109,"character":3},"arguments":["matBadgeHidden"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":126,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":126,"character":19},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":126,"character":26}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":122,"character":23},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":123,"character":38,"context":{"typeName":"HTMLElement"},"module":"./badge"}]},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"AriaDescriber","line":124,"character":30},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":125,"character":25},{"__symbolic":"reference","name":"string"}]}],"isAbove":[{"__symbolic":"method"}],"isAfter":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getBadgeElement":[{"__symbolic":"method"}],"_updateTextContent":[{"__symbolic":"method"}],"_createBadgeElement":[{"__symbolic":"method"}],"_updateHostAriaDescription":[{"__symbolic":"method"}],"_setColor":[{"__symbolic":"method"}],"_clearExistingBadges":[{"__symbolic":"method"}],"_stringifyContent":[{"__symbolic":"method"}]}}},"origins":{"MatBadgeModule":"./badge-module","MatBadgePosition":"./badge","MatBadgeSize":"./badge","MatBadge":"./badge"},"importAs":"@angular/material/badge"}
  • trip-planner-front/node_modules/@angular/material/bundles/material-badge.umd.js

    r6a3a178 rfa375fe  
    331331        return class_1;
    332332    }()));
    333     var BADGE_CONTENT_CLASS = 'mat-badge-content';
    334333    /** Directive to display a text badge. */
    335334    var MatBadge = /** @class */ (function (_super) {
     
    342341            _this._renderer = _renderer;
    343342            _this._animationMode = _animationMode;
     343            /** Whether the badge has any content. */
     344            _this._hasContent = false;
    344345            _this._color = 'primary';
    345346            _this._overlap = true;
     
    353354            /** Unique id for the badge */
    354355            _this._id = nextId++;
    355             /** Whether the OnInit lifecycle hook has run yet */
    356             _this._isInitialized = false;
    357356            if (typeof ngDevMode === 'undefined' || ngDevMode) {
    358357                var nativeElement = _elementRef.nativeElement;
     
    382381            configurable: true
    383382        });
    384         Object.defineProperty(MatBadge.prototype, "content", {
    385             /** The content for the badge */
    386             get: function () {
    387                 return this._content;
    388             },
    389             set: function (newContent) {
    390                 this._updateRenderedContent(newContent);
    391             },
    392             enumerable: false,
    393             configurable: true
    394         });
    395383        Object.defineProperty(MatBadge.prototype, "description", {
    396384            /** Message used to describe the decorated element via aria-describedby */
    397385            get: function () { return this._description; },
    398386            set: function (newDescription) {
    399                 this._updateHostAriaDescription(newDescription);
     387                if (newDescription !== this._description) {
     388                    var badgeElement = this._badgeElement;
     389                    this._updateHostAriaDescription(newDescription, this._description);
     390                    this._description = newDescription;
     391                    if (badgeElement) {
     392                        newDescription ? badgeElement.setAttribute('aria-label', newDescription) :
     393                            badgeElement.removeAttribute('aria-label');
     394                    }
     395                }
    400396            },
    401397            enumerable: false,
     
    419415            return this.position.indexOf('before') === -1;
    420416        };
     417        MatBadge.prototype.ngOnChanges = function (changes) {
     418            var contentChange = changes['content'];
     419            if (contentChange) {
     420                var value = contentChange.currentValue;
     421                this._hasContent = value != null && ("" + value).trim().length > 0;
     422                this._updateTextContent();
     423            }
     424        };
     425        MatBadge.prototype.ngOnDestroy = function () {
     426            var badgeElement = this._badgeElement;
     427            if (badgeElement) {
     428                if (this.description) {
     429                    this._ariaDescriber.removeDescription(badgeElement, this.description);
     430                }
     431                // When creating a badge through the Renderer, Angular will keep it in an index.
     432                // We have to destroy it ourselves, otherwise it'll be retained in memory.
     433                if (this._renderer.destroyNode) {
     434                    this._renderer.destroyNode(badgeElement);
     435                }
     436            }
     437        };
    421438        /**
    422          * Gets the element into which the badge's content is being rendered. Undefined if the element
    423          * hasn't been created (e.g. if the badge doesn't have content).
     439         * Gets the element into which the badge's content is being rendered.
     440         * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).
    424441         */
    425442        MatBadge.prototype.getBadgeElement = function () {
    426443            return this._badgeElement;
    427444        };
    428         MatBadge.prototype.ngOnInit = function () {
    429             // We may have server-side rendered badge that we need to clear.
    430             // We need to do this in ngOnInit because the full content of the component
    431             // on which the badge is attached won't necessarily be in the DOM until this point.
    432             this._clearExistingBadges();
    433             if (this.content && !this._badgeElement) {
     445        /** Injects a span element into the DOM with the content. */
     446        MatBadge.prototype._updateTextContent = function () {
     447            if (!this._badgeElement) {
    434448                this._badgeElement = this._createBadgeElement();
    435                 this._updateRenderedContent(this.content);
    436             }
    437             this._isInitialized = true;
    438         };
    439         MatBadge.prototype.ngOnDestroy = function () {
    440             // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.
    441             // We have to destroy it ourselves, otherwise it'll be retained in memory.
    442             if (this._renderer.destroyNode) {
    443                 this._renderer.destroyNode(this._badgeElement);
    444             }
    445             this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);
     449            }
     450            else {
     451                this._badgeElement.textContent = this._stringifyContent();
     452            }
     453            return this._badgeElement;
    446454        };
    447455        /** Creates the badge element */
     
    449457            var badgeElement = this._renderer.createElement('span');
    450458            var activeClass = 'mat-badge-active';
     459            var contentClass = 'mat-badge-content';
     460            // Clear any existing badges which may have persisted from a server-side render.
     461            this._clearExistingBadges(contentClass);
    451462            badgeElement.setAttribute('id', "mat-badge-content-" + this._id);
    452             // The badge is aria-hidden because we don't want it to appear in the page's navigation
    453             // flow. Instead, we use the badge to describe the decorated element with aria-describedby.
    454             badgeElement.setAttribute('aria-hidden', 'true');
    455             badgeElement.classList.add(BADGE_CONTENT_CLASS);
     463            badgeElement.classList.add(contentClass);
     464            badgeElement.textContent = this._stringifyContent();
    456465            if (this._animationMode === 'NoopAnimations') {
    457466                badgeElement.classList.add('_mat-animation-noopable');
     467            }
     468            if (this.description) {
     469                badgeElement.setAttribute('aria-label', this.description);
    458470            }
    459471            this._elementRef.nativeElement.appendChild(badgeElement);
     
    471483            return badgeElement;
    472484        };
    473         /** Update the text content of the badge element in the DOM, creating the element if necessary. */
    474         MatBadge.prototype._updateRenderedContent = function (newContent) {
    475             var newContentNormalized = ("" + (newContent !== null && newContent !== void 0 ? newContent : '')).trim();
    476             // Don't create the badge element if the directive isn't initialized because we want to
    477             // append the badge element to the *end* of the host element's content for backwards
    478             // compatibility.
    479             if (this._isInitialized && newContentNormalized && !this._badgeElement) {
    480                 this._badgeElement = this._createBadgeElement();
    481             }
    482             if (this._badgeElement) {
    483                 this._badgeElement.textContent = newContentNormalized;
    484             }
    485             this._content = newContentNormalized;
    486         };
    487         /** Updates the host element's aria description via AriaDescriber. */
    488         MatBadge.prototype._updateHostAriaDescription = function (newDescription) {
    489             this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);
     485        /** Sets the aria-label property on the element */
     486        MatBadge.prototype._updateHostAriaDescription = function (newDescription, oldDescription) {
     487            // ensure content available before setting label
     488            var content = this._updateTextContent();
     489            if (oldDescription) {
     490                this._ariaDescriber.removeDescription(content, oldDescription);
     491            }
    490492            if (newDescription) {
    491                 this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);
    492             }
    493             this._description = newDescription;
     493                this._ariaDescriber.describe(content, newDescription);
     494            }
    494495        };
    495496        /** Adds css theme class given the color to the component host */
    496497        MatBadge.prototype._setColor = function (colorPalette) {
    497             var classList = this._elementRef.nativeElement.classList;
    498             classList.remove("mat-badge-" + this._color);
    499             if (colorPalette) {
    500                 classList.add("mat-badge-" + colorPalette);
     498            if (colorPalette !== this._color) {
     499                var classList = this._elementRef.nativeElement.classList;
     500                if (this._color) {
     501                    classList.remove("mat-badge-" + this._color);
     502                }
     503                if (colorPalette) {
     504                    classList.add("mat-badge-" + colorPalette);
     505                }
    501506            }
    502507        };
    503508        /** Clears any existing badges that might be left over from server-side rendering. */
    504         MatBadge.prototype._clearExistingBadges = function () {
    505             var e_1, _a;
    506             // Only check direct children of this host element in order to avoid deleting
    507             // any badges that might exist in descendant elements.
    508             var badges = this._elementRef.nativeElement.querySelectorAll(":scope > ." + BADGE_CONTENT_CLASS);
    509             try {
    510                 for (var _b = __values(Array.from(badges)), _c = _b.next(); !_c.done; _c = _b.next()) {
    511                     var badgeElement = _c.value;
    512                     if (badgeElement !== this._badgeElement) {
    513                         badgeElement.remove();
    514                     }
    515                 }
    516             }
    517             catch (e_1_1) { e_1 = { error: e_1_1 }; }
    518             finally {
    519                 try {
    520                     if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
    521                 }
    522                 finally { if (e_1) throw e_1.error; }
    523             }
     509        MatBadge.prototype._clearExistingBadges = function (cssClass) {
     510            var element = this._elementRef.nativeElement;
     511            var childCount = element.children.length;
     512            // Use a reverse while, because we'll be removing elements from the list as we're iterating.
     513            while (childCount--) {
     514                var currentChild = element.children[childCount];
     515                if (currentChild.classList.contains(cssClass)) {
     516                    element.removeChild(currentChild);
     517                }
     518            }
     519        };
     520        /** Gets the string representation of the badge content. */
     521        MatBadge.prototype._stringifyContent = function () {
     522            // Convert null and undefined to an empty string which is consistent
     523            // with how Angular handles them in inside template interpolations.
     524            var content = this.content;
     525            return content == null ? '' : "" + content;
    524526        };
    525527        return MatBadge;
     
    539541                        '[class.mat-badge-medium]': 'size === "medium"',
    540542                        '[class.mat-badge-large]': 'size === "large"',
    541                         '[class.mat-badge-hidden]': 'hidden || !content',
     543                        '[class.mat-badge-hidden]': 'hidden || !_hasContent',
    542544                        '[class.mat-badge-disabled]': 'disabled',
    543545                    },
  • trip-planner-front/node_modules/@angular/material/bundles/material-badge.umd.js.map

    r6a3a178 rfa375fe  
    1 {"version":3,"file":"material-badge.umd.js","sources":["../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/material/badge/badge.ts","../../../../../src/material/badge/badge-module.ts","../../../../../src/material/badge/public-api.ts","../../../../../src/material/badge/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AriaDescriber} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Renderer2,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled, ThemePalette} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextId = 0;\n\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {});\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n    'above after' | 'above before' | 'below before' | 'below after' |\n    'before' | 'after' | 'above' | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n\n/** Directive to display a text badge. */\n@Directive({\n  selector: '[matBadge]',\n  inputs: ['disabled: matBadgeDisabled'],\n  host: {\n    'class': 'mat-badge',\n    '[class.mat-badge-overlap]': 'overlap',\n    '[class.mat-badge-above]': 'isAbove()',\n    '[class.mat-badge-below]': '!isAbove()',\n    '[class.mat-badge-before]': '!isAfter()',\n    '[class.mat-badge-after]': 'isAfter()',\n    '[class.mat-badge-small]': 'size === \"small\"',\n    '[class.mat-badge-medium]': 'size === \"medium\"',\n    '[class.mat-badge-large]': 'size === \"large\"',\n    '[class.mat-badge-hidden]': 'hidden || !content',\n    '[class.mat-badge-disabled]': 'disabled',\n  },\n})\nexport class MatBadge extends _MatBadgeBase implements OnInit, OnDestroy, CanDisable {\n  /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n  @Input('matBadgeColor')\n  get color(): ThemePalette { return this._color; }\n  set color(value: ThemePalette) {\n    this._setColor(value);\n    this._color = value;\n  }\n  private _color: ThemePalette = 'primary';\n\n  /** Whether the badge should overlap its contents or not */\n  @Input('matBadgeOverlap')\n  get overlap(): boolean { return this._overlap; }\n  set overlap(val: boolean) {\n    this._overlap = coerceBooleanProperty(val);\n  }\n  private _overlap: boolean = true;\n\n  /**\n   * Position the badge should reside.\n   * Accepts any combination of 'above'|'below' and 'before'|'after'\n   */\n  @Input('matBadgePosition') position: MatBadgePosition = 'above after';\n\n  /** The content for the badge */\n  @Input('matBadge')\n  get content(): string | number | undefined | null {\n    return this._content;\n  }\n  set content(newContent: string | number | undefined | null) {\n    this._updateRenderedContent(newContent);\n  }\n  private _content: string | number | undefined | null;\n\n  /** Message used to describe the decorated element via aria-describedby */\n  @Input('matBadgeDescription')\n  get description(): string { return this._description; }\n  set description(newDescription: string) {\n    this._updateHostAriaDescription(newDescription);\n  }\n  private _description: string;\n\n  /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n  @Input('matBadgeSize') size: MatBadgeSize = 'medium';\n\n  /** Whether the badge is hidden. */\n  @Input('matBadgeHidden')\n  get hidden(): boolean { return this._hidden; }\n  set hidden(val: boolean) {\n    this._hidden = coerceBooleanProperty(val);\n  }\n  private _hidden: boolean;\n\n  /** Unique id for the badge */\n  _id: number = nextId++;\n\n  /** Visible badge element. */\n  private _badgeElement: HTMLElement | undefined;\n\n  /** Whether the OnInit lifecycle hook has run yet */\n  private _isInitialized = false;\n\n  constructor(\n      private _ngZone: NgZone,\n      private _elementRef: ElementRef<HTMLElement>,\n      private _ariaDescriber: AriaDescriber,\n      private _renderer: Renderer2,\n      @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n      super();\n\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        const nativeElement = _elementRef.nativeElement;\n        if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n          throw Error('matBadge must be attached to an element node.');\n        }\n      }\n    }\n\n  /** Whether the badge is above the host or not */\n  isAbove(): boolean {\n    return this.position.indexOf('below') === -1;\n  }\n\n  /** Whether the badge is after the host or not */\n  isAfter(): boolean {\n    return this.position.indexOf('before') === -1;\n  }\n\n  /**\n   * Gets the element into which the badge's content is being rendered. Undefined if the element\n   * hasn't been created (e.g. if the badge doesn't have content).\n   */\n  getBadgeElement(): HTMLElement | undefined {\n    return this._badgeElement;\n  }\n\n  ngOnInit() {\n    // We may have server-side rendered badge that we need to clear.\n    // We need to do this in ngOnInit because the full content of the component\n    // on which the badge is attached won't necessarily be in the DOM until this point.\n    this._clearExistingBadges();\n\n    if (this.content && !this._badgeElement) {\n      this._badgeElement = this._createBadgeElement();\n      this._updateRenderedContent(this.content);\n    }\n\n    this._isInitialized = true;\n  }\n\n  ngOnDestroy() {\n    // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n    // We have to destroy it ourselves, otherwise it'll be retained in memory.\n    if (this._renderer.destroyNode) {\n      this._renderer.destroyNode(this._badgeElement);\n    }\n\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n  }\n\n  /** Creates the badge element */\n  private _createBadgeElement(): HTMLElement {\n    const badgeElement = this._renderer.createElement('span');\n    const activeClass = 'mat-badge-active';\n\n    badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n\n    // The badge is aria-hidden because we don't want it to appear in the page's navigation\n    // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n    badgeElement.setAttribute('aria-hidden', 'true');\n    badgeElement.classList.add(BADGE_CONTENT_CLASS);\n\n    if (this._animationMode === 'NoopAnimations') {\n      badgeElement.classList.add('_mat-animation-noopable');\n    }\n\n    this._elementRef.nativeElement.appendChild(badgeElement);\n\n    // animate in after insertion\n    if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n      this._ngZone.runOutsideAngular(() => {\n        requestAnimationFrame(() => {\n          badgeElement.classList.add(activeClass);\n        });\n      });\n    } else {\n      badgeElement.classList.add(activeClass);\n    }\n\n    return badgeElement;\n  }\n\n  /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n  private _updateRenderedContent(newContent: string | number | undefined | null): void {\n    const newContentNormalized: string = `${newContent ?? ''}`.trim();\n\n    // Don't create the badge element if the directive isn't initialized because we want to\n    // append the badge element to the *end* of the host element's content for backwards\n    // compatibility.\n    if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n      this._badgeElement = this._createBadgeElement();\n    }\n\n    if (this._badgeElement) {\n      this._badgeElement.textContent = newContentNormalized;\n    }\n\n    this._content = newContentNormalized;\n  }\n\n  /** Updates the host element's aria description via AriaDescriber. */\n  private _updateHostAriaDescription(newDescription: string): void {\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n    if (newDescription) {\n      this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n    }\n    this._description = newDescription;\n  }\n\n  /** Adds css theme class given the color to the component host */\n  private _setColor(colorPalette: ThemePalette) {\n    const classList = this._elementRef.nativeElement.classList;\n    classList.remove(`mat-badge-${this._color}`);\n    if (colorPalette) {\n      classList.add(`mat-badge-${colorPalette}`);\n    }\n  }\n\n  /** Clears any existing badges that might be left over from server-side rendering. */\n  private _clearExistingBadges() {\n    // Only check direct children of this host element in order to avoid deleting\n    // any badges that might exist in descendant elements.\n    const badges =\n        this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);\n    for (const badgeElement of Array.from(badges)) {\n      if (badgeElement !== this._badgeElement) {\n        badgeElement.remove();\n      }\n    }\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_hidden: BooleanInput;\n  static ngAcceptInputType_overlap: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatBadge} from './badge';\n\n\n@NgModule({\n  imports: [\n    A11yModule,\n    MatCommonModule\n  ],\n  exports: [MatBadge, MatCommonModule],\n  declarations: [MatBadge],\n})\nexport class MatBadgeModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './badge-module';\nexport * from './badge';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["mixinDisabled","coerceBooleanProperty","Directive","NgZone","ElementRef","AriaDescriber","Renderer2","Optional","Inject","ANIMATION_MODULE_TYPE","Input","NgModule","A11yModule","MatCommonModule"],"mappings":"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"}
     1{"version":3,"file":"material-badge.umd.js","sources":["../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/material/badge/badge.ts","../../../../../src/material/badge/badge-module.ts","../../../../../src/material/badge/public-api.ts","../../../../../src/material/badge/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AriaDescriber} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Renderer2,\n  SimpleChanges,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled, ThemePalette} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextId = 0;\n\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {});\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n    'above after' | 'above before' | 'below before' | 'below after' |\n    'before' | 'after' | 'above' | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\n/** Directive to display a text badge. */\n@Directive({\n  selector: '[matBadge]',\n  inputs: ['disabled: matBadgeDisabled'],\n  host: {\n    'class': 'mat-badge',\n    '[class.mat-badge-overlap]': 'overlap',\n    '[class.mat-badge-above]': 'isAbove()',\n    '[class.mat-badge-below]': '!isAbove()',\n    '[class.mat-badge-before]': '!isAfter()',\n    '[class.mat-badge-after]': 'isAfter()',\n    '[class.mat-badge-small]': 'size === \"small\"',\n    '[class.mat-badge-medium]': 'size === \"medium\"',\n    '[class.mat-badge-large]': 'size === \"large\"',\n    '[class.mat-badge-hidden]': 'hidden || !_hasContent',\n    '[class.mat-badge-disabled]': 'disabled',\n  },\n})\nexport class MatBadge extends _MatBadgeBase implements OnDestroy, OnChanges, CanDisable {\n  /** Whether the badge has any content. */\n  _hasContent = false;\n\n  /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n  @Input('matBadgeColor')\n  get color(): ThemePalette { return this._color; }\n  set color(value: ThemePalette) {\n    this._setColor(value);\n    this._color = value;\n  }\n  private _color: ThemePalette = 'primary';\n\n  /** Whether the badge should overlap its contents or not */\n  @Input('matBadgeOverlap')\n  get overlap(): boolean { return this._overlap; }\n  set overlap(val: boolean) {\n    this._overlap = coerceBooleanProperty(val);\n  }\n  private _overlap: boolean = true;\n\n  /**\n   * Position the badge should reside.\n   * Accepts any combination of 'above'|'below' and 'before'|'after'\n   */\n  @Input('matBadgePosition') position: MatBadgePosition = 'above after';\n\n  /** The content for the badge */\n  @Input('matBadge') content: string | number | undefined | null;\n\n  /** Message used to describe the decorated element via aria-describedby */\n  @Input('matBadgeDescription')\n  get description(): string { return this._description; }\n  set description(newDescription: string) {\n    if (newDescription !== this._description) {\n      const badgeElement = this._badgeElement;\n      this._updateHostAriaDescription(newDescription, this._description);\n      this._description = newDescription;\n\n      if (badgeElement) {\n        newDescription ? badgeElement.setAttribute('aria-label', newDescription) :\n            badgeElement.removeAttribute('aria-label');\n      }\n    }\n  }\n  private _description: string;\n\n  /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n  @Input('matBadgeSize') size: MatBadgeSize = 'medium';\n\n  /** Whether the badge is hidden. */\n  @Input('matBadgeHidden')\n  get hidden(): boolean { return this._hidden; }\n  set hidden(val: boolean) {\n    this._hidden = coerceBooleanProperty(val);\n  }\n  private _hidden: boolean;\n\n  /** Unique id for the badge */\n  _id: number = nextId++;\n\n  private _badgeElement: HTMLElement | undefined;\n\n  constructor(\n      private _ngZone: NgZone,\n      private _elementRef: ElementRef<HTMLElement>,\n      private _ariaDescriber: AriaDescriber,\n      private _renderer: Renderer2,\n      @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n      super();\n\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        const nativeElement = _elementRef.nativeElement;\n        if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n          throw Error('matBadge must be attached to an element node.');\n        }\n      }\n    }\n\n  /** Whether the badge is above the host or not */\n  isAbove(): boolean {\n    return this.position.indexOf('below') === -1;\n  }\n\n  /** Whether the badge is after the host or not */\n  isAfter(): boolean {\n    return this.position.indexOf('before') === -1;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const contentChange = changes['content'];\n\n    if (contentChange) {\n      const value = contentChange.currentValue;\n      this._hasContent = value != null && `${value}`.trim().length > 0;\n      this._updateTextContent();\n    }\n  }\n\n  ngOnDestroy() {\n    const badgeElement = this._badgeElement;\n\n    if (badgeElement) {\n      if (this.description) {\n        this._ariaDescriber.removeDescription(badgeElement, this.description);\n      }\n\n      // When creating a badge through the Renderer, Angular will keep it in an index.\n      // We have to destroy it ourselves, otherwise it'll be retained in memory.\n      if (this._renderer.destroyNode) {\n        this._renderer.destroyNode(badgeElement);\n      }\n    }\n  }\n\n  /**\n   * Gets the element into which the badge's content is being rendered.\n   * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).\n   */\n  getBadgeElement(): HTMLElement | undefined {\n    return this._badgeElement;\n  }\n\n  /** Injects a span element into the DOM with the content. */\n  private _updateTextContent(): HTMLSpanElement {\n    if (!this._badgeElement) {\n      this._badgeElement = this._createBadgeElement();\n    } else {\n      this._badgeElement.textContent = this._stringifyContent();\n    }\n    return this._badgeElement;\n  }\n\n  /** Creates the badge element */\n  private _createBadgeElement(): HTMLElement {\n    const badgeElement = this._renderer.createElement('span');\n    const activeClass = 'mat-badge-active';\n    const contentClass = 'mat-badge-content';\n\n    // Clear any existing badges which may have persisted from a server-side render.\n    this._clearExistingBadges(contentClass);\n    badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n    badgeElement.classList.add(contentClass);\n    badgeElement.textContent = this._stringifyContent();\n\n    if (this._animationMode === 'NoopAnimations') {\n      badgeElement.classList.add('_mat-animation-noopable');\n    }\n\n    if (this.description) {\n      badgeElement.setAttribute('aria-label', this.description);\n    }\n\n    this._elementRef.nativeElement.appendChild(badgeElement);\n\n    // animate in after insertion\n    if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n      this._ngZone.runOutsideAngular(() => {\n        requestAnimationFrame(() => {\n          badgeElement.classList.add(activeClass);\n        });\n      });\n    } else {\n      badgeElement.classList.add(activeClass);\n    }\n\n    return badgeElement;\n  }\n\n  /** Sets the aria-label property on the element */\n  private _updateHostAriaDescription(newDescription: string, oldDescription: string): void {\n    // ensure content available before setting label\n    const content = this._updateTextContent();\n\n    if (oldDescription) {\n      this._ariaDescriber.removeDescription(content, oldDescription);\n    }\n\n    if (newDescription) {\n      this._ariaDescriber.describe(content, newDescription);\n    }\n  }\n\n  /** Adds css theme class given the color to the component host */\n  private _setColor(colorPalette: ThemePalette) {\n    if (colorPalette !== this._color) {\n      const classList = this._elementRef.nativeElement.classList;\n      if (this._color) {\n        classList.remove(`mat-badge-${this._color}`);\n      }\n      if (colorPalette) {\n        classList.add(`mat-badge-${colorPalette}`);\n      }\n    }\n  }\n\n  /** Clears any existing badges that might be left over from server-side rendering. */\n  private _clearExistingBadges(cssClass: string) {\n    const element = this._elementRef.nativeElement;\n    let childCount = element.children.length;\n\n    // Use a reverse while, because we'll be removing elements from the list as we're iterating.\n    while (childCount--) {\n      const currentChild = element.children[childCount];\n\n      if (currentChild.classList.contains(cssClass)) {\n        element.removeChild(currentChild);\n      }\n    }\n  }\n\n  /** Gets the string representation of the badge content. */\n  private _stringifyContent(): string {\n    // Convert null and undefined to an empty string which is consistent\n    // with how Angular handles them in inside template interpolations.\n    const content = this.content;\n    return content == null ? '' : `${content}`;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_hidden: BooleanInput;\n  static ngAcceptInputType_overlap: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatBadge} from './badge';\n\n\n@NgModule({\n  imports: [\n    A11yModule,\n    MatCommonModule\n  ],\n  exports: [MatBadge, MatCommonModule],\n  declarations: [MatBadge],\n})\nexport class MatBadgeModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './badge-module';\nexport * from './badge';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["mixinDisabled","coerceBooleanProperty","Directive","NgZone","ElementRef","AriaDescriber","Renderer2","Optional","Inject","ANIMATION_MODULE_TYPE","Input","NgModule","A11yModule","MatCommonModule"],"mappings":"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"}
  • trip-planner-front/node_modules/@angular/material/bundles/material-core.umd.js

    r6a3a178 rfa375fe  
    3535     */
    3636    /** Current version of Angular Material. */
    37     var VERSION$1 = new i0.Version('12.2.9');
     37    var VERSION$1 = new i0.Version('12.2.10');
    3838
    3939    /**
     
    7575    // Can be removed once the Material primary entry-point no longer
    7676    // re-exports all secondary entry-points
    77     var VERSION = new i0.Version('12.2.9');
     77    var VERSION = new i0.Version('12.2.10');
    7878    /** @docs-private */
    7979    function MATERIAL_SANITY_CHECKS_FACTORY() {
  • trip-planner-front/node_modules/@angular/material/bundles/material-core.umd.js.map

    r6a3a178 rfa375fe  
    1 {"version":3,"file":"material-core.umd.js","sources":["../../../../../src/material/core/version.ts","../../../../../src/material/core/animation/animation.ts","../../../../../src/material/core/common-behaviors/common-module.ts","../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/material/core/common-behaviors/disabled.ts","../../../../../src/material/core/common-behaviors/color.ts","../../../../../src/material/core/common-behaviors/disable-ripple.ts","../../../../../src/material/core/common-behaviors/tabindex.ts","../../../../../src/material/core/common-behaviors/error-state.ts","../../../../../src/material/core/common-behaviors/initialized.ts","../../../../../src/material/core/common-behaviors/index.ts","../../../../../src/material/core/datetime/date-adapter.ts","../../../../../src/material/core/datetime/date-formats.ts","../../../../../src/material/core/datetime/native-date-adapter.ts","../../../../../src/material/core/datetime/native-date-formats.ts","../../../../../src/material/core/datetime/index.ts","../../../../../src/material/core/error/error-options.ts","../../../../../src/material/core/line/line.ts","../../../../../src/material/core/ripple/ripple-ref.ts","../../../../../src/material/core/ripple/ripple-renderer.ts","../../../../../src/material/core/ripple/ripple.ts","../../../../../src/material/core/ripple/index.ts","../../../../../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../../../src/material/core/selection/index.ts","../../../../../src/material/core/option/option-parent.ts","../../../../../src/material/core/option/optgroup.ts","../../../../../src/material/core/option/option.ts","../../../../../src/material/core/option/index.ts","../../../../../src/material/core/public-api.ts","../../../../../src/material/core/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('12.2.9');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport class AnimationCurves {\n  static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n  static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n  static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n  static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n\n/** @docs-private */\nexport class AnimationDurations {\n  static COMPLEX = '375ms';\n  static ENTERING = '225ms';\n  static EXITING = '195ms';\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {HighContrastModeDetector} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Inject, InjectionToken, isDevMode, NgModule, Optional, Version} from '@angular/core';\nimport {VERSION as CDK_VERSION} from '@angular/cdk';\nimport {DOCUMENT} from '@angular/common';\nimport {_isTestEnvironment} from '@angular/cdk/platform';\n\n// Private version constant to circumvent test/build issues,\n// i.e. avoid core to depend on the @angular/material primary entry-point\n// Can be removed once the Material primary entry-point no longer\n// re-exports all secondary entry-points\nconst VERSION = new Version('12.2.9');\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): SanityChecks {\n  return true;\n}\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<SanityChecks>('mat-sanity-checks', {\n  providedIn: 'root',\n  factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n\n/**\n * Possible sanity checks that can be enabled. If set to\n * true/false, all checks will be enabled/disabled.\n */\nexport type SanityChecks = boolean | GranularSanityChecks;\n\n/** Object that can be used to configure the sanity checks granularly. */\nexport interface GranularSanityChecks {\n  doctype: boolean;\n  theme: boolean;\n  version: boolean;\n}\n\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\n@NgModule({\n  imports: [BidiModule],\n  exports: [BidiModule],\n})\nexport class MatCommonModule {\n  /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n  private _hasDoneGlobalChecks = false;\n\n  /** Configured sanity checks. */\n  private _sanityChecks: SanityChecks;\n\n  /** Used to reference correct document/window */\n  protected _document: Document;\n\n  constructor(\n      highContrastModeDetector: HighContrastModeDetector,\n      @Optional() @Inject(MATERIAL_SANITY_CHECKS) sanityChecks: any,\n      @Inject(DOCUMENT) document: any) {\n    this._document = document;\n\n    // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n    // in MatCommonModule.\n    highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n\n    // Note that `_sanityChecks` is typed to `any`, because AoT\n    // throws an error if we use the `SanityChecks` type directly.\n    this._sanityChecks = sanityChecks;\n\n    if (!this._hasDoneGlobalChecks) {\n      this._checkDoctypeIsDefined();\n      this._checkThemeIsPresent();\n      this._checkCdkVersionMatch();\n      this._hasDoneGlobalChecks = true;\n    }\n  }\n\n  /** Gets whether a specific sanity check is enabled. */\n  private _checkIsEnabled(name: keyof GranularSanityChecks): boolean {\n    // TODO(crisbeto): we can't use `ngDevMode` here yet, because ViewEngine apps might not support\n    // it. Since these checks can have performance implications and they aren't tree shakeable\n    // in their current form, we can leave the `isDevMode` check in for now.\n    // tslint:disable-next-line:ban\n    if (!isDevMode() || _isTestEnvironment()) {\n      return false;\n    }\n\n    if (typeof this._sanityChecks === 'boolean') {\n      return this._sanityChecks;\n    }\n\n    return !!this._sanityChecks[name];\n  }\n\n  private _checkDoctypeIsDefined(): void {\n    if (this._checkIsEnabled('doctype') && !this._document.doctype) {\n      console.warn(\n        'Current document does not have a doctype. This may cause ' +\n        'some Angular Material components not to behave as expected.'\n      );\n    }\n  }\n\n  private _checkThemeIsPresent(): void {\n    // We need to assert that the `body` is defined, because these checks run very early\n    // and the `body` won't be defined if the consumer put their scripts in the `head`.\n    if (!this._checkIsEnabled('theme') || !this._document.body ||\n        typeof getComputedStyle !== 'function') {\n      return;\n    }\n\n    const testElement = this._document.createElement('div');\n\n    testElement.classList.add('mat-theme-loaded-marker');\n    this._document.body.appendChild(testElement);\n\n    const computedStyle = getComputedStyle(testElement);\n\n    // In some situations the computed style of the test element can be null. For example in\n    // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n    // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n    if (computedStyle && computedStyle.display !== 'none') {\n      console.warn(\n        'Could not find Angular Material core theme. Most Material ' +\n        'components may not work as expected. For more info refer ' +\n        'to the theming guide: https://material.angular.io/guide/theming'\n      );\n    }\n\n    this._document.body.removeChild(testElement);\n  }\n\n  /** Checks whether the material version matches the cdk version */\n  private _checkCdkVersionMatch(): void {\n    if (this._checkIsEnabled('version') && VERSION.full !== CDK_VERSION.full) {\n      console.warn(\n          'The Angular Material version (' + VERSION.full + ') does not match ' +\n          'the Angular CDK version (' + CDK_VERSION.full + ').\\n' +\n          'Please ensure the versions of these two packages exactly match.'\n      );\n    }\n  }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisable {\n  /** Whether the component is disabled. */\n  disabled: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n  return class extends base {\n    private _disabled: boolean = false;\n\n    get disabled() { return this._disabled; }\n    set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AbstractConstructor, Constructor} from './constructor';\nimport {ElementRef} from '@angular/core';\n\n/** @docs-private */\nexport interface CanColor {\n  /** Theme color palette for the component. */\n  color: ThemePalette;\n\n  /** Default color to fall back to if no value is set. */\n  defaultColor: ThemePalette | undefined;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\n/** @docs-private */\nexport interface HasElementRef {\n  _elementRef: ElementRef;\n}\n\n/** Possible color palette values. */\nexport type ThemePalette = 'primary' | 'accent' | 'warn' | undefined;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T;\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T {\n  return class extends base {\n    private _color: ThemePalette;\n    defaultColor = defaultColor;\n\n    get color(): ThemePalette { return this._color; }\n    set color(value: ThemePalette) {\n      const colorPalette = value || this.defaultColor;\n\n      if (colorPalette !== this._color) {\n        if (this._color) {\n          this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n        }\n        if (colorPalette) {\n          this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n        }\n\n        this._color = colorPalette;\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n\n      // Set the default color that can be specified from the mixin.\n      this.color = defaultColor;\n    }\n  };\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n  /** Whether ripples are disabled. */\n  disableRipple: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableRippleCtor = Constructor<CanDisableRipple> &\n                                   AbstractConstructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends AbstractConstructor<{}>>(base: T):\n  CanDisableRippleCtor & T;\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): CanDisableRippleCtor & T {\n  return class extends base {\n    private _disableRipple: boolean = false;\n\n    /** Whether the ripple effect is disabled or not. */\n    get disableRipple() { return this._disableRipple; }\n    set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Constructor, AbstractConstructor} from './constructor';\nimport {CanDisable} from './disabled';\n\n\n/** @docs-private */\nexport interface HasTabIndex {\n  /** Tabindex of the component. */\n  tabIndex: number;\n\n  /** Tabindex to which to fall back to if no value is set. */\n  defaultTabIndex: number;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(base: T,\n  defaultTabIndex?: number): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n  base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n  return class extends base implements HasTabIndex {\n    private _tabIndex: number = defaultTabIndex;\n    defaultTabIndex = defaultTabIndex;\n\n    get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\n    set tabIndex(value: number) {\n      // If the specified tabIndex value is null or undefined, fall back to the default value.\n      this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n  /** Emits whenever the component state changes. */\n  readonly stateChanges: Subject<void>;\n  /** Updates the error state based on the provided error state matcher. */\n  updateErrorState(): void;\n  /** Whether the component is in an error state. */\n  errorState: boolean;\n  /** An object used to control the error state of the component. */\n  errorStateMatcher: ErrorStateMatcher;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState> &\n                                      AbstractConstructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n  _parentFormGroup: FormGroupDirective;\n  _parentForm: NgForm;\n  _defaultErrorStateMatcher: ErrorStateMatcher;\n  ngControl: NgControl;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T {\n  return class extends base {\n    // This class member exists as an interop with `MatFormFieldControl` which expects\n    // a public `stateChanges` observable to emit whenever the form field should be updated.\n    // The description is not specifically mentioning the error state, as classes using this\n    // mixin can/should emit an event in other cases too.\n    /** Emits whenever the component state changes. */\n    readonly stateChanges = new Subject<void>();\n\n    /** Whether the component is in an error state. */\n    errorState: boolean = false;\n\n    /** An object used to control the error state of the component. */\n    errorStateMatcher: ErrorStateMatcher;\n\n    /** Updates the error state based on the provided error state matcher. */\n    updateErrorState() {\n      const oldState = this.errorState;\n      const parent = this._parentFormGroup || this._parentForm;\n      const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n      const control = this.ngControl ? this.ngControl.control as FormControl : null;\n      const newState = matcher.isErrorState(control, parent);\n\n      if (newState !== oldState) {\n        this.errorState = newState;\n        this.stateChanges.next();\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Observable, Subscriber} from 'rxjs';\nimport {Constructor} from './constructor';\n\n\n/**\n * Mixin that adds an initialized property to a directive which, when subscribed to, will emit a\n * value once markInitialized has been called, which should be done during the ngOnInit function.\n * If the subscription is made after it has already been marked as initialized, then it will trigger\n * an emit immediately.\n * @docs-private\n */\nexport interface HasInitialized {\n  /** Stream that emits once during the directive/component's ngOnInit. */\n  initialized: Observable<void>;\n\n  /**\n   * Sets the state as initialized and must be called during ngOnInit to notify subscribers that\n   * the directive has been initialized.\n   * @docs-private\n   */\n  _markInitialized: () => void;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasInitializedCtor = Constructor<HasInitialized>;\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nexport function mixinInitialized<T extends Constructor<{}>>(base: T):\n    HasInitializedCtor & T {\n  return class extends base {\n    /** Whether this directive has been marked as initialized. */\n    _isInitialized = false;\n\n    /**\n     * List of subscribers that subscribed before the directive was initialized. Should be notified\n     * during _markInitialized. Set to null after pending subscribers are notified, and should\n     * not expect to be populated after.\n     */\n    _pendingSubscribers: Subscriber<void>[] | null = [];\n\n    /**\n     * Observable stream that emits when the directive initializes. If already initialized, the\n     * subscriber is stored to be notified once _markInitialized is called.\n     */\n    initialized = new Observable<void>(subscriber => {\n      // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n      // when _markInitialized is called.\n      if (this._isInitialized) {\n        this._notifySubscriber(subscriber);\n      } else {\n        this._pendingSubscribers!.push(subscriber);\n      }\n    });\n\n    constructor(...args: any[]) { super(...args); }\n\n    /**\n     * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n     * of ngOnInit.\n     * @docs-private\n     */\n    _markInitialized(): void {\n      if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('This directive has already been marked as initialized and ' +\n            'should not be called twice.');\n      }\n\n      this._isInitialized = true;\n\n      this._pendingSubscribers!.forEach(this._notifySubscriber);\n      this._pendingSubscribers = null;\n    }\n\n    /** Emits and completes the subscriber stream (should only emit once). */\n    _notifySubscriber(subscriber: Subscriber<void>): void {\n      subscriber.next();\n      subscriber.complete();\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport {\n  MatCommonModule,\n  MATERIAL_SANITY_CHECKS,\n  SanityChecks,\n  GranularSanityChecks,\n} from './common-module';\nexport {CanDisable, CanDisableCtor, mixinDisabled} from './disabled';\nexport {CanColor, CanColorCtor, mixinColor, ThemePalette} from './color';\nexport {CanDisableRipple, CanDisableRippleCtor, mixinDisableRipple} from './disable-ripple';\nexport {HasTabIndex, HasTabIndexCtor, mixinTabIndex} from './tabindex';\nexport {CanUpdateErrorState, CanUpdateErrorStateCtor, mixinErrorState} from './error-state';\nexport {HasInitialized, HasInitializedCtor, mixinInitialized} from './initialized';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n  providedIn: 'root',\n  factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n  return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n  /** The locale to use for all dates. */\n  protected locale: any;\n  protected readonly _localeChanges = new Subject<void>();\n\n  /** A stream that emits when the locale changes. */\n  readonly localeChanges: Observable<void> = this._localeChanges;\n\n  /**\n   * Gets the year component of the given date.\n   * @param date The date to extract the year from.\n   * @returns The year component.\n   */\n  abstract getYear(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   * @param date The date to extract the month from.\n   * @returns The month component (0-indexed, 0 = January).\n   */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the date of the month component of the given date.\n   * @param date The date to extract the date of the month from.\n   * @returns The month component (1-indexed, 1 = first of month).\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the day of the week component of the given date.\n   * @param date The date to extract the day of the week from.\n   * @returns The month component (0-indexed, 0 = Sunday).\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Gets a list of names for the months.\n   * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n   * @returns An ordered list of all month names, starting with January.\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets a list of names for the dates of the month.\n   * @returns An ordered list of all date of the month names, starting with '1'.\n   */\n  abstract getDateNames(): string[];\n\n  /**\n   * Gets a list of names for the days of the week.\n   * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n   * @returns An ordered list of all weekday names, starting with Sunday.\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets the name for the year of the given date.\n   * @param date The date to get the year name for.\n   * @returns The name of the given year (e.g. '2017').\n   */\n  abstract getYearName(date: D): string;\n\n  /**\n   * Gets the first day of the week.\n   * @returns The first day of the week (0-indexed, 0 = Sunday).\n   */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   * @param date The date whose month should be checked.\n   * @returns The number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: D): number;\n\n  /**\n   * Clones the given date.\n   * @param date The date to clone\n   * @returns A new date equal to the given date.\n   */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n   * month and date.\n   * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n   * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n   * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n   * @returns The new date, or null if invalid.\n   */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Gets today's date.\n   * @returns Today's date.\n   */\n  abstract today(): D;\n\n  /**\n   * Parses a date from a user-provided value.\n   * @param value The value to parse.\n   * @param parseFormat The expected format of the value being parsed\n   *     (type is implementation-dependent).\n   * @returns The parsed date.\n   */\n  abstract parse(value: any, parseFormat: any): D | null;\n\n  /**\n   * Formats a date as a string according to the given format.\n   * @param date The value to format.\n   * @param displayFormat The format to use to display the date as a string.\n   * @returns The formatted date string.\n   */\n  abstract format(date: D, displayFormat: any): string;\n\n  /**\n   * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n   * calendar for each year and then finding the closest date in the new month. For example when\n   * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n   * @param date The date to add years to.\n   * @param years The number of years to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of years added.\n   */\n  abstract addCalendarYears(date: D, years: number): D;\n\n  /**\n   * Adds the given number of months to the date. Months are counted as if flipping a page on the\n   * calendar for each month and then finding the closest date in the new month. For example when\n   * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n   * @param date The date to add months to.\n   * @param months The number of months to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of months added.\n   */\n  abstract addCalendarMonths(date: D, months: number): D;\n\n  /**\n   * Adds the given number of days to the date. Days are counted as if moving one cell on the\n   * calendar for each day.\n   * @param date The date to add days to.\n   * @param days The number of days to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of days added.\n   */\n  abstract addCalendarDays(date: D, days: number): D;\n\n  /**\n   * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n   * This method is used to generate date strings that are compatible with native HTML attributes\n   * such as the `min` or `max` attribute of an `<input>`.\n   * @param date The date to get the ISO date string for.\n   * @returns The ISO date string date string.\n   */\n  abstract toIso8601(date: D): string;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateAdapter.\n   * @param obj The object to check\n   * @returns Whether the object is a date instance.\n   */\n  abstract isDateInstance(obj: any): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   * @param date The date to check.\n   * @returns Whether the date is valid.\n   */\n  abstract isValid(date: D): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   * @returns An invalid date.\n   */\n  abstract invalid(): D;\n\n /**\n  * Given a potential date object, returns that same date object if it is\n  * a valid date, or `null` if it's not a valid date.\n  * @param obj The object to check.\n  * @returns A date or `null`.\n  */\n  getValidDateOrNull(obj: unknown): D | null {\n    return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n   * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   * @param value The value to be deserialized into a date object.\n   * @returns The deserialized date object, either a valid date, null if the value can be\n   *     deserialized into a null date (e.g. the empty string), or an invalid date.\n   */\n  deserialize(value: any): D | null {\n    if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   * @param locale The new locale.\n   */\n  setLocale(locale: any) {\n    this.locale = locale;\n    this._localeChanges.next();\n  }\n\n  /**\n   * Compares two dates.\n   * @param first The first date to compare.\n   * @param second The second date to compare.\n   * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n   *     a number greater than 0 if the first date is later.\n   */\n  compareDate(first: D, second: D): number {\n    return this.getYear(first) - this.getYear(second) ||\n        this.getMonth(first) - this.getMonth(second) ||\n        this.getDate(first) - this.getDate(second);\n  }\n\n  /**\n   * Checks if two dates are equal.\n   * @param first The first date to check.\n   * @param second The second date to check.\n   * @returns Whether the two dates are equal.\n   *     Null dates are considered equal to other null dates.\n   */\n  sameDate(first: D | null, second: D | null): boolean {\n    if (first && second) {\n      let firstValid = this.isValid(first);\n      let secondValid = this.isValid(second);\n      if (firstValid && secondValid) {\n        return !this.compareDate(first, second);\n      }\n      return firstValid == secondValid;\n    }\n    return first == second;\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   * @param date The date to clamp.\n   * @param min The minimum value to allow. If null or omitted no min is enforced.\n   * @param max The maximum value to allow. If null or omitted no max is enforced.\n   * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n   *     otherwise `date`.\n   */\n  clampDate(date: D, min?: D | null, max?: D | null): D {\n    if (min && this.compareDate(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compareDate(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n\nexport type MatDateFormats = {\n  parse: {\n    dateInput: any\n  },\n  display: {\n    dateInput: any,\n    monthLabel?: any,\n    monthYearLabel: any,\n    dateA11yLabel: any,\n    monthYearA11yLabel: any,\n  }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n  SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n  SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n  'long': [\n    'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n    'October', 'November', 'December'\n  ],\n  'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n  'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n    /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   *\n   * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n   * getting the string representation of a Date object from its utc representation. We're keeping\n   * it here for sometime, just for precaution, in case we decide to revert some of these changes\n   * though.\n   */\n  useUtcForDisplay: boolean = true;\n\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string, platform: Platform) {\n    super();\n    super.setLocale(matDateLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\n  }\n\n  getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  getDayOfWeek(date: Date): number {\n    return date.getDay();\n  }\n\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n      return range(12, i =>\n          this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n    }\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  getDateNames(): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n      return range(31, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DATE_NAMES;\n  }\n\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n      return range(7, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  getYearName(date: Date): string {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return String(this.getYear(date));\n  }\n\n  getFirstDayOfWeek(): number {\n    // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n    return 0;\n  }\n\n  getNumDaysInMonth(date: Date): number {\n    return this.getDate(this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + 1, 0));\n  }\n\n  clone(date: Date): Date {\n    return new Date(date.getTime());\n  }\n\n  createDate(year: number, month: number, date: number): Date {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      // Check for invalid month and date (except upper bound on date which we have to check after\n      // creating the Date).\n      if (month < 0 || month > 11) {\n        throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n      }\n\n      if (date < 1) {\n        throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n      }\n    }\n\n    let result = this._createDateWithOverflow(year, month, date);\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result;\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  parse(value: any): Date | null {\n    // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n    // parameters.\n    if (typeof value == 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value)) : null;\n  }\n\n  format(date: Date, displayFormat: Object): string {\n    if (!this.isValid(date)) {\n      throw Error('NativeDateAdapter: Cannot format invalid date.');\n    }\n\n    if (SUPPORTS_INTL_API) {\n      // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n      // if we attempt to format a date whose year is less than 1 or greater than 9999.\n      if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n        date = this.clone(date);\n        date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n      }\n\n      displayFormat = {...displayFormat, timeZone: 'utc'};\n\n      const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return this._stripDirectionalityCharacters(date.toDateString());\n  }\n\n  addCalendarYears(date: Date, years: number): Date {\n    return this.addCalendarMonths(date, years * 12);\n  }\n\n  addCalendarMonths(date: Date, months: number): Date {\n    let newDate = this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n    // It's possible to wind up in the wrong month if the original month has more days than the new\n    // month. In this case we want to go to the last day of the desired month.\n    // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n    // guarantee this.\n    if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n      newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n    }\n\n    return newDate;\n  }\n\n  addCalendarDays(date: Date, days: number): Date {\n    return this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n  }\n\n  toIso8601(date: Date): string {\n    return [\n      date.getUTCFullYear(),\n      this._2digit(date.getUTCMonth() + 1),\n      this._2digit(date.getUTCDate())\n    ].join('-');\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  override deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        let date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  isDateInstance(obj: any) {\n    return obj instanceof Date;\n  }\n\n  isValid(date: Date) {\n    return !isNaN(date.getTime());\n  }\n\n  invalid(): Date {\n    return new Date(NaN);\n  }\n\n  /** Creates a date but allows the month and date to overflow. */\n  private _createDateWithOverflow(year: number, month: number, date: number) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setFullYear` and `setHours` instead.\n    const d = new Date();\n    d.setFullYear(year, month, date);\n    d.setHours(0, 0, 0, 0);\n    return d;\n  }\n\n  /**\n   * Pads a number to make it two digits.\n   * @param n The number to pad.\n   * @returns The padded number.\n   */\n  private _2digit(n: number) {\n    return ('00' + n).slice(-2);\n  }\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   * @param str The string to strip direction characters from.\n   * @returns The stripped string.\n   */\n  private _stripDirectionalityCharacters(str: string) {\n    return str.replace(/[\\u200e\\u200f]/g, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n   *    timeZone set to 'utc' to work fine.\n   * @param date Date from which we want to get the string representation according to dtf\n   * @returns A Date object with its UTC representation based on the passed in date info\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n    const d = new Date();\n    d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    return dtf.format(d);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {MatDateFormats} from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n  parse: {\n    dateInput: null,\n  },\n  display: {\n    dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n    monthYearLabel: {year: 'numeric', month: 'short'},\n    dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n    monthYearA11yLabel: {year: 'numeric', month: 'long'},\n  }\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n\n@NgModule({\n  imports: [PlatformModule],\n  providers: [\n    {provide: DateAdapter, useClass: NativeDateAdapter},\n  ],\n})\nexport class NativeDateModule {}\n\n\n@NgModule({\n  imports: [NativeDateModule],\n  providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS}],\n})\nexport class MatNativeDateModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, FormControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n  }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  NgModule,\n  Directive,\n  ElementRef,\n  QueryList,\n} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n  selector: '[mat-line], [matLine]',\n  host: {'class': 'mat-line'}\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(lines: QueryList<unknown>, element: ElementRef<HTMLElement>,\n                         prefix = 'mat') {\n  // Note: doesn't need to unsubscribe, because `changes`\n  // gets completed by Angular when the view is destroyed.\n  lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n    setClass(element, `${prefix}-2-line`, false);\n    setClass(element, `${prefix}-3-line`, false);\n    setClass(element, `${prefix}-multi-line`, false);\n\n    if (length === 2 || length === 3) {\n      setClass(element, `${prefix}-${length}-line`, true);\n    } else if (length > 3) {\n      setClass(element, `${prefix}-multi-line`, true);\n    }\n  });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n  const classList = element.nativeElement.classList;\n  isAdd ? classList.add(className) : classList.remove(className);\n}\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatLine, MatCommonModule],\n  declarations: [MatLine],\n})\nexport class MatLineModule { }\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** Possible states for a ripple element. */\nexport const enum RippleState {\n  FADING_IN, VISIBLE, FADING_OUT, HIDDEN\n}\n\nexport type RippleConfig = {\n  color?: string;\n  centered?: boolean;\n  radius?: number;\n  persistent?: boolean;\n  animation?: RippleAnimationConfig;\n  terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n  /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n  enterDuration?: number;\n  /** Duration in milliseconds for the exit animation (fade-out). */\n  exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n\n  /** Current state of the ripple. */\n  state: RippleState = RippleState.HIDDEN;\n\n  constructor(\n    private _renderer: {fadeOutRipple(ref: RippleRef): void},\n    /** Reference to the ripple HTML element. */\n    public element: HTMLElement,\n    /** Ripple configuration used for the ripple. */\n    public config: RippleConfig) {\n  }\n\n  /** Fades out the ripple element. */\n  fadeOut() {\n    this._renderer.fadeOutRipple(this);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 {ElementRef, NgZone} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n  /** Configuration for ripples that are launched on pointer down. */\n  rippleConfig: RippleConfig;\n  /** Whether ripples on pointer down should be disabled. */\n  rippleDisabled: boolean;\n}\n\n\n// TODO: import these values from `@material/ripple` eventually.\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n  enterDuration: 225,\n  exitDuration: 150\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options that apply to all the event listeners that are bound by the ripple renderer. */\nconst passiveEventOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n  /** Element where the ripples are being added to. */\n  private _containerElement: HTMLElement;\n\n  /** Element which triggers the ripple elements on mouse events. */\n  private _triggerElement: HTMLElement | null;\n\n  /** Whether the pointer is currently down or not. */\n  private _isPointerDown = false;\n\n  /** Set of currently active ripple references. */\n  private _activeRipples = new Set<RippleRef>();\n\n  /** Latest non-persistent ripple that was triggered. */\n  private _mostRecentTransientRipple: RippleRef | null;\n\n  /** Time in milliseconds when the last touchstart event happened. */\n  private _lastTouchStartEvent: number;\n\n  /** Whether pointer-up event listeners have been registered. */\n  private _pointerUpEventsRegistered = false;\n\n  /**\n   * Cached dimensions of the ripple container. Set when the first\n   * ripple is shown and cleared once no more ripples are visible.\n   */\n  private _containerRect: ClientRect | null;\n\n  constructor(private _target: RippleTarget,\n              private _ngZone: NgZone,\n              elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n              platform: Platform) {\n\n    // Only do anything if we're on the browser.\n    if (platform.isBrowser) {\n      this._containerElement = coerceElement(elementOrElementRef);\n    }\n  }\n\n  /**\n   * Fades in a ripple at the given coordinates.\n   * @param x Coordinate within the element, along the X axis at which to start the ripple.\n   * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n   * @param config Extra ripple options.\n   */\n  fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n    const containerRect = this._containerRect =\n                          this._containerRect || this._containerElement.getBoundingClientRect();\n    const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n    if (config.centered) {\n      x = containerRect.left + containerRect.width / 2;\n      y = containerRect.top + containerRect.height / 2;\n    }\n\n    const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n    const offsetX = x - containerRect.left;\n    const offsetY = y - containerRect.top;\n    const duration = animationConfig.enterDuration;\n\n    const ripple = document.createElement('div');\n    ripple.classList.add('mat-ripple-element');\n\n    ripple.style.left = `${offsetX - radius}px`;\n    ripple.style.top = `${offsetY - radius}px`;\n    ripple.style.height = `${radius * 2}px`;\n    ripple.style.width = `${radius * 2}px`;\n\n    // If a custom color has been specified, set it as inline style. If no color is\n    // set, the default color will be applied through the ripple theme styles.\n    if (config.color != null) {\n      ripple.style.backgroundColor = config.color;\n    }\n\n    ripple.style.transitionDuration = `${duration}ms`;\n\n    this._containerElement.appendChild(ripple);\n\n    // By default the browser does not recalculate the styles of dynamically created\n    // ripple elements. This is critical because then the `scale` would not animate properly.\n    enforceStyleRecalculation(ripple);\n\n    ripple.style.transform = 'scale(1)';\n\n    // Exposed reference to the ripple that will be returned.\n    const rippleRef = new RippleRef(this, ripple, config);\n\n    rippleRef.state = RippleState.FADING_IN;\n\n    // Add the ripple reference to the list of all active ripples.\n    this._activeRipples.add(rippleRef);\n\n    if (!config.persistent) {\n      this._mostRecentTransientRipple = rippleRef;\n    }\n\n    // Wait for the ripple element to be completely faded in.\n    // Once it's faded in, the ripple can be hidden immediately if the mouse is released.\n    this._runTimeoutOutsideZone(() => {\n      const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n\n      rippleRef.state = RippleState.VISIBLE;\n\n      // When the timer runs out while the user has kept their pointer down, we want to\n      // keep only the persistent ripples and the latest transient ripple. We do this,\n      // because we don't want stacked transient ripples to appear after their enter\n      // animation has finished.\n      if (!config.persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n        rippleRef.fadeOut();\n      }\n    }, duration);\n\n    return rippleRef;\n  }\n\n  /** Fades out a ripple reference. */\n  fadeOutRipple(rippleRef: RippleRef) {\n    const wasActive = this._activeRipples.delete(rippleRef);\n\n    if (rippleRef === this._mostRecentTransientRipple) {\n      this._mostRecentTransientRipple = null;\n    }\n\n    // Clear out the cached bounding rect if we have no more ripples.\n    if (!this._activeRipples.size) {\n      this._containerRect = null;\n    }\n\n    // For ripples that are not active anymore, don't re-run the fade-out animation.\n    if (!wasActive) {\n      return;\n    }\n\n    const rippleEl = rippleRef.element;\n    const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n    rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n    rippleEl.style.opacity = '0';\n    rippleRef.state = RippleState.FADING_OUT;\n\n    // Once the ripple faded out, the ripple can be safely removed from the DOM.\n    this._runTimeoutOutsideZone(() => {\n      rippleRef.state = RippleState.HIDDEN;\n      rippleEl.parentNode!.removeChild(rippleEl);\n    }, animationConfig.exitDuration);\n  }\n\n  /** Fades out all currently active ripples. */\n  fadeOutAll() {\n    this._activeRipples.forEach(ripple => ripple.fadeOut());\n  }\n\n  /** Fades out all currently active non-persistent ripples. */\n  fadeOutAllNonPersistent() {\n    this._activeRipples.forEach(ripple => {\n      if (!ripple.config.persistent) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Sets up the trigger event listeners */\n  setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n    const element = coerceElement(elementOrElementRef);\n\n    if (!element || element === this._triggerElement) {\n      return;\n    }\n\n    // Remove all previously registered event listeners from the trigger element.\n    this._removeTriggerEvents();\n\n    this._triggerElement = element;\n    this._registerEvents(pointerDownEvents);\n  }\n\n  /**\n   * Handles all registered events.\n   * @docs-private\n   */\n  handleEvent(event: Event) {\n    if (event.type === 'mousedown') {\n      this._onMousedown(event as MouseEvent);\n    } else if (event.type === 'touchstart') {\n      this._onTouchStart(event as TouchEvent);\n    } else {\n      this._onPointerUp();\n    }\n\n    // If pointer-up events haven't been registered yet, do so now.\n    // We do this on-demand in order to reduce the total number of event listeners\n    // registered by the ripples, which speeds up the rendering time for large UIs.\n    if (!this._pointerUpEventsRegistered) {\n      this._registerEvents(pointerUpEvents);\n      this._pointerUpEventsRegistered = true;\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using mouse. */\n  private _onMousedown(event: MouseEvent) {\n    // Screen readers will fire fake mouse events for space/enter. Skip launching a\n    // ripple in this case for consistency with the non-screen-reader experience.\n    const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n    const isSyntheticEvent = this._lastTouchStartEvent &&\n        Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n    if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n      this._isPointerDown = true;\n      this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using touch. */\n  private _onTouchStart(event: TouchEvent) {\n    if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n      // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n      // events will launch a second ripple if we don't ignore mouse events for a specific\n      // time after a touchstart event.\n      this._lastTouchStartEvent = Date.now();\n      this._isPointerDown = true;\n\n      // Use `changedTouches` so we skip any touches where the user put\n      // their finger down, but used another finger to tap the element again.\n      const touches = event.changedTouches;\n\n      for (let i = 0; i < touches.length; i++) {\n        this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n      }\n    }\n  }\n\n  /** Function being called whenever the trigger is being released. */\n  private _onPointerUp() {\n    if (!this._isPointerDown) {\n      return;\n    }\n\n    this._isPointerDown = false;\n\n    // Fade-out all ripples that are visible and not persistent.\n    this._activeRipples.forEach(ripple => {\n      // By default, only ripples that are completely visible will fade out on pointer release.\n      // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n      const isVisible = ripple.state === RippleState.VISIBLE ||\n        ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN;\n\n      if (!ripple.config.persistent && isVisible) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n  private _runTimeoutOutsideZone(fn: Function, delay = 0) {\n    this._ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n  }\n\n  /** Registers event listeners for a given list of events. */\n  private _registerEvents(eventTypes: string[]) {\n    this._ngZone.runOutsideAngular(() => {\n      eventTypes.forEach((type) => {\n        this._triggerElement!.addEventListener(type, this, passiveEventOptions);\n      });\n    });\n  }\n\n  /** Removes previously registered event listeners from the trigger element. */\n  _removeTriggerEvents() {\n    if (this._triggerElement) {\n      pointerDownEvents.forEach((type) => {\n        this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n      });\n\n      if (this._pointerUpEventsRegistered) {\n        pointerUpEvents.forEach((type) => {\n          this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n        });\n      }\n    }\n  }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n  // Enforce a style recalculation by calling `getComputedStyle` and accessing any property.\n  // Calling `getPropertyValue` is important to let optimizers know that this is not a noop.\n  // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n  window.getComputedStyle(element).getPropertyValue('opacity');\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: ClientRect) {\n  const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n  const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n  return Math.sqrt(distX * distX + distY * distY);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n} from '@angular/core';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n  /**\n   * Whether ripples should be disabled. Ripples can be still launched manually by using\n   * the `launch()` method. Therefore focus indicators will still show up.\n   */\n  disabled?: boolean;\n\n  /**\n   * Default configuration for the animation duration of the ripples. There are two phases with\n   * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n   * by the value of `matRippleAnimation` or if the `NoopAnimationsModule` is included.\n   */\n  animation?: RippleAnimationConfig;\n\n  /**\n   * Whether ripples should start fading out immediately after the mouse or touch is released. By\n   * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n   */\n  terminateOnPointerUp?: boolean;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\n    new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\n\n@Directive({\n  selector: '[mat-ripple], [matRipple]',\n  exportAs: 'matRipple',\n  host: {\n    'class': 'mat-ripple',\n    '[class.mat-ripple-unbounded]': 'unbounded'\n  }\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n\n  /** Custom color for all ripples. */\n  @Input('matRippleColor') color: string;\n\n  /** Whether the ripples should be visible outside the component's bounds. */\n  @Input('matRippleUnbounded') unbounded: boolean;\n\n  /**\n   * Whether the ripple always originates from the center of the host element's bounds, rather\n   * than originating from the location of the click event.\n   */\n  @Input('matRippleCentered') centered: boolean;\n\n  /**\n   * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n   * will be the distance from the center of the ripple to the furthest corner of the host element's\n   * bounding rectangle.\n   */\n  @Input('matRippleRadius') radius: number = 0;\n\n  /**\n   * Configuration for the ripple animation. Allows modifying the enter and exit animation\n   * duration of the ripples. The animation durations will be overwritten if the\n   * `NoopAnimationsModule` is being used.\n   */\n  @Input('matRippleAnimation') animation: RippleAnimationConfig;\n\n  /**\n   * Whether click events will not trigger the ripple. Ripples can be still launched manually\n   * by using the `launch()` method.\n   */\n  @Input('matRippleDisabled')\n  get disabled() { return this._disabled; }\n  set disabled(value: boolean) {\n    if (value) {\n      this.fadeOutAllNonPersistent();\n    }\n    this._disabled = value;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _disabled: boolean = false;\n\n  /**\n   * The element that triggers the ripple when click events are received.\n   * Defaults to the directive's host element.\n   */\n  @Input('matRippleTrigger')\n  get trigger() { return this._trigger || this._elementRef.nativeElement; }\n  set trigger(trigger: HTMLElement) {\n    this._trigger = trigger;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _trigger: HTMLElement;\n\n  /** Renderer for the ripple DOM manipulations. */\n  private _rippleRenderer: RippleRenderer;\n\n  /** Options that are set globally for all ripples. */\n  private _globalOptions: RippleGlobalOptions;\n\n  /** Whether ripple directive is initialized and the input bindings are set. */\n  private _isInitialized: boolean = false;\n\n  constructor(private _elementRef: ElementRef<HTMLElement>,\n              ngZone: NgZone,\n              platform: Platform,\n              @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions?: RippleGlobalOptions,\n              @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n    this._globalOptions = globalOptions || {};\n    this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n  }\n\n  ngOnInit() {\n    this._isInitialized = true;\n    this._setupTriggerEventsIfEnabled();\n  }\n\n  ngOnDestroy() {\n    this._rippleRenderer._removeTriggerEvents();\n  }\n\n  /** Fades out all currently showing ripple elements. */\n  fadeOutAll() {\n    this._rippleRenderer.fadeOutAll();\n  }\n\n  /** Fades out all currently showing non-persistent ripple elements. */\n  fadeOutAllNonPersistent() {\n    this._rippleRenderer.fadeOutAllNonPersistent();\n  }\n\n  /**\n   * Ripple configuration from the directive's input values.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleConfig(): RippleConfig {\n    return {\n      centered: this.centered,\n      radius: this.radius,\n      color: this.color,\n      animation: {\n        ...this._globalOptions.animation,\n        ...(this._animationMode === 'NoopAnimations' ? {enterDuration: 0, exitDuration: 0} : {}),\n        ...this.animation\n      },\n      terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n    };\n  }\n\n  /**\n   * Whether ripples on pointer-down are disabled or not.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleDisabled(): boolean {\n    return this.disabled || !!this._globalOptions.disabled;\n  }\n\n  /** Sets up the trigger event listeners if ripples are enabled. */\n  private _setupTriggerEventsIfEnabled() {\n    if (!this.disabled && this._isInitialized) {\n      this._rippleRenderer.setupTriggerEvents(this.trigger);\n    }\n  }\n\n  /**\n   * Launches a manual ripple using the specified ripple configuration.\n   * @param config Configuration for the manual ripple.\n   */\n  launch(config: RippleConfig): RippleRef;\n\n  /**\n   * Launches a manual ripple at the specified coordinates relative to the viewport.\n   * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param config Optional ripple configuration for the manual ripple.\n   */\n  launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n  /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n  launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n    if (typeof configOrX === 'number') {\n      return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n    } else {\n      return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\n    }\n  }\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatRipple} from './ripple';\n\nexport * from './ripple';\nexport * from './ripple-ref';\nexport * from './ripple-renderer';\n\n@NgModule({\n  imports: [MatCommonModule, PlatformModule],\n  exports: [MatRipple, MatCommonModule],\n  declarations: [MatRipple],\n})\nexport class MatRippleModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  Component,\n  ViewEncapsulation,\n  Input,\n  ChangeDetectionStrategy,\n  Inject,\n  Optional,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'mat-pseudo-checkbox',\n  styleUrls: ['pseudo-checkbox.css'],\n  template: '',\n  host: {\n    'class': 'mat-pseudo-checkbox',\n    '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n    '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n    '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n    '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n  },\n})\nexport class MatPseudoCheckbox {\n  /** Display state of the checkbox. */\n  @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n  /** Whether the checkbox is disabled. */\n  @Input() disabled: boolean = false;\n\n  constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox/pseudo-checkbox';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatPseudoCheckbox],\n  declarations: [MatPseudoCheckbox]\n})\nexport class MatPseudoCheckboxModule { }\n\n\nexport * from './pseudo-checkbox/pseudo-checkbox';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n  disableRipple?: boolean;\n  multiple?: boolean;\n  inertGroups?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT =\n    new InjectionToken<MatOptionParentComponent>('MAT_OPTION_PARENT_COMPONENT');\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  InjectionToken,\n  Input,\n  ViewEncapsulation,\n  Directive, Inject, Optional\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '../common-behaviors/disabled';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n//    when the text will be read out so sometimes it comes in too late or never if the user\n//    navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n//    won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n//     doesn't read out the text at all. Furthermore, on\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nconst _MatOptgroupMixinBase = mixinDisabled(class {});\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n@Directive()\nexport class _MatOptgroupBase extends _MatOptgroupMixinBase implements CanDisable {\n  /** Label for the option group. */\n  @Input() label: string;\n\n  /** Unique id for the underlying label. */\n  _labelId: string = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n\n  /** Whether the group is in inert a11y mode. */\n  _inert: boolean;\n\n  constructor(@Inject(MAT_OPTION_PARENT_COMPONENT) @Optional() parent?: MatOptionParentComponent) {\n    super();\n    this._inert = parent?.inertGroups ?? false;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n  selector: 'mat-optgroup',\n  exportAs: 'matOptgroup',\n  templateUrl: 'optgroup.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  styleUrls: ['optgroup.css'],\n  host: {\n    'class': 'mat-optgroup',\n    '[attr.role]': '_inert ? null : \"group\"',\n    '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n    '[attr.aria-labelledby]': '_inert ? null : _labelId',\n    '[class.mat-optgroup-disabled]': 'disabled',\n  },\n  providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup extends _MatOptgroupBase {\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n  Directive,\n} from '@angular/core';\nimport {FocusOptions, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {MatOptgroup, _MatOptgroupBase, MAT_OPTGROUP} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange {\n  constructor(\n    /** Reference to the option that emitted the event. */\n    public source: _MatOptionBase,\n    /** Whether the change in the option's value was a result of a user action. */\n    public isUserInput = false) { }\n}\n\n@Directive()\nexport class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy {\n  private _selected = false;\n  private _active = false;\n  private _disabled = false;\n  private _mostRecentViewValue = '';\n\n  /** Whether the wrapping component is in multiple selection mode. */\n  get multiple() { return this._parent && this._parent.multiple; }\n\n  /** Whether or not the option is currently selected. */\n  get selected(): boolean { return this._selected; }\n\n  /** The form value of the option. */\n  @Input() value: any;\n\n  /** The unique ID of the option. */\n  @Input() id: string = `mat-option-${_uniqueIdCounter++}`;\n\n  /** Whether the option is disabled. */\n  @Input()\n  get disabled() { return (this.group && this.group.disabled) || this._disabled; }\n  set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n  /** Whether ripples for the option are disabled. */\n  get disableRipple() { return this._parent && this._parent.disableRipple; }\n\n  /** Event emitted when the option is selected or deselected. */\n  // tslint:disable-next-line:no-output-on-prefix\n  @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange>();\n\n  /** Emits when the state of the option changes and any parents have to be notified. */\n  readonly _stateChanges = new Subject<void>();\n\n  constructor(\n    private _element: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _parent: MatOptionParentComponent,\n    readonly group: _MatOptgroupBase) {}\n\n  /**\n   * Whether or not the option is currently active and ready to be selected.\n   * An active option displays styles as if it is focused, but the\n   * focus is actually retained somewhere else. This comes in handy\n   * for components like autocomplete where focus must remain on the input.\n   */\n  get active(): boolean {\n    return this._active;\n  }\n\n  /**\n   * The displayed value of the option. It is necessary to show the selected option in the\n   * select's trigger.\n   */\n  get viewValue(): string {\n    // TODO(kara): Add input property alternative for node envs.\n    return (this._getHostElement().textContent || '').trim();\n  }\n\n  /** Selects the option. */\n  select(): void {\n    if (!this._selected) {\n      this._selected = true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Deselects the option. */\n  deselect(): void {\n    if (this._selected) {\n      this._selected = false;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Sets focus onto this option. */\n  focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n    // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n    // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n    const element = this._getHostElement();\n\n    if (typeof element.focus === 'function') {\n      element.focus(options);\n    }\n  }\n\n  /**\n   * This method sets display styles on the option to make it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setActiveStyles(): void {\n    if (!this._active) {\n      this._active = true;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * This method removes display styles on the option that made it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setInactiveStyles(): void {\n    if (this._active) {\n      this._active = false;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    return this.viewValue;\n  }\n\n  /** Ensures the option is selected when activated from the keyboard. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n      this._selectViaInteraction();\n\n      // Prevent the page from scrolling down and form submits.\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * `Selects the option while indicating the selection came from the user. Used to\n   * determine if the select's view -> model callback should be invoked.`\n   */\n  _selectViaInteraction(): void {\n    if (!this.disabled) {\n      this._selected = this.multiple ? !this._selected : true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent(true);\n    }\n  }\n\n  /**\n   * Gets the `aria-selected` value for the option. We explicitly omit the `aria-selected`\n   * attribute from single-selection, unselected options. Including the `aria-selected=\"false\"`\n   * attributes adds a significant amount of noise to screen-reader users without providing useful\n   * information.\n   */\n  _getAriaSelected(): boolean|null {\n    return this.selected || (this.multiple ? false : null);\n  }\n\n  /** Returns the correct tabindex for the option depending on disabled state. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Gets the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._element.nativeElement;\n  }\n\n  ngAfterViewChecked() {\n    // Since parent components could be using the option's label to display the selected values\n    // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n    // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n    // relatively cheap, however we still limit them only to selected options in order to avoid\n    // hitting the DOM too often.\n    if (this._selected) {\n      const viewValue = this.viewValue;\n\n      if (viewValue !== this._mostRecentViewValue) {\n        this._mostRecentViewValue = viewValue;\n        this._stateChanges.next();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  /** Emits the selection change event. */\n  private _emitSelectionChangeEvent(isUserInput = false): void {\n    this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n  selector: 'mat-option',\n  exportAs: 'matOption',\n  host: {\n    'role': 'option',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[class.mat-selected]': 'selected',\n    '[class.mat-option-multiple]': 'multiple',\n    '[class.mat-active]': 'active',\n    '[id]': 'id',\n    '[attr.aria-selected]': '_getAriaSelected()',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[class.mat-option-disabled]': 'disabled',\n    '(click)': '_selectViaInteraction()',\n    '(keydown)': '_handleKeydown($event)',\n    'class': 'mat-option mat-focus-indicator',\n  },\n  styleUrls: ['option.css'],\n  templateUrl: 'option.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption extends _MatOptionBase {\n  constructor(\n    element: ElementRef<HTMLElement>,\n    changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(MAT_OPTION_PARENT_COMPONENT) parent: MatOptionParentComponent,\n    @Optional() @Inject(MAT_OPTGROUP) group: MatOptgroup) {\n    super(element, changeDetectorRef, parent, group);\n  }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(optionIndex: number, options: QueryList<MatOption>,\n  optionGroups: QueryList<MatOptgroup>): number {\n\n  if (optionGroups.length) {\n    let optionsArray = options.toArray();\n    let groups = optionGroups.toArray();\n    let groupCounter = 0;\n\n    for (let i = 0; i < optionIndex + 1; i++) {\n      if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n        groupCounter++;\n      }\n    }\n\n    return groupCounter;\n  }\n\n  return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(optionOffset: number, optionHeight: number,\n    currentScrollPosition: number, panelHeight: number): number {\n  if (optionOffset < currentScrollPosition) {\n    return optionOffset;\n  }\n\n  if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n    return Math.max(0, optionOffset - panelHeight + optionHeight);\n  }\n\n  return currentScrollPosition;\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatRippleModule} from '../ripple/index';\nimport {MatPseudoCheckboxModule} from '../selection/index';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n\n@NgModule({\n  imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n  exports: [MatOption, MatOptgroup],\n  declarations: [MatOption, MatOptgroup]\n})\nexport class MatOptionModule {}\n\n\nexport * from './option';\nexport * from './optgroup';\nexport * from './option-parent';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './version';\nexport * from './animation/animation';\nexport * from './common-behaviors/index';\nexport * from './datetime/index';\nexport * from './error/error-options';\nexport * from './line/line';\nexport * from './option/index';\nexport * from './ripple/index';\nexport * from './selection/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MATERIAL_SANITY_CHECKS_FACTORY as ɵangular_material_src_material_core_core_a} from './common-behaviors/common-module';"],"names":["VERSION","Version","InjectionToken","isDevMode","_isTestEnvironment","CDK_VERSION","NgModule","BidiModule","HighContrastModeDetector","Optional","Inject","DOCUMENT","coerceBooleanProperty","coerceNumberProperty","Subject","Observable","inject","LOCALE_ID","Injectable","Platform","PlatformModule","Directive","startWith","normalizePassiveListenerOptions","coerceElement","isFakeMousedownFromScreenReader","isFakeTouchstartFromScreenReader","ElementRef","NgZone","ANIMATION_MODULE_TYPE","Input","Component","ViewEncapsulation","ChangeDetectionStrategy","EventEmitter","ENTER","SPACE","hasModifierKey","ChangeDetectorRef","Output","CommonModule"],"mappings":"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"}
     1{"version":3,"file":"material-core.umd.js","sources":["../../../../../src/material/core/version.ts","../../../../../src/material/core/animation/animation.ts","../../../../../src/material/core/common-behaviors/common-module.ts","../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/material/core/common-behaviors/disabled.ts","../../../../../src/material/core/common-behaviors/color.ts","../../../../../src/material/core/common-behaviors/disable-ripple.ts","../../../../../src/material/core/common-behaviors/tabindex.ts","../../../../../src/material/core/common-behaviors/error-state.ts","../../../../../src/material/core/common-behaviors/initialized.ts","../../../../../src/material/core/common-behaviors/index.ts","../../../../../src/material/core/datetime/date-adapter.ts","../../../../../src/material/core/datetime/date-formats.ts","../../../../../src/material/core/datetime/native-date-adapter.ts","../../../../../src/material/core/datetime/native-date-formats.ts","../../../../../src/material/core/datetime/index.ts","../../../../../src/material/core/error/error-options.ts","../../../../../src/material/core/line/line.ts","../../../../../src/material/core/ripple/ripple-ref.ts","../../../../../src/material/core/ripple/ripple-renderer.ts","../../../../../src/material/core/ripple/ripple.ts","../../../../../src/material/core/ripple/index.ts","../../../../../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../../../src/material/core/selection/index.ts","../../../../../src/material/core/option/option-parent.ts","../../../../../src/material/core/option/optgroup.ts","../../../../../src/material/core/option/option.ts","../../../../../src/material/core/option/index.ts","../../../../../src/material/core/public-api.ts","../../../../../src/material/core/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('12.2.10');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport class AnimationCurves {\n  static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n  static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n  static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n  static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n\n/** @docs-private */\nexport class AnimationDurations {\n  static COMPLEX = '375ms';\n  static ENTERING = '225ms';\n  static EXITING = '195ms';\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {HighContrastModeDetector} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Inject, InjectionToken, isDevMode, NgModule, Optional, Version} from '@angular/core';\nimport {VERSION as CDK_VERSION} from '@angular/cdk';\nimport {DOCUMENT} from '@angular/common';\nimport {_isTestEnvironment} from '@angular/cdk/platform';\n\n// Private version constant to circumvent test/build issues,\n// i.e. avoid core to depend on the @angular/material primary entry-point\n// Can be removed once the Material primary entry-point no longer\n// re-exports all secondary entry-points\nconst VERSION = new Version('12.2.10');\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): SanityChecks {\n  return true;\n}\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<SanityChecks>('mat-sanity-checks', {\n  providedIn: 'root',\n  factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n\n/**\n * Possible sanity checks that can be enabled. If set to\n * true/false, all checks will be enabled/disabled.\n */\nexport type SanityChecks = boolean | GranularSanityChecks;\n\n/** Object that can be used to configure the sanity checks granularly. */\nexport interface GranularSanityChecks {\n  doctype: boolean;\n  theme: boolean;\n  version: boolean;\n}\n\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\n@NgModule({\n  imports: [BidiModule],\n  exports: [BidiModule],\n})\nexport class MatCommonModule {\n  /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n  private _hasDoneGlobalChecks = false;\n\n  /** Configured sanity checks. */\n  private _sanityChecks: SanityChecks;\n\n  /** Used to reference correct document/window */\n  protected _document: Document;\n\n  constructor(\n      highContrastModeDetector: HighContrastModeDetector,\n      @Optional() @Inject(MATERIAL_SANITY_CHECKS) sanityChecks: any,\n      @Inject(DOCUMENT) document: any) {\n    this._document = document;\n\n    // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n    // in MatCommonModule.\n    highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n\n    // Note that `_sanityChecks` is typed to `any`, because AoT\n    // throws an error if we use the `SanityChecks` type directly.\n    this._sanityChecks = sanityChecks;\n\n    if (!this._hasDoneGlobalChecks) {\n      this._checkDoctypeIsDefined();\n      this._checkThemeIsPresent();\n      this._checkCdkVersionMatch();\n      this._hasDoneGlobalChecks = true;\n    }\n  }\n\n  /** Gets whether a specific sanity check is enabled. */\n  private _checkIsEnabled(name: keyof GranularSanityChecks): boolean {\n    // TODO(crisbeto): we can't use `ngDevMode` here yet, because ViewEngine apps might not support\n    // it. Since these checks can have performance implications and they aren't tree shakeable\n    // in their current form, we can leave the `isDevMode` check in for now.\n    // tslint:disable-next-line:ban\n    if (!isDevMode() || _isTestEnvironment()) {\n      return false;\n    }\n\n    if (typeof this._sanityChecks === 'boolean') {\n      return this._sanityChecks;\n    }\n\n    return !!this._sanityChecks[name];\n  }\n\n  private _checkDoctypeIsDefined(): void {\n    if (this._checkIsEnabled('doctype') && !this._document.doctype) {\n      console.warn(\n        'Current document does not have a doctype. This may cause ' +\n        'some Angular Material components not to behave as expected.'\n      );\n    }\n  }\n\n  private _checkThemeIsPresent(): void {\n    // We need to assert that the `body` is defined, because these checks run very early\n    // and the `body` won't be defined if the consumer put their scripts in the `head`.\n    if (!this._checkIsEnabled('theme') || !this._document.body ||\n        typeof getComputedStyle !== 'function') {\n      return;\n    }\n\n    const testElement = this._document.createElement('div');\n\n    testElement.classList.add('mat-theme-loaded-marker');\n    this._document.body.appendChild(testElement);\n\n    const computedStyle = getComputedStyle(testElement);\n\n    // In some situations the computed style of the test element can be null. For example in\n    // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n    // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n    if (computedStyle && computedStyle.display !== 'none') {\n      console.warn(\n        'Could not find Angular Material core theme. Most Material ' +\n        'components may not work as expected. For more info refer ' +\n        'to the theming guide: https://material.angular.io/guide/theming'\n      );\n    }\n\n    this._document.body.removeChild(testElement);\n  }\n\n  /** Checks whether the material version matches the cdk version */\n  private _checkCdkVersionMatch(): void {\n    if (this._checkIsEnabled('version') && VERSION.full !== CDK_VERSION.full) {\n      console.warn(\n          'The Angular Material version (' + VERSION.full + ') does not match ' +\n          'the Angular CDK version (' + CDK_VERSION.full + ').\\n' +\n          'Please ensure the versions of these two packages exactly match.'\n      );\n    }\n  }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisable {\n  /** Whether the component is disabled. */\n  disabled: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n  return class extends base {\n    private _disabled: boolean = false;\n\n    get disabled() { return this._disabled; }\n    set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AbstractConstructor, Constructor} from './constructor';\nimport {ElementRef} from '@angular/core';\n\n/** @docs-private */\nexport interface CanColor {\n  /** Theme color palette for the component. */\n  color: ThemePalette;\n\n  /** Default color to fall back to if no value is set. */\n  defaultColor: ThemePalette | undefined;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\n/** @docs-private */\nexport interface HasElementRef {\n  _elementRef: ElementRef;\n}\n\n/** Possible color palette values. */\nexport type ThemePalette = 'primary' | 'accent' | 'warn' | undefined;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T;\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T {\n  return class extends base {\n    private _color: ThemePalette;\n    defaultColor = defaultColor;\n\n    get color(): ThemePalette { return this._color; }\n    set color(value: ThemePalette) {\n      const colorPalette = value || this.defaultColor;\n\n      if (colorPalette !== this._color) {\n        if (this._color) {\n          this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n        }\n        if (colorPalette) {\n          this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n        }\n\n        this._color = colorPalette;\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n\n      // Set the default color that can be specified from the mixin.\n      this.color = defaultColor;\n    }\n  };\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n  /** Whether ripples are disabled. */\n  disableRipple: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableRippleCtor = Constructor<CanDisableRipple> &\n                                   AbstractConstructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends AbstractConstructor<{}>>(base: T):\n  CanDisableRippleCtor & T;\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): CanDisableRippleCtor & T {\n  return class extends base {\n    private _disableRipple: boolean = false;\n\n    /** Whether the ripple effect is disabled or not. */\n    get disableRipple() { return this._disableRipple; }\n    set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Constructor, AbstractConstructor} from './constructor';\nimport {CanDisable} from './disabled';\n\n\n/** @docs-private */\nexport interface HasTabIndex {\n  /** Tabindex of the component. */\n  tabIndex: number;\n\n  /** Tabindex to which to fall back to if no value is set. */\n  defaultTabIndex: number;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(base: T,\n  defaultTabIndex?: number): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n  base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n  return class extends base implements HasTabIndex {\n    private _tabIndex: number = defaultTabIndex;\n    defaultTabIndex = defaultTabIndex;\n\n    get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\n    set tabIndex(value: number) {\n      // If the specified tabIndex value is null or undefined, fall back to the default value.\n      this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n  /** Emits whenever the component state changes. */\n  readonly stateChanges: Subject<void>;\n  /** Updates the error state based on the provided error state matcher. */\n  updateErrorState(): void;\n  /** Whether the component is in an error state. */\n  errorState: boolean;\n  /** An object used to control the error state of the component. */\n  errorStateMatcher: ErrorStateMatcher;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState> &\n                                      AbstractConstructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n  _parentFormGroup: FormGroupDirective;\n  _parentForm: NgForm;\n  _defaultErrorStateMatcher: ErrorStateMatcher;\n  ngControl: NgControl;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T {\n  return class extends base {\n    // This class member exists as an interop with `MatFormFieldControl` which expects\n    // a public `stateChanges` observable to emit whenever the form field should be updated.\n    // The description is not specifically mentioning the error state, as classes using this\n    // mixin can/should emit an event in other cases too.\n    /** Emits whenever the component state changes. */\n    readonly stateChanges = new Subject<void>();\n\n    /** Whether the component is in an error state. */\n    errorState: boolean = false;\n\n    /** An object used to control the error state of the component. */\n    errorStateMatcher: ErrorStateMatcher;\n\n    /** Updates the error state based on the provided error state matcher. */\n    updateErrorState() {\n      const oldState = this.errorState;\n      const parent = this._parentFormGroup || this._parentForm;\n      const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n      const control = this.ngControl ? this.ngControl.control as FormControl : null;\n      const newState = matcher.isErrorState(control, parent);\n\n      if (newState !== oldState) {\n        this.errorState = newState;\n        this.stateChanges.next();\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Observable, Subscriber} from 'rxjs';\nimport {Constructor} from './constructor';\n\n\n/**\n * Mixin that adds an initialized property to a directive which, when subscribed to, will emit a\n * value once markInitialized has been called, which should be done during the ngOnInit function.\n * If the subscription is made after it has already been marked as initialized, then it will trigger\n * an emit immediately.\n * @docs-private\n */\nexport interface HasInitialized {\n  /** Stream that emits once during the directive/component's ngOnInit. */\n  initialized: Observable<void>;\n\n  /**\n   * Sets the state as initialized and must be called during ngOnInit to notify subscribers that\n   * the directive has been initialized.\n   * @docs-private\n   */\n  _markInitialized: () => void;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasInitializedCtor = Constructor<HasInitialized>;\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nexport function mixinInitialized<T extends Constructor<{}>>(base: T):\n    HasInitializedCtor & T {\n  return class extends base {\n    /** Whether this directive has been marked as initialized. */\n    _isInitialized = false;\n\n    /**\n     * List of subscribers that subscribed before the directive was initialized. Should be notified\n     * during _markInitialized. Set to null after pending subscribers are notified, and should\n     * not expect to be populated after.\n     */\n    _pendingSubscribers: Subscriber<void>[] | null = [];\n\n    /**\n     * Observable stream that emits when the directive initializes. If already initialized, the\n     * subscriber is stored to be notified once _markInitialized is called.\n     */\n    initialized = new Observable<void>(subscriber => {\n      // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n      // when _markInitialized is called.\n      if (this._isInitialized) {\n        this._notifySubscriber(subscriber);\n      } else {\n        this._pendingSubscribers!.push(subscriber);\n      }\n    });\n\n    constructor(...args: any[]) { super(...args); }\n\n    /**\n     * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n     * of ngOnInit.\n     * @docs-private\n     */\n    _markInitialized(): void {\n      if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('This directive has already been marked as initialized and ' +\n            'should not be called twice.');\n      }\n\n      this._isInitialized = true;\n\n      this._pendingSubscribers!.forEach(this._notifySubscriber);\n      this._pendingSubscribers = null;\n    }\n\n    /** Emits and completes the subscriber stream (should only emit once). */\n    _notifySubscriber(subscriber: Subscriber<void>): void {\n      subscriber.next();\n      subscriber.complete();\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport {\n  MatCommonModule,\n  MATERIAL_SANITY_CHECKS,\n  SanityChecks,\n  GranularSanityChecks,\n} from './common-module';\nexport {CanDisable, CanDisableCtor, mixinDisabled} from './disabled';\nexport {CanColor, CanColorCtor, mixinColor, ThemePalette} from './color';\nexport {CanDisableRipple, CanDisableRippleCtor, mixinDisableRipple} from './disable-ripple';\nexport {HasTabIndex, HasTabIndexCtor, mixinTabIndex} from './tabindex';\nexport {CanUpdateErrorState, CanUpdateErrorStateCtor, mixinErrorState} from './error-state';\nexport {HasInitialized, HasInitializedCtor, mixinInitialized} from './initialized';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n  providedIn: 'root',\n  factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n  return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n  /** The locale to use for all dates. */\n  protected locale: any;\n  protected readonly _localeChanges = new Subject<void>();\n\n  /** A stream that emits when the locale changes. */\n  readonly localeChanges: Observable<void> = this._localeChanges;\n\n  /**\n   * Gets the year component of the given date.\n   * @param date The date to extract the year from.\n   * @returns The year component.\n   */\n  abstract getYear(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   * @param date The date to extract the month from.\n   * @returns The month component (0-indexed, 0 = January).\n   */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the date of the month component of the given date.\n   * @param date The date to extract the date of the month from.\n   * @returns The month component (1-indexed, 1 = first of month).\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the day of the week component of the given date.\n   * @param date The date to extract the day of the week from.\n   * @returns The month component (0-indexed, 0 = Sunday).\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Gets a list of names for the months.\n   * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n   * @returns An ordered list of all month names, starting with January.\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets a list of names for the dates of the month.\n   * @returns An ordered list of all date of the month names, starting with '1'.\n   */\n  abstract getDateNames(): string[];\n\n  /**\n   * Gets a list of names for the days of the week.\n   * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n   * @returns An ordered list of all weekday names, starting with Sunday.\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets the name for the year of the given date.\n   * @param date The date to get the year name for.\n   * @returns The name of the given year (e.g. '2017').\n   */\n  abstract getYearName(date: D): string;\n\n  /**\n   * Gets the first day of the week.\n   * @returns The first day of the week (0-indexed, 0 = Sunday).\n   */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   * @param date The date whose month should be checked.\n   * @returns The number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: D): number;\n\n  /**\n   * Clones the given date.\n   * @param date The date to clone\n   * @returns A new date equal to the given date.\n   */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n   * month and date.\n   * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n   * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n   * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n   * @returns The new date, or null if invalid.\n   */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Gets today's date.\n   * @returns Today's date.\n   */\n  abstract today(): D;\n\n  /**\n   * Parses a date from a user-provided value.\n   * @param value The value to parse.\n   * @param parseFormat The expected format of the value being parsed\n   *     (type is implementation-dependent).\n   * @returns The parsed date.\n   */\n  abstract parse(value: any, parseFormat: any): D | null;\n\n  /**\n   * Formats a date as a string according to the given format.\n   * @param date The value to format.\n   * @param displayFormat The format to use to display the date as a string.\n   * @returns The formatted date string.\n   */\n  abstract format(date: D, displayFormat: any): string;\n\n  /**\n   * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n   * calendar for each year and then finding the closest date in the new month. For example when\n   * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n   * @param date The date to add years to.\n   * @param years The number of years to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of years added.\n   */\n  abstract addCalendarYears(date: D, years: number): D;\n\n  /**\n   * Adds the given number of months to the date. Months are counted as if flipping a page on the\n   * calendar for each month and then finding the closest date in the new month. For example when\n   * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n   * @param date The date to add months to.\n   * @param months The number of months to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of months added.\n   */\n  abstract addCalendarMonths(date: D, months: number): D;\n\n  /**\n   * Adds the given number of days to the date. Days are counted as if moving one cell on the\n   * calendar for each day.\n   * @param date The date to add days to.\n   * @param days The number of days to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of days added.\n   */\n  abstract addCalendarDays(date: D, days: number): D;\n\n  /**\n   * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n   * This method is used to generate date strings that are compatible with native HTML attributes\n   * such as the `min` or `max` attribute of an `<input>`.\n   * @param date The date to get the ISO date string for.\n   * @returns The ISO date string date string.\n   */\n  abstract toIso8601(date: D): string;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateAdapter.\n   * @param obj The object to check\n   * @returns Whether the object is a date instance.\n   */\n  abstract isDateInstance(obj: any): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   * @param date The date to check.\n   * @returns Whether the date is valid.\n   */\n  abstract isValid(date: D): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   * @returns An invalid date.\n   */\n  abstract invalid(): D;\n\n /**\n  * Given a potential date object, returns that same date object if it is\n  * a valid date, or `null` if it's not a valid date.\n  * @param obj The object to check.\n  * @returns A date or `null`.\n  */\n  getValidDateOrNull(obj: unknown): D | null {\n    return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n   * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   * @param value The value to be deserialized into a date object.\n   * @returns The deserialized date object, either a valid date, null if the value can be\n   *     deserialized into a null date (e.g. the empty string), or an invalid date.\n   */\n  deserialize(value: any): D | null {\n    if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   * @param locale The new locale.\n   */\n  setLocale(locale: any) {\n    this.locale = locale;\n    this._localeChanges.next();\n  }\n\n  /**\n   * Compares two dates.\n   * @param first The first date to compare.\n   * @param second The second date to compare.\n   * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n   *     a number greater than 0 if the first date is later.\n   */\n  compareDate(first: D, second: D): number {\n    return this.getYear(first) - this.getYear(second) ||\n        this.getMonth(first) - this.getMonth(second) ||\n        this.getDate(first) - this.getDate(second);\n  }\n\n  /**\n   * Checks if two dates are equal.\n   * @param first The first date to check.\n   * @param second The second date to check.\n   * @returns Whether the two dates are equal.\n   *     Null dates are considered equal to other null dates.\n   */\n  sameDate(first: D | null, second: D | null): boolean {\n    if (first && second) {\n      let firstValid = this.isValid(first);\n      let secondValid = this.isValid(second);\n      if (firstValid && secondValid) {\n        return !this.compareDate(first, second);\n      }\n      return firstValid == secondValid;\n    }\n    return first == second;\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   * @param date The date to clamp.\n   * @param min The minimum value to allow. If null or omitted no min is enforced.\n   * @param max The maximum value to allow. If null or omitted no max is enforced.\n   * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n   *     otherwise `date`.\n   */\n  clampDate(date: D, min?: D | null, max?: D | null): D {\n    if (min && this.compareDate(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compareDate(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n\nexport type MatDateFormats = {\n  parse: {\n    dateInput: any\n  },\n  display: {\n    dateInput: any,\n    monthLabel?: any,\n    monthYearLabel: any,\n    dateA11yLabel: any,\n    monthYearA11yLabel: any,\n  }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n  SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n  SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n  'long': [\n    'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n    'October', 'November', 'December'\n  ],\n  'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n  'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n    /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   *\n   * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n   * getting the string representation of a Date object from its utc representation. We're keeping\n   * it here for sometime, just for precaution, in case we decide to revert some of these changes\n   * though.\n   */\n  useUtcForDisplay: boolean = true;\n\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string, platform: Platform) {\n    super();\n    super.setLocale(matDateLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\n  }\n\n  getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  getDayOfWeek(date: Date): number {\n    return date.getDay();\n  }\n\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n      return range(12, i =>\n          this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n    }\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  getDateNames(): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n      return range(31, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DATE_NAMES;\n  }\n\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n      return range(7, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  getYearName(date: Date): string {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return String(this.getYear(date));\n  }\n\n  getFirstDayOfWeek(): number {\n    // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n    return 0;\n  }\n\n  getNumDaysInMonth(date: Date): number {\n    return this.getDate(this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + 1, 0));\n  }\n\n  clone(date: Date): Date {\n    return new Date(date.getTime());\n  }\n\n  createDate(year: number, month: number, date: number): Date {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      // Check for invalid month and date (except upper bound on date which we have to check after\n      // creating the Date).\n      if (month < 0 || month > 11) {\n        throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n      }\n\n      if (date < 1) {\n        throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n      }\n    }\n\n    let result = this._createDateWithOverflow(year, month, date);\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result;\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  parse(value: any): Date | null {\n    // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n    // parameters.\n    if (typeof value == 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value)) : null;\n  }\n\n  format(date: Date, displayFormat: Object): string {\n    if (!this.isValid(date)) {\n      throw Error('NativeDateAdapter: Cannot format invalid date.');\n    }\n\n    if (SUPPORTS_INTL_API) {\n      // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n      // if we attempt to format a date whose year is less than 1 or greater than 9999.\n      if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n        date = this.clone(date);\n        date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n      }\n\n      displayFormat = {...displayFormat, timeZone: 'utc'};\n\n      const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return this._stripDirectionalityCharacters(date.toDateString());\n  }\n\n  addCalendarYears(date: Date, years: number): Date {\n    return this.addCalendarMonths(date, years * 12);\n  }\n\n  addCalendarMonths(date: Date, months: number): Date {\n    let newDate = this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n    // It's possible to wind up in the wrong month if the original month has more days than the new\n    // month. In this case we want to go to the last day of the desired month.\n    // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n    // guarantee this.\n    if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n      newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n    }\n\n    return newDate;\n  }\n\n  addCalendarDays(date: Date, days: number): Date {\n    return this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n  }\n\n  toIso8601(date: Date): string {\n    return [\n      date.getUTCFullYear(),\n      this._2digit(date.getUTCMonth() + 1),\n      this._2digit(date.getUTCDate())\n    ].join('-');\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  override deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        let date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  isDateInstance(obj: any) {\n    return obj instanceof Date;\n  }\n\n  isValid(date: Date) {\n    return !isNaN(date.getTime());\n  }\n\n  invalid(): Date {\n    return new Date(NaN);\n  }\n\n  /** Creates a date but allows the month and date to overflow. */\n  private _createDateWithOverflow(year: number, month: number, date: number) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setFullYear` and `setHours` instead.\n    const d = new Date();\n    d.setFullYear(year, month, date);\n    d.setHours(0, 0, 0, 0);\n    return d;\n  }\n\n  /**\n   * Pads a number to make it two digits.\n   * @param n The number to pad.\n   * @returns The padded number.\n   */\n  private _2digit(n: number) {\n    return ('00' + n).slice(-2);\n  }\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   * @param str The string to strip direction characters from.\n   * @returns The stripped string.\n   */\n  private _stripDirectionalityCharacters(str: string) {\n    return str.replace(/[\\u200e\\u200f]/g, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n   *    timeZone set to 'utc' to work fine.\n   * @param date Date from which we want to get the string representation according to dtf\n   * @returns A Date object with its UTC representation based on the passed in date info\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n    const d = new Date();\n    d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    return dtf.format(d);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {MatDateFormats} from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n  parse: {\n    dateInput: null,\n  },\n  display: {\n    dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n    monthYearLabel: {year: 'numeric', month: 'short'},\n    dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n    monthYearA11yLabel: {year: 'numeric', month: 'long'},\n  }\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n\n@NgModule({\n  imports: [PlatformModule],\n  providers: [\n    {provide: DateAdapter, useClass: NativeDateAdapter},\n  ],\n})\nexport class NativeDateModule {}\n\n\n@NgModule({\n  imports: [NativeDateModule],\n  providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS}],\n})\nexport class MatNativeDateModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, FormControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n  }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  NgModule,\n  Directive,\n  ElementRef,\n  QueryList,\n} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n  selector: '[mat-line], [matLine]',\n  host: {'class': 'mat-line'}\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(lines: QueryList<unknown>, element: ElementRef<HTMLElement>,\n                         prefix = 'mat') {\n  // Note: doesn't need to unsubscribe, because `changes`\n  // gets completed by Angular when the view is destroyed.\n  lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n    setClass(element, `${prefix}-2-line`, false);\n    setClass(element, `${prefix}-3-line`, false);\n    setClass(element, `${prefix}-multi-line`, false);\n\n    if (length === 2 || length === 3) {\n      setClass(element, `${prefix}-${length}-line`, true);\n    } else if (length > 3) {\n      setClass(element, `${prefix}-multi-line`, true);\n    }\n  });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n  const classList = element.nativeElement.classList;\n  isAdd ? classList.add(className) : classList.remove(className);\n}\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatLine, MatCommonModule],\n  declarations: [MatLine],\n})\nexport class MatLineModule { }\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** Possible states for a ripple element. */\nexport const enum RippleState {\n  FADING_IN, VISIBLE, FADING_OUT, HIDDEN\n}\n\nexport type RippleConfig = {\n  color?: string;\n  centered?: boolean;\n  radius?: number;\n  persistent?: boolean;\n  animation?: RippleAnimationConfig;\n  terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n  /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n  enterDuration?: number;\n  /** Duration in milliseconds for the exit animation (fade-out). */\n  exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n\n  /** Current state of the ripple. */\n  state: RippleState = RippleState.HIDDEN;\n\n  constructor(\n    private _renderer: {fadeOutRipple(ref: RippleRef): void},\n    /** Reference to the ripple HTML element. */\n    public element: HTMLElement,\n    /** Ripple configuration used for the ripple. */\n    public config: RippleConfig) {\n  }\n\n  /** Fades out the ripple element. */\n  fadeOut() {\n    this._renderer.fadeOutRipple(this);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 {ElementRef, NgZone} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n  /** Configuration for ripples that are launched on pointer down. */\n  rippleConfig: RippleConfig;\n  /** Whether ripples on pointer down should be disabled. */\n  rippleDisabled: boolean;\n}\n\n\n// TODO: import these values from `@material/ripple` eventually.\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n  enterDuration: 225,\n  exitDuration: 150\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options that apply to all the event listeners that are bound by the ripple renderer. */\nconst passiveEventOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n  /** Element where the ripples are being added to. */\n  private _containerElement: HTMLElement;\n\n  /** Element which triggers the ripple elements on mouse events. */\n  private _triggerElement: HTMLElement | null;\n\n  /** Whether the pointer is currently down or not. */\n  private _isPointerDown = false;\n\n  /** Set of currently active ripple references. */\n  private _activeRipples = new Set<RippleRef>();\n\n  /** Latest non-persistent ripple that was triggered. */\n  private _mostRecentTransientRipple: RippleRef | null;\n\n  /** Time in milliseconds when the last touchstart event happened. */\n  private _lastTouchStartEvent: number;\n\n  /** Whether pointer-up event listeners have been registered. */\n  private _pointerUpEventsRegistered = false;\n\n  /**\n   * Cached dimensions of the ripple container. Set when the first\n   * ripple is shown and cleared once no more ripples are visible.\n   */\n  private _containerRect: ClientRect | null;\n\n  constructor(private _target: RippleTarget,\n              private _ngZone: NgZone,\n              elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n              platform: Platform) {\n\n    // Only do anything if we're on the browser.\n    if (platform.isBrowser) {\n      this._containerElement = coerceElement(elementOrElementRef);\n    }\n  }\n\n  /**\n   * Fades in a ripple at the given coordinates.\n   * @param x Coordinate within the element, along the X axis at which to start the ripple.\n   * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n   * @param config Extra ripple options.\n   */\n  fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n    const containerRect = this._containerRect =\n                          this._containerRect || this._containerElement.getBoundingClientRect();\n    const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n    if (config.centered) {\n      x = containerRect.left + containerRect.width / 2;\n      y = containerRect.top + containerRect.height / 2;\n    }\n\n    const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n    const offsetX = x - containerRect.left;\n    const offsetY = y - containerRect.top;\n    const duration = animationConfig.enterDuration;\n\n    const ripple = document.createElement('div');\n    ripple.classList.add('mat-ripple-element');\n\n    ripple.style.left = `${offsetX - radius}px`;\n    ripple.style.top = `${offsetY - radius}px`;\n    ripple.style.height = `${radius * 2}px`;\n    ripple.style.width = `${radius * 2}px`;\n\n    // If a custom color has been specified, set it as inline style. If no color is\n    // set, the default color will be applied through the ripple theme styles.\n    if (config.color != null) {\n      ripple.style.backgroundColor = config.color;\n    }\n\n    ripple.style.transitionDuration = `${duration}ms`;\n\n    this._containerElement.appendChild(ripple);\n\n    // By default the browser does not recalculate the styles of dynamically created\n    // ripple elements. This is critical because then the `scale` would not animate properly.\n    enforceStyleRecalculation(ripple);\n\n    ripple.style.transform = 'scale(1)';\n\n    // Exposed reference to the ripple that will be returned.\n    const rippleRef = new RippleRef(this, ripple, config);\n\n    rippleRef.state = RippleState.FADING_IN;\n\n    // Add the ripple reference to the list of all active ripples.\n    this._activeRipples.add(rippleRef);\n\n    if (!config.persistent) {\n      this._mostRecentTransientRipple = rippleRef;\n    }\n\n    // Wait for the ripple element to be completely faded in.\n    // Once it's faded in, the ripple can be hidden immediately if the mouse is released.\n    this._runTimeoutOutsideZone(() => {\n      const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n\n      rippleRef.state = RippleState.VISIBLE;\n\n      // When the timer runs out while the user has kept their pointer down, we want to\n      // keep only the persistent ripples and the latest transient ripple. We do this,\n      // because we don't want stacked transient ripples to appear after their enter\n      // animation has finished.\n      if (!config.persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n        rippleRef.fadeOut();\n      }\n    }, duration);\n\n    return rippleRef;\n  }\n\n  /** Fades out a ripple reference. */\n  fadeOutRipple(rippleRef: RippleRef) {\n    const wasActive = this._activeRipples.delete(rippleRef);\n\n    if (rippleRef === this._mostRecentTransientRipple) {\n      this._mostRecentTransientRipple = null;\n    }\n\n    // Clear out the cached bounding rect if we have no more ripples.\n    if (!this._activeRipples.size) {\n      this._containerRect = null;\n    }\n\n    // For ripples that are not active anymore, don't re-run the fade-out animation.\n    if (!wasActive) {\n      return;\n    }\n\n    const rippleEl = rippleRef.element;\n    const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n    rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n    rippleEl.style.opacity = '0';\n    rippleRef.state = RippleState.FADING_OUT;\n\n    // Once the ripple faded out, the ripple can be safely removed from the DOM.\n    this._runTimeoutOutsideZone(() => {\n      rippleRef.state = RippleState.HIDDEN;\n      rippleEl.parentNode!.removeChild(rippleEl);\n    }, animationConfig.exitDuration);\n  }\n\n  /** Fades out all currently active ripples. */\n  fadeOutAll() {\n    this._activeRipples.forEach(ripple => ripple.fadeOut());\n  }\n\n  /** Fades out all currently active non-persistent ripples. */\n  fadeOutAllNonPersistent() {\n    this._activeRipples.forEach(ripple => {\n      if (!ripple.config.persistent) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Sets up the trigger event listeners */\n  setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n    const element = coerceElement(elementOrElementRef);\n\n    if (!element || element === this._triggerElement) {\n      return;\n    }\n\n    // Remove all previously registered event listeners from the trigger element.\n    this._removeTriggerEvents();\n\n    this._triggerElement = element;\n    this._registerEvents(pointerDownEvents);\n  }\n\n  /**\n   * Handles all registered events.\n   * @docs-private\n   */\n  handleEvent(event: Event) {\n    if (event.type === 'mousedown') {\n      this._onMousedown(event as MouseEvent);\n    } else if (event.type === 'touchstart') {\n      this._onTouchStart(event as TouchEvent);\n    } else {\n      this._onPointerUp();\n    }\n\n    // If pointer-up events haven't been registered yet, do so now.\n    // We do this on-demand in order to reduce the total number of event listeners\n    // registered by the ripples, which speeds up the rendering time for large UIs.\n    if (!this._pointerUpEventsRegistered) {\n      this._registerEvents(pointerUpEvents);\n      this._pointerUpEventsRegistered = true;\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using mouse. */\n  private _onMousedown(event: MouseEvent) {\n    // Screen readers will fire fake mouse events for space/enter. Skip launching a\n    // ripple in this case for consistency with the non-screen-reader experience.\n    const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n    const isSyntheticEvent = this._lastTouchStartEvent &&\n        Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n    if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n      this._isPointerDown = true;\n      this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using touch. */\n  private _onTouchStart(event: TouchEvent) {\n    if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n      // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n      // events will launch a second ripple if we don't ignore mouse events for a specific\n      // time after a touchstart event.\n      this._lastTouchStartEvent = Date.now();\n      this._isPointerDown = true;\n\n      // Use `changedTouches` so we skip any touches where the user put\n      // their finger down, but used another finger to tap the element again.\n      const touches = event.changedTouches;\n\n      for (let i = 0; i < touches.length; i++) {\n        this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n      }\n    }\n  }\n\n  /** Function being called whenever the trigger is being released. */\n  private _onPointerUp() {\n    if (!this._isPointerDown) {\n      return;\n    }\n\n    this._isPointerDown = false;\n\n    // Fade-out all ripples that are visible and not persistent.\n    this._activeRipples.forEach(ripple => {\n      // By default, only ripples that are completely visible will fade out on pointer release.\n      // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n      const isVisible = ripple.state === RippleState.VISIBLE ||\n        ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN;\n\n      if (!ripple.config.persistent && isVisible) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n  private _runTimeoutOutsideZone(fn: Function, delay = 0) {\n    this._ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n  }\n\n  /** Registers event listeners for a given list of events. */\n  private _registerEvents(eventTypes: string[]) {\n    this._ngZone.runOutsideAngular(() => {\n      eventTypes.forEach((type) => {\n        this._triggerElement!.addEventListener(type, this, passiveEventOptions);\n      });\n    });\n  }\n\n  /** Removes previously registered event listeners from the trigger element. */\n  _removeTriggerEvents() {\n    if (this._triggerElement) {\n      pointerDownEvents.forEach((type) => {\n        this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n      });\n\n      if (this._pointerUpEventsRegistered) {\n        pointerUpEvents.forEach((type) => {\n          this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n        });\n      }\n    }\n  }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n  // Enforce a style recalculation by calling `getComputedStyle` and accessing any property.\n  // Calling `getPropertyValue` is important to let optimizers know that this is not a noop.\n  // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n  window.getComputedStyle(element).getPropertyValue('opacity');\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: ClientRect) {\n  const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n  const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n  return Math.sqrt(distX * distX + distY * distY);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n} from '@angular/core';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n  /**\n   * Whether ripples should be disabled. Ripples can be still launched manually by using\n   * the `launch()` method. Therefore focus indicators will still show up.\n   */\n  disabled?: boolean;\n\n  /**\n   * Default configuration for the animation duration of the ripples. There are two phases with\n   * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n   * by the value of `matRippleAnimation` or if the `NoopAnimationsModule` is included.\n   */\n  animation?: RippleAnimationConfig;\n\n  /**\n   * Whether ripples should start fading out immediately after the mouse or touch is released. By\n   * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n   */\n  terminateOnPointerUp?: boolean;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\n    new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\n\n@Directive({\n  selector: '[mat-ripple], [matRipple]',\n  exportAs: 'matRipple',\n  host: {\n    'class': 'mat-ripple',\n    '[class.mat-ripple-unbounded]': 'unbounded'\n  }\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n\n  /** Custom color for all ripples. */\n  @Input('matRippleColor') color: string;\n\n  /** Whether the ripples should be visible outside the component's bounds. */\n  @Input('matRippleUnbounded') unbounded: boolean;\n\n  /**\n   * Whether the ripple always originates from the center of the host element's bounds, rather\n   * than originating from the location of the click event.\n   */\n  @Input('matRippleCentered') centered: boolean;\n\n  /**\n   * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n   * will be the distance from the center of the ripple to the furthest corner of the host element's\n   * bounding rectangle.\n   */\n  @Input('matRippleRadius') radius: number = 0;\n\n  /**\n   * Configuration for the ripple animation. Allows modifying the enter and exit animation\n   * duration of the ripples. The animation durations will be overwritten if the\n   * `NoopAnimationsModule` is being used.\n   */\n  @Input('matRippleAnimation') animation: RippleAnimationConfig;\n\n  /**\n   * Whether click events will not trigger the ripple. Ripples can be still launched manually\n   * by using the `launch()` method.\n   */\n  @Input('matRippleDisabled')\n  get disabled() { return this._disabled; }\n  set disabled(value: boolean) {\n    if (value) {\n      this.fadeOutAllNonPersistent();\n    }\n    this._disabled = value;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _disabled: boolean = false;\n\n  /**\n   * The element that triggers the ripple when click events are received.\n   * Defaults to the directive's host element.\n   */\n  @Input('matRippleTrigger')\n  get trigger() { return this._trigger || this._elementRef.nativeElement; }\n  set trigger(trigger: HTMLElement) {\n    this._trigger = trigger;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _trigger: HTMLElement;\n\n  /** Renderer for the ripple DOM manipulations. */\n  private _rippleRenderer: RippleRenderer;\n\n  /** Options that are set globally for all ripples. */\n  private _globalOptions: RippleGlobalOptions;\n\n  /** Whether ripple directive is initialized and the input bindings are set. */\n  private _isInitialized: boolean = false;\n\n  constructor(private _elementRef: ElementRef<HTMLElement>,\n              ngZone: NgZone,\n              platform: Platform,\n              @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions?: RippleGlobalOptions,\n              @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n    this._globalOptions = globalOptions || {};\n    this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n  }\n\n  ngOnInit() {\n    this._isInitialized = true;\n    this._setupTriggerEventsIfEnabled();\n  }\n\n  ngOnDestroy() {\n    this._rippleRenderer._removeTriggerEvents();\n  }\n\n  /** Fades out all currently showing ripple elements. */\n  fadeOutAll() {\n    this._rippleRenderer.fadeOutAll();\n  }\n\n  /** Fades out all currently showing non-persistent ripple elements. */\n  fadeOutAllNonPersistent() {\n    this._rippleRenderer.fadeOutAllNonPersistent();\n  }\n\n  /**\n   * Ripple configuration from the directive's input values.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleConfig(): RippleConfig {\n    return {\n      centered: this.centered,\n      radius: this.radius,\n      color: this.color,\n      animation: {\n        ...this._globalOptions.animation,\n        ...(this._animationMode === 'NoopAnimations' ? {enterDuration: 0, exitDuration: 0} : {}),\n        ...this.animation\n      },\n      terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n    };\n  }\n\n  /**\n   * Whether ripples on pointer-down are disabled or not.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleDisabled(): boolean {\n    return this.disabled || !!this._globalOptions.disabled;\n  }\n\n  /** Sets up the trigger event listeners if ripples are enabled. */\n  private _setupTriggerEventsIfEnabled() {\n    if (!this.disabled && this._isInitialized) {\n      this._rippleRenderer.setupTriggerEvents(this.trigger);\n    }\n  }\n\n  /**\n   * Launches a manual ripple using the specified ripple configuration.\n   * @param config Configuration for the manual ripple.\n   */\n  launch(config: RippleConfig): RippleRef;\n\n  /**\n   * Launches a manual ripple at the specified coordinates relative to the viewport.\n   * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param config Optional ripple configuration for the manual ripple.\n   */\n  launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n  /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n  launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n    if (typeof configOrX === 'number') {\n      return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n    } else {\n      return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\n    }\n  }\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatRipple} from './ripple';\n\nexport * from './ripple';\nexport * from './ripple-ref';\nexport * from './ripple-renderer';\n\n@NgModule({\n  imports: [MatCommonModule, PlatformModule],\n  exports: [MatRipple, MatCommonModule],\n  declarations: [MatRipple],\n})\nexport class MatRippleModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  Component,\n  ViewEncapsulation,\n  Input,\n  ChangeDetectionStrategy,\n  Inject,\n  Optional,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'mat-pseudo-checkbox',\n  styleUrls: ['pseudo-checkbox.css'],\n  template: '',\n  host: {\n    'class': 'mat-pseudo-checkbox',\n    '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n    '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n    '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n    '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n  },\n})\nexport class MatPseudoCheckbox {\n  /** Display state of the checkbox. */\n  @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n  /** Whether the checkbox is disabled. */\n  @Input() disabled: boolean = false;\n\n  constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox/pseudo-checkbox';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatPseudoCheckbox],\n  declarations: [MatPseudoCheckbox]\n})\nexport class MatPseudoCheckboxModule { }\n\n\nexport * from './pseudo-checkbox/pseudo-checkbox';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n  disableRipple?: boolean;\n  multiple?: boolean;\n  inertGroups?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT =\n    new InjectionToken<MatOptionParentComponent>('MAT_OPTION_PARENT_COMPONENT');\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  InjectionToken,\n  Input,\n  ViewEncapsulation,\n  Directive, Inject, Optional\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '../common-behaviors/disabled';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n//    when the text will be read out so sometimes it comes in too late or never if the user\n//    navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n//    won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n//     doesn't read out the text at all. Furthermore, on\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nconst _MatOptgroupMixinBase = mixinDisabled(class {});\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n@Directive()\nexport class _MatOptgroupBase extends _MatOptgroupMixinBase implements CanDisable {\n  /** Label for the option group. */\n  @Input() label: string;\n\n  /** Unique id for the underlying label. */\n  _labelId: string = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n\n  /** Whether the group is in inert a11y mode. */\n  _inert: boolean;\n\n  constructor(@Inject(MAT_OPTION_PARENT_COMPONENT) @Optional() parent?: MatOptionParentComponent) {\n    super();\n    this._inert = parent?.inertGroups ?? false;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n  selector: 'mat-optgroup',\n  exportAs: 'matOptgroup',\n  templateUrl: 'optgroup.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  styleUrls: ['optgroup.css'],\n  host: {\n    'class': 'mat-optgroup',\n    '[attr.role]': '_inert ? null : \"group\"',\n    '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n    '[attr.aria-labelledby]': '_inert ? null : _labelId',\n    '[class.mat-optgroup-disabled]': 'disabled',\n  },\n  providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup extends _MatOptgroupBase {\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n  Directive,\n} from '@angular/core';\nimport {FocusOptions, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {MatOptgroup, _MatOptgroupBase, MAT_OPTGROUP} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange {\n  constructor(\n    /** Reference to the option that emitted the event. */\n    public source: _MatOptionBase,\n    /** Whether the change in the option's value was a result of a user action. */\n    public isUserInput = false) { }\n}\n\n@Directive()\nexport class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy {\n  private _selected = false;\n  private _active = false;\n  private _disabled = false;\n  private _mostRecentViewValue = '';\n\n  /** Whether the wrapping component is in multiple selection mode. */\n  get multiple() { return this._parent && this._parent.multiple; }\n\n  /** Whether or not the option is currently selected. */\n  get selected(): boolean { return this._selected; }\n\n  /** The form value of the option. */\n  @Input() value: any;\n\n  /** The unique ID of the option. */\n  @Input() id: string = `mat-option-${_uniqueIdCounter++}`;\n\n  /** Whether the option is disabled. */\n  @Input()\n  get disabled() { return (this.group && this.group.disabled) || this._disabled; }\n  set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n  /** Whether ripples for the option are disabled. */\n  get disableRipple() { return this._parent && this._parent.disableRipple; }\n\n  /** Event emitted when the option is selected or deselected. */\n  // tslint:disable-next-line:no-output-on-prefix\n  @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange>();\n\n  /** Emits when the state of the option changes and any parents have to be notified. */\n  readonly _stateChanges = new Subject<void>();\n\n  constructor(\n    private _element: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _parent: MatOptionParentComponent,\n    readonly group: _MatOptgroupBase) {}\n\n  /**\n   * Whether or not the option is currently active and ready to be selected.\n   * An active option displays styles as if it is focused, but the\n   * focus is actually retained somewhere else. This comes in handy\n   * for components like autocomplete where focus must remain on the input.\n   */\n  get active(): boolean {\n    return this._active;\n  }\n\n  /**\n   * The displayed value of the option. It is necessary to show the selected option in the\n   * select's trigger.\n   */\n  get viewValue(): string {\n    // TODO(kara): Add input property alternative for node envs.\n    return (this._getHostElement().textContent || '').trim();\n  }\n\n  /** Selects the option. */\n  select(): void {\n    if (!this._selected) {\n      this._selected = true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Deselects the option. */\n  deselect(): void {\n    if (this._selected) {\n      this._selected = false;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Sets focus onto this option. */\n  focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n    // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n    // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n    const element = this._getHostElement();\n\n    if (typeof element.focus === 'function') {\n      element.focus(options);\n    }\n  }\n\n  /**\n   * This method sets display styles on the option to make it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setActiveStyles(): void {\n    if (!this._active) {\n      this._active = true;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * This method removes display styles on the option that made it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setInactiveStyles(): void {\n    if (this._active) {\n      this._active = false;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    return this.viewValue;\n  }\n\n  /** Ensures the option is selected when activated from the keyboard. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n      this._selectViaInteraction();\n\n      // Prevent the page from scrolling down and form submits.\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * `Selects the option while indicating the selection came from the user. Used to\n   * determine if the select's view -> model callback should be invoked.`\n   */\n  _selectViaInteraction(): void {\n    if (!this.disabled) {\n      this._selected = this.multiple ? !this._selected : true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent(true);\n    }\n  }\n\n  /**\n   * Gets the `aria-selected` value for the option. We explicitly omit the `aria-selected`\n   * attribute from single-selection, unselected options. Including the `aria-selected=\"false\"`\n   * attributes adds a significant amount of noise to screen-reader users without providing useful\n   * information.\n   */\n  _getAriaSelected(): boolean|null {\n    return this.selected || (this.multiple ? false : null);\n  }\n\n  /** Returns the correct tabindex for the option depending on disabled state. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Gets the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._element.nativeElement;\n  }\n\n  ngAfterViewChecked() {\n    // Since parent components could be using the option's label to display the selected values\n    // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n    // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n    // relatively cheap, however we still limit them only to selected options in order to avoid\n    // hitting the DOM too often.\n    if (this._selected) {\n      const viewValue = this.viewValue;\n\n      if (viewValue !== this._mostRecentViewValue) {\n        this._mostRecentViewValue = viewValue;\n        this._stateChanges.next();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  /** Emits the selection change event. */\n  private _emitSelectionChangeEvent(isUserInput = false): void {\n    this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n  selector: 'mat-option',\n  exportAs: 'matOption',\n  host: {\n    'role': 'option',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[class.mat-selected]': 'selected',\n    '[class.mat-option-multiple]': 'multiple',\n    '[class.mat-active]': 'active',\n    '[id]': 'id',\n    '[attr.aria-selected]': '_getAriaSelected()',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[class.mat-option-disabled]': 'disabled',\n    '(click)': '_selectViaInteraction()',\n    '(keydown)': '_handleKeydown($event)',\n    'class': 'mat-option mat-focus-indicator',\n  },\n  styleUrls: ['option.css'],\n  templateUrl: 'option.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption extends _MatOptionBase {\n  constructor(\n    element: ElementRef<HTMLElement>,\n    changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(MAT_OPTION_PARENT_COMPONENT) parent: MatOptionParentComponent,\n    @Optional() @Inject(MAT_OPTGROUP) group: MatOptgroup) {\n    super(element, changeDetectorRef, parent, group);\n  }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(optionIndex: number, options: QueryList<MatOption>,\n  optionGroups: QueryList<MatOptgroup>): number {\n\n  if (optionGroups.length) {\n    let optionsArray = options.toArray();\n    let groups = optionGroups.toArray();\n    let groupCounter = 0;\n\n    for (let i = 0; i < optionIndex + 1; i++) {\n      if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n        groupCounter++;\n      }\n    }\n\n    return groupCounter;\n  }\n\n  return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(optionOffset: number, optionHeight: number,\n    currentScrollPosition: number, panelHeight: number): number {\n  if (optionOffset < currentScrollPosition) {\n    return optionOffset;\n  }\n\n  if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n    return Math.max(0, optionOffset - panelHeight + optionHeight);\n  }\n\n  return currentScrollPosition;\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatRippleModule} from '../ripple/index';\nimport {MatPseudoCheckboxModule} from '../selection/index';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n\n@NgModule({\n  imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n  exports: [MatOption, MatOptgroup],\n  declarations: [MatOption, MatOptgroup]\n})\nexport class MatOptionModule {}\n\n\nexport * from './option';\nexport * from './optgroup';\nexport * from './option-parent';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './version';\nexport * from './animation/animation';\nexport * from './common-behaviors/index';\nexport * from './datetime/index';\nexport * from './error/error-options';\nexport * from './line/line';\nexport * from './option/index';\nexport * from './ripple/index';\nexport * from './selection/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MATERIAL_SANITY_CHECKS_FACTORY as ɵangular_material_src_material_core_core_a} from './common-behaviors/common-module';"],"names":["VERSION","Version","InjectionToken","isDevMode","_isTestEnvironment","CDK_VERSION","NgModule","BidiModule","HighContrastModeDetector","Optional","Inject","DOCUMENT","coerceBooleanProperty","coerceNumberProperty","Subject","Observable","inject","LOCALE_ID","Injectable","Platform","PlatformModule","Directive","startWith","normalizePassiveListenerOptions","coerceElement","isFakeMousedownFromScreenReader","isFakeTouchstartFromScreenReader","ElementRef","NgZone","ANIMATION_MODULE_TYPE","Input","Component","ViewEncapsulation","ChangeDetectionStrategy","EventEmitter","ENTER","SPACE","hasModifierKey","ChangeDetectorRef","Output","CommonModule"],"mappings":"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"}
  • trip-planner-front/node_modules/@angular/material/bundles/material-sort.umd.js

    r6a3a178 rfa375fe  
    11(function (global, factory) {
    2     typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/cdk/coercion'), require('@angular/material/core'), require('@angular/cdk/a11y'), require('@angular/cdk/keycodes'), require('rxjs'), require('@angular/animations'), require('@angular/common')) :
    3     typeof define === 'function' && define.amd ? define('@angular/material/sort', ['exports', '@angular/core', '@angular/cdk/coercion', '@angular/material/core', '@angular/cdk/a11y', '@angular/cdk/keycodes', 'rxjs', '@angular/animations', '@angular/common'], factory) :
    4     (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ng = global.ng || {}, global.ng.material = global.ng.material || {}, global.ng.material.sort = {}), global.ng.core, global.ng.cdk.coercion, global.ng.material.core, global.ng.cdk.a11y, global.ng.cdk.keycodes, global.rxjs, global.ng.animations, global.ng.common));
    5 }(this, (function (exports, i0, coercion, core, a11y, keycodes, rxjs, animations, common) { 'use strict';
     2    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/cdk/a11y'), require('@angular/cdk/coercion'), require('@angular/cdk/keycodes'), require('@angular/material/core'), require('rxjs'), require('@angular/animations'), require('@angular/common')) :
     3    typeof define === 'function' && define.amd ? define('@angular/material/sort', ['exports', '@angular/core', '@angular/cdk/a11y', '@angular/cdk/coercion', '@angular/cdk/keycodes', '@angular/material/core', 'rxjs', '@angular/animations', '@angular/common'], factory) :
     4    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ng = global.ng || {}, global.ng.material = global.ng.material || {}, global.ng.material.sort = {}), global.ng.core, global.ng.cdk.a11y, global.ng.cdk.coercion, global.ng.cdk.keycodes, global.ng.material.core, global.rxjs, global.ng.animations, global.ng.common));
     5}(this, (function (exports, i0, a11y, coercion, keycodes, core, rxjs, animations, common) { 'use strict';
    66
    77    function _interopNamespace(e) {
     
    603603     * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and
    604604     * include it in a custom provider.
    605      * @deprecated No longer being used. To be removed.
    606      * @breaking-change 13.0.0
    607605     */
    608606    var MatSortHeaderIntl = /** @class */ (function () {
     
    658656        // `MatSort` is not optionally injected, but just asserted manually w/ better error.
    659657        // tslint:disable-next-line: lightweight-tokens
    660         _sort, _columnDef, _focusMonitor, _elementRef) {
     658        _sort, _columnDef, _focusMonitor, _elementRef,
     659        /** @breaking-change 14.0.0 _ariaDescriber will be required. */
     660        _ariaDescriber) {
    661661            var _this =
    662662            // Note that we use a string token for the `_columnDef`, because the value is provided both by
     
    671671            _this._focusMonitor = _focusMonitor;
    672672            _this._elementRef = _elementRef;
     673            _this._ariaDescriber = _ariaDescriber;
    673674            /**
    674675             * Flag set to true when the indicator should be displayed while the sort is not active. Used to
     
    690691            /** Sets the position of the arrow that displays when sorted. */
    691692            _this.arrowPosition = 'after';
     693            // Default the action description to "Sort" because it's better than nothing.
     694            // Without a description, the button's label comes from the sort header text content,
     695            // which doesn't give any indication that it performs a sorting operation.
     696            _this._sortActionDescription = 'Sort';
    692697            if (!_sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {
    693698                throw getSortHeaderNotContainedWithinSortError();
     
    696701            return _this;
    697702        }
     703        Object.defineProperty(MatSortHeader.prototype, "sortActionDescription", {
     704            /**
     705             * Description applied to MatSortHeader's button element with aria-describedby. This text should
     706             * describe the action that will occur when the user clicks the sort header.
     707             */
     708            get: function () {
     709                return this._sortActionDescription;
     710            },
     711            set: function (value) {
     712                this._updateSortActionDescription(value);
     713            },
     714            enumerable: false,
     715            configurable: true
     716        });
    698717        Object.defineProperty(MatSortHeader.prototype, "disableClear", {
    699718            /** Overrides the disable clear value of the containing MatSort for this MatSortable. */
     
    711730            this._setAnimationTransitionState({ toState: this._isSorted() ? 'active' : this._arrowDirection });
    712731            this._sort.register(this);
     732            this._sortButton = this._elementRef.nativeElement.querySelector('[role="button"]');
     733            this._updateSortActionDescription(this._sortActionDescription);
    713734        };
    714735        MatSortHeader.prototype.ngAfterViewInit = function () {
     
    828849        MatSortHeader.prototype._renderArrow = function () {
    829850            return !this._isDisabled() || this._isSorted();
     851        };
     852        MatSortHeader.prototype._updateSortActionDescription = function (newDescription) {
     853            // We use AriaDescriber for the sort button instead of setting an `aria-label` because some
     854            // screen readers (notably VoiceOver) will read both the column header *and* the button's label
     855            // for every *cell* in the table, creating a lot of unnecessary noise.
     856            var _a, _b;
     857            // If _sortButton is undefined, the component hasn't been initialized yet so there's
     858            // nothing to update in the DOM.
     859            if (this._sortButton) {
     860                // removeDescription will no-op if there is no existing message.
     861                // TODO(jelbourn): remove optional chaining when AriaDescriber is required.
     862                (_a = this._ariaDescriber) === null || _a === void 0 ? void 0 : _a.removeDescription(this._sortButton, this._sortActionDescription);
     863                (_b = this._ariaDescriber) === null || _b === void 0 ? void 0 : _b.describe(this._sortButton, newDescription);
     864            }
     865            this._sortActionDescription = newDescription;
    830866        };
    831867        /** Handles changes in the sorting state. */
     
    887923        { type: undefined, decorators: [{ type: i0.Inject, args: ['MAT_SORT_HEADER_COLUMN_DEF',] }, { type: i0.Optional }] },
    888924        { type: a11y.FocusMonitor },
    889         { type: i0.ElementRef }
     925        { type: i0.ElementRef },
     926        { type: a11y.AriaDescriber, decorators: [{ type: i0.Inject, args: [a11y.AriaDescriber,] }, { type: i0.Optional }] }
    890927    ]; };
    891928    MatSortHeader.propDecorators = {
     
    893930        arrowPosition: [{ type: i0.Input }],
    894931        start: [{ type: i0.Input }],
     932        sortActionDescription: [{ type: i0.Input }],
    895933        disableClear: [{ type: i0.Input }]
    896934    };
  • trip-planner-front/node_modules/@angular/material/bundles/material-sort.umd.js.map

    r6a3a178 rfa375fe  
    1 {"version":3,"file":"material-sort.umd.js","sources":["../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/material/sort/sort-errors.ts","../../../../../src/material/sort/sort.ts","../../../../../src/material/sort/sort-animations.ts","../../../../../src/material/sort/sort-header-intl.ts","../../../../../src/material/sort/sort-header.ts","../../../../../src/material/sort/sort-module.ts","../../../../../src/material/sort/public-api.ts","../../../../../src/material/sort/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n  return Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n  return Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n  return Error(`MatSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n  return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n} from '@angular/core';\nimport {\n  CanDisable,\n  HasInitialized,\n  mixinDisabled,\n  mixinInitialized,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {SortDirection} from './sort-direction';\nimport {\n  getSortDuplicateSortableIdError,\n  getSortHeaderMissingIdError,\n  getSortInvalidDirectionError,\n} from './sort-errors';\n\n/** Interface for a directive that holds sorting state consumed by `MatSortHeader`. */\nexport interface MatSortable {\n  /** The id of the column being sorted. */\n  id: string;\n\n  /** Starting sort direction. */\n  start: 'asc' | 'desc';\n\n  /** Whether to disable clearing the sorting state. */\n  disableClear: boolean;\n}\n\n/** The current sort state. */\nexport interface Sort {\n  /** The id of the column being sorted. */\n  active: string;\n\n  /** The sort direction. */\n  direction: SortDirection;\n}\n\n/** Default options for `mat-sort`.  */\nexport interface MatSortDefaultOptions {\n  /** Whether to disable clearing the sorting state. */\n  disableClear?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-sort`. */\nexport const MAT_SORT_DEFAULT_OPTIONS =\n    new InjectionToken<MatSortDefaultOptions>('MAT_SORT_DEFAULT_OPTIONS');\n\n\n// Boilerplate for applying mixins to MatSort.\n/** @docs-private */\nconst _MatSortBase = mixinInitialized(mixinDisabled(class {}));\n\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\n@Directive({\n  selector: '[matSort]',\n  exportAs: 'matSort',\n  host: {'class': 'mat-sort'},\n  inputs: ['disabled: matSortDisabled']\n})\nexport class MatSort extends _MatSortBase\n    implements CanDisable, HasInitialized, OnChanges, OnDestroy, OnInit {\n  /** Collection of all registered sortables that this directive manages. */\n  sortables = new Map<string, MatSortable>();\n\n  /** Used to notify any child components listening to state changes. */\n  readonly _stateChanges = new Subject<void>();\n\n  /** The id of the most recently sorted MatSortable. */\n  @Input('matSortActive') active: string;\n\n  /**\n   * The direction to set when an MatSortable is initially sorted.\n   * May be overriden by the MatSortable's sort start.\n   */\n  @Input('matSortStart') start: 'asc' | 'desc' = 'asc';\n\n  /** The sort direction of the currently active MatSortable. */\n  @Input('matSortDirection')\n  get direction(): SortDirection { return this._direction; }\n  set direction(direction: SortDirection) {\n    if (direction && direction !== 'asc' && direction !== 'desc' &&\n      (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getSortInvalidDirectionError(direction);\n    }\n    this._direction = direction;\n  }\n  private _direction: SortDirection = '';\n\n  /**\n   * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n   * May be overriden by the MatSortable's disable clear input.\n   */\n  @Input('matSortDisableClear')\n  get disableClear(): boolean { return this._disableClear; }\n  set disableClear(v: boolean) { this._disableClear = coerceBooleanProperty(v); }\n  private _disableClear: boolean;\n\n  /** Event emitted when the user changes either the active sort or sort direction. */\n  @Output('matSortChange') readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n  constructor(@Optional() @Inject(MAT_SORT_DEFAULT_OPTIONS)\n              private _defaultOptions?: MatSortDefaultOptions) {\n    super();\n  }\n\n  /**\n   * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n   * collection of MatSortables.\n   */\n  register(sortable: MatSortable): void {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (!sortable.id) {\n        throw getSortHeaderMissingIdError();\n      }\n\n      if (this.sortables.has(sortable.id)) {\n        throw getSortDuplicateSortableIdError(sortable.id);\n      }\n    }\n\n    this.sortables.set(sortable.id, sortable);\n  }\n\n  /**\n   * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n   * collection of contained MatSortables.\n   */\n  deregister(sortable: MatSortable): void {\n    this.sortables.delete(sortable.id);\n  }\n\n  /** Sets the active sort id and determines the new sort direction. */\n  sort(sortable: MatSortable): void {\n    if (this.active != sortable.id) {\n      this.active = sortable.id;\n      this.direction = sortable.start ? sortable.start : this.start;\n    } else {\n      this.direction = this.getNextSortDirection(sortable);\n    }\n\n    this.sortChange.emit({active: this.active, direction: this.direction});\n  }\n\n  /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n  getNextSortDirection(sortable: MatSortable): SortDirection {\n    if (!sortable) { return ''; }\n\n    // Get the sort direction cycle with the potential sortable overrides.\n    const disableClear = sortable?.disableClear ??\n        this.disableClear ?? !!this._defaultOptions?.disableClear;\n    let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n\n    // Get and return the next direction in the cycle\n    let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n    if (nextDirectionIndex >= sortDirectionCycle.length) { nextDirectionIndex = 0; }\n    return sortDirectionCycle[nextDirectionIndex];\n  }\n\n  ngOnInit() {\n    this._markInitialized();\n  }\n\n  ngOnChanges() {\n    this._stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  static ngAcceptInputType_disableClear: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: 'asc' | 'desc',\n                               disableClear: boolean): SortDirection[] {\n  let sortOrder: SortDirection[] = ['asc', 'desc'];\n  if (start == 'desc') { sortOrder.reverse(); }\n  if (!disableClear) { sortOrder.push(''); }\n\n  return sortOrder;\n}\n","/**\n * @license\n * Copyright Google LLC 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 {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  keyframes,\n  AnimationTriggerMetadata, query, animateChild,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\nconst SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' +\n                                  AnimationCurves.STANDARD_CURVE;\n\n/**\n * Animations used by MatSort.\n * @docs-private\n */\nexport const matSortAnimations: {\n  readonly indicator: AnimationTriggerMetadata;\n  readonly leftPointer: AnimationTriggerMetadata;\n  readonly rightPointer: AnimationTriggerMetadata;\n  readonly arrowOpacity: AnimationTriggerMetadata;\n  readonly arrowPosition: AnimationTriggerMetadata;\n  readonly allowChildren: AnimationTriggerMetadata;\n} = {\n  /** Animation that moves the sort indicator. */\n  indicator: trigger('indicator', [\n    state('active-asc, asc', style({transform: 'translateY(0px)'})),\n    // 10px is the height of the sort indicator, minus the width of the pointers\n    state('active-desc, desc', style({transform: 'translateY(10px)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n  leftPointer: trigger('leftPointer', [\n    state('active-asc, asc', style({transform: 'rotate(-45deg)'})),\n    state('active-desc, desc', style({transform: 'rotate(45deg)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n  rightPointer: trigger('rightPointer', [\n    state('active-asc, asc', style({transform: 'rotate(45deg)'})),\n    state('active-desc, desc', style({transform: 'rotate(-45deg)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that controls the arrow opacity. */\n  arrowOpacity: trigger('arrowOpacity', [\n    state('desc-to-active, asc-to-active, active', style({opacity: 1})),\n    state('desc-to-hint, asc-to-hint, hint', style({opacity: .54})),\n    state('hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void',\n        style({opacity: 0})),\n    // Transition between all states except for immediate transitions\n    transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\n    transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\n  ]),\n\n  /**\n   * Animation for the translation of the arrow as a whole. States are separated into two\n   * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n   * peek, and active. The other states define a specific animation (source-to-destination)\n   * and are determined as a function of their prev user-perceived state and what the next state\n   * should be.\n   */\n  arrowPosition: trigger('arrowPosition', [\n    // Hidden Above => Hint Center\n    transition('* => desc-to-hint, * => desc-to-active',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(-25%)'}),\n          style({transform: 'translateY(0)'})\n        ]))),\n    // Hint Center => Hidden Below\n    transition('* => hint-to-desc, * => active-to-desc',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(0)'}),\n          style({transform: 'translateY(25%)'})\n        ]))),\n    // Hidden Below => Hint Center\n    transition('* => asc-to-hint, * => asc-to-active',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(25%)'}),\n          style({transform: 'translateY(0)'})\n        ]))),\n    // Hint Center => Hidden Above\n    transition('* => hint-to-asc, * => active-to-asc',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(0)'}),\n          style({transform: 'translateY(-25%)'})\n        ]))),\n    state('desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active',\n        style({transform: 'translateY(0)'})),\n    state('hint-to-desc, active-to-desc, desc',\n        style({transform: 'translateY(-25%)'})),\n    state('hint-to-asc, active-to-asc, asc',\n        style({transform: 'translateY(25%)'})),\n  ]),\n\n  /** Necessary trigger that calls animate on children animations. */\n  allowChildren: trigger('allowChildren', [\n    transition('* <=> *', [\n      query('@*', animateChild(), {optional: true})\n    ])\n  ]),\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable, SkipSelf, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n@Injectable({providedIn: 'root'})\nexport class MatSortHeaderIntl {\n  /**\n   * Stream that emits whenever the labels here are changed. Use this to notify\n   * components if the labels have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n}\n\n/** @docs-private */\nexport function MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: MatSortHeaderIntl) {\n  return parentIntl || new MatSortHeaderIntl();\n}\n\n/** @docs-private */\nexport const MAT_SORT_HEADER_INTL_PROVIDER = {\n  // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one.\n  provide: MatSortHeaderIntl,\n  deps: [[new Optional(), new SkipSelf(), MatSortHeaderIntl]],\n  useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY\n};\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  ViewEncapsulation,\n  Inject,\n  ElementRef,\n  AfterViewInit,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\nimport {FocusMonitor} from '@angular/cdk/a11y';\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\nimport {merge, Subscription} from 'rxjs';\nimport {MatSort, MatSortable} from './sort';\nimport {matSortAnimations} from './sort-animations';\nimport {SortDirection} from './sort-direction';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {MatSortHeaderIntl} from './sort-header-intl';\n\n\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nconst _MatSortHeaderBase = mixinDisabled(class {});\n\n/**\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\n * be fully opaque in the center.\n *\n * @docs-private\n */\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\n\n/**\n * States describing the arrow's animated position (animating fromState to toState).\n * If the fromState is not defined, there will be no animated transition to the toState.\n * @docs-private\n */\nexport interface ArrowViewStateTransition {\n  fromState?: ArrowViewState;\n  toState?: ArrowViewState;\n}\n\n/** Column definition associated with a `MatSortHeader`. */\ninterface MatSortHeaderColumnDef {\n  name: string;\n}\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n  selector: '[mat-sort-header]',\n  exportAs: 'matSortHeader',\n  templateUrl: 'sort-header.html',\n  styleUrls: ['sort-header.css'],\n  host: {\n    'class': 'mat-sort-header',\n    '(click)': '_handleClick()',\n    '(keydown)': '_handleKeydown($event)',\n    '(mouseenter)': '_setIndicatorHintVisible(true)',\n    '(mouseleave)': '_setIndicatorHintVisible(false)',\n    '[attr.aria-sort]': '_getAriaSortAttribute()',\n    '[class.mat-sort-header-disabled]': '_isDisabled()',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  animations: [\n    matSortAnimations.indicator,\n    matSortAnimations.leftPointer,\n    matSortAnimations.rightPointer,\n    matSortAnimations.arrowOpacity,\n    matSortAnimations.arrowPosition,\n    matSortAnimations.allowChildren,\n  ]\n})\nexport class MatSortHeader extends _MatSortHeaderBase\n    implements CanDisable, MatSortable, OnDestroy, OnInit, AfterViewInit {\n  private _rerenderSubscription: Subscription;\n\n  /**\n   * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n   * provide an affordance that the header is sortable by showing on focus and hover.\n   */\n  _showIndicatorHint: boolean = false;\n\n  /**\n   * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\n   * position through the animation. If animations are currently disabled, the fromState is removed\n   * so that there is no animation displayed.\n   */\n  _viewState: ArrowViewStateTransition = { };\n\n  /** The direction the arrow should be facing according to the current state. */\n  _arrowDirection: SortDirection = '';\n\n  /**\n   * Whether the view state animation should show the transition between the `from` and `to` states.\n   */\n  _disableViewStateAnimation = false;\n\n  /**\n   * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n   * the column's name.\n   */\n  @Input('mat-sort-header') id: string;\n\n  /** Sets the position of the arrow that displays when sorted. */\n  @Input() arrowPosition: 'before' | 'after' = 'after';\n\n  /** Overrides the sort start value of the containing MatSort for this MatSortable. */\n  @Input() start: 'asc' | 'desc';\n\n  /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\n  @Input()\n  get disableClear(): boolean { return this._disableClear; }\n  set disableClear(v) { this._disableClear = coerceBooleanProperty(v); }\n  private _disableClear: boolean;\n\n  constructor(\n              /**\n               * @deprecated `_intl` parameter isn't being used anymore and it'll be removed.\n               * @breaking-change 13.0.0\n               */\n              public _intl: MatSortHeaderIntl,\n              private _changeDetectorRef: ChangeDetectorRef,\n              // `MatSort` is not optionally injected, but just asserted manually w/ better error.\n              // tslint:disable-next-line: lightweight-tokens\n              @Optional() public _sort: MatSort,\n              @Inject('MAT_SORT_HEADER_COLUMN_DEF') @Optional()\n                  public _columnDef: MatSortHeaderColumnDef,\n              private _focusMonitor: FocusMonitor,\n              private _elementRef: ElementRef<HTMLElement>) {\n    // Note that we use a string token for the `_columnDef`, because the value is provided both by\n    // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n    // and we want to avoid having the sort header depending on the CDK table because\n    // of this single reference.\n    super();\n\n    if (!_sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getSortHeaderNotContainedWithinSortError();\n    }\n\n    this._handleStateChanges();\n  }\n\n  ngOnInit() {\n    if (!this.id && this._columnDef) {\n      this.id = this._columnDef.name;\n    }\n\n    // Initialize the direction of the arrow and set the view state to be immediately that state.\n    this._updateArrowDirection();\n    this._setAnimationTransitionState(\n        {toState: this._isSorted() ? 'active' : this._arrowDirection});\n\n    this._sort.register(this);\n  }\n\n  ngAfterViewInit() {\n    // We use the focus monitor because we also want to style\n    // things differently based on the focus origin.\n    this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n      const newState = !!origin;\n      if (newState !== this._showIndicatorHint) {\n        this._setIndicatorHintVisible(newState);\n        this._changeDetectorRef.markForCheck();\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n    this._sort.deregister(this);\n    this._rerenderSubscription.unsubscribe();\n  }\n\n  /**\n   * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n   * user showing what the active sort will become. If set to false, the arrow will fade away.\n   */\n  _setIndicatorHintVisible(visible: boolean) {\n    // No-op if the sort header is disabled - should not make the hint visible.\n    if (this._isDisabled() && visible) { return; }\n\n    this._showIndicatorHint = visible;\n\n    if (!this._isSorted()) {\n      this._updateArrowDirection();\n      if (this._showIndicatorHint) {\n        this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'hint'});\n      } else {\n        this._setAnimationTransitionState({fromState: 'hint', toState: this._arrowDirection});\n      }\n    }\n  }\n\n  /**\n   * Sets the animation transition view state for the arrow's position and opacity. If the\n   * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n   * no animation appears.\n   */\n  _setAnimationTransitionState(viewState: ArrowViewStateTransition) {\n    this._viewState = viewState || { };\n\n    // If the animation for arrow position state (opacity/translation) should be disabled,\n    // remove the fromState so that it jumps right to the toState.\n    if (this._disableViewStateAnimation) {\n      this._viewState = {toState: viewState.toState};\n    }\n  }\n\n  /** Triggers the sort on this sort header and removes the indicator hint. */\n  _toggleOnInteraction() {\n    this._sort.sort(this);\n\n    // Do not show the animation if the header was already shown in the right position.\n    if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n      this._disableViewStateAnimation = true;\n    }\n  }\n\n  _handleClick() {\n    if (!this._isDisabled()) {\n      this._sort.sort(this);\n    }\n  }\n\n  _handleKeydown(event: KeyboardEvent) {\n    if (!this._isDisabled() && (event.keyCode === SPACE || event.keyCode === ENTER)) {\n      event.preventDefault();\n      this._toggleOnInteraction();\n    }\n  }\n\n  /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n  _isSorted() {\n    return this._sort.active == this.id &&\n        (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n  }\n\n  /** Returns the animation state for the arrow direction (indicator and pointers). */\n  _getArrowDirectionState() {\n    return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\n  }\n\n  /** Returns the arrow position state (opacity, translation). */\n  _getArrowViewState() {\n    const fromState = this._viewState.fromState;\n    return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\n  }\n\n  /**\n   * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n   * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n   * active sorted direction. The reason this is updated through a function is because the direction\n   * should only be changed at specific times - when deactivated but the hint is displayed and when\n   * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n   * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n   * preserving its direction, even though the next sort direction is actually different and should\n   * only be changed once the arrow displays again (hint or activation).\n   */\n  _updateArrowDirection() {\n    this._arrowDirection = this._isSorted() ?\n        this._sort.direction :\n        (this.start || this._sort.start);\n  }\n\n  _isDisabled() {\n    return this._sort.disabled || this.disabled;\n  }\n\n  /**\n   * Gets the aria-sort attribute that should be applied to this sort header. If this header\n   * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n   * says that the aria-sort property should only be present on one header at a time, so removing\n   * ensures this is true.\n   */\n  _getAriaSortAttribute() {\n    if (!this._isSorted()) {\n      return 'none';\n    }\n\n    return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n  }\n\n  /** Whether the arrow inside the sort header should be rendered. */\n  _renderArrow() {\n    return !this._isDisabled() || this._isSorted();\n  }\n\n  /** Handles changes in the sorting state. */\n  private _handleStateChanges() {\n    this._rerenderSubscription =\n      merge(this._sort.sortChange, this._sort._stateChanges, this._intl.changes).subscribe(() => {\n        if (this._isSorted()) {\n          this._updateArrowDirection();\n\n          // Do not show the animation if the header was already shown in the right position.\n          if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n            this._disableViewStateAnimation = true;\n          }\n\n          this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'active'});\n          this._showIndicatorHint = false;\n        }\n\n        // If this header was recently active and now no longer sorted, animate away the arrow.\n        if (!this._isSorted() && this._viewState && this._viewState.toState === 'active') {\n          this._disableViewStateAnimation = false;\n          this._setAnimationTransitionState({fromState: 'active', toState: this._arrowDirection});\n        }\n\n        this._changeDetectorRef.markForCheck();\n      });\n  }\n\n  static ngAcceptInputType_disableClear: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatSortHeader} from './sort-header';\nimport {MatSort} from './sort';\nimport {MAT_SORT_HEADER_INTL_PROVIDER} from './sort-header-intl';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\n\n@NgModule({\n  imports: [CommonModule, MatCommonModule],\n  exports: [MatSort, MatSortHeader],\n  declarations: [MatSort, MatSortHeader],\n  providers: [MAT_SORT_HEADER_INTL_PROVIDER]\n})\nexport class MatSortModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './sort-module';\nexport * from './sort-direction';\nexport * from './sort-header';\nexport * from './sort-header-intl';\nexport * from './sort';\nexport * from './sort-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["InjectionToken","mixinInitialized","mixinDisabled","Subject","EventEmitter","coerceBooleanProperty","Directive","Optional","Inject","Input","Output","AnimationDurations","AnimationCurves","trigger","state","style","transition","animate","keyframes","query","animateChild","Injectable","SkipSelf","SPACE","ENTER","merge","Component","ViewEncapsulation","ChangeDetectionStrategy","ChangeDetectorRef","FocusMonitor","ElementRef","NgModule","CommonModule","MatCommonModule"],"mappings":"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"}
     1{"version":3,"file":"material-sort.umd.js","sources":["../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/material/sort/sort-errors.ts","../../../../../src/material/sort/sort.ts","../../../../../src/material/sort/sort-animations.ts","../../../../../src/material/sort/sort-header-intl.ts","../../../../../src/material/sort/sort-header.ts","../../../../../src/material/sort/sort-module.ts","../../../../../src/material/sort/public-api.ts","../../../../../src/material/sort/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n  return Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n  return Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n  return Error(`MatSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n  return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n} from '@angular/core';\nimport {\n  CanDisable,\n  HasInitialized,\n  mixinDisabled,\n  mixinInitialized,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {SortDirection} from './sort-direction';\nimport {\n  getSortDuplicateSortableIdError,\n  getSortHeaderMissingIdError,\n  getSortInvalidDirectionError,\n} from './sort-errors';\n\n/** Interface for a directive that holds sorting state consumed by `MatSortHeader`. */\nexport interface MatSortable {\n  /** The id of the column being sorted. */\n  id: string;\n\n  /** Starting sort direction. */\n  start: 'asc' | 'desc';\n\n  /** Whether to disable clearing the sorting state. */\n  disableClear: boolean;\n}\n\n/** The current sort state. */\nexport interface Sort {\n  /** The id of the column being sorted. */\n  active: string;\n\n  /** The sort direction. */\n  direction: SortDirection;\n}\n\n/** Default options for `mat-sort`.  */\nexport interface MatSortDefaultOptions {\n  /** Whether to disable clearing the sorting state. */\n  disableClear?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-sort`. */\nexport const MAT_SORT_DEFAULT_OPTIONS =\n    new InjectionToken<MatSortDefaultOptions>('MAT_SORT_DEFAULT_OPTIONS');\n\n\n// Boilerplate for applying mixins to MatSort.\n/** @docs-private */\nconst _MatSortBase = mixinInitialized(mixinDisabled(class {}));\n\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\n@Directive({\n  selector: '[matSort]',\n  exportAs: 'matSort',\n  host: {'class': 'mat-sort'},\n  inputs: ['disabled: matSortDisabled']\n})\nexport class MatSort extends _MatSortBase\n    implements CanDisable, HasInitialized, OnChanges, OnDestroy, OnInit {\n  /** Collection of all registered sortables that this directive manages. */\n  sortables = new Map<string, MatSortable>();\n\n  /** Used to notify any child components listening to state changes. */\n  readonly _stateChanges = new Subject<void>();\n\n  /** The id of the most recently sorted MatSortable. */\n  @Input('matSortActive') active: string;\n\n  /**\n   * The direction to set when an MatSortable is initially sorted.\n   * May be overriden by the MatSortable's sort start.\n   */\n  @Input('matSortStart') start: 'asc' | 'desc' = 'asc';\n\n  /** The sort direction of the currently active MatSortable. */\n  @Input('matSortDirection')\n  get direction(): SortDirection { return this._direction; }\n  set direction(direction: SortDirection) {\n    if (direction && direction !== 'asc' && direction !== 'desc' &&\n      (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getSortInvalidDirectionError(direction);\n    }\n    this._direction = direction;\n  }\n  private _direction: SortDirection = '';\n\n  /**\n   * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n   * May be overriden by the MatSortable's disable clear input.\n   */\n  @Input('matSortDisableClear')\n  get disableClear(): boolean { return this._disableClear; }\n  set disableClear(v: boolean) { this._disableClear = coerceBooleanProperty(v); }\n  private _disableClear: boolean;\n\n  /** Event emitted when the user changes either the active sort or sort direction. */\n  @Output('matSortChange') readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n  constructor(@Optional() @Inject(MAT_SORT_DEFAULT_OPTIONS)\n              private _defaultOptions?: MatSortDefaultOptions) {\n    super();\n  }\n\n  /**\n   * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n   * collection of MatSortables.\n   */\n  register(sortable: MatSortable): void {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (!sortable.id) {\n        throw getSortHeaderMissingIdError();\n      }\n\n      if (this.sortables.has(sortable.id)) {\n        throw getSortDuplicateSortableIdError(sortable.id);\n      }\n    }\n\n    this.sortables.set(sortable.id, sortable);\n  }\n\n  /**\n   * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n   * collection of contained MatSortables.\n   */\n  deregister(sortable: MatSortable): void {\n    this.sortables.delete(sortable.id);\n  }\n\n  /** Sets the active sort id and determines the new sort direction. */\n  sort(sortable: MatSortable): void {\n    if (this.active != sortable.id) {\n      this.active = sortable.id;\n      this.direction = sortable.start ? sortable.start : this.start;\n    } else {\n      this.direction = this.getNextSortDirection(sortable);\n    }\n\n    this.sortChange.emit({active: this.active, direction: this.direction});\n  }\n\n  /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n  getNextSortDirection(sortable: MatSortable): SortDirection {\n    if (!sortable) { return ''; }\n\n    // Get the sort direction cycle with the potential sortable overrides.\n    const disableClear = sortable?.disableClear ??\n        this.disableClear ?? !!this._defaultOptions?.disableClear;\n    let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n\n    // Get and return the next direction in the cycle\n    let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n    if (nextDirectionIndex >= sortDirectionCycle.length) { nextDirectionIndex = 0; }\n    return sortDirectionCycle[nextDirectionIndex];\n  }\n\n  ngOnInit() {\n    this._markInitialized();\n  }\n\n  ngOnChanges() {\n    this._stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  static ngAcceptInputType_disableClear: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: 'asc' | 'desc',\n                               disableClear: boolean): SortDirection[] {\n  let sortOrder: SortDirection[] = ['asc', 'desc'];\n  if (start == 'desc') { sortOrder.reverse(); }\n  if (!disableClear) { sortOrder.push(''); }\n\n  return sortOrder;\n}\n","/**\n * @license\n * Copyright Google LLC 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 {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  keyframes,\n  AnimationTriggerMetadata, query, animateChild,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\nconst SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' +\n                                  AnimationCurves.STANDARD_CURVE;\n\n/**\n * Animations used by MatSort.\n * @docs-private\n */\nexport const matSortAnimations: {\n  readonly indicator: AnimationTriggerMetadata;\n  readonly leftPointer: AnimationTriggerMetadata;\n  readonly rightPointer: AnimationTriggerMetadata;\n  readonly arrowOpacity: AnimationTriggerMetadata;\n  readonly arrowPosition: AnimationTriggerMetadata;\n  readonly allowChildren: AnimationTriggerMetadata;\n} = {\n  /** Animation that moves the sort indicator. */\n  indicator: trigger('indicator', [\n    state('active-asc, asc', style({transform: 'translateY(0px)'})),\n    // 10px is the height of the sort indicator, minus the width of the pointers\n    state('active-desc, desc', style({transform: 'translateY(10px)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n  leftPointer: trigger('leftPointer', [\n    state('active-asc, asc', style({transform: 'rotate(-45deg)'})),\n    state('active-desc, desc', style({transform: 'rotate(45deg)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n  rightPointer: trigger('rightPointer', [\n    state('active-asc, asc', style({transform: 'rotate(45deg)'})),\n    state('active-desc, desc', style({transform: 'rotate(-45deg)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that controls the arrow opacity. */\n  arrowOpacity: trigger('arrowOpacity', [\n    state('desc-to-active, asc-to-active, active', style({opacity: 1})),\n    state('desc-to-hint, asc-to-hint, hint', style({opacity: .54})),\n    state('hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void',\n        style({opacity: 0})),\n    // Transition between all states except for immediate transitions\n    transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\n    transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\n  ]),\n\n  /**\n   * Animation for the translation of the arrow as a whole. States are separated into two\n   * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n   * peek, and active. The other states define a specific animation (source-to-destination)\n   * and are determined as a function of their prev user-perceived state and what the next state\n   * should be.\n   */\n  arrowPosition: trigger('arrowPosition', [\n    // Hidden Above => Hint Center\n    transition('* => desc-to-hint, * => desc-to-active',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(-25%)'}),\n          style({transform: 'translateY(0)'})\n        ]))),\n    // Hint Center => Hidden Below\n    transition('* => hint-to-desc, * => active-to-desc',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(0)'}),\n          style({transform: 'translateY(25%)'})\n        ]))),\n    // Hidden Below => Hint Center\n    transition('* => asc-to-hint, * => asc-to-active',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(25%)'}),\n          style({transform: 'translateY(0)'})\n        ]))),\n    // Hint Center => Hidden Above\n    transition('* => hint-to-asc, * => active-to-asc',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(0)'}),\n          style({transform: 'translateY(-25%)'})\n        ]))),\n    state('desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active',\n        style({transform: 'translateY(0)'})),\n    state('hint-to-desc, active-to-desc, desc',\n        style({transform: 'translateY(-25%)'})),\n    state('hint-to-asc, active-to-asc, asc',\n        style({transform: 'translateY(25%)'})),\n  ]),\n\n  /** Necessary trigger that calls animate on children animations. */\n  allowChildren: trigger('allowChildren', [\n    transition('* <=> *', [\n      query('@*', animateChild(), {optional: true})\n    ])\n  ]),\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable, SkipSelf, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n */\n@Injectable({providedIn: 'root'})\nexport class MatSortHeaderIntl {\n  /**\n   * Stream that emits whenever the labels here are changed. Use this to notify\n   * components if the labels have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n}\n\n/** @docs-private */\nexport function MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: MatSortHeaderIntl) {\n  return parentIntl || new MatSortHeaderIntl();\n}\n\n/** @docs-private */\nexport const MAT_SORT_HEADER_INTL_PROVIDER = {\n  // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one.\n  provide: MatSortHeaderIntl,\n  deps: [[new Optional(), new SkipSelf(), MatSortHeaderIntl]],\n  useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY\n};\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\nimport {merge, Subscription} from 'rxjs';\nimport {MatSort, MatSortable} from './sort';\nimport {matSortAnimations} from './sort-animations';\nimport {SortDirection} from './sort-direction';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {MatSortHeaderIntl} from './sort-header-intl';\n\n\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nconst _MatSortHeaderBase = mixinDisabled(class {});\n\n/**\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\n * be fully opaque in the center.\n *\n * @docs-private\n */\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\n\n/**\n * States describing the arrow's animated position (animating fromState to toState).\n * If the fromState is not defined, there will be no animated transition to the toState.\n * @docs-private\n */\nexport interface ArrowViewStateTransition {\n  fromState?: ArrowViewState;\n  toState?: ArrowViewState;\n}\n\n/** Column definition associated with a `MatSortHeader`. */\ninterface MatSortHeaderColumnDef {\n  name: string;\n}\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n  selector: '[mat-sort-header]',\n  exportAs: 'matSortHeader',\n  templateUrl: 'sort-header.html',\n  styleUrls: ['sort-header.css'],\n  host: {\n    'class': 'mat-sort-header',\n    '(click)': '_handleClick()',\n    '(keydown)': '_handleKeydown($event)',\n    '(mouseenter)': '_setIndicatorHintVisible(true)',\n    '(mouseleave)': '_setIndicatorHintVisible(false)',\n    '[attr.aria-sort]': '_getAriaSortAttribute()',\n    '[class.mat-sort-header-disabled]': '_isDisabled()',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  animations: [\n    matSortAnimations.indicator,\n    matSortAnimations.leftPointer,\n    matSortAnimations.rightPointer,\n    matSortAnimations.arrowOpacity,\n    matSortAnimations.arrowPosition,\n    matSortAnimations.allowChildren,\n  ]\n})\nexport class MatSortHeader extends _MatSortHeaderBase\n    implements CanDisable, MatSortable, OnDestroy, OnInit, AfterViewInit {\n  private _rerenderSubscription: Subscription;\n\n  /**\n   * The element with role=\"button\" inside this component's view. We need this\n   * in order to apply a description with AriaDescriber.\n   */\n  private _sortButton: HTMLElement;\n\n  /**\n   * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n   * provide an affordance that the header is sortable by showing on focus and hover.\n   */\n  _showIndicatorHint: boolean = false;\n\n  /**\n   * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\n   * position through the animation. If animations are currently disabled, the fromState is removed\n   * so that there is no animation displayed.\n   */\n  _viewState: ArrowViewStateTransition = { };\n\n  /** The direction the arrow should be facing according to the current state. */\n  _arrowDirection: SortDirection = '';\n\n  /**\n   * Whether the view state animation should show the transition between the `from` and `to` states.\n   */\n  _disableViewStateAnimation = false;\n\n  /**\n   * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n   * the column's name.\n   */\n  @Input('mat-sort-header') id: string;\n\n  /** Sets the position of the arrow that displays when sorted. */\n  @Input() arrowPosition: 'before' | 'after' = 'after';\n\n  /** Overrides the sort start value of the containing MatSort for this MatSortable. */\n  @Input() start: 'asc' | 'desc';\n\n  /**\n   * Description applied to MatSortHeader's button element with aria-describedby. This text should\n   * describe the action that will occur when the user clicks the sort header.\n   */\n  @Input()\n  get sortActionDescription(): string {\n    return this._sortActionDescription;\n  }\n  set sortActionDescription(value: string) {\n    this._updateSortActionDescription(value);\n  }\n  // Default the action description to \"Sort\" because it's better than nothing.\n  // Without a description, the button's label comes from the sort header text content,\n  // which doesn't give any indication that it performs a sorting operation.\n  private _sortActionDescription: string = 'Sort';\n\n  /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\n  @Input()\n  get disableClear(): boolean { return this._disableClear; }\n  set disableClear(v) { this._disableClear = coerceBooleanProperty(v); }\n  private _disableClear: boolean;\n\n  constructor(\n              /**\n               * @deprecated `_intl` parameter isn't being used anymore and it'll be removed.\n               * @breaking-change 13.0.0\n               */\n              public _intl: MatSortHeaderIntl,\n              private _changeDetectorRef: ChangeDetectorRef,\n              // `MatSort` is not optionally injected, but just asserted manually w/ better error.\n              // tslint:disable-next-line: lightweight-tokens\n              @Optional() public _sort: MatSort,\n              @Inject('MAT_SORT_HEADER_COLUMN_DEF') @Optional()\n                  public _columnDef: MatSortHeaderColumnDef,\n              private _focusMonitor: FocusMonitor,\n              private _elementRef: ElementRef<HTMLElement>,\n              /** @breaking-change 14.0.0 _ariaDescriber will be required. */\n              @Inject(AriaDescriber) @Optional() private _ariaDescriber?: AriaDescriber | null) {\n    // Note that we use a string token for the `_columnDef`, because the value is provided both by\n    // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n    // and we want to avoid having the sort header depending on the CDK table because\n    // of this single reference.\n    super();\n\n    if (!_sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getSortHeaderNotContainedWithinSortError();\n    }\n\n    this._handleStateChanges();\n  }\n\n  ngOnInit() {\n    if (!this.id && this._columnDef) {\n      this.id = this._columnDef.name;\n    }\n\n    // Initialize the direction of the arrow and set the view state to be immediately that state.\n    this._updateArrowDirection();\n    this._setAnimationTransitionState(\n        {toState: this._isSorted() ? 'active' : this._arrowDirection});\n\n    this._sort.register(this);\n\n    this._sortButton = this._elementRef.nativeElement.querySelector('[role=\"button\"]')!;\n    this._updateSortActionDescription(this._sortActionDescription);\n  }\n\n  ngAfterViewInit() {\n    // We use the focus monitor because we also want to style\n    // things differently based on the focus origin.\n    this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n      const newState = !!origin;\n      if (newState !== this._showIndicatorHint) {\n        this._setIndicatorHintVisible(newState);\n        this._changeDetectorRef.markForCheck();\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n    this._sort.deregister(this);\n    this._rerenderSubscription.unsubscribe();\n  }\n\n  /**\n   * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n   * user showing what the active sort will become. If set to false, the arrow will fade away.\n   */\n  _setIndicatorHintVisible(visible: boolean) {\n    // No-op if the sort header is disabled - should not make the hint visible.\n    if (this._isDisabled() && visible) { return; }\n\n    this._showIndicatorHint = visible;\n\n    if (!this._isSorted()) {\n      this._updateArrowDirection();\n      if (this._showIndicatorHint) {\n        this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'hint'});\n      } else {\n        this._setAnimationTransitionState({fromState: 'hint', toState: this._arrowDirection});\n      }\n    }\n  }\n\n  /**\n   * Sets the animation transition view state for the arrow's position and opacity. If the\n   * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n   * no animation appears.\n   */\n  _setAnimationTransitionState(viewState: ArrowViewStateTransition) {\n    this._viewState = viewState || { };\n\n    // If the animation for arrow position state (opacity/translation) should be disabled,\n    // remove the fromState so that it jumps right to the toState.\n    if (this._disableViewStateAnimation) {\n      this._viewState = {toState: viewState.toState};\n    }\n  }\n\n  /** Triggers the sort on this sort header and removes the indicator hint. */\n  _toggleOnInteraction() {\n    this._sort.sort(this);\n\n    // Do not show the animation if the header was already shown in the right position.\n    if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n      this._disableViewStateAnimation = true;\n    }\n  }\n\n  _handleClick() {\n    if (!this._isDisabled()) {\n      this._sort.sort(this);\n    }\n  }\n\n  _handleKeydown(event: KeyboardEvent) {\n    if (!this._isDisabled() && (event.keyCode === SPACE || event.keyCode === ENTER)) {\n      event.preventDefault();\n      this._toggleOnInteraction();\n    }\n  }\n\n  /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n  _isSorted() {\n    return this._sort.active == this.id &&\n        (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n  }\n\n  /** Returns the animation state for the arrow direction (indicator and pointers). */\n  _getArrowDirectionState() {\n    return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\n  }\n\n  /** Returns the arrow position state (opacity, translation). */\n  _getArrowViewState() {\n    const fromState = this._viewState.fromState;\n    return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\n  }\n\n  /**\n   * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n   * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n   * active sorted direction. The reason this is updated through a function is because the direction\n   * should only be changed at specific times - when deactivated but the hint is displayed and when\n   * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n   * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n   * preserving its direction, even though the next sort direction is actually different and should\n   * only be changed once the arrow displays again (hint or activation).\n   */\n  _updateArrowDirection() {\n    this._arrowDirection = this._isSorted() ?\n        this._sort.direction :\n        (this.start || this._sort.start);\n  }\n\n  _isDisabled() {\n    return this._sort.disabled || this.disabled;\n  }\n\n  /**\n   * Gets the aria-sort attribute that should be applied to this sort header. If this header\n   * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n   * says that the aria-sort property should only be present on one header at a time, so removing\n   * ensures this is true.\n   */\n  _getAriaSortAttribute() {\n    if (!this._isSorted()) {\n      return 'none';\n    }\n\n    return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n  }\n\n  /** Whether the arrow inside the sort header should be rendered. */\n  _renderArrow() {\n    return !this._isDisabled() || this._isSorted();\n  }\n\n  private _updateSortActionDescription(newDescription: string) {\n    // We use AriaDescriber for the sort button instead of setting an `aria-label` because some\n    // screen readers (notably VoiceOver) will read both the column header *and* the button's label\n    // for every *cell* in the table, creating a lot of unnecessary noise.\n\n    // If _sortButton is undefined, the component hasn't been initialized yet so there's\n    // nothing to update in the DOM.\n    if (this._sortButton) {\n      // removeDescription will no-op if there is no existing message.\n      // TODO(jelbourn): remove optional chaining when AriaDescriber is required.\n      this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\n      this._ariaDescriber?.describe(this._sortButton, newDescription);\n    }\n\n    this._sortActionDescription = newDescription;\n  }\n\n  /** Handles changes in the sorting state. */\n  private _handleStateChanges() {\n    this._rerenderSubscription =\n      merge(this._sort.sortChange, this._sort._stateChanges, this._intl.changes).subscribe(() => {\n        if (this._isSorted()) {\n          this._updateArrowDirection();\n\n          // Do not show the animation if the header was already shown in the right position.\n          if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n            this._disableViewStateAnimation = true;\n          }\n\n          this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'active'});\n          this._showIndicatorHint = false;\n        }\n\n        // If this header was recently active and now no longer sorted, animate away the arrow.\n        if (!this._isSorted() && this._viewState && this._viewState.toState === 'active') {\n          this._disableViewStateAnimation = false;\n          this._setAnimationTransitionState({fromState: 'active', toState: this._arrowDirection});\n        }\n\n        this._changeDetectorRef.markForCheck();\n      });\n  }\n\n  static ngAcceptInputType_disableClear: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatSortHeader} from './sort-header';\nimport {MatSort} from './sort';\nimport {MAT_SORT_HEADER_INTL_PROVIDER} from './sort-header-intl';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\n\n@NgModule({\n  imports: [CommonModule, MatCommonModule],\n  exports: [MatSort, MatSortHeader],\n  declarations: [MatSort, MatSortHeader],\n  providers: [MAT_SORT_HEADER_INTL_PROVIDER]\n})\nexport class MatSortModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './sort-module';\nexport * from './sort-direction';\nexport * from './sort-header';\nexport * from './sort-header-intl';\nexport * from './sort';\nexport * from './sort-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["InjectionToken","mixinInitialized","mixinDisabled","Subject","EventEmitter","coerceBooleanProperty","Directive","Optional","Inject","Input","Output","AnimationDurations","AnimationCurves","trigger","state","style","transition","animate","keyframes","query","animateChild","Injectable","SkipSelf","SPACE","ENTER","merge","Component","ViewEncapsulation","ChangeDetectionStrategy","ChangeDetectorRef","FocusMonitor","ElementRef","AriaDescriber","NgModule","CommonModule","MatCommonModule"],"mappings":"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"}
  • trip-planner-front/node_modules/@angular/material/core/index.metadata.json

    r6a3a178 rfa375fe  
    1 {"__symbolic":"module","version":4,"metadata":{"VERSION":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Version","line":11,"character":27},"arguments":["12.2.9"]},"AnimationCurves":{"__symbolic":"class","members":{},"statics":{"STANDARD_CURVE":"cubic-bezier(0.4,0.0,0.2,1)","DECELERATION_CURVE":"cubic-bezier(0.0,0.0,0.2,1)","ACCELERATION_CURVE":"cubic-bezier(0.4,0.0,1,1)","SHARP_CURVE":"cubic-bezier(0.4,0.0,0.6,1)"}},"AnimationDurations":{"__symbolic":"class","members":{},"statics":{"COMPLEX":"375ms","ENTERING":"225ms","EXITING":"195ms"}},"ɵangular_material_src_material_core_core_a":{"__symbolic":"function","parameters":[],"value":true},"MatCommonModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":51,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":52,"character":12}],"exports":[{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":53,"character":12}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":67,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":67,"character":19},"arguments":[{"__symbolic":"reference","name":"MATERIAL_SANITY_CHECKS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":68,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":68,"character":14}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"HighContrastModeDetector","line":66,"character":32},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}],"_checkIsEnabled":[{"__symbolic":"method"}],"_checkDoctypeIsDefined":[{"__symbolic":"method"}],"_checkThemeIsPresent":[{"__symbolic":"method"}],"_checkCdkVersionMatch":[{"__symbolic":"method"}]}},"MATERIAL_SANITY_CHECKS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":27,"character":42},"arguments":["mat-sanity-checks",{"providedIn":"root","factory":{"__symbolic":"reference","name":"ɵangular_material_src_material_core_core_a"}}]},"SanityChecks":{"__symbolic":"interface"},"GranularSanityChecks":{"__symbolic":"interface"},"CanDisable":{"__symbolic":"interface"},"CanDisableCtor":{"__symbolic":"interface"},"mixinDisabled":{"__symbolic":"function","parameters":["base"],"value":{"__symbolic":"class"}},"CanColor":{"__symbolic":"interface"},"CanColorCtor":{"__symbolic":"interface"},"mixinColor":{"__symbolic":"function","parameters":["base","defaultColor"],"value":{"__symbolic":"class"}},"ThemePalette":{"__symbolic":"interface"},"CanDisableRipple":{"__symbolic":"interface"},"CanDisableRippleCtor":{"__symbolic":"interface"},"mixinDisableRipple":{"__symbolic":"function","parameters":["base"],"value":{"__symbolic":"class"}},"HasTabIndex":{"__symbolic":"interface"},"HasTabIndexCtor":{"__symbolic":"interface"},"mixinTabIndex":{"__symbolic":"function","parameters":["base","defaultTabIndex"],"defaults":[null,0],"value":{"__symbolic":"class"}},"CanUpdateErrorState":{"__symbolic":"interface"},"CanUpdateErrorStateCtor":{"__symbolic":"interface"},"mixinErrorState":{"__symbolic":"function","parameters":["base"],"value":{"__symbolic":"class"}},"HasInitialized":{"__symbolic":"interface"},"HasInitializedCtor":{"__symbolic":"interface"},"mixinInitialized":{"__symbolic":"function","parameters":["base"],"value":{"__symbolic":"class"}},"NativeDateModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":21,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"PlatformModule","line":22,"character":12}],"providers":[{"provide":{"__symbolic":"reference","name":"DateAdapter"},"useClass":{"__symbolic":"reference","name":"NativeDateAdapter"}}]}]}],"members":{}},"MatNativeDateModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":30,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"NativeDateModule"}],"providers":[{"provide":{"__symbolic":"reference","name":"MAT_DATE_FORMATS"},"useValue":{"__symbolic":"reference","name":"MAT_NATIVE_DATE_FORMATS"}}]}]}],"members":{}},"MAT_DATE_LOCALE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":12,"character":35},"arguments":["MAT_DATE_LOCALE",{"providedIn":"root","factory":{"__symbolic":"reference","name":"MAT_DATE_LOCALE_FACTORY"}}]},"MAT_DATE_LOCALE_FACTORY":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"inject","line":19,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":19,"character":16}]}},"DateAdapter":{"__symbolic":"class","arity":1,"members":{"getYear":[{"__symbolic":"method"}],"getMonth":[{"__symbolic":"method"}],"getDate":[{"__symbolic":"method"}],"getDayOfWeek":[{"__symbolic":"method"}],"getMonthNames":[{"__symbolic":"method"}],"getDateNames":[{"__symbolic":"method"}],"getDayOfWeekNames":[{"__symbolic":"method"}],"getYearName":[{"__symbolic":"method"}],"getFirstDayOfWeek":[{"__symbolic":"method"}],"getNumDaysInMonth":[{"__symbolic":"method"}],"clone":[{"__symbolic":"method"}],"createDate":[{"__symbolic":"method"}],"today":[{"__symbolic":"method"}],"parse":[{"__symbolic":"method"}],"format":[{"__symbolic":"method"}],"addCalendarYears":[{"__symbolic":"method"}],"addCalendarMonths":[{"__symbolic":"method"}],"addCalendarDays":[{"__symbolic":"method"}],"toIso8601":[{"__symbolic":"method"}],"isDateInstance":[{"__symbolic":"method"}],"isValid":[{"__symbolic":"method"}],"invalid":[{"__symbolic":"method"}],"getValidDateOrNull":[{"__symbolic":"method"}],"deserialize":[{"__symbolic":"method"}],"setLocale":[{"__symbolic":"method"}],"compareDate":[{"__symbolic":"method"}],"sameDate":[{"__symbolic":"method"}],"clampDate":[{"__symbolic":"method"}]}},"MatDateFormats":{"__symbolic":"interface"},"MAT_DATE_FORMATS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":25,"character":36},"arguments":["mat-date-formats"]},"NativeDateAdapter":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"DateAdapter"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":69,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":87,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":87,"character":27},"arguments":[{"__symbolic":"reference","name":"MAT_DATE_LOCALE"}]}],null],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":87,"character":84}]}],"getYear":[{"__symbolic":"method"}],"getMonth":[{"__symbolic":"method"}],"getDate":[{"__symbolic":"method"}],"getDayOfWeek":[{"__symbolic":"method"}],"getMonthNames":[{"__symbolic":"method"}],"getDateNames":[{"__symbolic":"method"}],"getDayOfWeekNames":[{"__symbolic":"method"}],"getYearName":[{"__symbolic":"method"}],"getFirstDayOfWeek":[{"__symbolic":"method"}],"getNumDaysInMonth":[{"__symbolic":"method"}],"clone":[{"__symbolic":"method"}],"createDate":[{"__symbolic":"method"}],"today":[{"__symbolic":"method"}],"parse":[{"__symbolic":"method"}],"format":[{"__symbolic":"method"}],"addCalendarYears":[{"__symbolic":"method"}],"addCalendarMonths":[{"__symbolic":"method"}],"addCalendarDays":[{"__symbolic":"method"}],"toIso8601":[{"__symbolic":"method"}],"deserialize":[{"__symbolic":"method"}],"isDateInstance":[{"__symbolic":"method"}],"isValid":[{"__symbolic":"method"}],"invalid":[{"__symbolic":"method"}],"_createDateWithOverflow":[{"__symbolic":"method"}],"_2digit":[{"__symbolic":"method"}],"_stripDirectionalityCharacters":[{"__symbolic":"method"}],"_format":[{"__symbolic":"method"}]}},"MAT_NATIVE_DATE_FORMATS":{"parse":{"dateInput":null},"display":{"dateInput":{"year":"numeric","month":"numeric","day":"numeric"},"monthYearLabel":{"year":"numeric","month":"short"},"dateA11yLabel":{"year":"numeric","month":"long","day":"numeric"},"monthYearA11yLabel":{"year":"numeric","month":"long"}}},"ShowOnDirtyErrorStateMatcher":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"isErrorState":[{"__symbolic":"method"}]}},"ErrorStateMatcher":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"isErrorState":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MatLine":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":23,"character":1},"arguments":[{"selector":"[mat-line], [matLine]","host":{"class":"mat-line","$quoted$":["class"]}}]}],"members":{}},"setLines":{"__symbolic":"function"},"MatLineModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":56,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"MatCommonModule"}],"exports":[{"__symbolic":"reference","name":"MatLine"},{"__symbolic":"reference","name":"MatCommonModule"}],"declarations":[{"__symbolic":"reference","name":"MatLine"}]}]}],"members":{}},"MatOptionModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"MatRippleModule"},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":29},{"__symbolic":"reference","name":"MatCommonModule"},{"__symbolic":"reference","name":"MatPseudoCheckboxModule"}],"exports":[{"__symbolic":"reference","name":"MatOption"},{"__symbolic":"reference","name":"MatOptgroup"}],"declarations":[{"__symbolic":"reference","name":"MatOption"},{"__symbolic":"reference","name":"MatOptgroup"}]}]}],"members":{}},"MatOptionSelectionChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"_MatOptionBase"},null]}]}},"_MatOptionBase":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":46,"character":1}}],"members":{"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"onSelectionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":75,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":260,"character":24,"context":{"typeName":"HTMLElement"},"module":"./option/option"}]},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":82,"character":32},{"__symbolic":"reference","name":"MatOptionParentComponent"},{"__symbolic":"reference","name":"_MatOptgroupBase"}]}],"select":[{"__symbolic":"method"}],"deselect":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"setActiveStyles":[{"__symbolic":"method"}],"setInactiveStyles":[{"__symbolic":"method"}],"getLabel":[{"__symbolic":"method"}],"_handleKeydown":[{"__symbolic":"method"}],"_selectViaInteraction":[{"__symbolic":"method"}],"_getAriaSelected":[{"__symbolic":"method"}],"_getTabIndex":[{"__symbolic":"method"}],"_getHostElement":[{"__symbolic":"method"}],"ngAfterViewChecked":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_emitSelectionChangeEvent":[{"__symbolic":"method"}]}},"MatOption":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"_MatOptionBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":236,"character":1},"arguments":[{"selector":"mat-option","exportAs":"matOption","host":{"role":"option","[attr.tabindex]":"_getTabIndex()","[class.mat-selected]":"selected","[class.mat-option-multiple]":"multiple","[class.mat-active]":"active","[id]":"id","[attr.aria-selected]":"_getAriaSelected()","[attr.aria-disabled]":"disabled.toString()","[class.mat-option-disabled]":"disabled","(click)":"_selectViaInteraction()","(keydown)":"_handleKeydown($event)","class":"mat-option mat-focus-indicator","$quoted$":["role","[attr.tabindex]","[class.mat-selected]","[class.mat-option-multiple]","[class.mat-active]","[id]","[attr.aria-selected]","[attr.aria-disabled]","[class.mat-option-disabled]","(click)","(keydown)","class"]},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":255,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":256,"character":19},"member":"OnPush"},"template":"<mat-pseudo-checkbox *ngIf=\"multiple\" class=\"mat-option-pseudo-checkbox\"\n    [state]=\"selected ? 'checked' : 'unchecked'\" [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n<span class=\"mat-option-text\"><ng-content></ng-content></span>\n\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\n<span class=\"cdk-visually-hidden\" *ngIf=\"group && group._inert\">({{ group.label }})</span>\n\n<div class=\"mat-option-ripple\" mat-ripple\n     [matRippleTrigger]=\"_getHostElement()\"\n     [matRippleDisabled]=\"disabled || disableRipple\">\n</div>\n","styles":[".mat-option{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative;cursor:pointer;outline:none;display:flex;flex-direction:row;max-width:100%;box-sizing:border-box;align-items:center;-webkit-tap-highlight-color:transparent}.mat-option[disabled]{cursor:default}[dir=rtl] .mat-option{text-align:right}.mat-option .mat-icon{margin-right:16px;vertical-align:middle}.mat-option .mat-icon svg{vertical-align:top}[dir=rtl] .mat-option .mat-icon{margin-left:16px;margin-right:0}.mat-option[aria-disabled=true]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:32px}[dir=rtl] .mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:16px;padding-right:32px}.cdk-high-contrast-active .mat-option{margin:0 1px}.cdk-high-contrast-active .mat-option.mat-active{border:solid 1px currentColor;margin:0}.cdk-high-contrast-active .mat-option[aria-disabled=true]{opacity:.5}.mat-option-text{display:inline-block;flex-grow:1;overflow:hidden;text-overflow:ellipsis}.mat-option .mat-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-option-pseudo-checkbox{margin-right:8px}[dir=rtl] .mat-option-pseudo-checkbox{margin-left:8px;margin-right:0}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":262,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":262,"character":17},"arguments":[{"__symbolic":"reference","name":"MAT_OPTION_PARENT_COMPONENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":263,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":263,"character":17},"arguments":[{"__symbolic":"reference","name":"MAT_OPTGROUP"}]}]],"parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":260,"character":24,"context":{"typeName":"HTMLElement"},"module":"./option/option"}]},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":82,"character":32},{"__symbolic":"reference","name":"MatOptionParentComponent"},{"__symbolic":"reference","name":"MatOptgroup"}]}]}},"_countGroupLabelsBeforeOption":{"__symbolic":"function"},"_getOptionScrollPosition":{"__symbolic":"function"},"_MatOptgroupBase":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":48,"character":38,"module":"./option/optgroup"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":47,"character":1}}],"members":{"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":58,"character":15},"arguments":[{"__symbolic":"reference","name":"MAT_OPTION_PARENT_COMPONENT"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":58,"character":52}}]],"parameters":[{"__symbolic":"reference","name":"MatOptionParentComponent"}]}]}},"MAT_OPTGROUP":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":71,"character":32},"arguments":["MatOptgroup"]},"MatOptgroup":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"_MatOptgroupBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":76,"character":1},"arguments":[{"selector":"mat-optgroup","exportAs":"matOptgroup","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":80,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":81,"character":19},"member":"OnPush"},"inputs":["disabled"],"host":{"class":"mat-optgroup","[attr.role]":"_inert ? null : \"group\"","[attr.aria-disabled]":"_inert ? null : disabled.toString()","[attr.aria-labelledby]":"_inert ? null : _labelId","[class.mat-optgroup-disabled]":"disabled","$quoted$":["class","[attr.role]","[attr.aria-disabled]","[attr.aria-labelledby]","[class.mat-optgroup-disabled]"]},"providers":[{"provide":{"__symbolic":"reference","name":"MAT_OPTGROUP"},"useExisting":{"__symbolic":"reference","name":"MatOptgroup"}}],"template":"<span class=\"mat-optgroup-label\" aria-hidden=\"true\" [id]=\"_labelId\">{{ label }} <ng-content></ng-content></span>\n<ng-content select=\"mat-option, ng-container\"></ng-content>\n","styles":[".mat-optgroup-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup-label[disabled]{cursor:default}[dir=rtl] .mat-optgroup-label{text-align:right}.mat-optgroup-label .mat-icon{margin-right:16px;vertical-align:middle}.mat-optgroup-label .mat-icon svg{vertical-align:top}[dir=rtl] .mat-optgroup-label .mat-icon{margin-left:16px;margin-right:0}\n"]}]}],"members":{}},"MatOptionParentComponent":{"__symbolic":"interface"},"MAT_OPTION_PARENT_COMPONENT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":25,"character":8},"arguments":["MAT_OPTION_PARENT_COMPONENT"]},"MatRippleModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"MatCommonModule"},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"PlatformModule","line":18,"character":29}],"exports":[{"__symbolic":"reference","name":"MatRipple"},{"__symbolic":"reference","name":"MatCommonModule"}],"declarations":[{"__symbolic":"reference","name":"MatRipple"}]}]}],"members":{}},"RippleGlobalOptions":{"__symbolic":"interface"},"MAT_RIPPLE_GLOBAL_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":48,"character":8},"arguments":["mat-ripple-global-options"]},"MatRipple":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":50,"character":1},"arguments":[{"selector":"[mat-ripple], [matRipple]","exportAs":"matRipple","host":{"class":"mat-ripple","[class.mat-ripple-unbounded]":"unbounded","$quoted$":["class","[class.mat-ripple-unbounded]"]}}]}],"members":{"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3},"arguments":["matRippleColor"]}]}],"unbounded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3},"arguments":["matRippleUnbounded"]}]}],"centered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3},"arguments":["matRippleCentered"]}]}],"radius":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3},"arguments":["matRippleRadius"]}]}],"animation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3},"arguments":["matRippleAnimation"]}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3},"arguments":["matRippleDisabled"]}]}],"trigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3},"arguments":["matRippleTrigger"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":125,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":125,"character":27},"arguments":[{"__symbolic":"reference","name":"MAT_RIPPLE_GLOBAL_OPTIONS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":126,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":126,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":126,"character":34}]}]],"parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":122,"character":46,"context":{"typeName":"HTMLElement"},"module":"./ripple/ripple"}]},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":123,"character":22},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":124,"character":24},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"string"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"fadeOutAll":[{"__symbolic":"method"}],"fadeOutAllNonPersistent":[{"__symbolic":"method"}],"_setupTriggerEventsIfEnabled":[{"__symbolic":"method"}],"launch":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}]}},"RippleState":{"FADING_IN":0,"VISIBLE":1,"FADING_OUT":2,"HIDDEN":3},"RippleConfig":{"__symbolic":"interface"},"RippleAnimationConfig":{"__symbolic":"interface"},"RippleRef":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":42,"character":23,"module":"./ripple/ripple-ref"},{"__symbolic":"error","message":"Could not resolve type","line":44,"character":20,"context":{"typeName":"HTMLElement"},"module":"./ripple/ripple-ref"},{"__symbolic":"error","message":"Could not resolve type","line":46,"character":19,"context":{"typeName":"RippleConfig"},"module":"./ripple/ripple-ref"}]}],"fadeOut":[{"__symbolic":"method"}]}},"RippleTarget":{"__symbolic":"interface"},"defaultRippleAnimationConfig":{"enterDuration":225,"exitDuration":150},"RippleRenderer":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":87,"character":31},{"__symbolic":"error","message":"Could not resolve type","line":88,"character":35,"context":{"typeName":"HTMLElement"},"module":"./ripple/ripple-renderer"},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":89,"character":24}]}],"fadeInRipple":[{"__symbolic":"method"}],"fadeOutRipple":[{"__symbolic":"method"}],"fadeOutAll":[{"__symbolic":"method"}],"fadeOutAllNonPersistent":[{"__symbolic":"method"}],"setupTriggerEvents":[{"__symbolic":"method"}],"handleEvent":[{"__symbolic":"method"}],"_onMousedown":[{"__symbolic":"method"}],"_onTouchStart":[{"__symbolic":"method"}],"_onPointerUp":[{"__symbolic":"method"}],"_runTimeoutOutsideZone":[{"__symbolic":"method"}],"_registerEvents":[{"__symbolic":"method"}],"_removeTriggerEvents":[{"__symbolic":"method"}]}},"MatPseudoCheckboxModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"MatCommonModule"}],"exports":[{"__symbolic":"reference","name":"MatPseudoCheckbox"}],"declarations":[{"__symbolic":"reference","name":"MatPseudoCheckbox"}]}]}],"members":{}},"MatPseudoCheckboxState":{"__symbolic":"interface"},"MatPseudoCheckbox":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":37,"character":1},"arguments":[{"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":38,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":39,"character":19},"member":"OnPush"},"selector":"mat-pseudo-checkbox","template":"","host":{"class":"mat-pseudo-checkbox","[class.mat-pseudo-checkbox-indeterminate]":"state === \"indeterminate\"","[class.mat-pseudo-checkbox-checked]":"state === \"checked\"","[class.mat-pseudo-checkbox-disabled]":"disabled","[class._mat-animation-noopable]":"_animationMode === \"NoopAnimations\"","$quoted$":["class","[class.mat-pseudo-checkbox-indeterminate]","[class.mat-pseudo-checkbox-checked]","[class.mat-pseudo-checkbox-disabled]","[class._mat-animation-noopable]"]},"styles":[".mat-pseudo-checkbox{width:16px;height:16px;border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border-color:transparent}._mat-animation-noopable.mat-pseudo-checkbox{transition:none;animation:none}._mat-animation-noopable.mat-pseudo-checkbox::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{top:5px;left:1px;width:10px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{top:2.4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}\n"]}]}],"members":{"state":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":58,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":58,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":58,"character":34}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}]}}},"origins":{"VERSION":"./version","AnimationCurves":"./animation/animation","AnimationDurations":"./animation/animation","ɵangular_material_src_material_core_core_a":"./common-behaviors/common-module","MatCommonModule":"./common-behaviors/common-module","MATERIAL_SANITY_CHECKS":"./common-behaviors/common-module","SanityChecks":"./common-behaviors/common-module","GranularSanityChecks":"./common-behaviors/common-module","CanDisable":"./common-behaviors/disabled","CanDisableCtor":"./common-behaviors/disabled","mixinDisabled":"./common-behaviors/disabled","CanColor":"./common-behaviors/color","CanColorCtor":"./common-behaviors/color","mixinColor":"./common-behaviors/color","ThemePalette":"./common-behaviors/color","CanDisableRipple":"./common-behaviors/disable-ripple","CanDisableRippleCtor":"./common-behaviors/disable-ripple","mixinDisableRipple":"./common-behaviors/disable-ripple","HasTabIndex":"./common-behaviors/tabindex","HasTabIndexCtor":"./common-behaviors/tabindex","mixinTabIndex":"./common-behaviors/tabindex","CanUpdateErrorState":"./common-behaviors/error-state","CanUpdateErrorStateCtor":"./common-behaviors/error-state","mixinErrorState":"./common-behaviors/error-state","HasInitialized":"./common-behaviors/initialized","HasInitializedCtor":"./common-behaviors/initialized","mixinInitialized":"./common-behaviors/initialized","NativeDateModule":"./datetime/index","MatNativeDateModule":"./datetime/index","MAT_DATE_LOCALE":"./datetime/date-adapter","MAT_DATE_LOCALE_FACTORY":"./datetime/date-adapter","DateAdapter":"./datetime/date-adapter","MatDateFormats":"./datetime/date-formats","MAT_DATE_FORMATS":"./datetime/date-formats","NativeDateAdapter":"./datetime/native-date-adapter","MAT_NATIVE_DATE_FORMATS":"./datetime/native-date-formats","ShowOnDirtyErrorStateMatcher":"./error/error-options","ErrorStateMatcher":"./error/error-options","MatLine":"./line/line","setLines":"./line/line","MatLineModule":"./line/line","MatOptionModule":"./option/index","MatOptionSelectionChange":"./option/option","_MatOptionBase":"./option/option","MatOption":"./option/option","_countGroupLabelsBeforeOption":"./option/option","_getOptionScrollPosition":"./option/option","_MatOptgroupBase":"./option/optgroup","MAT_OPTGROUP":"./option/optgroup","MatOptgroup":"./option/optgroup","MatOptionParentComponent":"./option/option-parent","MAT_OPTION_PARENT_COMPONENT":"./option/option-parent","MatRippleModule":"./ripple/index","RippleGlobalOptions":"./ripple/ripple","MAT_RIPPLE_GLOBAL_OPTIONS":"./ripple/ripple","MatRipple":"./ripple/ripple","RippleState":"./ripple/ripple-ref","RippleConfig":"./ripple/ripple-ref","RippleAnimationConfig":"./ripple/ripple-ref","RippleRef":"./ripple/ripple-ref","RippleTarget":"./ripple/ripple-renderer","defaultRippleAnimationConfig":"./ripple/ripple-renderer","RippleRenderer":"./ripple/ripple-renderer","MatPseudoCheckboxModule":"./selection/index","MatPseudoCheckboxState":"./selection/pseudo-checkbox/pseudo-checkbox","MatPseudoCheckbox":"./selection/pseudo-checkbox/pseudo-checkbox"},"importAs":"@angular/material/core"}
     1{"__symbolic":"module","version":4,"metadata":{"VERSION":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Version","line":11,"character":27},"arguments":["12.2.10"]},"AnimationCurves":{"__symbolic":"class","members":{},"statics":{"STANDARD_CURVE":"cubic-bezier(0.4,0.0,0.2,1)","DECELERATION_CURVE":"cubic-bezier(0.0,0.0,0.2,1)","ACCELERATION_CURVE":"cubic-bezier(0.4,0.0,1,1)","SHARP_CURVE":"cubic-bezier(0.4,0.0,0.6,1)"}},"AnimationDurations":{"__symbolic":"class","members":{},"statics":{"COMPLEX":"375ms","ENTERING":"225ms","EXITING":"195ms"}},"ɵangular_material_src_material_core_core_a":{"__symbolic":"function","parameters":[],"value":true},"MatCommonModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":51,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":52,"character":12}],"exports":[{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":53,"character":12}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":67,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":67,"character":19},"arguments":[{"__symbolic":"reference","name":"MATERIAL_SANITY_CHECKS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":68,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":68,"character":14}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"HighContrastModeDetector","line":66,"character":32},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}],"_checkIsEnabled":[{"__symbolic":"method"}],"_checkDoctypeIsDefined":[{"__symbolic":"method"}],"_checkThemeIsPresent":[{"__symbolic":"method"}],"_checkCdkVersionMatch":[{"__symbolic":"method"}]}},"MATERIAL_SANITY_CHECKS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":27,"character":42},"arguments":["mat-sanity-checks",{"providedIn":"root","factory":{"__symbolic":"reference","name":"ɵangular_material_src_material_core_core_a"}}]},"SanityChecks":{"__symbolic":"interface"},"GranularSanityChecks":{"__symbolic":"interface"},"CanDisable":{"__symbolic":"interface"},"CanDisableCtor":{"__symbolic":"interface"},"mixinDisabled":{"__symbolic":"function","parameters":["base"],"value":{"__symbolic":"class"}},"CanColor":{"__symbolic":"interface"},"CanColorCtor":{"__symbolic":"interface"},"mixinColor":{"__symbolic":"function","parameters":["base","defaultColor"],"value":{"__symbolic":"class"}},"ThemePalette":{"__symbolic":"interface"},"CanDisableRipple":{"__symbolic":"interface"},"CanDisableRippleCtor":{"__symbolic":"interface"},"mixinDisableRipple":{"__symbolic":"function","parameters":["base"],"value":{"__symbolic":"class"}},"HasTabIndex":{"__symbolic":"interface"},"HasTabIndexCtor":{"__symbolic":"interface"},"mixinTabIndex":{"__symbolic":"function","parameters":["base","defaultTabIndex"],"defaults":[null,0],"value":{"__symbolic":"class"}},"CanUpdateErrorState":{"__symbolic":"interface"},"CanUpdateErrorStateCtor":{"__symbolic":"interface"},"mixinErrorState":{"__symbolic":"function","parameters":["base"],"value":{"__symbolic":"class"}},"HasInitialized":{"__symbolic":"interface"},"HasInitializedCtor":{"__symbolic":"interface"},"mixinInitialized":{"__symbolic":"function","parameters":["base"],"value":{"__symbolic":"class"}},"NativeDateModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":21,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"PlatformModule","line":22,"character":12}],"providers":[{"provide":{"__symbolic":"reference","name":"DateAdapter"},"useClass":{"__symbolic":"reference","name":"NativeDateAdapter"}}]}]}],"members":{}},"MatNativeDateModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":30,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"NativeDateModule"}],"providers":[{"provide":{"__symbolic":"reference","name":"MAT_DATE_FORMATS"},"useValue":{"__symbolic":"reference","name":"MAT_NATIVE_DATE_FORMATS"}}]}]}],"members":{}},"MAT_DATE_LOCALE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":12,"character":35},"arguments":["MAT_DATE_LOCALE",{"providedIn":"root","factory":{"__symbolic":"reference","name":"MAT_DATE_LOCALE_FACTORY"}}]},"MAT_DATE_LOCALE_FACTORY":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"inject","line":19,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":19,"character":16}]}},"DateAdapter":{"__symbolic":"class","arity":1,"members":{"getYear":[{"__symbolic":"method"}],"getMonth":[{"__symbolic":"method"}],"getDate":[{"__symbolic":"method"}],"getDayOfWeek":[{"__symbolic":"method"}],"getMonthNames":[{"__symbolic":"method"}],"getDateNames":[{"__symbolic":"method"}],"getDayOfWeekNames":[{"__symbolic":"method"}],"getYearName":[{"__symbolic":"method"}],"getFirstDayOfWeek":[{"__symbolic":"method"}],"getNumDaysInMonth":[{"__symbolic":"method"}],"clone":[{"__symbolic":"method"}],"createDate":[{"__symbolic":"method"}],"today":[{"__symbolic":"method"}],"parse":[{"__symbolic":"method"}],"format":[{"__symbolic":"method"}],"addCalendarYears":[{"__symbolic":"method"}],"addCalendarMonths":[{"__symbolic":"method"}],"addCalendarDays":[{"__symbolic":"method"}],"toIso8601":[{"__symbolic":"method"}],"isDateInstance":[{"__symbolic":"method"}],"isValid":[{"__symbolic":"method"}],"invalid":[{"__symbolic":"method"}],"getValidDateOrNull":[{"__symbolic":"method"}],"deserialize":[{"__symbolic":"method"}],"setLocale":[{"__symbolic":"method"}],"compareDate":[{"__symbolic":"method"}],"sameDate":[{"__symbolic":"method"}],"clampDate":[{"__symbolic":"method"}]}},"MatDateFormats":{"__symbolic":"interface"},"MAT_DATE_FORMATS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":25,"character":36},"arguments":["mat-date-formats"]},"NativeDateAdapter":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"DateAdapter"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":69,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":87,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":87,"character":27},"arguments":[{"__symbolic":"reference","name":"MAT_DATE_LOCALE"}]}],null],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":87,"character":84}]}],"getYear":[{"__symbolic":"method"}],"getMonth":[{"__symbolic":"method"}],"getDate":[{"__symbolic":"method"}],"getDayOfWeek":[{"__symbolic":"method"}],"getMonthNames":[{"__symbolic":"method"}],"getDateNames":[{"__symbolic":"method"}],"getDayOfWeekNames":[{"__symbolic":"method"}],"getYearName":[{"__symbolic":"method"}],"getFirstDayOfWeek":[{"__symbolic":"method"}],"getNumDaysInMonth":[{"__symbolic":"method"}],"clone":[{"__symbolic":"method"}],"createDate":[{"__symbolic":"method"}],"today":[{"__symbolic":"method"}],"parse":[{"__symbolic":"method"}],"format":[{"__symbolic":"method"}],"addCalendarYears":[{"__symbolic":"method"}],"addCalendarMonths":[{"__symbolic":"method"}],"addCalendarDays":[{"__symbolic":"method"}],"toIso8601":[{"__symbolic":"method"}],"deserialize":[{"__symbolic":"method"}],"isDateInstance":[{"__symbolic":"method"}],"isValid":[{"__symbolic":"method"}],"invalid":[{"__symbolic":"method"}],"_createDateWithOverflow":[{"__symbolic":"method"}],"_2digit":[{"__symbolic":"method"}],"_stripDirectionalityCharacters":[{"__symbolic":"method"}],"_format":[{"__symbolic":"method"}]}},"MAT_NATIVE_DATE_FORMATS":{"parse":{"dateInput":null},"display":{"dateInput":{"year":"numeric","month":"numeric","day":"numeric"},"monthYearLabel":{"year":"numeric","month":"short"},"dateA11yLabel":{"year":"numeric","month":"long","day":"numeric"},"monthYearA11yLabel":{"year":"numeric","month":"long"}}},"ShowOnDirtyErrorStateMatcher":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"isErrorState":[{"__symbolic":"method"}]}},"ErrorStateMatcher":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"isErrorState":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MatLine":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":23,"character":1},"arguments":[{"selector":"[mat-line], [matLine]","host":{"class":"mat-line","$quoted$":["class"]}}]}],"members":{}},"setLines":{"__symbolic":"function"},"MatLineModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":56,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"MatCommonModule"}],"exports":[{"__symbolic":"reference","name":"MatLine"},{"__symbolic":"reference","name":"MatCommonModule"}],"declarations":[{"__symbolic":"reference","name":"MatLine"}]}]}],"members":{}},"MatOptionModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"MatRippleModule"},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":29},{"__symbolic":"reference","name":"MatCommonModule"},{"__symbolic":"reference","name":"MatPseudoCheckboxModule"}],"exports":[{"__symbolic":"reference","name":"MatOption"},{"__symbolic":"reference","name":"MatOptgroup"}],"declarations":[{"__symbolic":"reference","name":"MatOption"},{"__symbolic":"reference","name":"MatOptgroup"}]}]}],"members":{}},"MatOptionSelectionChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"_MatOptionBase"},null]}]}},"_MatOptionBase":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":46,"character":1}}],"members":{"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"onSelectionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":75,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":260,"character":24,"context":{"typeName":"HTMLElement"},"module":"./option/option"}]},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":82,"character":32},{"__symbolic":"reference","name":"MatOptionParentComponent"},{"__symbolic":"reference","name":"_MatOptgroupBase"}]}],"select":[{"__symbolic":"method"}],"deselect":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"setActiveStyles":[{"__symbolic":"method"}],"setInactiveStyles":[{"__symbolic":"method"}],"getLabel":[{"__symbolic":"method"}],"_handleKeydown":[{"__symbolic":"method"}],"_selectViaInteraction":[{"__symbolic":"method"}],"_getAriaSelected":[{"__symbolic":"method"}],"_getTabIndex":[{"__symbolic":"method"}],"_getHostElement":[{"__symbolic":"method"}],"ngAfterViewChecked":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_emitSelectionChangeEvent":[{"__symbolic":"method"}]}},"MatOption":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"_MatOptionBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":236,"character":1},"arguments":[{"selector":"mat-option","exportAs":"matOption","host":{"role":"option","[attr.tabindex]":"_getTabIndex()","[class.mat-selected]":"selected","[class.mat-option-multiple]":"multiple","[class.mat-active]":"active","[id]":"id","[attr.aria-selected]":"_getAriaSelected()","[attr.aria-disabled]":"disabled.toString()","[class.mat-option-disabled]":"disabled","(click)":"_selectViaInteraction()","(keydown)":"_handleKeydown($event)","class":"mat-option mat-focus-indicator","$quoted$":["role","[attr.tabindex]","[class.mat-selected]","[class.mat-option-multiple]","[class.mat-active]","[id]","[attr.aria-selected]","[attr.aria-disabled]","[class.mat-option-disabled]","(click)","(keydown)","class"]},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":255,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":256,"character":19},"member":"OnPush"},"template":"<mat-pseudo-checkbox *ngIf=\"multiple\" class=\"mat-option-pseudo-checkbox\"\n    [state]=\"selected ? 'checked' : 'unchecked'\" [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n<span class=\"mat-option-text\"><ng-content></ng-content></span>\n\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\n<span class=\"cdk-visually-hidden\" *ngIf=\"group && group._inert\">({{ group.label }})</span>\n\n<div class=\"mat-option-ripple\" mat-ripple\n     [matRippleTrigger]=\"_getHostElement()\"\n     [matRippleDisabled]=\"disabled || disableRipple\">\n</div>\n","styles":[".mat-option{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative;cursor:pointer;outline:none;display:flex;flex-direction:row;max-width:100%;box-sizing:border-box;align-items:center;-webkit-tap-highlight-color:transparent}.mat-option[disabled]{cursor:default}[dir=rtl] .mat-option{text-align:right}.mat-option .mat-icon{margin-right:16px;vertical-align:middle}.mat-option .mat-icon svg{vertical-align:top}[dir=rtl] .mat-option .mat-icon{margin-left:16px;margin-right:0}.mat-option[aria-disabled=true]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:32px}[dir=rtl] .mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:16px;padding-right:32px}.cdk-high-contrast-active .mat-option{margin:0 1px}.cdk-high-contrast-active .mat-option.mat-active{border:solid 1px currentColor;margin:0}.cdk-high-contrast-active .mat-option[aria-disabled=true]{opacity:.5}.mat-option-text{display:inline-block;flex-grow:1;overflow:hidden;text-overflow:ellipsis}.mat-option .mat-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-option-pseudo-checkbox{margin-right:8px}[dir=rtl] .mat-option-pseudo-checkbox{margin-left:8px;margin-right:0}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":262,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":262,"character":17},"arguments":[{"__symbolic":"reference","name":"MAT_OPTION_PARENT_COMPONENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":263,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":263,"character":17},"arguments":[{"__symbolic":"reference","name":"MAT_OPTGROUP"}]}]],"parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":260,"character":24,"context":{"typeName":"HTMLElement"},"module":"./option/option"}]},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":82,"character":32},{"__symbolic":"reference","name":"MatOptionParentComponent"},{"__symbolic":"reference","name":"MatOptgroup"}]}]}},"_countGroupLabelsBeforeOption":{"__symbolic":"function"},"_getOptionScrollPosition":{"__symbolic":"function"},"_MatOptgroupBase":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":48,"character":38,"module":"./option/optgroup"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":47,"character":1}}],"members":{"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":58,"character":15},"arguments":[{"__symbolic":"reference","name":"MAT_OPTION_PARENT_COMPONENT"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":58,"character":52}}]],"parameters":[{"__symbolic":"reference","name":"MatOptionParentComponent"}]}]}},"MAT_OPTGROUP":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":71,"character":32},"arguments":["MatOptgroup"]},"MatOptgroup":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"_MatOptgroupBase"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":76,"character":1},"arguments":[{"selector":"mat-optgroup","exportAs":"matOptgroup","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":80,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":81,"character":19},"member":"OnPush"},"inputs":["disabled"],"host":{"class":"mat-optgroup","[attr.role]":"_inert ? null : \"group\"","[attr.aria-disabled]":"_inert ? null : disabled.toString()","[attr.aria-labelledby]":"_inert ? null : _labelId","[class.mat-optgroup-disabled]":"disabled","$quoted$":["class","[attr.role]","[attr.aria-disabled]","[attr.aria-labelledby]","[class.mat-optgroup-disabled]"]},"providers":[{"provide":{"__symbolic":"reference","name":"MAT_OPTGROUP"},"useExisting":{"__symbolic":"reference","name":"MatOptgroup"}}],"template":"<span class=\"mat-optgroup-label\" aria-hidden=\"true\" [id]=\"_labelId\">{{ label }} <ng-content></ng-content></span>\n<ng-content select=\"mat-option, ng-container\"></ng-content>\n","styles":[".mat-optgroup-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup-label[disabled]{cursor:default}[dir=rtl] .mat-optgroup-label{text-align:right}.mat-optgroup-label .mat-icon{margin-right:16px;vertical-align:middle}.mat-optgroup-label .mat-icon svg{vertical-align:top}[dir=rtl] .mat-optgroup-label .mat-icon{margin-left:16px;margin-right:0}\n"]}]}],"members":{}},"MatOptionParentComponent":{"__symbolic":"interface"},"MAT_OPTION_PARENT_COMPONENT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":25,"character":8},"arguments":["MAT_OPTION_PARENT_COMPONENT"]},"MatRippleModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"MatCommonModule"},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"PlatformModule","line":18,"character":29}],"exports":[{"__symbolic":"reference","name":"MatRipple"},{"__symbolic":"reference","name":"MatCommonModule"}],"declarations":[{"__symbolic":"reference","name":"MatRipple"}]}]}],"members":{}},"RippleGlobalOptions":{"__symbolic":"interface"},"MAT_RIPPLE_GLOBAL_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":48,"character":8},"arguments":["mat-ripple-global-options"]},"MatRipple":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":50,"character":1},"arguments":[{"selector":"[mat-ripple], [matRipple]","exportAs":"matRipple","host":{"class":"mat-ripple","[class.mat-ripple-unbounded]":"unbounded","$quoted$":["class","[class.mat-ripple-unbounded]"]}}]}],"members":{"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3},"arguments":["matRippleColor"]}]}],"unbounded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3},"arguments":["matRippleUnbounded"]}]}],"centered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3},"arguments":["matRippleCentered"]}]}],"radius":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3},"arguments":["matRippleRadius"]}]}],"animation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3},"arguments":["matRippleAnimation"]}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3},"arguments":["matRippleDisabled"]}]}],"trigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3},"arguments":["matRippleTrigger"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":125,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":125,"character":27},"arguments":[{"__symbolic":"reference","name":"MAT_RIPPLE_GLOBAL_OPTIONS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":126,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":126,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":126,"character":34}]}]],"parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":122,"character":46,"context":{"typeName":"HTMLElement"},"module":"./ripple/ripple"}]},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":123,"character":22},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":124,"character":24},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"string"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"fadeOutAll":[{"__symbolic":"method"}],"fadeOutAllNonPersistent":[{"__symbolic":"method"}],"_setupTriggerEventsIfEnabled":[{"__symbolic":"method"}],"launch":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}]}},"RippleState":{"FADING_IN":0,"VISIBLE":1,"FADING_OUT":2,"HIDDEN":3},"RippleConfig":{"__symbolic":"interface"},"RippleAnimationConfig":{"__symbolic":"interface"},"RippleRef":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":42,"character":23,"module":"./ripple/ripple-ref"},{"__symbolic":"error","message":"Could not resolve type","line":44,"character":20,"context":{"typeName":"HTMLElement"},"module":"./ripple/ripple-ref"},{"__symbolic":"error","message":"Could not resolve type","line":46,"character":19,"context":{"typeName":"RippleConfig"},"module":"./ripple/ripple-ref"}]}],"fadeOut":[{"__symbolic":"method"}]}},"RippleTarget":{"__symbolic":"interface"},"defaultRippleAnimationConfig":{"enterDuration":225,"exitDuration":150},"RippleRenderer":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":87,"character":31},{"__symbolic":"error","message":"Could not resolve type","line":88,"character":35,"context":{"typeName":"HTMLElement"},"module":"./ripple/ripple-renderer"},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":89,"character":24}]}],"fadeInRipple":[{"__symbolic":"method"}],"fadeOutRipple":[{"__symbolic":"method"}],"fadeOutAll":[{"__symbolic":"method"}],"fadeOutAllNonPersistent":[{"__symbolic":"method"}],"setupTriggerEvents":[{"__symbolic":"method"}],"handleEvent":[{"__symbolic":"method"}],"_onMousedown":[{"__symbolic":"method"}],"_onTouchStart":[{"__symbolic":"method"}],"_onPointerUp":[{"__symbolic":"method"}],"_runTimeoutOutsideZone":[{"__symbolic":"method"}],"_registerEvents":[{"__symbolic":"method"}],"_removeTriggerEvents":[{"__symbolic":"method"}]}},"MatPseudoCheckboxModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"MatCommonModule"}],"exports":[{"__symbolic":"reference","name":"MatPseudoCheckbox"}],"declarations":[{"__symbolic":"reference","name":"MatPseudoCheckbox"}]}]}],"members":{}},"MatPseudoCheckboxState":{"__symbolic":"interface"},"MatPseudoCheckbox":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":37,"character":1},"arguments":[{"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":38,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":39,"character":19},"member":"OnPush"},"selector":"mat-pseudo-checkbox","template":"","host":{"class":"mat-pseudo-checkbox","[class.mat-pseudo-checkbox-indeterminate]":"state === \"indeterminate\"","[class.mat-pseudo-checkbox-checked]":"state === \"checked\"","[class.mat-pseudo-checkbox-disabled]":"disabled","[class._mat-animation-noopable]":"_animationMode === \"NoopAnimations\"","$quoted$":["class","[class.mat-pseudo-checkbox-indeterminate]","[class.mat-pseudo-checkbox-checked]","[class.mat-pseudo-checkbox-disabled]","[class._mat-animation-noopable]"]},"styles":[".mat-pseudo-checkbox{width:16px;height:16px;border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border-color:transparent}._mat-animation-noopable.mat-pseudo-checkbox{transition:none;animation:none}._mat-animation-noopable.mat-pseudo-checkbox::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{top:5px;left:1px;width:10px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{top:2.4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}\n"]}]}],"members":{"state":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":58,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":58,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":58,"character":34}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}]}}},"origins":{"VERSION":"./version","AnimationCurves":"./animation/animation","AnimationDurations":"./animation/animation","ɵangular_material_src_material_core_core_a":"./common-behaviors/common-module","MatCommonModule":"./common-behaviors/common-module","MATERIAL_SANITY_CHECKS":"./common-behaviors/common-module","SanityChecks":"./common-behaviors/common-module","GranularSanityChecks":"./common-behaviors/common-module","CanDisable":"./common-behaviors/disabled","CanDisableCtor":"./common-behaviors/disabled","mixinDisabled":"./common-behaviors/disabled","CanColor":"./common-behaviors/color","CanColorCtor":"./common-behaviors/color","mixinColor":"./common-behaviors/color","ThemePalette":"./common-behaviors/color","CanDisableRipple":"./common-behaviors/disable-ripple","CanDisableRippleCtor":"./common-behaviors/disable-ripple","mixinDisableRipple":"./common-behaviors/disable-ripple","HasTabIndex":"./common-behaviors/tabindex","HasTabIndexCtor":"./common-behaviors/tabindex","mixinTabIndex":"./common-behaviors/tabindex","CanUpdateErrorState":"./common-behaviors/error-state","CanUpdateErrorStateCtor":"./common-behaviors/error-state","mixinErrorState":"./common-behaviors/error-state","HasInitialized":"./common-behaviors/initialized","HasInitializedCtor":"./common-behaviors/initialized","mixinInitialized":"./common-behaviors/initialized","NativeDateModule":"./datetime/index","MatNativeDateModule":"./datetime/index","MAT_DATE_LOCALE":"./datetime/date-adapter","MAT_DATE_LOCALE_FACTORY":"./datetime/date-adapter","DateAdapter":"./datetime/date-adapter","MatDateFormats":"./datetime/date-formats","MAT_DATE_FORMATS":"./datetime/date-formats","NativeDateAdapter":"./datetime/native-date-adapter","MAT_NATIVE_DATE_FORMATS":"./datetime/native-date-formats","ShowOnDirtyErrorStateMatcher":"./error/error-options","ErrorStateMatcher":"./error/error-options","MatLine":"./line/line","setLines":"./line/line","MatLineModule":"./line/line","MatOptionModule":"./option/index","MatOptionSelectionChange":"./option/option","_MatOptionBase":"./option/option","MatOption":"./option/option","_countGroupLabelsBeforeOption":"./option/option","_getOptionScrollPosition":"./option/option","_MatOptgroupBase":"./option/optgroup","MAT_OPTGROUP":"./option/optgroup","MatOptgroup":"./option/optgroup","MatOptionParentComponent":"./option/option-parent","MAT_OPTION_PARENT_COMPONENT":"./option/option-parent","MatRippleModule":"./ripple/index","RippleGlobalOptions":"./ripple/ripple","MAT_RIPPLE_GLOBAL_OPTIONS":"./ripple/ripple","MatRipple":"./ripple/ripple","RippleState":"./ripple/ripple-ref","RippleConfig":"./ripple/ripple-ref","RippleAnimationConfig":"./ripple/ripple-ref","RippleRef":"./ripple/ripple-ref","RippleTarget":"./ripple/ripple-renderer","defaultRippleAnimationConfig":"./ripple/ripple-renderer","RippleRenderer":"./ripple/ripple-renderer","MatPseudoCheckboxModule":"./selection/index","MatPseudoCheckboxState":"./selection/pseudo-checkbox/pseudo-checkbox","MatPseudoCheckbox":"./selection/pseudo-checkbox/pseudo-checkbox"},"importAs":"@angular/material/core"}
  • trip-planner-front/node_modules/@angular/material/esm2015/badge/badge.js

    r6a3a178 rfa375fe  
    1616const _MatBadgeBase = mixinDisabled(class {
    1717});
    18 const BADGE_CONTENT_CLASS = 'mat-badge-content';
    1918/** Directive to display a text badge. */
    2019export class MatBadge extends _MatBadgeBase {
     
    2625        this._renderer = _renderer;
    2726        this._animationMode = _animationMode;
     27        /** Whether the badge has any content. */
     28        this._hasContent = false;
    2829        this._color = 'primary';
    2930        this._overlap = true;
     
    3738        /** Unique id for the badge */
    3839        this._id = nextId++;
    39         /** Whether the OnInit lifecycle hook has run yet */
    40         this._isInitialized = false;
    4140        if (typeof ngDevMode === 'undefined' || ngDevMode) {
    4241            const nativeElement = _elementRef.nativeElement;
     
    5756        this._overlap = coerceBooleanProperty(val);
    5857    }
    59     /** The content for the badge */
    60     get content() {
    61         return this._content;
    62     }
    63     set content(newContent) {
    64         this._updateRenderedContent(newContent);
    65     }
    6658    /** Message used to describe the decorated element via aria-describedby */
    6759    get description() { return this._description; }
    6860    set description(newDescription) {
    69         this._updateHostAriaDescription(newDescription);
     61        if (newDescription !== this._description) {
     62            const badgeElement = this._badgeElement;
     63            this._updateHostAriaDescription(newDescription, this._description);
     64            this._description = newDescription;
     65            if (badgeElement) {
     66                newDescription ? badgeElement.setAttribute('aria-label', newDescription) :
     67                    badgeElement.removeAttribute('aria-label');
     68            }
     69        }
    7070    }
    7171    /** Whether the badge is hidden. */
     
    8282        return this.position.indexOf('before') === -1;
    8383    }
     84    ngOnChanges(changes) {
     85        const contentChange = changes['content'];
     86        if (contentChange) {
     87            const value = contentChange.currentValue;
     88            this._hasContent = value != null && `${value}`.trim().length > 0;
     89            this._updateTextContent();
     90        }
     91    }
     92    ngOnDestroy() {
     93        const badgeElement = this._badgeElement;
     94        if (badgeElement) {
     95            if (this.description) {
     96                this._ariaDescriber.removeDescription(badgeElement, this.description);
     97            }
     98            // When creating a badge through the Renderer, Angular will keep it in an index.
     99            // We have to destroy it ourselves, otherwise it'll be retained in memory.
     100            if (this._renderer.destroyNode) {
     101                this._renderer.destroyNode(badgeElement);
     102            }
     103        }
     104    }
    84105    /**
    85      * Gets the element into which the badge's content is being rendered. Undefined if the element
    86      * hasn't been created (e.g. if the badge doesn't have content).
     106     * Gets the element into which the badge's content is being rendered.
     107     * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).
    87108     */
    88109    getBadgeElement() {
    89110        return this._badgeElement;
    90111    }
    91     ngOnInit() {
    92         // We may have server-side rendered badge that we need to clear.
    93         // We need to do this in ngOnInit because the full content of the component
    94         // on which the badge is attached won't necessarily be in the DOM until this point.
    95         this._clearExistingBadges();
    96         if (this.content && !this._badgeElement) {
     112    /** Injects a span element into the DOM with the content. */
     113    _updateTextContent() {
     114        if (!this._badgeElement) {
    97115            this._badgeElement = this._createBadgeElement();
    98             this._updateRenderedContent(this.content);
    99         }
    100         this._isInitialized = true;
    101     }
    102     ngOnDestroy() {
    103         // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.
    104         // We have to destroy it ourselves, otherwise it'll be retained in memory.
    105         if (this._renderer.destroyNode) {
    106             this._renderer.destroyNode(this._badgeElement);
    107         }
    108         this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);
     116        }
     117        else {
     118            this._badgeElement.textContent = this._stringifyContent();
     119        }
     120        return this._badgeElement;
    109121    }
    110122    /** Creates the badge element */
     
    112124        const badgeElement = this._renderer.createElement('span');
    113125        const activeClass = 'mat-badge-active';
     126        const contentClass = 'mat-badge-content';
     127        // Clear any existing badges which may have persisted from a server-side render.
     128        this._clearExistingBadges(contentClass);
    114129        badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);
    115         // The badge is aria-hidden because we don't want it to appear in the page's navigation
    116         // flow. Instead, we use the badge to describe the decorated element with aria-describedby.
    117         badgeElement.setAttribute('aria-hidden', 'true');
    118         badgeElement.classList.add(BADGE_CONTENT_CLASS);
     130        badgeElement.classList.add(contentClass);
     131        badgeElement.textContent = this._stringifyContent();
    119132        if (this._animationMode === 'NoopAnimations') {
    120133            badgeElement.classList.add('_mat-animation-noopable');
     134        }
     135        if (this.description) {
     136            badgeElement.setAttribute('aria-label', this.description);
    121137        }
    122138        this._elementRef.nativeElement.appendChild(badgeElement);
     
    134150        return badgeElement;
    135151    }
    136     /** Update the text content of the badge element in the DOM, creating the element if necessary. */
    137     _updateRenderedContent(newContent) {
    138         const newContentNormalized = `${newContent !== null && newContent !== void 0 ? newContent : ''}`.trim();
    139         // Don't create the badge element if the directive isn't initialized because we want to
    140         // append the badge element to the *end* of the host element's content for backwards
    141         // compatibility.
    142         if (this._isInitialized && newContentNormalized && !this._badgeElement) {
    143             this._badgeElement = this._createBadgeElement();
    144         }
    145         if (this._badgeElement) {
    146             this._badgeElement.textContent = newContentNormalized;
    147         }
    148         this._content = newContentNormalized;
    149     }
    150     /** Updates the host element's aria description via AriaDescriber. */
    151     _updateHostAriaDescription(newDescription) {
    152         this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);
     152    /** Sets the aria-label property on the element */
     153    _updateHostAriaDescription(newDescription, oldDescription) {
     154        // ensure content available before setting label
     155        const content = this._updateTextContent();
     156        if (oldDescription) {
     157            this._ariaDescriber.removeDescription(content, oldDescription);
     158        }
    153159        if (newDescription) {
    154             this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);
    155         }
    156         this._description = newDescription;
     160            this._ariaDescriber.describe(content, newDescription);
     161        }
    157162    }
    158163    /** Adds css theme class given the color to the component host */
    159164    _setColor(colorPalette) {
    160         const classList = this._elementRef.nativeElement.classList;
    161         classList.remove(`mat-badge-${this._color}`);
    162         if (colorPalette) {
    163             classList.add(`mat-badge-${colorPalette}`);
     165        if (colorPalette !== this._color) {
     166            const classList = this._elementRef.nativeElement.classList;
     167            if (this._color) {
     168                classList.remove(`mat-badge-${this._color}`);
     169            }
     170            if (colorPalette) {
     171                classList.add(`mat-badge-${colorPalette}`);
     172            }
    164173        }
    165174    }
    166175    /** Clears any existing badges that might be left over from server-side rendering. */
    167     _clearExistingBadges() {
    168         // Only check direct children of this host element in order to avoid deleting
    169         // any badges that might exist in descendant elements.
    170         const badges = this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);
    171         for (const badgeElement of Array.from(badges)) {
    172             if (badgeElement !== this._badgeElement) {
    173                 badgeElement.remove();
    174             }
    175         }
     176    _clearExistingBadges(cssClass) {
     177        const element = this._elementRef.nativeElement;
     178        let childCount = element.children.length;
     179        // Use a reverse while, because we'll be removing elements from the list as we're iterating.
     180        while (childCount--) {
     181            const currentChild = element.children[childCount];
     182            if (currentChild.classList.contains(cssClass)) {
     183                element.removeChild(currentChild);
     184            }
     185        }
     186    }
     187    /** Gets the string representation of the badge content. */
     188    _stringifyContent() {
     189        // Convert null and undefined to an empty string which is consistent
     190        // with how Angular handles them in inside template interpolations.
     191        const content = this.content;
     192        return content == null ? '' : `${content}`;
    176193    }
    177194}
     
    190207                    '[class.mat-badge-medium]': 'size === "medium"',
    191208                    '[class.mat-badge-large]': 'size === "large"',
    192                     '[class.mat-badge-hidden]': 'hidden || !content',
     209                    '[class.mat-badge-hidden]': 'hidden || !_hasContent',
    193210                    '[class.mat-badge-disabled]': 'disabled',
    194211                },
     
    211228    hidden: [{ type: Input, args: ['matBadgeHidden',] }]
    212229};
    213 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvYmFkZ2UvYmFkZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFFBQVEsRUFDUixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLGFBQWEsRUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRzNFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmLCtDQUErQztBQUMvQyxvQkFBb0I7QUFDcEIsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDO0NBQVEsQ0FBQyxDQUFDO0FBVTlDLE1BQU0sbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7QUFFaEQseUNBQXlDO0FBa0J6QyxNQUFNLE9BQU8sUUFBUyxTQUFRLGFBQWE7SUE4RHpDLFlBQ1ksT0FBZSxFQUNmLFdBQW9DLEVBQ3BDLGNBQTZCLEVBQzdCLFNBQW9CLEVBQ3VCLGNBQXVCO1FBQzFFLEtBQUssRUFBRSxDQUFDO1FBTEEsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3VCLG1CQUFjLEdBQWQsY0FBYyxDQUFTO1FBM0R0RSxXQUFNLEdBQWlCLFNBQVMsQ0FBQztRQVFqQyxhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWpDOzs7V0FHRztRQUN3QixhQUFRLEdB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QUMsZUFBZTtzQkFTckIsS0FBSyxTQUFDLGlCQUFpQjt1QkFXdkIsS0FBSyxTQUFDLGtCQUFrQjtzQkFHeEIsS0FBSyxTQUFDLFVBQVU7MEJBVWhCLEtBQUssU0FBQyxxQkFBcUI7bUJBUTNCLEtBQUssU0FBQyxjQUFjO3FCQUdwQixLQUFLLFNBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QXJpYURlc2NyaWJlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NhbkRpc2FibGUsIG1peGluRGlzYWJsZWQsIFRoZW1lUGFsZXR0ZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge0FOSU1BVElPTl9NT0RVTEVfVFlQRX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcblxuXG5sZXQgbmV4dElkID0gMDtcblxuLy8gQm9pbGVycGxhdGUgZm9yIGFwcGx5aW5nIG1peGlucyB0byBNYXRCYWRnZS5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5jb25zdCBfTWF0QmFkZ2VCYXNlID0gbWl4aW5EaXNhYmxlZChjbGFzcyB7fSk7XG5cbi8qKiBBbGxvd2VkIHBvc2l0aW9uIG9wdGlvbnMgZm9yIG1hdEJhZGdlUG9zaXRpb24gKi9cbmV4cG9ydCB0eXBlIE1hdEJhZGdlUG9zaXRpb24gPVxuICAgICdhYm92ZSBhZnRlcicgfCAnYWJvdmUgYmVmb3JlJyB8ICdiZWxvdyBiZWZvcmUnIHwgJ2JlbG93IGFmdGVyJyB8XG4gICAgJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ2Fib3ZlJyB8ICdiZWxvdyc7XG5cbi8qKiBBbGxvd2VkIHNpemUgb3B0aW9ucyBmb3IgbWF0QmFkZ2VTaXplICovXG5leHBvcnQgdHlwZSBNYXRCYWRnZVNpemUgPSAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuXG5jb25zdCBCQURHRV9DT05URU5UX0NMQVNTID0gJ21hdC1iYWRnZS1jb250ZW50JztcblxuLyoqIERpcmVjdGl2ZSB0byBkaXNwbGF5IGEgdGV4dCBiYWRnZS4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXRCYWRnZV0nLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQ6IG1hdEJhZGdlRGlzYWJsZWQnXSxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtYXQtYmFkZ2UnLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLW92ZXJsYXBdJzogJ292ZXJsYXAnLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLWFib3ZlXSc6ICdpc0Fib3ZlKCknLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLWJlbG93XSc6ICchaXNBYm92ZSgpJyxcbiAgICAnW2NsYXNzLm1hdC1iYWRnZS1iZWZvcmVdJzogJyFpc0FmdGVyKCknLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLWFmdGVyXSc6ICdpc0FmdGVyKCknLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLXNtYWxsXSc6ICdzaXplID09PSBcInNtYWxsXCInLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLW1lZGl1bV0nOiAnc2l6ZSA9PT0gXCJtZWRpdW1cIicsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2UtbGFyZ2VdJzogJ3NpemUgPT09IFwibGFyZ2VcIicsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2UtaGlkZGVuXSc6ICdoaWRkZW4gfHwgIWNvbnRlbnQnLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdEJhZGdlIGV4dGVuZHMgX01hdEJhZGdlQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDYW5EaXNhYmxlIHtcbiAgLyoqIFRoZSBjb2xvciBvZiB0aGUgYmFkZ2UuIENhbiBiZSBgcHJpbWFyeWAsIGBhY2NlbnRgLCBvciBgd2FybmAuICovXG4gIEBJbnB1dCgnbWF0QmFkZ2VDb2xvcicpXG4gIGdldCBjb2xvcigpOiBUaGVtZVBhbGV0dGUgeyByZXR1cm4gdGhpcy5fY29sb3I7IH1cbiAgc2V0IGNvbG9yKHZhbHVlOiBUaGVtZVBhbGV0dGUpIHtcbiAgICB0aGlzLl9zZXRDb2xvcih2YWx1ZSk7XG4gICAgdGhpcy5fY29sb3IgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9jb2xvcjogVGhlbWVQYWxldHRlID0gJ3ByaW1hcnknO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBiYWRnZSBzaG91bGQgb3ZlcmxhcCBpdHMgY29udGVudHMgb3Igbm90ICovXG4gIEBJbnB1dCgnbWF0QmFkZ2VPdmVybGFwJylcbiAgZ2V0IG92ZXJsYXAoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9vdmVybGFwOyB9XG4gIHNldCBvdmVybGFwKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX292ZXJsYXAgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKTtcbiAgfVxuICBwcml2YXRlIF9vdmVybGFwOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogUG9zaXRpb24gdGhlIGJhZGdlIHNob3VsZCByZXNpZGUuXG4gICAqIEFjY2VwdHMgYW55IGNvbWJpbmF0aW9uIG9mICdhYm92ZSd8J2JlbG93JyBhbmQgJ2JlZm9yZSd8J2FmdGVyJ1xuICAgKi9cbiAgQElucHV0KCdtYXRCYWRnZVBvc2l0aW9uJykgcG9zaXRpb246IE1hdEJhZGdlUG9zaXRpb24gPSAnYWJvdmUgYWZ0ZXInO1xuXG4gIC8qKiBUaGUgY29udGVudCBmb3IgdGhlIGJhZGdlICovXG4gIEBJbnB1dCgnbWF0QmFkZ2UnKVxuICBnZXQgY29udGVudCgpOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgfVxuICBzZXQgY29udGVudChuZXdDb250ZW50OiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fdXBkYXRlUmVuZGVyZWRDb250ZW50KG5ld0NvbnRlbnQpO1xuICB9XG4gIHByaXZhdGUgX2NvbnRlbnQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgLyoqIE1lc3NhZ2UgdXNlZCB0byBkZXNjcmliZSB0aGUgZGVjb3JhdGVkIGVsZW1lbnQgdmlhIGFyaWEtZGVzY3JpYmVkYnkgKi9cbiAgQElucHV0KCdtYXRCYWRnZURlc2NyaXB0aW9uJylcbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9kZXNjcmlwdGlvbjsgfVxuICBzZXQgZGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb246IHN0cmluZykge1xuICAgIHRoaXMuX3VwZGF0ZUhvc3RBcmlhRGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb24pO1xuICB9XG4gIHByaXZhdGUgX2Rlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqIFNpemUgb2YgdGhlIGJhZGdlLiBDYW4gYmUgJ3NtYWxsJywgJ21lZGl1bScsIG9yICdsYXJnZScuICovXG4gIEBJbnB1dCgnbWF0QmFkZ2VTaXplJykgc2l6ZTogTWF0QmFkZ2VTaXplID0gJ21lZGl1bSc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJhZGdlIGlzIGhpZGRlbi4gKi9cbiAgQElucHV0KCdtYXRCYWRnZUhpZGRlbicpXG4gIGdldCBoaWRkZW4oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9oaWRkZW47IH1cbiAgc2V0IGhpZGRlbih2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oaWRkZW4gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKTtcbiAgfVxuICBwcml2YXRlIF9oaWRkZW46IGJvb2xlYW47XG5cbiAgLyoqIFVuaXF1ZSBpZCBmb3IgdGhlIGJhZGdlICovXG4gIF9pZDogbnVtYmVyID0gbmV4dElkKys7XG5cbiAgLyoqIFZpc2libGUgYmFkZ2UgZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBfYmFkZ2VFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAvKiogV2hldGhlciB0aGUgT25Jbml0IGxpZmVjeWNsZSBob29rIGhhcyBydW4geWV0ICovXG4gIHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICBwcml2YXRlIF9hcmlhRGVzY3JpYmVyOiBBcmlhRGVzY3JpYmVyLFxuICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQU5JTUFUSU9OX01PRFVMRV9UWVBFKSBwcml2YXRlIF9hbmltYXRpb25Nb2RlPzogc3RyaW5nKSB7XG4gICAgICBzdXBlcigpO1xuXG4gICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSBfZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAobmF0aXZlRWxlbWVudC5ub2RlVHlwZSAhPT0gbmF0aXZlRWxlbWVudC5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcignbWF0QmFkZ2UgbXVzdCBiZSBhdHRhY2hlZCB0byBhbiBlbGVtZW50IG5vZGUuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJhZGdlIGlzIGFib3ZlIHRoZSBob3N0IG9yIG5vdCAqL1xuICBpc0Fib3ZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uLmluZGV4T2YoJ2JlbG93JykgPT09IC0xO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJhZGdlIGlzIGFmdGVyIHRoZSBob3N0IG9yIG5vdCAqL1xuICBpc0FmdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uLmluZGV4T2YoJ2JlZm9yZScpID09PSAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlbGVtZW50IGludG8gd2hpY2ggdGhlIGJhZGdlJ3MgY29udGVudCBpcyBiZWluZyByZW5kZXJlZC4gVW5kZWZpbmVkIGlmIHRoZSBlbGVtZW50XG4gICAqIGhhc24ndCBiZWVuIGNyZWF0ZWQgKGUuZy4gaWYgdGhlIGJhZGdlIGRvZXNuJ3QgaGF2ZSBjb250ZW50KS5cbiAgICovXG4gIGdldEJhZGdlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlRWxlbWVudDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIFdlIG1heSBoYXZlIHNlcnZlci1zaWRlIHJlbmRlcmVkIGJhZGdlIHRoYXQgd2UgbmVlZCB0byBjbGVhci5cbiAgICAvLyBXZSBuZWVkIHRvIGRvIHRoaXMgaW4gbmdPbkluaXQgYmVjYXVzZSB0aGUgZnVsbCBjb250ZW50IG9mIHRoZSBjb21wb25lbnRcbiAgICAvLyBvbiB3aGljaCB0aGUgYmFkZ2UgaXMgYXR0YWNoZWQgd29uJ3QgbmVjZXNzYXJpbHkgYmUgaW4gdGhlIERPTSB1bnRpbCB0aGlzIHBvaW50LlxuICAgIHRoaXMuX2NsZWFyRXhpc3RpbmdCYWRnZXMoKTtcblxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuX2JhZGdlRWxlbWVudCkge1xuICAgICAgdGhpcy5fYmFkZ2VFbGVtZW50ID0gdGhpcy5fY3JlYXRlQmFkZ2VFbGVtZW50KCk7XG4gICAgICB0aGlzLl91cGRhdGVSZW5kZXJlZENvbnRlbnQodGhpcy5jb250ZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIFZpZXdFbmdpbmUgb25seTogd2hlbiBjcmVhdGluZyBhIGJhZGdlIHRocm91Z2ggdGhlIFJlbmRlcmVyLCBBbmd1bGFyIHJlbWVtYmVycyBpdHMgaW5kZXguXG4gICAgLy8gV2UgaGF2ZSB0byBkZXN0cm95IGl0IG91cnNlbHZlcywgb3RoZXJ3aXNlIGl0J2xsIGJlIHJldGFpbmVkIGluIG1lbW9yeS5cbiAgICBpZiAodGhpcy5fcmVuZGVyZXIuZGVzdHJveU5vZGUpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLmRlc3Ryb3lOb2RlKHRoaXMuX2JhZGdlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fYXJpYURlc2NyaWJlci5yZW1vdmVEZXNjcmlwdGlvbih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgdGhlIGJhZGdlIGVsZW1lbnQgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlQmFkZ2VFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBiYWRnZUVsZW1lbnQgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgY29uc3QgYWN0aXZlQ2xhc3MgPSAnbWF0LWJhZGdlLWFjdGl2ZSc7XG5cbiAgICBiYWRnZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIGBtYXQtYmFkZ2UtY29udGVudC0ke3RoaXMuX2lkfWApO1xuXG4gICAgLy8gVGhlIGJhZGdlIGlzIGFyaWEtaGlkZGVuIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBpdCB0byBhcHBlYXIgaW4gdGhlIHBhZ2UncyBuYXZpZ2F0aW9uXG4gICAgLy8gZmxvdy4gSW5zdGVhZCwgd2UgdXNlIHRoZSBiYWRnZSB0byBkZXNjcmliZSB0aGUgZGVjb3JhdGVkIGVsZW1lbnQgd2l0aCBhcmlhLWRlc2NyaWJlZGJ5LlxuICAgIGJhZGdlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICBiYWRnZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChCQURHRV9DT05URU5UX0NMQVNTKTtcblxuICAgIGlmICh0aGlzLl9hbmltYXRpb25Nb2RlID09PSAnTm9vcEFuaW1hdGlvbnMnKSB7XG4gICAgICBiYWRnZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnX21hdC1hbmltYXRpb24tbm9vcGFibGUnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFkZ2VFbGVtZW50KTtcblxuICAgIC8vIGFuaW1hdGUgaW4gYWZ0ZXIgaW5zZXJ0aW9uXG4gICAgaWYgKHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbicgJiYgdGhpcy5fYW5pbWF0aW9uTW9kZSAhPT0gJ05vb3BBbmltYXRpb25zJykge1xuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBiYWRnZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChhY3RpdmVDbGFzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJhZGdlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGFjdGl2ZUNsYXNzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFkZ2VFbGVtZW50O1xuICB9XG5cbiAgLyoqIFVwZGF0ZSB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBiYWRnZSBlbGVtZW50IGluIHRoZSBET00sIGNyZWF0aW5nIHRoZSBlbGVtZW50IGlmIG5lY2Vzc2FyeS4gKi9cbiAgcHJpdmF0ZSBfdXBkYXRlUmVuZGVyZWRDb250ZW50KG5ld0NvbnRlbnQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdDb250ZW50Tm9ybWFsaXplZDogc3RyaW5nID0gYCR7bmV3Q29udGVudCA/PyAnJ31gLnRyaW0oKTtcblxuICAgIC8vIERvbid0IGNyZWF0ZSB0aGUgYmFkZ2UgZWxlbWVudCBpZiB0aGUgZGlyZWN0aXZlIGlzbid0IGluaXRpYWxpemVkIGJlY2F1c2Ugd2Ugd2FudCB0b1xuICAgIC8vIGFwcGVuZCB0aGUgYmFkZ2UgZWxlbWVudCB0byB0aGUgKmVuZCogb2YgdGhlIGhvc3QgZWxlbWVudCdzIGNvbnRlbnQgZm9yIGJhY2t3YXJkc1xuICAgIC8vIGNvbXBhdGliaWxpdHkuXG4gICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6ZWQgJiYgbmV3Q29udGVudE5vcm1hbGl6ZWQgJiYgIXRoaXMuX2JhZGdlRWxlbWVudCkge1xuICAgICAgdGhpcy5fYmFkZ2VFbGVtZW50ID0gdGhpcy5fY3JlYXRlQmFkZ2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JhZGdlRWxlbWVudCkge1xuICAgICAgdGhpcy5fYmFkZ2VFbGVtZW50LnRleHRDb250ZW50ID0gbmV3Q29udGVudE5vcm1hbGl6ZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fY29udGVudCA9IG5ld0NvbnRlbnROb3JtYWxpemVkO1xuICB9XG5cbiAgLyoqIFVwZGF0ZXMgdGhlIGhvc3QgZWxlbWVudCdzIGFyaWEgZGVzY3JpcHRpb24gdmlhIEFyaWFEZXNjcmliZXIuICovXG4gIHByaXZhdGUgX3VwZGF0ZUhvc3RBcmlhRGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2FyaWFEZXNjcmliZXIucmVtb3ZlRGVzY3JpcHRpb24odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmRlc2NyaXB0aW9uKTtcbiAgICBpZiAobmV3RGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX2FyaWFEZXNjcmliZXIuZGVzY3JpYmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBuZXdEZXNjcmlwdGlvbik7XG4gICAgfVxuICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gbmV3RGVzY3JpcHRpb247XG4gIH1cblxuICAvKiogQWRkcyBjc3MgdGhlbWUgY2xhc3MgZ2l2ZW4gdGhlIGNvbG9yIHRvIHRoZSBjb21wb25lbnQgaG9zdCAqL1xuICBwcml2YXRlIF9zZXRDb2xvcihjb2xvclBhbGV0dGU6IFRoZW1lUGFsZXR0ZSkge1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7XG4gICAgY2xhc3NMaXN0LnJlbW92ZShgbWF0LWJhZGdlLSR7dGhpcy5fY29sb3J9YCk7XG4gICAgaWYgKGNvbG9yUGFsZXR0ZSkge1xuICAgICAgY2xhc3NMaXN0LmFkZChgbWF0LWJhZGdlLSR7Y29sb3JQYWxldHRlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbGVhcnMgYW55IGV4aXN0aW5nIGJhZGdlcyB0aGF0IG1pZ2h0IGJlIGxlZnQgb3ZlciBmcm9tIHNlcnZlci1zaWRlIHJlbmRlcmluZy4gKi9cbiAgcHJpdmF0ZSBfY2xlYXJFeGlzdGluZ0JhZGdlcygpIHtcbiAgICAvLyBPbmx5IGNoZWNrIGRpcmVjdCBjaGlsZHJlbiBvZiB0aGlzIGhvc3QgZWxlbWVudCBpbiBvcmRlciB0byBhdm9pZCBkZWxldGluZ1xuICAgIC8vIGFueSBiYWRnZXMgdGhhdCBtaWdodCBleGlzdCBpbiBkZXNjZW5kYW50IGVsZW1lbnRzLlxuICAgIGNvbnN0IGJhZGdlcyA9XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKGA6c2NvcGUgPiAuJHtCQURHRV9DT05URU5UX0NMQVNTfWApO1xuICAgIGZvciAoY29uc3QgYmFkZ2VFbGVtZW50IG9mIEFycmF5LmZyb20oYmFkZ2VzKSkge1xuICAgICAgaWYgKGJhZGdlRWxlbWVudCAhPT0gdGhpcy5fYmFkZ2VFbGVtZW50KSB7XG4gICAgICAgIGJhZGdlRWxlbWVudC5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hpZGRlbjogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfb3ZlcmxhcDogQm9vbGVhbklucHV0O1xufVxuIl19
     230//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvYmFkZ2UvYmFkZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFFBQVEsRUFDUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLGFBQWEsRUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRzNFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmLCtDQUErQztBQUMvQyxvQkFBb0I7QUFDcEIsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDO0NBQVEsQ0FBQyxDQUFDO0FBVTlDLHlDQUF5QztBQWtCekMsTUFBTSxPQUFPLFFBQVMsU0FBUSxhQUFhO0lBK0R6QyxZQUNZLE9BQWUsRUFDZixXQUFvQyxFQUNwQyxjQUE2QixFQUM3QixTQUFvQixFQUN1QixjQUF1QjtRQUMxRSxLQUFLLEVBQUUsQ0FBQztRQUxBLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN1QixtQkFBYyxHQUFkLGNBQWMsQ0FBUztRQW5FOUUseUNBQXlDO1FBQ3pDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBU1osV0FBTSxHQUFpQixTQUFTLENBQUM7UUFRakMsYUFBUSxHQUFZLElBQUksQ0FBQztRQUVqQzs7O1dBR0c7UUFDd0IsYUFB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QUM7OztZQTFPRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLE1BQU0sRUFBRSxDQUFDLDRCQUE0QixDQUFDO2dCQUN0QyxJQUFJLEVBQUU7b0JBQ0osT0FBTyxFQUFFLFdBQVc7b0JBQ3BCLDJCQUEyQixFQUFFLFNBQVM7b0JBQ3RDLHlCQUF5QixFQUFFLFdBQVc7b0JBQ3RDLHlCQUF5QixFQUFFLFlBQVk7b0JBQ3ZDLDBCQUEwQixFQUFFLFlBQVk7b0JBQ3hDLHlCQUF5QixFQUFFLFdBQVc7b0JBQ3RDLHlCQUF5QixFQUFFLGtCQUFrQjtvQkFDN0MsMEJBQTBCLEVBQUUsbUJBQW1CO29CQUMvQyx5QkFBeUIsRUFBRSxrQkFBa0I7b0JBQzdDLDBCQUEwQixFQUFFLHdCQUF3QjtvQkFDcEQsNEJBQTRCLEVBQUUsVUFBVTtpQkFDekM7YUFDRjs7O1lBMUNDLE1BQU07WUFITixVQUFVO1lBSkosYUFBYTtZQVduQixTQUFTO3lDQTJHSixRQUFRLFlBQUksTUFBTSxTQUFDLHFCQUFxQjs7O29CQS9ENUMsS0FBSyxTQUFDLGVBQWU7c0JBU3JCLEtBQUssU0FBQyxpQkFBaUI7dUJBV3ZCLEtBQUssU0FBQyxrQkFBa0I7c0JBR3hCLEtBQUssU0FBQyxVQUFVOzBCQUdoQixLQUFLLFNBQUMscUJBQXFCO21CQWlCM0IsS0FBSyxTQUFDLGNBQWM7cUJBR3BCLEtBQUssU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtBcmlhRGVzY3JpYmVyfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2FuRGlzYWJsZSwgbWl4aW5EaXNhYmxlZCwgVGhlbWVQYWxldHRlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7QU5JTUFUSU9OX01PRFVMRV9UWVBFfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuXG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vLyBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvIE1hdEJhZGdlLlxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmNvbnN0IF9NYXRCYWRnZUJhc2UgPSBtaXhpbkRpc2FibGVkKGNsYXNzIHt9KTtcblxuLyoqIEFsbG93ZWQgcG9zaXRpb24gb3B0aW9ucyBmb3IgbWF0QmFkZ2VQb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgTWF0QmFkZ2VQb3NpdGlvbiA9XG4gICAgJ2Fib3ZlIGFmdGVyJyB8ICdhYm92ZSBiZWZvcmUnIHwgJ2JlbG93IGJlZm9yZScgfCAnYmVsb3cgYWZ0ZXInIHxcbiAgICAnYmVmb3JlJyB8ICdhZnRlcicgfCAnYWJvdmUnIHwgJ2JlbG93JztcblxuLyoqIEFsbG93ZWQgc2l6ZSBvcHRpb25zIGZvciBtYXRCYWRnZVNpemUgKi9cbmV4cG9ydCB0eXBlIE1hdEJhZGdlU2l6ZSA9ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XG5cbi8qKiBEaXJlY3RpdmUgdG8gZGlzcGxheSBhIHRleHQgYmFkZ2UuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbWF0QmFkZ2VdJyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkOiBtYXRCYWRnZURpc2FibGVkJ10sXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnbWF0LWJhZGdlJyxcbiAgICAnW2NsYXNzLm1hdC1iYWRnZS1vdmVybGFwXSc6ICdvdmVybGFwJyxcbiAgICAnW2NsYXNzLm1hdC1iYWRnZS1hYm92ZV0nOiAnaXNBYm92ZSgpJyxcbiAgICAnW2NsYXNzLm1hdC1iYWRnZS1iZWxvd10nOiAnIWlzQWJvdmUoKScsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2UtYmVmb3JlXSc6ICchaXNBZnRlcigpJyxcbiAgICAnW2NsYXNzLm1hdC1iYWRnZS1hZnRlcl0nOiAnaXNBZnRlcigpJyxcbiAgICAnW2NsYXNzLm1hdC1iYWRnZS1zbWFsbF0nOiAnc2l6ZSA9PT0gXCJzbWFsbFwiJyxcbiAgICAnW2NsYXNzLm1hdC1iYWRnZS1tZWRpdW1dJzogJ3NpemUgPT09IFwibWVkaXVtXCInLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLWxhcmdlXSc6ICdzaXplID09PSBcImxhcmdlXCInLFxuICAgICdbY2xhc3MubWF0LWJhZGdlLWhpZGRlbl0nOiAnaGlkZGVuIHx8ICFfaGFzQ29udGVudCcsXG4gICAgJ1tjbGFzcy5tYXQtYmFkZ2UtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0QmFkZ2UgZXh0ZW5kcyBfTWF0QmFkZ2VCYXNlIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMsIENhbkRpc2FibGUge1xuICAvKiogV2hldGhlciB0aGUgYmFkZ2UgaGFzIGFueSBjb250ZW50LiAqL1xuICBfaGFzQ29udGVudCA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgY29sb3Igb2YgdGhlIGJhZGdlLiBDYW4gYmUgYHByaW1hcnlgLCBgYWNjZW50YCwgb3IgYHdhcm5gLiAqL1xuICBASW5wdXQoJ21hdEJhZGdlQ29sb3InKVxuICBnZXQgY29sb3IoKTogVGhlbWVQYWxldHRlIHsgcmV0dXJuIHRoaXMuX2NvbG9yOyB9XG4gIHNldCBjb2xvcih2YWx1ZTogVGhlbWVQYWxldHRlKSB7XG4gICAgdGhpcy5fc2V0Q29sb3IodmFsdWUpO1xuICAgIHRoaXMuX2NvbG9yID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcblxuICAvKiogV2hldGhlciB0aGUgYmFkZ2Ugc2hvdWxkIG92ZXJsYXAgaXRzIGNvbnRlbnRzIG9yIG5vdCAqL1xuICBASW5wdXQoJ21hdEJhZGdlT3ZlcmxhcCcpXG4gIGdldCBvdmVybGFwKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fb3ZlcmxhcDsgfVxuICBzZXQgb3ZlcmxhcCh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vdmVybGFwID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbCk7XG4gIH1cbiAgcHJpdmF0ZSBfb3ZlcmxhcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIHRoZSBiYWRnZSBzaG91bGQgcmVzaWRlLlxuICAgKiBBY2NlcHRzIGFueSBjb21iaW5hdGlvbiBvZiAnYWJvdmUnfCdiZWxvdycgYW5kICdiZWZvcmUnfCdhZnRlcidcbiAgICovXG4gIEBJbnB1dCgnbWF0QmFkZ2VQb3NpdGlvbicpIHBvc2l0aW9uOiBNYXRCYWRnZVBvc2l0aW9uID0gJ2Fib3ZlIGFmdGVyJztcblxuICAvKiogVGhlIGNvbnRlbnQgZm9yIHRoZSBiYWRnZSAqL1xuICBASW5wdXQoJ21hdEJhZGdlJykgY29udGVudDogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAvKiogTWVzc2FnZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBkZWNvcmF0ZWQgZWxlbWVudCB2aWEgYXJpYS1kZXNjcmliZWRieSAqL1xuICBASW5wdXQoJ21hdEJhZGdlRGVzY3JpcHRpb24nKVxuICBnZXQgZGVzY3JpcHRpb24oKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2Rlc2NyaXB0aW9uOyB9XG4gIHNldCBkZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKG5ld0Rlc2NyaXB0aW9uICE9PSB0aGlzLl9kZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYmFkZ2VFbGVtZW50ID0gdGhpcy5fYmFkZ2VFbGVtZW50O1xuICAgICAgdGhpcy5fdXBkYXRlSG9zdEFyaWFEZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiwgdGhpcy5fZGVzY3JpcHRpb24pO1xuICAgICAgdGhpcy5fZGVzY3JpcHRpb24gPSBuZXdEZXNjcmlwdGlvbjtcblxuICAgICAgaWYgKGJhZGdlRWxlbWVudCkge1xuICAgICAgICBuZXdEZXNjcmlwdGlvbiA/IGJhZGdlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBuZXdEZXNjcmlwdGlvbikgOlxuICAgICAgICAgICAgYmFkZ2VFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9kZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKiBTaXplIG9mIHRoZSBiYWRnZS4gQ2FuIGJlICdzbWFsbCcsICdtZWRpdW0nLCBvciAnbGFyZ2UnLiAqL1xuICBASW5wdXQoJ21hdEJhZGdlU2l6ZScpIHNpemU6IE1hdEJhZGdlU2l6ZSA9ICdtZWRpdW0nO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBiYWRnZSBpcyBoaWRkZW4uICovXG4gIEBJbnB1dCgnbWF0QmFkZ2VIaWRkZW4nKVxuICBnZXQgaGlkZGVuKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faGlkZGVuOyB9XG4gIHNldCBoaWRkZW4odmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5faGlkZGVuID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbCk7XG4gIH1cbiAgcHJpdmF0ZSBfaGlkZGVuOiBib29sZWFuO1xuXG4gIC8qKiBVbmlxdWUgaWQgZm9yIHRoZSBiYWRnZSAqL1xuICBfaWQ6IG51bWJlciA9IG5leHRJZCsrO1xuXG4gIHByaXZhdGUgX2JhZGdlRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgcHJpdmF0ZSBfYXJpYURlc2NyaWJlcjogQXJpYURlc2NyaWJlcixcbiAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFOSU1BVElPTl9NT0RVTEVfVFlQRSkgcHJpdmF0ZSBfYW5pbWF0aW9uTW9kZT86IHN0cmluZykge1xuICAgICAgc3VwZXIoKTtcblxuICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKG5hdGl2ZUVsZW1lbnQubm9kZVR5cGUgIT09IG5hdGl2ZUVsZW1lbnQuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoJ21hdEJhZGdlIG11c3QgYmUgYXR0YWNoZWQgdG8gYW4gZWxlbWVudCBub2RlLicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBiYWRnZSBpcyBhYm92ZSB0aGUgaG9zdCBvciBub3QgKi9cbiAgaXNBYm92ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbi5pbmRleE9mKCdiZWxvdycpID09PSAtMTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBiYWRnZSBpcyBhZnRlciB0aGUgaG9zdCBvciBub3QgKi9cbiAgaXNBZnRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbi5pbmRleE9mKCdiZWZvcmUnKSA9PT0gLTE7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgY29udGVudENoYW5nZSA9IGNoYW5nZXNbJ2NvbnRlbnQnXTtcblxuICAgIGlmIChjb250ZW50Q2hhbmdlKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnRlbnRDaGFuZ2UuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5faGFzQ29udGVudCA9IHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YC50cmltKCkubGVuZ3RoID4gMDtcbiAgICAgIHRoaXMuX3VwZGF0ZVRleHRDb250ZW50KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgYmFkZ2VFbGVtZW50ID0gdGhpcy5fYmFkZ2VFbGVtZW50O1xuXG4gICAgaWYgKGJhZGdlRWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5fYXJpYURlc2NyaWJlci5yZW1vdmVEZXNjcmlwdGlvbihiYWRnZUVsZW1lbnQsIHRoaXMuZGVzY3JpcHRpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBXaGVuIGNyZWF0aW5nIGEgYmFkZ2UgdGhyb3VnaCB0aGUgUmVuZGVyZXIsIEFuZ3VsYXIgd2lsbCBrZWVwIGl0IGluIGFuIGluZGV4LlxuICAgICAgLy8gV2UgaGF2ZSB0byBkZXN0cm95IGl0IG91cnNlbHZlcywgb3RoZXJ3aXNlIGl0J2xsIGJlIHJldGFpbmVkIGluIG1lbW9yeS5cbiAgICAgIGlmICh0aGlzLl9yZW5kZXJlci5kZXN0cm95Tm9kZSkge1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5kZXN0cm95Tm9kZShiYWRnZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlbGVtZW50IGludG8gd2hpY2ggdGhlIGJhZGdlJ3MgY29udGVudCBpcyBiZWluZyByZW5kZXJlZC5cbiAgICogVW5kZWZpbmVkIGlmIHRoZSBlbGVtZW50IGhhc24ndCBiZWVuIGNyZWF0ZWQgKGUuZy4gaWYgdGhlIGJhZGdlIGRvZXNuJ3QgaGF2ZSBjb250ZW50KS5cbiAgICovXG4gIGdldEJhZGdlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlRWxlbWVudDtcbiAgfVxuXG4gIC8qKiBJbmplY3RzIGEgc3BhbiBlbGVtZW50IGludG8gdGhlIERPTSB3aXRoIHRoZSBjb250ZW50LiAqL1xuICBwcml2YXRlIF91cGRhdGVUZXh0Q29udGVudCgpOiBIVE1MU3BhbkVsZW1lbnQge1xuICAgIGlmICghdGhpcy5fYmFkZ2VFbGVtZW50KSB7XG4gICAgICB0aGlzLl9iYWRnZUVsZW1lbnQgPSB0aGlzLl9jcmVhdGVCYWRnZUVsZW1lbnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYmFkZ2VFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fc3RyaW5naWZ5Q29udGVudCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYmFkZ2VFbGVtZW50O1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgdGhlIGJhZGdlIGVsZW1lbnQgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlQmFkZ2VFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBiYWRnZUVsZW1lbnQgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgY29uc3QgYWN0aXZlQ2xhc3MgPSAnbWF0LWJhZGdlLWFjdGl2ZSc7XG4gICAgY29uc3QgY29udGVudENsYXNzID0gJ21hdC1iYWRnZS1jb250ZW50JztcblxuICAgIC8vIENsZWFyIGFueSBleGlzdGluZyBiYWRnZXMgd2hpY2ggbWF5IGhhdmUgcGVyc2lzdGVkIGZyb20gYSBzZXJ2ZXItc2lkZSByZW5kZXIuXG4gICAgdGhpcy5fY2xlYXJFeGlzdGluZ0JhZGdlcyhjb250ZW50Q2xhc3MpO1xuICAgIGJhZGdlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgYG1hdC1iYWRnZS1jb250ZW50LSR7dGhpcy5faWR9YCk7XG4gICAgYmFkZ2VFbGVtZW50LmNsYXNzTGlzdC5hZGQoY29udGVudENsYXNzKTtcbiAgICBiYWRnZUVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9zdHJpbmdpZnlDb250ZW50KCk7XG5cbiAgICBpZiAodGhpcy5fYW5pbWF0aW9uTW9kZSA9PT0gJ05vb3BBbmltYXRpb25zJykge1xuICAgICAgYmFkZ2VFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ19tYXQtYW5pbWF0aW9uLW5vb3BhYmxlJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgIGJhZGdlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLmRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFkZ2VFbGVtZW50KTtcblxuICAgIC8vIGFuaW1hdGUgaW4gYWZ0ZXIgaW5zZXJ0aW9uXG4gICAgaWYgKHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbicgJiYgdGhpcy5fYW5pbWF0aW9uTW9kZSAhPT0gJ05vb3BBbmltYXRpb25zJykge1xuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBiYWRnZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChhY3RpdmVDbGFzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJhZGdlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGFjdGl2ZUNsYXNzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFkZ2VFbGVtZW50O1xuICB9XG5cbiAgLyoqIFNldHMgdGhlIGFyaWEtbGFiZWwgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlSG9zdEFyaWFEZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbjogc3RyaW5nLCBvbGREZXNjcmlwdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gZW5zdXJlIGNvbnRlbnQgYXZhaWxhYmxlIGJlZm9yZSBzZXR0aW5nIGxhYmVsXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuX3VwZGF0ZVRleHRDb250ZW50KCk7XG5cbiAgICBpZiAob2xkRGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX2FyaWFEZXNjcmliZXIucmVtb3ZlRGVzY3JpcHRpb24oY29udGVudCwgb2xkRGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIGlmIChuZXdEZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fYXJpYURlc2NyaWJlci5kZXNjcmliZShjb250ZW50LCBuZXdEZXNjcmlwdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEFkZHMgY3NzIHRoZW1lIGNsYXNzIGdpdmVuIHRoZSBjb2xvciB0byB0aGUgY29tcG9uZW50IGhvc3QgKi9cbiAgcHJpdmF0ZSBfc2V0Q29sb3IoY29sb3JQYWxldHRlOiBUaGVtZVBhbGV0dGUpIHtcbiAgICBpZiAoY29sb3JQYWxldHRlICE9PSB0aGlzLl9jb2xvcikge1xuICAgICAgY29uc3QgY2xhc3NMaXN0ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdDtcbiAgICAgIGlmICh0aGlzLl9jb2xvcikge1xuICAgICAgICBjbGFzc0xpc3QucmVtb3ZlKGBtYXQtYmFkZ2UtJHt0aGlzLl9jb2xvcn1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb2xvclBhbGV0dGUpIHtcbiAgICAgICAgY2xhc3NMaXN0LmFkZChgbWF0LWJhZGdlLSR7Y29sb3JQYWxldHRlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBDbGVhcnMgYW55IGV4aXN0aW5nIGJhZGdlcyB0aGF0IG1pZ2h0IGJlIGxlZnQgb3ZlciBmcm9tIHNlcnZlci1zaWRlIHJlbmRlcmluZy4gKi9cbiAgcHJpdmF0ZSBfY2xlYXJFeGlzdGluZ0JhZGdlcyhjc3NDbGFzczogc3RyaW5nKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBsZXQgY2hpbGRDb3VudCA9IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgLy8gVXNlIGEgcmV2ZXJzZSB3aGlsZSwgYmVjYXVzZSB3ZSdsbCBiZSByZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBsaXN0IGFzIHdlJ3JlIGl0ZXJhdGluZy5cbiAgICB3aGlsZSAoY2hpbGRDb3VudC0tKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hpbGQgPSBlbGVtZW50LmNoaWxkcmVuW2NoaWxkQ291bnRdO1xuXG4gICAgICBpZiAoY3VycmVudENoaWxkLmNsYXNzTGlzdC5jb250YWlucyhjc3NDbGFzcykpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVDaGlsZChjdXJyZW50Q2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJhZGdlIGNvbnRlbnQuICovXG4gIHByaXZhdGUgX3N0cmluZ2lmeUNvbnRlbnQoKTogc3RyaW5nIHtcbiAgICAvLyBDb252ZXJ0IG51bGwgYW5kIHVuZGVmaW5lZCB0byBhbiBlbXB0eSBzdHJpbmcgd2hpY2ggaXMgY29uc2lzdGVudFxuICAgIC8vIHdpdGggaG93IEFuZ3VsYXIgaGFuZGxlcyB0aGVtIGluIGluc2lkZSB0ZW1wbGF0ZSBpbnRlcnBvbGF0aW9ucy5cbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50O1xuICAgIHJldHVybiBjb250ZW50ID09IG51bGwgPyAnJyA6IGAke2NvbnRlbnR9YDtcbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGlkZGVuOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9vdmVybGFwOiBCb29sZWFuSW5wdXQ7XG59XG4iXX0=
  • trip-planner-front/node_modules/@angular/material/esm2015/core/common-behaviors/common-module.js

    r6a3a178 rfa375fe  
    1616// Can be removed once the Material primary entry-point no longer
    1717// re-exports all secondary entry-points
    18 const VERSION = new Version('12.2.9');
     18const VERSION = new Version('12.2.10');
    1919/** @docs-private */
    2020export function MATERIAL_SANITY_CHECKS_FACTORY() {
  • trip-planner-front/node_modules/@angular/material/esm2015/core/version.js

    r6a3a178 rfa375fe  
    88import { Version } from '@angular/core';
    99/** Current version of Angular Material. */
    10 export const VERSION = new Version('12.2.9');
     10export const VERSION = new Version('12.2.10');
    1111//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9jb3JlL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0QywyQ0FBMkM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqIEN1cnJlbnQgdmVyc2lvbiBvZiBBbmd1bGFyIE1hdGVyaWFsLiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==
  • trip-planner-front/node_modules/@angular/material/esm2015/sort/sort-header-intl.js

    r6a3a178 rfa375fe  
    1212 * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and
    1313 * include it in a custom provider.
    14  * @deprecated No longer being used. To be removed.
    15  * @breaking-change 13.0.0
    1614 */
    1715export class MatSortHeaderIntl {
     
    3937    useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY
    4038};
    41 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1oZWFkZXItaW50bC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zb3J0L3NvcnQtaGVhZGVyLWludGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBRTdCOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVFOzs7V0FHRztRQUNNLFlBQU8sR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQUN2RDs7OztZQVBBLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBU2hDLG9CQUFvQjtBQUNwQixNQUFNLFVBQVUscUNBQXFDLENBQUMsVUFBNkI7SUFDakYsT0FBTyxVQUFVLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0FBQy9DLENBQUM7QUFFRCxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFDM0MsOEZBQThGO0lBQzlGLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUMzRCxVQUFVLEVBQUUscUNBQXFDO0NBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBTa2lwU2VsZiwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBUbyBtb2RpZnkgdGhlIGxhYmVscyBhbmQgdGV4dCBkaXNwbGF5ZWQsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBNYXRTb3J0SGVhZGVySW50bCBhbmRcbiAqIGluY2x1ZGUgaXQgaW4gYSBjdXN0b20gcHJvdmlkZXIuXG4gKiBAZGVwcmVjYXRlZCBObyBsb25nZXIgYmVpbmcgdXNlZC4gVG8gYmUgcmVtb3ZlZC5cbiAqIEBicmVha2luZy1jaGFuZ2UgMTMuMC4wXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE1hdFNvcnRIZWFkZXJJbnRsIHtcbiAgLyoqXG4gICAqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBsYWJlbHMgaGVyZSBhcmUgY2hhbmdlZC4gVXNlIHRoaXMgdG8gbm90aWZ5XG4gICAqIGNvbXBvbmVudHMgaWYgdGhlIGxhYmVscyBoYXZlIGNoYW5nZWQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBNQVRfU09SVF9IRUFERVJfSU5UTF9QUk9WSURFUl9GQUNUT1JZKHBhcmVudEludGw6IE1hdFNvcnRIZWFkZXJJbnRsKSB7XG4gIHJldHVybiBwYXJlbnRJbnRsIHx8IG5ldyBNYXRTb3J0SGVhZGVySW50bCgpO1xufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IE1BVF9TT1JUX0hFQURFUl9JTlRMX1BST1ZJREVSID0ge1xuICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGFuIE1hdFNvcnRIZWFkZXJJbnRsIGF2YWlsYWJsZSwgdXNlIHRoYXQuIE90aGVyd2lzZSwgcHJvdmlkZSBhIG5ldyBvbmUuXG4gIHByb3ZpZGU6IE1hdFNvcnRIZWFkZXJJbnRsLFxuICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgTWF0U29ydEhlYWRlckludGxdXSxcbiAgdXNlRmFjdG9yeTogTUFUX1NPUlRfSEVBREVSX0lOVExfUFJPVklERVJfRkFDVE9SWVxufTtcblxuIl19
     39//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1oZWFkZXItaW50bC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zb3J0L3NvcnQtaGVhZGVyLWludGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBRTdCOzs7R0FHRztBQUVILE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFRTs7O1dBR0c7UUFDTSxZQUFPLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7S0FDdkQ7Ozs7WUFQQSxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQVNoQyxvQkFBb0I7QUFDcEIsTUFBTSxVQUFVLHFDQUFxQyxDQUFDLFVBQTZCO0lBQ2pGLE9BQU8sVUFBVSxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBRUQsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLDhGQUE4RjtJQUM5RixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsVUFBVSxFQUFFLHFDQUFxQztDQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZSwgU2tpcFNlbGYsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogVG8gbW9kaWZ5IHRoZSBsYWJlbHMgYW5kIHRleHQgZGlzcGxheWVkLCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgTWF0U29ydEhlYWRlckludGwgYW5kXG4gKiBpbmNsdWRlIGl0IGluIGEgY3VzdG9tIHByb3ZpZGVyLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBNYXRTb3J0SGVhZGVySW50bCB7XG4gIC8qKlxuICAgKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuZXZlciB0aGUgbGFiZWxzIGhlcmUgYXJlIGNoYW5nZWQuIFVzZSB0aGlzIHRvIG5vdGlmeVxuICAgKiBjb21wb25lbnRzIGlmIHRoZSBsYWJlbHMgaGF2ZSBjaGFuZ2VkIGFmdGVyIGluaXRpYWxpemF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG59XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZnVuY3Rpb24gTUFUX1NPUlRfSEVBREVSX0lOVExfUFJPVklERVJfRkFDVE9SWShwYXJlbnRJbnRsOiBNYXRTb3J0SGVhZGVySW50bCkge1xuICByZXR1cm4gcGFyZW50SW50bCB8fCBuZXcgTWF0U29ydEhlYWRlckludGwoKTtcbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBNQVRfU09SVF9IRUFERVJfSU5UTF9QUk9WSURFUiA9IHtcbiAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBNYXRTb3J0SGVhZGVySW50bCBhdmFpbGFibGUsIHVzZSB0aGF0LiBPdGhlcndpc2UsIHByb3ZpZGUgYSBuZXcgb25lLlxuICBwcm92aWRlOiBNYXRTb3J0SGVhZGVySW50bCxcbiAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIE1hdFNvcnRIZWFkZXJJbnRsXV0sXG4gIHVzZUZhY3Rvcnk6IE1BVF9TT1JUX0hFQURFUl9JTlRMX1BST1ZJREVSX0ZBQ1RPUllcbn07XG5cbiJdfQ==
  • trip-planner-front/node_modules/@angular/material/esm2015/sort/sort-header.js

    r6a3a178 rfa375fe  
    66 * found in the LICENSE file at https://angular.io/license
    77 */
     8import { AriaDescriber, FocusMonitor } from '@angular/cdk/a11y';
    89import { coerceBooleanProperty } from '@angular/cdk/coercion';
    9 import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, Optional, ViewEncapsulation, Inject, ElementRef, } from '@angular/core';
     10import { ENTER, SPACE } from '@angular/cdk/keycodes';
     11import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Input, Optional, ViewEncapsulation, } from '@angular/core';
    1012import { mixinDisabled } from '@angular/material/core';
    11 import { FocusMonitor } from '@angular/cdk/a11y';
    12 import { ENTER, SPACE } from '@angular/cdk/keycodes';
    1313import { merge } from 'rxjs';
    1414import { MatSort } from './sort';
     
    3838    // `MatSort` is not optionally injected, but just asserted manually w/ better error.
    3939    // tslint:disable-next-line: lightweight-tokens
    40     _sort, _columnDef, _focusMonitor, _elementRef) {
     40    _sort, _columnDef, _focusMonitor, _elementRef,
     41    /** @breaking-change 14.0.0 _ariaDescriber will be required. */
     42    _ariaDescriber) {
    4143        // Note that we use a string token for the `_columnDef`, because the value is provided both by
    4244        // `material/table` and `cdk/table` and we can't have the CDK depending on Material,
     
    5052        this._focusMonitor = _focusMonitor;
    5153        this._elementRef = _elementRef;
     54        this._ariaDescriber = _ariaDescriber;
    5255        /**
    5356         * Flag set to true when the indicator should be displayed while the sort is not active. Used to
     
    6972        /** Sets the position of the arrow that displays when sorted. */
    7073        this.arrowPosition = 'after';
     74        // Default the action description to "Sort" because it's better than nothing.
     75        // Without a description, the button's label comes from the sort header text content,
     76        // which doesn't give any indication that it performs a sorting operation.
     77        this._sortActionDescription = 'Sort';
    7178        if (!_sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {
    7279            throw getSortHeaderNotContainedWithinSortError();
    7380        }
    7481        this._handleStateChanges();
     82    }
     83    /**
     84     * Description applied to MatSortHeader's button element with aria-describedby. This text should
     85     * describe the action that will occur when the user clicks the sort header.
     86     */
     87    get sortActionDescription() {
     88        return this._sortActionDescription;
     89    }
     90    set sortActionDescription(value) {
     91        this._updateSortActionDescription(value);
    7592    }
    7693    /** Overrides the disable clear value of the containing MatSort for this MatSortable. */
     
    85102        this._setAnimationTransitionState({ toState: this._isSorted() ? 'active' : this._arrowDirection });
    86103        this._sort.register(this);
     104        this._sortButton = this._elementRef.nativeElement.querySelector('[role="button"]');
     105        this._updateSortActionDescription(this._sortActionDescription);
    87106    }
    88107    ngAfterViewInit() {
     
    201220    _renderArrow() {
    202221        return !this._isDisabled() || this._isSorted();
     222    }
     223    _updateSortActionDescription(newDescription) {
     224        // We use AriaDescriber for the sort button instead of setting an `aria-label` because some
     225        // screen readers (notably VoiceOver) will read both the column header *and* the button's label
     226        // for every *cell* in the table, creating a lot of unnecessary noise.
     227        var _a, _b;
     228        // If _sortButton is undefined, the component hasn't been initialized yet so there's
     229        // nothing to update in the DOM.
     230        if (this._sortButton) {
     231            // removeDescription will no-op if there is no existing message.
     232            // TODO(jelbourn): remove optional chaining when AriaDescriber is required.
     233            (_a = this._ariaDescriber) === null || _a === void 0 ? void 0 : _a.removeDescription(this._sortButton, this._sortActionDescription);
     234            (_b = this._ariaDescriber) === null || _b === void 0 ? void 0 : _b.describe(this._sortButton, newDescription);
     235        }
     236        this._sortActionDescription = newDescription;
    203237    }
    204238    /** Handles changes in the sorting state. */
     
    258292    { type: undefined, decorators: [{ type: Inject, args: ['MAT_SORT_HEADER_COLUMN_DEF',] }, { type: Optional }] },
    259293    { type: FocusMonitor },
    260     { type: ElementRef }
     294    { type: ElementRef },
     295    { type: AriaDescriber, decorators: [{ type: Inject, args: [AriaDescriber,] }, { type: Optional }] }
    261296];
    262297MatSortHeader.propDecorators = {
     
    264299    arrowPosition: [{ type: Input }],
    265300    start: [{ type: Input }],
     301    sortActionDescription: [{ type: Input }],
    266302    disableClear: [{ type: Input }]
    267303};
    268 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1oZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc29ydC9zb3J0LWhlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUdMLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFVBQVUsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFDLEtBQUssRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUMsT0FBTyxFQUFjLE1BQU0sUUFBUSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUdyRCxzREFBc0Q7QUFDdEQsb0JBQW9CO0FBQ3BCLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDO0NBQVEsQ0FBQyxDQUFDO0FBMkJuRDs7Ozs7Ozs7R0FRRztBQTJCSCxNQUFNLE9BQU8sYUFBYyxTQUFRLGtCQUFrQjtJQTJDbkQ7SUFDWTs7O09BR0c7SUFDSSxLQUF3QixFQUN2QixrQkFBcUM7SUFDN0Msb0ZBQW9GO0lBQ3BGLCtDQUErQztJQUM1QixLQUFjLEVBRXRCLFVBQWtDLEVBQ3JDLGFB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YUFBYTtpQkFDaEM7O2FBQ0Y7OztZQWxFTyxpQkFBaUI7WUFuQnZCLGlCQUFpQjtZQWVYLE9BQU8sdUJBMkhBLFFBQVE7NENBQ1IsTUFBTSxTQUFDLDRCQUE0QixjQUFHLFFBQVE7WUEvSHJELFlBQVk7WUFKbEIsVUFBVTs7O2lCQTJHVCxLQUFLLFNBQUMsaUJBQWlCOzRCQUd2QixLQUFLO29CQUdMLEtBQUs7MkJBR0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbmplY3QsXG4gIEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDYW5EaXNhYmxlLCBtaXhpbkRpc2FibGVkfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7Rm9jdXNNb25pdG9yfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0VOVEVSLCBTUEFDRX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7bWVyZ2UsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge01hdFNvcnQsIE1hdFNvcnRhYmxlfSBmcm9tICcuL3NvcnQnO1xuaW1wb3J0IHttYXRTb3J0QW5pbWF0aW9uc30gZnJvbSAnLi9zb3J0LWFuaW1hdGlvbnMnO1xuaW1wb3J0IHtTb3J0RGlyZWN0aW9ufSBmcm9tICcuL3NvcnQtZGlyZWN0aW9uJztcbmltcG9ydCB7Z2V0U29ydEhlYWRlck5vdENvbnRhaW5lZFdpdGhpblNvcnRFcnJvcn0gZnJvbSAnLi9zb3J0LWVycm9ycyc7XG5pbXBvcnQge01hdFNvcnRIZWFkZXJJbnRsfSBmcm9tICcuL3NvcnQtaGVhZGVyLWludGwnO1xuXG5cbi8vIEJvaWxlcnBsYXRlIGZvciBhcHBseWluZyBtaXhpbnMgdG8gdGhlIHNvcnQgaGVhZGVyLlxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmNvbnN0IF9NYXRTb3J0SGVhZGVyQmFzZSA9IG1peGluRGlzYWJsZWQoY2xhc3Mge30pO1xuXG4vKipcbiAqIFZhbGlkIHBvc2l0aW9ucyBmb3IgdGhlIGFycm93IHRvIGJlIGluIGZvciBpdHMgb3BhY2l0eSBhbmQgdHJhbnNsYXRpb24uIElmIHRoZSBzdGF0ZSBpcyBhXG4gKiBzb3J0IGRpcmVjdGlvbiwgdGhlIHBvc2l0aW9uIG9mIHRoZSBhcnJvdyB3aWxsIGJlIGFib3ZlL2JlbG93IGFuZCBvcGFjaXR5IDAuIElmIHRoZSBzdGF0ZSBpc1xuICogaGludCwgdGhlIGFycm93IHdpbGwgYmUgaW4gdGhlIGNlbnRlciB3aXRoIGEgc2xpZ2h0IG9wYWNpdHkuIEFjdGl2ZSBzdGF0ZSBtZWFucyB0aGUgYXJyb3cgd2lsbFxuICogYmUgZnVsbHkgb3BhcXVlIGluIHRoZSBjZW50ZXIuXG4gKlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgdHlwZSBBcnJvd1ZpZXdTdGF0ZSA9IFNvcnREaXJlY3Rpb24gfCAnaGludCcgfCAnYWN0aXZlJztcblxuLyoqXG4gKiBTdGF0ZXMgZGVzY3JpYmluZyB0aGUgYXJyb3cncyBhbmltYXRlZCBwb3NpdGlvbiAoYW5pbWF0aW5nIGZyb21TdGF0ZSB0byB0b1N0YXRlKS5cbiAqIElmIHRoZSBmcm9tU3RhdGUgaXMgbm90IGRlZmluZWQsIHRoZXJlIHdpbGwgYmUgbm8gYW5pbWF0ZWQgdHJhbnNpdGlvbiB0byB0aGUgdG9TdGF0ZS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnJvd1ZpZXdTdGF0ZVRyYW5zaXRpb24ge1xuICBmcm9tU3RhdGU/OiBBcnJvd1ZpZXdTdGF0ZTtcbiAgdG9TdGF0ZT86IEFycm93Vmlld1N0YXRlO1xufVxuXG4vKiogQ29sdW1uIGRlZmluaXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgYE1hdFNvcnRIZWFkZXJgLiAqL1xuaW50ZXJmYWNlIE1hdFNvcnRIZWFkZXJDb2x1bW5EZWYge1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXBwbGllcyBzb3J0aW5nIGJlaGF2aW9yIChjbGljayB0byBjaGFuZ2Ugc29ydCkgYW5kIHN0eWxlcyB0byBhbiBlbGVtZW50LCBpbmNsdWRpbmcgYW5cbiAqIGFycm93IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnQgc29ydCBkaXJlY3Rpb24uXG4gKlxuICogTXVzdCBiZSBwcm92aWRlZCB3aXRoIGFuIGlkIGFuZCBjb250YWluZWQgd2l0aGluIGEgcGFyZW50IE1hdFNvcnQgZGlyZWN0aXZlLlxuICpcbiAqIElmIHVzZWQgb24gaGVhZGVyIGNlbGxzIGluIGEgQ2RrVGFibGUsIGl0IHdpbGwgYXV0b21hdGljYWxseSBkZWZhdWx0IGl0cyBpZCBmcm9tIGl0cyBjb250YWluaW5nXG4gKiBjb2x1bW4gZGVmaW5pdGlvbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW21hdC1zb3J0LWhlYWRlcl0nLFxuICBleHBvcnRBczogJ21hdFNvcnRIZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJ3NvcnQtaGVhZGVyLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc29ydC1oZWFkZXIuY3NzJ10sXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnbWF0LXNvcnQtaGVhZGVyJyxcbiAgICAnKGNsaWNrKSc6ICdfaGFuZGxlQ2xpY2soKScsXG4gICAgJyhrZXlkb3duKSc6ICdfaGFuZGxlS2V5ZG93bigkZXZlbnQpJyxcbiAgICAnKG1vdXNlZW50ZXIpJzogJ19zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSh0cnVlKScsXG4gICAgJyhtb3VzZWxlYXZlKSc6ICdfc2V0SW5kaWNhdG9ySGludFZpc2libGUoZmFsc2UpJyxcbiAgICAnW2F0dHIuYXJpYS1zb3J0XSc6ICdfZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKScsXG4gICAgJ1tjbGFzcy5tYXQtc29ydC1oZWFkZXItZGlzYWJsZWRdJzogJ19pc0Rpc2FibGVkKCknLFxuICB9LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICBtYXRTb3J0QW5pbWF0aW9ucy5pbmRpY2F0b3IsXG4gICAgbWF0U29ydEFuaW1hdGlvbnMubGVmdFBvaW50ZXIsXG4gICAgbWF0U29ydEFuaW1hdGlvbnMucmlnaHRQb2ludGVyLFxuICAgIG1hdFNvcnRBbmltYXRpb25zLmFycm93T3BhY2l0eSxcbiAgICBtYXRTb3J0QW5pbWF0aW9ucy5hcnJvd1Bvc2l0aW9uLFxuICAgIG1hdFNvcnRBbmltYXRpb25zLmFsbG93Q2hpbGRyZW4sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWF0U29ydEhlYWRlciBleHRlbmRzIF9NYXRTb3J0SGVhZGVyQmFzZVxuICAgIGltcGxlbWVudHMgQ2FuRGlzYWJsZSwgTWF0U29ydGFibGUsIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSBfcmVyZW5kZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogRmxhZyBzZXQgdG8gdHJ1ZSB3aGVuIHRoZSBpbmRpY2F0b3Igc2hvdWxkIGJlIGRpc3BsYXllZCB3aGlsZSB0aGUgc29ydCBpcyBub3QgYWN0aXZlLiBVc2VkIHRvXG4gICAqIHByb3ZpZGUgYW4gYWZmb3JkYW5jZSB0aGF0IHRoZSBoZWFkZXIgaXMgc29ydGFibGUgYnkgc2hvd2luZyBvbiBmb2N1cyBhbmQgaG92ZXIuXG4gICAqL1xuICBfc2hvd0luZGljYXRvckhpbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHZpZXcgdHJhbnNpdGlvbiBzdGF0ZSBvZiB0aGUgYXJyb3cgKHRyYW5zbGF0aW9uLyBvcGFjaXR5KSAtIGluZGljYXRlcyBpdHMgYGZyb21gIGFuZCBgdG9gXG4gICAqIHBvc2l0aW9uIHRocm91Z2ggdGhlIGFuaW1hdGlvbi4gSWYgYW5pbWF0aW9ucyBhcmUgY3VycmVudGx5IGRpc2FibGVkLCB0aGUgZnJvbVN0YXRlIGlzIHJlbW92ZWRcbiAgICogc28gdGhhdCB0aGVyZSBpcyBubyBhbmltYXRpb24gZGlzcGxheWVkLlxuICAgKi9cbiAgX3ZpZXdTdGF0ZTogQXJyb3dWaWV3U3RhdGVUcmFuc2l0aW9uID0geyB9O1xuXG4gIC8qKiBUaGUgZGlyZWN0aW9uIHRoZSBhcnJvdyBzaG91bGQgYmUgZmFjaW5nIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBzdGF0ZS4gKi9cbiAgX2Fycm93RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uID0gJyc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHZpZXcgc3RhdGUgYW5pbWF0aW9uIHNob3VsZCBzaG93IHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gdGhlIGBmcm9tYCBhbmQgYHRvYCBzdGF0ZXMuXG4gICAqL1xuICBfZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJRCBvZiB0aGlzIHNvcnQgaGVhZGVyLiBJZiB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBhIENka0NvbHVtbkRlZiwgdGhpcyB3aWxsIGRlZmF1bHQgdG9cbiAgICogdGhlIGNvbHVtbidzIG5hbWUuXG4gICAqL1xuICBASW5wdXQoJ21hdC1zb3J0LWhlYWRlcicpIGlkOiBzdHJpbmc7XG5cbiAgLyoqIFNldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBhcnJvdyB0aGF0IGRpc3BsYXlzIHdoZW4gc29ydGVkLiAqL1xuICBASW5wdXQoKSBhcnJvd1Bvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgPSAnYWZ0ZXInO1xuXG4gIC8qKiBPdmVycmlkZXMgdGhlIHNvcnQgc3RhcnQgdmFsdWUgb2YgdGhlIGNvbnRhaW5pbmcgTWF0U29ydCBmb3IgdGhpcyBNYXRTb3J0YWJsZS4gKi9cbiAgQElucHV0KCkgc3RhcnQ6ICdhc2MnIHwgJ2Rlc2MnO1xuXG4gIC8qKiBPdmVycmlkZXMgdGhlIGRpc2FibGUgY2xlYXIgdmFsdWUgb2YgdGhlIGNvbnRhaW5pbmcgTWF0U29ydCBmb3IgdGhpcyBNYXRTb3J0YWJsZS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVDbGVhcigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVDbGVhcjsgfVxuICBzZXQgZGlzYWJsZUNsZWFyKHYpIHsgdGhpcy5fZGlzYWJsZUNsZWFyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpOyB9XG4gIHByaXZhdGUgX2Rpc2FibGVDbGVhcjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIGBfaW50bGAgcGFyYW1ldGVyIGlzbid0IGJlaW5nIHVzZWQgYW55bW9yZSBhbmQgaXQnbGwgYmUgcmVtb3ZlZC5cbiAgICAgICAgICAgICAgICogQGJyZWFraW5nLWNoYW5nZSAxMy4wLjBcbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIHB1YmxpYyBfaW50bDogTWF0U29ydEhlYWRlckludGwsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgLy8gYE1hdFNvcnRgIGlzIG5vdCBvcHRpb25hbGx5IGluamVjdGVkLCBidXQganVzdCBhc3NlcnRlZCBtYW51YWxseSB3LyBiZXR0ZXIgZXJyb3IuXG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbGlnaHR3ZWlnaHQtdG9rZW5zXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIHB1YmxpYyBfc29ydDogTWF0U29ydCxcbiAgICAgICAgICAgICAgQEluamVjdCgnTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYnKSBAT3B0aW9uYWwoKVxuICAgICAgICAgICAgICAgICAgcHVibGljIF9jb2x1bW5EZWY6IE1hdFNvcnRIZWFkZXJDb2x1bW5EZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgYSBzdHJpbmcgdG9rZW4gZm9yIHRoZSBgX2NvbHVtbkRlZmAsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIHByb3ZpZGVkIGJvdGggYnlcbiAgICAvLyBgbWF0ZXJpYWwvdGFibGVgIGFuZCBgY2RrL3RhYmxlYCBhbmQgd2UgY2FuJ3QgaGF2ZSB0aGUgQ0RLIGRlcGVuZGluZyBvbiBNYXRlcmlhbCxcbiAgICAvLyBhbmQgd2Ugd2FudCB0byBhdm9pZCBoYXZpbmcgdGhlIHNvcnQgaGVhZGVyIGRlcGVuZGluZyBvbiB0aGUgQ0RLIHRhYmxlIGJlY2F1c2VcbiAgICAvLyBvZiB0aGlzIHNpbmdsZSByZWZlcmVuY2UuXG4gICAgc3VwZXIoKTtcblxuICAgIGlmICghX3NvcnQgJiYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcbiAgICAgIHRocm93IGdldFNvcnRIZWFkZXJOb3RDb250YWluZWRXaXRoaW5Tb3J0RXJyb3IoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9oYW5kbGVTdGF0ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5pZCAmJiB0aGlzLl9jb2x1bW5EZWYpIHtcbiAgICAgIHRoaXMuaWQgPSB0aGlzLl9jb2x1bW5EZWYubmFtZTtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGFycm93IGFuZCBzZXQgdGhlIHZpZXcgc3RhdGUgdG8gYmUgaW1tZWRpYXRlbHkgdGhhdCBzdGF0ZS5cbiAgICB0aGlzLl91cGRhdGVBcnJvd0RpcmVjdGlvbigpO1xuICAgIHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZShcbiAgICAgICAge3RvU3RhdGU6IHRoaXMuX2lzU29ydGVkKCkgPyAnYWN0aXZlJyA6IHRoaXMuX2Fycm93RGlyZWN0aW9ufSk7XG5cbiAgICB0aGlzLl9zb3J0LnJlZ2lzdGVyKHRoaXMpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIFdlIHVzZSB0aGUgZm9jdXMgbW9uaXRvciBiZWNhdXNlIHdlIGFsc28gd2FudCB0byBzdHlsZVxuICAgIC8vIHRoaW5ncyBkaWZmZXJlbnRseSBiYXNlZCBvbiB0aGUgZm9jdXMgb3JpZ2luLlxuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgY29uc3QgbmV3U3RhdGUgPSAhIW9yaWdpbjtcbiAgICAgIGlmIChuZXdTdGF0ZSAhPT0gdGhpcy5fc2hvd0luZGljYXRvckhpbnQpIHtcbiAgICAgICAgdGhpcy5fc2V0SW5kaWNhdG9ySGludFZpc2libGUobmV3U3RhdGUpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKTtcbiAgICB0aGlzLl9zb3J0LmRlcmVnaXN0ZXIodGhpcyk7XG4gICAgdGhpcy5fcmVyZW5kZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBcImhpbnRcIiBzdGF0ZSBzdWNoIHRoYXQgdGhlIGFycm93IHdpbGwgYmUgc2VtaS10cmFuc3BhcmVudGx5IGRpc3BsYXllZCBhcyBhIGhpbnQgdG8gdGhlXG4gICAqIHVzZXIgc2hvd2luZyB3aGF0IHRoZSBhY3RpdmUgc29ydCB3aWxsIGJlY29tZS4gSWYgc2V0IHRvIGZhbHNlLCB0aGUgYXJyb3cgd2lsbCBmYWRlIGF3YXkuXG4gICAqL1xuICBfc2V0SW5kaWNhdG9ySGludFZpc2libGUodmlzaWJsZTogYm9vbGVhbikge1xuICAgIC8vIE5vLW9wIGlmIHRoZSBzb3J0IGhlYWRlciBpcyBkaXNhYmxlZCAtIHNob3VsZCBub3QgbWFrZSB0aGUgaGludCB2aXNpYmxlLlxuICAgIGlmICh0aGlzLl9pc0Rpc2FibGVkKCkgJiYgdmlzaWJsZSkgeyByZXR1cm47IH1cblxuICAgIHRoaXMuX3Nob3dJbmRpY2F0b3JIaW50ID0gdmlzaWJsZTtcblxuICAgIGlmICghdGhpcy5faXNTb3J0ZWQoKSkge1xuICAgICAgdGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKTtcbiAgICAgIGlmICh0aGlzLl9zaG93SW5kaWNhdG9ySGludCkge1xuICAgICAgICB0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZTogdGhpcy5fYXJyb3dEaXJlY3Rpb24sIHRvU3RhdGU6ICdoaW50J30pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHtmcm9tU3RhdGU6ICdoaW50JywgdG9TdGF0ZTogdGhpcy5fYXJyb3dEaXJlY3Rpb259KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYW5pbWF0aW9uIHRyYW5zaXRpb24gdmlldyBzdGF0ZSBmb3IgdGhlIGFycm93J3MgcG9zaXRpb24gYW5kIG9wYWNpdHkuIElmIHRoZVxuICAgKiBgZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbmAgZmxhZyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIGBmcm9tU3RhdGVgIHdpbGwgYmUgaWdub3JlZCBzbyB0aGF0XG4gICAqIG5vIGFuaW1hdGlvbiBhcHBlYXJzLlxuICAgKi9cbiAgX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh2aWV3U3RhdGU6IEFycm93Vmlld1N0YXRlVHJhbnNpdGlvbikge1xuICAgIHRoaXMuX3ZpZXdTdGF0ZSA9IHZpZXdTdGF0ZSB8fCB7IH07XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGZvciBhcnJvdyBwb3NpdGlvbiBzdGF0ZSAob3BhY2l0eS90cmFuc2xhdGlvbikgc2hvdWxkIGJlIGRpc2FibGVkLFxuICAgIC8vIHJlbW92ZSB0aGUgZnJvbVN0YXRlIHNvIHRoYXQgaXQganVtcHMgcmlnaHQgdG8gdGhlIHRvU3RhdGUuXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZpZXdTdGF0ZSA9IHt0b1N0YXRlOiB2aWV3U3RhdGUudG9TdGF0ZX07XG4gICAgfVxuICB9XG5cbiAgLyoqIFRyaWdnZXJzIHRoZSBzb3J0IG9uIHRoaXMgc29ydCBoZWFkZXIgYW5kIHJlbW92ZXMgdGhlIGluZGljYXRvciBoaW50LiAqL1xuICBfdG9nZ2xlT25JbnRlcmFjdGlvbigpIHtcbiAgICB0aGlzLl9zb3J0LnNvcnQodGhpcyk7XG5cbiAgICAvLyBEbyBub3Qgc2hvdyB0aGUgYW5pbWF0aW9uIGlmIHRoZSBoZWFkZXIgd2FzIGFscmVhZHkgc2hvd24gaW4gdGhlIHJpZ2h0IHBvc2l0aW9uLlxuICAgIGlmICh0aGlzLl92aWV3U3RhdGUudG9TdGF0ZSA9PT0gJ2hpbnQnIHx8IHRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlID09PSAnYWN0aXZlJykge1xuICAgICAgdGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgX2hhbmRsZUNsaWNrKCkge1xuICAgIGlmICghdGhpcy5faXNEaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLl9zb3J0LnNvcnQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuX2lzRGlzYWJsZWQoKSAmJiAoZXZlbnQua2V5Q29kZSA9PT0gU1BBQ0UgfHwgZXZlbnQua2V5Q29kZSA9PT0gRU5URVIpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fdG9nZ2xlT25JbnRlcmFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgTWF0U29ydEhlYWRlciBpcyBjdXJyZW50bHkgc29ydGVkIGluIGVpdGhlciBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci4gKi9cbiAgX2lzU29ydGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zb3J0LmFjdGl2ZSA9PSB0aGlzLmlkICYmXG4gICAgICAgICh0aGlzLl9zb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYycgfHwgdGhpcy5fc29ydC5kaXJlY3Rpb24gPT09ICdkZXNjJyk7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgYW5pbWF0aW9uIHN0YXRlIGZvciB0aGUgYXJyb3cgZGlyZWN0aW9uIChpbmRpY2F0b3IgYW5kIHBvaW50ZXJzKS4gKi9cbiAgX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuX2lzU29ydGVkKCkgPyAnYWN0aXZlLScgOiAnJ30ke3RoaXMuX2Fycm93RGlyZWN0aW9ufWA7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgYXJyb3cgcG9zaXRpb24gc3RhdGUgKG9wYWNpdHksIHRyYW5zbGF0aW9uKS4gKi9cbiAgX2dldEFycm93Vmlld1N0YXRlKCkge1xuICAgIGNvbnN0IGZyb21TdGF0ZSA9IHRoaXMuX3ZpZXdTdGF0ZS5mcm9tU3RhdGU7XG4gICAgcmV0dXJuIChmcm9tU3RhdGUgPyBgJHtmcm9tU3RhdGV9LXRvLWAgOiAnJykgKyB0aGlzLl92aWV3U3RhdGUudG9TdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkaXJlY3Rpb24gdGhlIGFycm93IHNob3VsZCBiZSBwb2ludGluZy4gSWYgaXQgaXMgbm90IHNvcnRlZCwgdGhlIGFycm93IHNob3VsZCBiZVxuICAgKiBmYWNpbmcgdGhlIHN0YXJ0IGRpcmVjdGlvbi4gT3RoZXJ3aXNlIGlmIGl0IGlzIHNvcnRlZCwgdGhlIGFycm93IHNob3VsZCBwb2ludCBpbiB0aGUgY3VycmVudGx5XG4gICAqIGFjdGl2ZSBzb3J0ZWQgZGlyZWN0aW9uLiBUaGUgcmVhc29uIHRoaXMgaXMgdXBkYXRlZCB0aHJvdWdoIGEgZnVuY3Rpb24gaXMgYmVjYXVzZSB0aGUgZGlyZWN0aW9uXG4gICAqIHNob3VsZCBvbmx5IGJlIGNoYW5nZWQgYXQgc3BlY2lmaWMgdGltZXMgLSB3aGVuIGRlYWN0aXZhdGVkIGJ1dCB0aGUgaGludCBpcyBkaXNwbGF5ZWQgYW5kIHdoZW5cbiAgICogdGhlIHNvcnQgaXMgYWN0aXZlIGFuZCB0aGUgZGlyZWN0aW9uIGNoYW5nZXMuIE90aGVyd2lzZSB0aGUgYXJyb3cncyBkaXJlY3Rpb24gc2hvdWxkIGxpbmdlclxuICAgKiBpbiBjYXNlcyBzdWNoIGFzIHRoZSBzb3J0IGJlY29taW5nIGRlYWN0aXZhdGVkIGJ1dCB3ZSB3YW50IHRvIGFuaW1hdGUgdGhlIGFycm93IGF3YXkgd2hpbGVcbiAgICogcHJlc2VydmluZyBpdHMgZGlyZWN0aW9uLCBldmVuIHRob3VnaCB0aGUgbmV4dCBzb3J0IGRpcmVjdGlvbiBpcyBhY3R1YWxseSBkaWZmZXJlbnQgYW5kIHNob3VsZFxuICAgKiBvbmx5IGJlIGNoYW5nZWQgb25jZSB0aGUgYXJyb3cgZGlzcGxheXMgYWdhaW4gKGhpbnQgb3IgYWN0aXZhdGlvbikuXG4gICAqL1xuICBfdXBkYXRlQXJyb3dEaXJlY3Rpb24oKSB7XG4gICAgdGhpcy5fYXJyb3dEaXJlY3Rpb24gPSB0aGlzLl9pc1NvcnRlZCgpID9cbiAgICAgICAgdGhpcy5fc29ydC5kaXJlY3Rpb24gOlxuICAgICAgICAodGhpcy5zdGFydCB8fCB0aGlzLl9zb3J0LnN0YXJ0KTtcbiAgfVxuXG4gIF9pc0Rpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zb3J0LmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYXJpYS1zb3J0IGF0dHJpYnV0ZSB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoaXMgc29ydCBoZWFkZXIuIElmIHRoaXMgaGVhZGVyXG4gICAqIGlzIG5vdCBzb3J0ZWQsIHJldHVybnMgbnVsbCBzbyB0aGF0IHRoZSBhdHRyaWJ1dGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBob3N0IGVsZW1lbnQuIEFyaWEgc3BlY1xuICAgKiBzYXlzIHRoYXQgdGhlIGFyaWEtc29ydCBwcm9wZXJ0eSBzaG91bGQgb25seSBiZSBwcmVzZW50IG9uIG9uZSBoZWFkZXIgYXQgYSB0aW1lLCBzbyByZW1vdmluZ1xuICAgKiBlbnN1cmVzIHRoaXMgaXMgdHJ1ZS5cbiAgICovXG4gIF9nZXRBcmlhU29ydEF0dHJpYnV0ZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU29ydGVkKCkpIHtcbiAgICAgIHJldHVybiAnbm9uZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NvcnQuZGlyZWN0aW9uID09ICdhc2MnID8gJ2FzY2VuZGluZycgOiAnZGVzY2VuZGluZyc7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgYXJyb3cgaW5zaWRlIHRoZSBzb3J0IGhlYWRlciBzaG91bGQgYmUgcmVuZGVyZWQuICovXG4gIF9yZW5kZXJBcnJvdygpIHtcbiAgICByZXR1cm4gIXRoaXMuX2lzRGlzYWJsZWQoKSB8fCB0aGlzLl9pc1NvcnRlZCgpO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMgY2hhbmdlcyBpbiB0aGUgc29ydGluZyBzdGF0ZS4gKi9cbiAgcHJpdmF0ZSBfaGFuZGxlU3RhdGVDaGFuZ2VzKCkge1xuICAgIHRoaXMuX3JlcmVuZGVyU3Vic2NyaXB0aW9uID1cbiAgICAgIG1lcmdlKHRoaXMuX3NvcnQuc29ydENoYW5nZSwgdGhpcy5fc29ydC5fc3RhdGVDaGFuZ2VzLCB0aGlzLl9pbnRsLmNoYW5nZXMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1NvcnRlZCgpKSB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKTtcblxuICAgICAgICAgIC8vIERvIG5vdCBzaG93IHRoZSBhbmltYXRpb24gaWYgdGhlIGhlYWRlciB3YXMgYWxyZWFkeSBzaG93biBpbiB0aGUgcmlnaHQgcG9zaXRpb24uXG4gICAgICAgICAgaWYgKHRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlID09PSAnaGludCcgfHwgdGhpcy5fdmlld1N0YXRlLnRvU3RhdGUgPT09ICdhY3RpdmUnKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZTogdGhpcy5fYXJyb3dEaXJlY3Rpb24sIHRvU3RhdGU6ICdhY3RpdmUnfSk7XG4gICAgICAgICAgdGhpcy5fc2hvd0luZGljYXRvckhpbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoaXMgaGVhZGVyIHdhcyByZWNlbnRseSBhY3RpdmUgYW5kIG5vdyBubyBsb25nZXIgc29ydGVkLCBhbmltYXRlIGF3YXkgdGhlIGFycm93LlxuICAgICAgICBpZiAoIXRoaXMuX2lzU29ydGVkKCkgJiYgdGhpcy5fdmlld1N0YXRlICYmIHRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlID09PSAnYWN0aXZlJykge1xuICAgICAgICAgIHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZTogJ2FjdGl2ZScsIHRvU3RhdGU6IHRoaXMuX2Fycm93RGlyZWN0aW9ufSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVDbGVhcjogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbn1cbiJdfQ==
     304//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1oZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc29ydC9zb3J0LWhlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxLQUFLLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLE9BQU8sRUFBYyxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsd0NBQXdDLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFHckQsc0RBQXNEO0FBQ3RELG9CQUFvQjtBQUNwQixNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztDQUFRLENBQUMsQ0FBQztBQTJCbkQ7Ozs7Ozs7O0dBUUc7QUEyQkgsTUFBTSxPQUFPLGFBQWMsU0FBUSxrQkFBa0I7SUFpRW5EO0lBQ1k7OztPQUdHO0lBQ0ksS0FBd0IsRUFDdkIsa0JBQXFDO0lBQzdDLG9GQUFvRjtJQUNwRiwrQ0FBK0M7SUFDNUIsS0FBYyxFQUV0QixVQUFr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QUFZO1lBUWpDLFVBQVU7WUFSSixhQUFhLHVCQXlLTixNQUFNLFNBQUMsYUFBYSxjQUFHLFFBQVE7OztpQkE3QzNDLEtBQUssU0FBQyxpQkFBaUI7NEJBR3ZCLEtBQUs7b0JBR0wsS0FBSztvQ0FNTCxLQUFLOzJCQWFMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtBcmlhRGVzY3JpYmVyLCBGb2N1c01vbml0b3J9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0VOVEVSLCBTUEFDRX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2FuRGlzYWJsZSwgbWl4aW5EaXNhYmxlZH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge21lcmdlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtNYXRTb3J0LCBNYXRTb3J0YWJsZX0gZnJvbSAnLi9zb3J0JztcbmltcG9ydCB7bWF0U29ydEFuaW1hdGlvbnN9IGZyb20gJy4vc29ydC1hbmltYXRpb25zJztcbmltcG9ydCB7U29ydERpcmVjdGlvbn0gZnJvbSAnLi9zb3J0LWRpcmVjdGlvbic7XG5pbXBvcnQge2dldFNvcnRIZWFkZXJOb3RDb250YWluZWRXaXRoaW5Tb3J0RXJyb3J9IGZyb20gJy4vc29ydC1lcnJvcnMnO1xuaW1wb3J0IHtNYXRTb3J0SGVhZGVySW50bH0gZnJvbSAnLi9zb3J0LWhlYWRlci1pbnRsJztcblxuXG4vLyBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvIHRoZSBzb3J0IGhlYWRlci5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5jb25zdCBfTWF0U29ydEhlYWRlckJhc2UgPSBtaXhpbkRpc2FibGVkKGNsYXNzIHt9KTtcblxuLyoqXG4gKiBWYWxpZCBwb3NpdGlvbnMgZm9yIHRoZSBhcnJvdyB0byBiZSBpbiBmb3IgaXRzIG9wYWNpdHkgYW5kIHRyYW5zbGF0aW9uLiBJZiB0aGUgc3RhdGUgaXMgYVxuICogc29ydCBkaXJlY3Rpb24sIHRoZSBwb3NpdGlvbiBvZiB0aGUgYXJyb3cgd2lsbCBiZSBhYm92ZS9iZWxvdyBhbmQgb3BhY2l0eSAwLiBJZiB0aGUgc3RhdGUgaXNcbiAqIGhpbnQsIHRoZSBhcnJvdyB3aWxsIGJlIGluIHRoZSBjZW50ZXIgd2l0aCBhIHNsaWdodCBvcGFjaXR5LiBBY3RpdmUgc3RhdGUgbWVhbnMgdGhlIGFycm93IHdpbGxcbiAqIGJlIGZ1bGx5IG9wYXF1ZSBpbiB0aGUgY2VudGVyLlxuICpcbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IHR5cGUgQXJyb3dWaWV3U3RhdGUgPSBTb3J0RGlyZWN0aW9uIHwgJ2hpbnQnIHwgJ2FjdGl2ZSc7XG5cbi8qKlxuICogU3RhdGVzIGRlc2NyaWJpbmcgdGhlIGFycm93J3MgYW5pbWF0ZWQgcG9zaXRpb24gKGFuaW1hdGluZyBmcm9tU3RhdGUgdG8gdG9TdGF0ZSkuXG4gKiBJZiB0aGUgZnJvbVN0YXRlIGlzIG5vdCBkZWZpbmVkLCB0aGVyZSB3aWxsIGJlIG5vIGFuaW1hdGVkIHRyYW5zaXRpb24gdG8gdGhlIHRvU3RhdGUuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJyb3dWaWV3U3RhdGVUcmFuc2l0aW9uIHtcbiAgZnJvbVN0YXRlPzogQXJyb3dWaWV3U3RhdGU7XG4gIHRvU3RhdGU/OiBBcnJvd1ZpZXdTdGF0ZTtcbn1cblxuLyoqIENvbHVtbiBkZWZpbml0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIGBNYXRTb3J0SGVhZGVyYC4gKi9cbmludGVyZmFjZSBNYXRTb3J0SGVhZGVyQ29sdW1uRGVmIHtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgc29ydGluZyBiZWhhdmlvciAoY2xpY2sgdG8gY2hhbmdlIHNvcnQpIGFuZCBzdHlsZXMgdG8gYW4gZWxlbWVudCwgaW5jbHVkaW5nIGFuXG4gKiBhcnJvdyB0byBkaXNwbGF5IHRoZSBjdXJyZW50IHNvcnQgZGlyZWN0aW9uLlxuICpcbiAqIE11c3QgYmUgcHJvdmlkZWQgd2l0aCBhbiBpZCBhbmQgY29udGFpbmVkIHdpdGhpbiBhIHBhcmVudCBNYXRTb3J0IGRpcmVjdGl2ZS5cbiAqXG4gKiBJZiB1c2VkIG9uIGhlYWRlciBjZWxscyBpbiBhIENka1RhYmxlLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGVmYXVsdCBpdHMgaWQgZnJvbSBpdHMgY29udGFpbmluZ1xuICogY29sdW1uIGRlZmluaXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1ttYXQtc29ydC1oZWFkZXJdJyxcbiAgZXhwb3J0QXM6ICdtYXRTb3J0SGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICdzb3J0LWhlYWRlci5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3NvcnQtaGVhZGVyLmNzcyddLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ21hdC1zb3J0LWhlYWRlcicsXG4gICAgJyhjbGljayknOiAnX2hhbmRsZUNsaWNrKCknLFxuICAgICcoa2V5ZG93biknOiAnX2hhbmRsZUtleWRvd24oJGV2ZW50KScsXG4gICAgJyhtb3VzZWVudGVyKSc6ICdfc2V0SW5kaWNhdG9ySGludFZpc2libGUodHJ1ZSknLFxuICAgICcobW91c2VsZWF2ZSknOiAnX3NldEluZGljYXRvckhpbnRWaXNpYmxlKGZhbHNlKScsXG4gICAgJ1thdHRyLmFyaWEtc29ydF0nOiAnX2dldEFyaWFTb3J0QXR0cmlidXRlKCknLFxuICAgICdbY2xhc3MubWF0LXNvcnQtaGVhZGVyLWRpc2FibGVkXSc6ICdfaXNEaXNhYmxlZCgpJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogWydkaXNhYmxlZCddLFxuICBhbmltYXRpb25zOiBbXG4gICAgbWF0U29ydEFuaW1hdGlvbnMuaW5kaWNhdG9yLFxuICAgIG1hdFNvcnRBbmltYXRpb25zLmxlZnRQb2ludGVyLFxuICAgIG1hdFNvcnRBbmltYXRpb25zLnJpZ2h0UG9pbnRlcixcbiAgICBtYXRTb3J0QW5pbWF0aW9ucy5hcnJvd09wYWNpdHksXG4gICAgbWF0U29ydEFuaW1hdGlvbnMuYXJyb3dQb3NpdGlvbixcbiAgICBtYXRTb3J0QW5pbWF0aW9ucy5hbGxvd0NoaWxkcmVuLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1hdFNvcnRIZWFkZXIgZXh0ZW5kcyBfTWF0U29ydEhlYWRlckJhc2VcbiAgICBpbXBsZW1lbnRzIENhbkRpc2FibGUsIE1hdFNvcnRhYmxlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgX3JlcmVuZGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdpdGggcm9sZT1cImJ1dHRvblwiIGluc2lkZSB0aGlzIGNvbXBvbmVudCdzIHZpZXcuIFdlIG5lZWQgdGhpc1xuICAgKiBpbiBvcmRlciB0byBhcHBseSBhIGRlc2NyaXB0aW9uIHdpdGggQXJpYURlc2NyaWJlci5cbiAgICovXG4gIHByaXZhdGUgX3NvcnRCdXR0b246IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBGbGFnIHNldCB0byB0cnVlIHdoZW4gdGhlIGluZGljYXRvciBzaG91bGQgYmUgZGlzcGxheWVkIHdoaWxlIHRoZSBzb3J0IGlzIG5vdCBhY3RpdmUuIFVzZWQgdG9cbiAgICogcHJvdmlkZSBhbiBhZmZvcmRhbmNlIHRoYXQgdGhlIGhlYWRlciBpcyBzb3J0YWJsZSBieSBzaG93aW5nIG9uIGZvY3VzIGFuZCBob3Zlci5cbiAgICovXG4gIF9zaG93SW5kaWNhdG9ySGludDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdmlldyB0cmFuc2l0aW9uIHN0YXRlIG9mIHRoZSBhcnJvdyAodHJhbnNsYXRpb24vIG9wYWNpdHkpIC0gaW5kaWNhdGVzIGl0cyBgZnJvbWAgYW5kIGB0b2BcbiAgICogcG9zaXRpb24gdGhyb3VnaCB0aGUgYW5pbWF0aW9uLiBJZiBhbmltYXRpb25zIGFyZSBjdXJyZW50bHkgZGlzYWJsZWQsIHRoZSBmcm9tU3RhdGUgaXMgcmVtb3ZlZFxuICAgKiBzbyB0aGF0IHRoZXJlIGlzIG5vIGFuaW1hdGlvbiBkaXNwbGF5ZWQuXG4gICAqL1xuICBfdmlld1N0YXRlOiBBcnJvd1ZpZXdTdGF0ZVRyYW5zaXRpb24gPSB7IH07XG5cbiAgLyoqIFRoZSBkaXJlY3Rpb24gdGhlIGFycm93IHNob3VsZCBiZSBmYWNpbmcgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IHN0YXRlLiAqL1xuICBfYXJyb3dEaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSAnJztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdmlldyBzdGF0ZSBhbmltYXRpb24gc2hvdWxkIHNob3cgdGhlIHRyYW5zaXRpb24gYmV0d2VlbiB0aGUgYGZyb21gIGFuZCBgdG9gIHN0YXRlcy5cbiAgICovXG4gIF9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElEIG9mIHRoaXMgc29ydCBoZWFkZXIuIElmIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgQ2RrQ29sdW1uRGVmLCB0aGlzIHdpbGwgZGVmYXVsdCB0b1xuICAgKiB0aGUgY29sdW1uJ3MgbmFtZS5cbiAgICovXG4gIEBJbnB1dCgnbWF0LXNvcnQtaGVhZGVyJykgaWQ6IHN0cmluZztcblxuICAvKiogU2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGFycm93IHRoYXQgZGlzcGxheXMgd2hlbiBzb3J0ZWQuICovXG4gIEBJbnB1dCgpIGFycm93UG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJyA9ICdhZnRlcic7XG5cbiAgLyoqIE92ZXJyaWRlcyB0aGUgc29ydCBzdGFydCB2YWx1ZSBvZiB0aGUgY29udGFpbmluZyBNYXRTb3J0IGZvciB0aGlzIE1hdFNvcnRhYmxlLiAqL1xuICBASW5wdXQoKSBzdGFydDogJ2FzYycgfCAnZGVzYyc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGFwcGxpZWQgdG8gTWF0U29ydEhlYWRlcidzIGJ1dHRvbiBlbGVtZW50IHdpdGggYXJpYS1kZXNjcmliZWRieS4gVGhpcyB0ZXh0IHNob3VsZFxuICAgKiBkZXNjcmliZSB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgc29ydCBoZWFkZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc29ydEFjdGlvbkRlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnRBY3Rpb25EZXNjcmlwdGlvbjtcbiAgfVxuICBzZXQgc29ydEFjdGlvbkRlc2NyaXB0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl91cGRhdGVTb3J0QWN0aW9uRGVzY3JpcHRpb24odmFsdWUpO1xuICB9XG4gIC8vIERlZmF1bHQgdGhlIGFjdGlvbiBkZXNjcmlwdGlvbiB0byBcIlNvcnRcIiBiZWNhdXNlIGl0J3MgYmV0dGVyIHRoYW4gbm90aGluZy5cbiAgLy8gV2l0aG91dCBhIGRlc2NyaXB0aW9uLCB0aGUgYnV0dG9uJ3MgbGFiZWwgY29tZXMgZnJvbSB0aGUgc29ydCBoZWFkZXIgdGV4dCBjb250ZW50LFxuICAvLyB3aGljaCBkb2Vzbid0IGdpdmUgYW55IGluZGljYXRpb24gdGhhdCBpdCBwZXJmb3JtcyBhIHNvcnRpbmcgb3BlcmF0aW9uLlxuICBwcml2YXRlIF9zb3J0QWN0aW9uRGVzY3JpcHRpb246IHN0cmluZyA9ICdTb3J0JztcblxuICAvKiogT3ZlcnJpZGVzIHRoZSBkaXNhYmxlIGNsZWFyIHZhbHVlIG9mIHRoZSBjb250YWluaW5nIE1hdFNvcnQgZm9yIHRoaXMgTWF0U29ydGFibGUuICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlQ2xlYXIoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlQ2xlYXI7IH1cbiAgc2V0IGRpc2FibGVDbGVhcih2KSB7IHRoaXMuX2Rpc2FibGVDbGVhciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTsgfVxuICBwcml2YXRlIF9kaXNhYmxlQ2xlYXI6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBgX2ludGxgIHBhcmFtZXRlciBpc24ndCBiZWluZyB1c2VkIGFueW1vcmUgYW5kIGl0J2xsIGJlIHJlbW92ZWQuXG4gICAgICAgICAgICAgICAqIEBicmVha2luZy1jaGFuZ2UgMTMuMC4wXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBwdWJsaWMgX2ludGw6IE1hdFNvcnRIZWFkZXJJbnRsLFxuICAgICAgICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIC8vIGBNYXRTb3J0YCBpcyBub3Qgb3B0aW9uYWxseSBpbmplY3RlZCwgYnV0IGp1c3QgYXNzZXJ0ZWQgbWFudWFsbHkgdy8gYmV0dGVyIGVycm9yLlxuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGxpZ2h0d2VpZ2h0LXRva2Vuc1xuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgX3NvcnQ6IE1hdFNvcnQsXG4gICAgICAgICAgICAgIEBJbmplY3QoJ01BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGJykgQE9wdGlvbmFsKClcbiAgICAgICAgICAgICAgICAgIHB1YmxpYyBfY29sdW1uRGVmOiBNYXRTb3J0SGVhZGVyQ29sdW1uRGVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgICAgICAgIC8qKiBAYnJlYWtpbmctY2hhbmdlIDE0LjAuMCBfYXJpYURlc2NyaWJlciB3aWxsIGJlIHJlcXVpcmVkLiAqL1xuICAgICAgICAgICAgICBASW5qZWN0KEFyaWFEZXNjcmliZXIpIEBPcHRpb25hbCgpIHByaXZhdGUgX2FyaWFEZXNjcmliZXI/OiBBcmlhRGVzY3JpYmVyIHwgbnVsbCkge1xuICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgYSBzdHJpbmcgdG9rZW4gZm9yIHRoZSBgX2NvbHVtbkRlZmAsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIHByb3ZpZGVkIGJvdGggYnlcbiAgICAvLyBgbWF0ZXJpYWwvdGFibGVgIGFuZCBgY2RrL3RhYmxlYCBhbmQgd2UgY2FuJ3QgaGF2ZSB0aGUgQ0RLIGRlcGVuZGluZyBvbiBNYXRlcmlhbCxcbiAgICAvLyBhbmQgd2Ugd2FudCB0byBhdm9pZCBoYXZpbmcgdGhlIHNvcnQgaGVhZGVyIGRlcGVuZGluZyBvbiB0aGUgQ0RLIHRhYmxlIGJlY2F1c2VcbiAgICAvLyBvZiB0aGlzIHNpbmdsZSByZWZlcmVuY2UuXG4gICAgc3VwZXIoKTtcblxuICAgIGlmICghX3NvcnQgJiYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcbiAgICAgIHRocm93IGdldFNvcnRIZWFkZXJOb3RDb250YWluZWRXaXRoaW5Tb3J0RXJyb3IoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9oYW5kbGVTdGF0ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5pZCAmJiB0aGlzLl9jb2x1bW5EZWYpIHtcbiAgICAgIHRoaXMuaWQgPSB0aGlzLl9jb2x1bW5EZWYubmFtZTtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGFycm93IGFuZCBzZXQgdGhlIHZpZXcgc3RhdGUgdG8gYmUgaW1tZWRpYXRlbHkgdGhhdCBzdGF0ZS5cbiAgICB0aGlzLl91cGRhdGVBcnJvd0RpcmVjdGlvbigpO1xuICAgIHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZShcbiAgICAgICAge3RvU3RhdGU6IHRoaXMuX2lzU29ydGVkKCkgPyAnYWN0aXZlJyA6IHRoaXMuX2Fycm93RGlyZWN0aW9ufSk7XG5cbiAgICB0aGlzLl9zb3J0LnJlZ2lzdGVyKHRoaXMpO1xuXG4gICAgdGhpcy5fc29ydEJ1dHRvbiA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbcm9sZT1cImJ1dHRvblwiXScpITtcbiAgICB0aGlzLl91cGRhdGVTb3J0QWN0aW9uRGVzY3JpcHRpb24odGhpcy5fc29ydEFjdGlvbkRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBXZSB1c2UgdGhlIGZvY3VzIG1vbml0b3IgYmVjYXVzZSB3ZSBhbHNvIHdhbnQgdG8gc3R5bGVcbiAgICAvLyB0aGluZ3MgZGlmZmVyZW50bHkgYmFzZWQgb24gdGhlIGZvY3VzIG9yaWdpbi5cbiAgICB0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCB0cnVlKS5zdWJzY3JpYmUob3JpZ2luID0+IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0gISFvcmlnaW47XG4gICAgICBpZiAobmV3U3RhdGUgIT09IHRoaXMuX3Nob3dJbmRpY2F0b3JIaW50KSB7XG4gICAgICAgIHRoaXMuX3NldEluZGljYXRvckhpbnRWaXNpYmxlKG5ld1N0YXRlKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZik7XG4gICAgdGhpcy5fc29ydC5kZXJlZ2lzdGVyKHRoaXMpO1xuICAgIHRoaXMuX3JlcmVuZGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgXCJoaW50XCIgc3RhdGUgc3VjaCB0aGF0IHRoZSBhcnJvdyB3aWxsIGJlIHNlbWktdHJhbnNwYXJlbnRseSBkaXNwbGF5ZWQgYXMgYSBoaW50IHRvIHRoZVxuICAgKiB1c2VyIHNob3dpbmcgd2hhdCB0aGUgYWN0aXZlIHNvcnQgd2lsbCBiZWNvbWUuIElmIHNldCB0byBmYWxzZSwgdGhlIGFycm93IHdpbGwgZmFkZSBhd2F5LlxuICAgKi9cbiAgX3NldEluZGljYXRvckhpbnRWaXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICAvLyBOby1vcCBpZiB0aGUgc29ydCBoZWFkZXIgaXMgZGlzYWJsZWQgLSBzaG91bGQgbm90IG1ha2UgdGhlIGhpbnQgdmlzaWJsZS5cbiAgICBpZiAodGhpcy5faXNEaXNhYmxlZCgpICYmIHZpc2libGUpIHsgcmV0dXJuOyB9XG5cbiAgICB0aGlzLl9zaG93SW5kaWNhdG9ySGludCA9IHZpc2libGU7XG5cbiAgICBpZiAoIXRoaXMuX2lzU29ydGVkKCkpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUFycm93RGlyZWN0aW9uKCk7XG4gICAgICBpZiAodGhpcy5fc2hvd0luZGljYXRvckhpbnQpIHtcbiAgICAgICAgdGhpcy5fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHtmcm9tU3RhdGU6IHRoaXMuX2Fycm93RGlyZWN0aW9uLCB0b1N0YXRlOiAnaGludCd9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh7ZnJvbVN0YXRlOiAnaGludCcsIHRvU3RhdGU6IHRoaXMuX2Fycm93RGlyZWN0aW9ufSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFuaW1hdGlvbiB0cmFuc2l0aW9uIHZpZXcgc3RhdGUgZm9yIHRoZSBhcnJvdydzIHBvc2l0aW9uIGFuZCBvcGFjaXR5LiBJZiB0aGVcbiAgICogYGRpc2FibGVWaWV3U3RhdGVBbmltYXRpb25gIGZsYWcgaXMgc2V0IHRvIHRydWUsIHRoZSBgZnJvbVN0YXRlYCB3aWxsIGJlIGlnbm9yZWQgc28gdGhhdFxuICAgKiBubyBhbmltYXRpb24gYXBwZWFycy5cbiAgICovXG4gIF9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUodmlld1N0YXRlOiBBcnJvd1ZpZXdTdGF0ZVRyYW5zaXRpb24pIHtcbiAgICB0aGlzLl92aWV3U3RhdGUgPSB2aWV3U3RhdGUgfHwgeyB9O1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBmb3IgYXJyb3cgcG9zaXRpb24gc3RhdGUgKG9wYWNpdHkvdHJhbnNsYXRpb24pIHNob3VsZCBiZSBkaXNhYmxlZCxcbiAgICAvLyByZW1vdmUgdGhlIGZyb21TdGF0ZSBzbyB0aGF0IGl0IGp1bXBzIHJpZ2h0IHRvIHRoZSB0b1N0YXRlLlxuICAgIGlmICh0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uKSB7XG4gICAgICB0aGlzLl92aWV3U3RhdGUgPSB7dG9TdGF0ZTogdmlld1N0YXRlLnRvU3RhdGV9O1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUcmlnZ2VycyB0aGUgc29ydCBvbiB0aGlzIHNvcnQgaGVhZGVyIGFuZCByZW1vdmVzIHRoZSBpbmRpY2F0b3IgaGludC4gKi9cbiAgX3RvZ2dsZU9uSW50ZXJhY3Rpb24oKSB7XG4gICAgdGhpcy5fc29ydC5zb3J0KHRoaXMpO1xuXG4gICAgLy8gRG8gbm90IHNob3cgdGhlIGFuaW1hdGlvbiBpZiB0aGUgaGVhZGVyIHdhcyBhbHJlYWR5IHNob3duIGluIHRoZSByaWdodCBwb3NpdGlvbi5cbiAgICBpZiAodGhpcy5fdmlld1N0YXRlLnRvU3RhdGUgPT09ICdoaW50JyB8fCB0aGlzLl92aWV3U3RhdGUudG9TdGF0ZSA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVDbGljaygpIHtcbiAgICBpZiAoIXRoaXMuX2lzRGlzYWJsZWQoKSkge1xuICAgICAgdGhpcy5fc29ydC5zb3J0KHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLl9pc0Rpc2FibGVkKCkgJiYgKGV2ZW50LmtleUNvZGUgPT09IFNQQUNFIHx8IGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuX3RvZ2dsZU9uSW50ZXJhY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIE1hdFNvcnRIZWFkZXIgaXMgY3VycmVudGx5IHNvcnRlZCBpbiBlaXRoZXIgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIuICovXG4gIF9pc1NvcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydC5hY3RpdmUgPT0gdGhpcy5pZCAmJlxuICAgICAgICAodGhpcy5fc29ydC5kaXJlY3Rpb24gPT09ICdhc2MnIHx8IHRoaXMuX3NvcnQuZGlyZWN0aW9uID09PSAnZGVzYycpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGFuaW1hdGlvbiBzdGF0ZSBmb3IgdGhlIGFycm93IGRpcmVjdGlvbiAoaW5kaWNhdG9yIGFuZCBwb2ludGVycykuICovXG4gIF9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkge1xuICAgIHJldHVybiBgJHt0aGlzLl9pc1NvcnRlZCgpID8gJ2FjdGl2ZS0nIDogJyd9JHt0aGlzLl9hcnJvd0RpcmVjdGlvbn1gO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGFycm93IHBvc2l0aW9uIHN0YXRlIChvcGFjaXR5LCB0cmFuc2xhdGlvbikuICovXG4gIF9nZXRBcnJvd1ZpZXdTdGF0ZSgpIHtcbiAgICBjb25zdCBmcm9tU3RhdGUgPSB0aGlzLl92aWV3U3RhdGUuZnJvbVN0YXRlO1xuICAgIHJldHVybiAoZnJvbVN0YXRlID8gYCR7ZnJvbVN0YXRlfS10by1gIDogJycpICsgdGhpcy5fdmlld1N0YXRlLnRvU3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZGlyZWN0aW9uIHRoZSBhcnJvdyBzaG91bGQgYmUgcG9pbnRpbmcuIElmIGl0IGlzIG5vdCBzb3J0ZWQsIHRoZSBhcnJvdyBzaG91bGQgYmVcbiAgICogZmFjaW5nIHRoZSBzdGFydCBkaXJlY3Rpb24uIE90aGVyd2lzZSBpZiBpdCBpcyBzb3J0ZWQsIHRoZSBhcnJvdyBzaG91bGQgcG9pbnQgaW4gdGhlIGN1cnJlbnRseVxuICAgKiBhY3RpdmUgc29ydGVkIGRpcmVjdGlvbi4gVGhlIHJlYXNvbiB0aGlzIGlzIHVwZGF0ZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIGlzIGJlY2F1c2UgdGhlIGRpcmVjdGlvblxuICAgKiBzaG91bGQgb25seSBiZSBjaGFuZ2VkIGF0IHNwZWNpZmljIHRpbWVzIC0gd2hlbiBkZWFjdGl2YXRlZCBidXQgdGhlIGhpbnQgaXMgZGlzcGxheWVkIGFuZCB3aGVuXG4gICAqIHRoZSBzb3J0IGlzIGFjdGl2ZSBhbmQgdGhlIGRpcmVjdGlvbiBjaGFuZ2VzLiBPdGhlcndpc2UgdGhlIGFycm93J3MgZGlyZWN0aW9uIHNob3VsZCBsaW5nZXJcbiAgICogaW4gY2FzZXMgc3VjaCBhcyB0aGUgc29ydCBiZWNvbWluZyBkZWFjdGl2YXRlZCBidXQgd2Ugd2FudCB0byBhbmltYXRlIHRoZSBhcnJvdyBhd2F5IHdoaWxlXG4gICAqIHByZXNlcnZpbmcgaXRzIGRpcmVjdGlvbiwgZXZlbiB0aG91Z2ggdGhlIG5leHQgc29ydCBkaXJlY3Rpb24gaXMgYWN0dWFsbHkgZGlmZmVyZW50IGFuZCBzaG91bGRcbiAgICogb25seSBiZSBjaGFuZ2VkIG9uY2UgdGhlIGFycm93IGRpc3BsYXlzIGFnYWluIChoaW50IG9yIGFjdGl2YXRpb24pLlxuICAgKi9cbiAgX3VwZGF0ZUFycm93RGlyZWN0aW9uKCkge1xuICAgIHRoaXMuX2Fycm93RGlyZWN0aW9uID0gdGhpcy5faXNTb3J0ZWQoKSA/XG4gICAgICAgIHRoaXMuX3NvcnQuZGlyZWN0aW9uIDpcbiAgICAgICAgKHRoaXMuc3RhcnQgfHwgdGhpcy5fc29ydC5zdGFydCk7XG4gIH1cblxuICBfaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFyaWEtc29ydCBhdHRyaWJ1dGUgdGhhdCBzaG91bGQgYmUgYXBwbGllZCB0byB0aGlzIHNvcnQgaGVhZGVyLiBJZiB0aGlzIGhlYWRlclxuICAgKiBpcyBub3Qgc29ydGVkLCByZXR1cm5zIG51bGwgc28gdGhhdCB0aGUgYXR0cmlidXRlIGlzIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBlbGVtZW50LiBBcmlhIHNwZWNcbiAgICogc2F5cyB0aGF0IHRoZSBhcmlhLXNvcnQgcHJvcGVydHkgc2hvdWxkIG9ubHkgYmUgcHJlc2VudCBvbiBvbmUgaGVhZGVyIGF0IGEgdGltZSwgc28gcmVtb3ZpbmdcbiAgICogZW5zdXJlcyB0aGlzIGlzIHRydWUuXG4gICAqL1xuICBfZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1NvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gJ25vbmUnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zb3J0LmRpcmVjdGlvbiA9PSAnYXNjJyA/ICdhc2NlbmRpbmcnIDogJ2Rlc2NlbmRpbmcnO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGFycm93IGluc2lkZSB0aGUgc29ydCBoZWFkZXIgc2hvdWxkIGJlIHJlbmRlcmVkLiAqL1xuICBfcmVuZGVyQXJyb3coKSB7XG4gICAgcmV0dXJuICF0aGlzLl9pc0Rpc2FibGVkKCkgfHwgdGhpcy5faXNTb3J0ZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNvcnRBY3Rpb25EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgLy8gV2UgdXNlIEFyaWFEZXNjcmliZXIgZm9yIHRoZSBzb3J0IGJ1dHRvbiBpbnN0ZWFkIG9mIHNldHRpbmcgYW4gYGFyaWEtbGFiZWxgIGJlY2F1c2Ugc29tZVxuICAgIC8vIHNjcmVlbiByZWFkZXJzIChub3RhYmx5IFZvaWNlT3Zlcikgd2lsbCByZWFkIGJvdGggdGhlIGNvbHVtbiBoZWFkZXIgKmFuZCogdGhlIGJ1dHRvbidzIGxhYmVsXG4gICAgLy8gZm9yIGV2ZXJ5ICpjZWxsKiBpbiB0aGUgdGFibGUsIGNyZWF0aW5nIGEgbG90IG9mIHVubmVjZXNzYXJ5IG5vaXNlLlxuXG4gICAgLy8gSWYgX3NvcnRCdXR0b24gaXMgdW5kZWZpbmVkLCB0aGUgY29tcG9uZW50IGhhc24ndCBiZWVuIGluaXRpYWxpemVkIHlldCBzbyB0aGVyZSdzXG4gICAgLy8gbm90aGluZyB0byB1cGRhdGUgaW4gdGhlIERPTS5cbiAgICBpZiAodGhpcy5fc29ydEJ1dHRvbikge1xuICAgICAgLy8gcmVtb3ZlRGVzY3JpcHRpb24gd2lsbCBuby1vcCBpZiB0aGVyZSBpcyBubyBleGlzdGluZyBtZXNzYWdlLlxuICAgICAgLy8gVE9ETyhqZWxib3Vybik6IHJlbW92ZSBvcHRpb25hbCBjaGFpbmluZyB3aGVuIEFyaWFEZXNjcmliZXIgaXMgcmVxdWlyZWQuXG4gICAgICB0aGlzLl9hcmlhRGVzY3JpYmVyPy5yZW1vdmVEZXNjcmlwdGlvbih0aGlzLl9zb3J0QnV0dG9uLCB0aGlzLl9zb3J0QWN0aW9uRGVzY3JpcHRpb24pO1xuICAgICAgdGhpcy5fYXJpYURlc2NyaWJlcj8uZGVzY3JpYmUodGhpcy5fc29ydEJ1dHRvbiwgbmV3RGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHRoaXMuX3NvcnRBY3Rpb25EZXNjcmlwdGlvbiA9IG5ld0Rlc2NyaXB0aW9uO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMgY2hhbmdlcyBpbiB0aGUgc29ydGluZyBzdGF0ZS4gKi9cbiAgcHJpdmF0ZSBfaGFuZGxlU3RhdGVDaGFuZ2VzKCkge1xuICAgIHRoaXMuX3JlcmVuZGVyU3Vic2NyaXB0aW9uID1cbiAgICAgIG1lcmdlKHRoaXMuX3NvcnQuc29ydENoYW5nZSwgdGhpcy5fc29ydC5fc3RhdGVDaGFuZ2VzLCB0aGlzLl9pbnRsLmNoYW5nZXMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1NvcnRlZCgpKSB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKTtcblxuICAgICAgICAgIC8vIERvIG5vdCBzaG93IHRoZSBhbmltYXRpb24gaWYgdGhlIGhlYWRlciB3YXMgYWxyZWFkeSBzaG93biBpbiB0aGUgcmlnaHQgcG9zaXRpb24uXG4gICAgICAgICAgaWYgKHRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlID09PSAnaGludCcgfHwgdGhpcy5fdmlld1N0YXRlLnRvU3RhdGUgPT09ICdhY3RpdmUnKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZTogdGhpcy5fYXJyb3dEaXJlY3Rpb24sIHRvU3RhdGU6ICdhY3RpdmUnfSk7XG4gICAgICAgICAgdGhpcy5fc2hvd0luZGljYXRvckhpbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoaXMgaGVhZGVyIHdhcyByZWNlbnRseSBhY3RpdmUgYW5kIG5vdyBubyBsb25nZXIgc29ydGVkLCBhbmltYXRlIGF3YXkgdGhlIGFycm93LlxuICAgICAgICBpZiAoIXRoaXMuX2lzU29ydGVkKCkgJiYgdGhpcy5fdmlld1N0YXRlICYmIHRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlID09PSAnYWN0aXZlJykge1xuICAgICAgICAgIHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZTogJ2FjdGl2ZScsIHRvU3RhdGU6IHRoaXMuX2Fycm93RGlyZWN0aW9ufSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVDbGVhcjogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbn1cbiJdfQ==
  • trip-planner-front/node_modules/@angular/material/fesm2015/badge.js

    r6a3a178 rfa375fe  
    1717const _MatBadgeBase = mixinDisabled(class {
    1818});
    19 const BADGE_CONTENT_CLASS = 'mat-badge-content';
    2019/** Directive to display a text badge. */
    2120class MatBadge extends _MatBadgeBase {
     
    2726        this._renderer = _renderer;
    2827        this._animationMode = _animationMode;
     28        /** Whether the badge has any content. */
     29        this._hasContent = false;
    2930        this._color = 'primary';
    3031        this._overlap = true;
     
    3839        /** Unique id for the badge */
    3940        this._id = nextId++;
    40         /** Whether the OnInit lifecycle hook has run yet */
    41         this._isInitialized = false;
    4241        if (typeof ngDevMode === 'undefined' || ngDevMode) {
    4342            const nativeElement = _elementRef.nativeElement;
     
    5857        this._overlap = coerceBooleanProperty(val);
    5958    }
    60     /** The content for the badge */
    61     get content() {
    62         return this._content;
    63     }
    64     set content(newContent) {
    65         this._updateRenderedContent(newContent);
    66     }
    6759    /** Message used to describe the decorated element via aria-describedby */
    6860    get description() { return this._description; }
    6961    set description(newDescription) {
    70         this._updateHostAriaDescription(newDescription);
     62        if (newDescription !== this._description) {
     63            const badgeElement = this._badgeElement;
     64            this._updateHostAriaDescription(newDescription, this._description);
     65            this._description = newDescription;
     66            if (badgeElement) {
     67                newDescription ? badgeElement.setAttribute('aria-label', newDescription) :
     68                    badgeElement.removeAttribute('aria-label');
     69            }
     70        }
    7171    }
    7272    /** Whether the badge is hidden. */
     
    8383        return this.position.indexOf('before') === -1;
    8484    }
     85    ngOnChanges(changes) {
     86        const contentChange = changes['content'];
     87        if (contentChange) {
     88            const value = contentChange.currentValue;
     89            this._hasContent = value != null && `${value}`.trim().length > 0;
     90            this._updateTextContent();
     91        }
     92    }
     93    ngOnDestroy() {
     94        const badgeElement = this._badgeElement;
     95        if (badgeElement) {
     96            if (this.description) {
     97                this._ariaDescriber.removeDescription(badgeElement, this.description);
     98            }
     99            // When creating a badge through the Renderer, Angular will keep it in an index.
     100            // We have to destroy it ourselves, otherwise it'll be retained in memory.
     101            if (this._renderer.destroyNode) {
     102                this._renderer.destroyNode(badgeElement);
     103            }
     104        }
     105    }
    85106    /**
    86      * Gets the element into which the badge's content is being rendered. Undefined if the element
    87      * hasn't been created (e.g. if the badge doesn't have content).
     107     * Gets the element into which the badge's content is being rendered.
     108     * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).
    88109     */
    89110    getBadgeElement() {
    90111        return this._badgeElement;
    91112    }
    92     ngOnInit() {
    93         // We may have server-side rendered badge that we need to clear.
    94         // We need to do this in ngOnInit because the full content of the component
    95         // on which the badge is attached won't necessarily be in the DOM until this point.
    96         this._clearExistingBadges();
    97         if (this.content && !this._badgeElement) {
     113    /** Injects a span element into the DOM with the content. */
     114    _updateTextContent() {
     115        if (!this._badgeElement) {
    98116            this._badgeElement = this._createBadgeElement();
    99             this._updateRenderedContent(this.content);
    100         }
    101         this._isInitialized = true;
    102     }
    103     ngOnDestroy() {
    104         // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.
    105         // We have to destroy it ourselves, otherwise it'll be retained in memory.
    106         if (this._renderer.destroyNode) {
    107             this._renderer.destroyNode(this._badgeElement);
    108         }
    109         this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);
     117        }
     118        else {
     119            this._badgeElement.textContent = this._stringifyContent();
     120        }
     121        return this._badgeElement;
    110122    }
    111123    /** Creates the badge element */
     
    113125        const badgeElement = this._renderer.createElement('span');
    114126        const activeClass = 'mat-badge-active';
     127        const contentClass = 'mat-badge-content';
     128        // Clear any existing badges which may have persisted from a server-side render.
     129        this._clearExistingBadges(contentClass);
    115130        badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);
    116         // The badge is aria-hidden because we don't want it to appear in the page's navigation
    117         // flow. Instead, we use the badge to describe the decorated element with aria-describedby.
    118         badgeElement.setAttribute('aria-hidden', 'true');
    119         badgeElement.classList.add(BADGE_CONTENT_CLASS);
     131        badgeElement.classList.add(contentClass);
     132        badgeElement.textContent = this._stringifyContent();
    120133        if (this._animationMode === 'NoopAnimations') {
    121134            badgeElement.classList.add('_mat-animation-noopable');
     135        }
     136        if (this.description) {
     137            badgeElement.setAttribute('aria-label', this.description);
    122138        }
    123139        this._elementRef.nativeElement.appendChild(badgeElement);
     
    135151        return badgeElement;
    136152    }
    137     /** Update the text content of the badge element in the DOM, creating the element if necessary. */
    138     _updateRenderedContent(newContent) {
    139         const newContentNormalized = `${newContent !== null && newContent !== void 0 ? newContent : ''}`.trim();
    140         // Don't create the badge element if the directive isn't initialized because we want to
    141         // append the badge element to the *end* of the host element's content for backwards
    142         // compatibility.
    143         if (this._isInitialized && newContentNormalized && !this._badgeElement) {
    144             this._badgeElement = this._createBadgeElement();
    145         }
    146         if (this._badgeElement) {
    147             this._badgeElement.textContent = newContentNormalized;
    148         }
    149         this._content = newContentNormalized;
    150     }
    151     /** Updates the host element's aria description via AriaDescriber. */
    152     _updateHostAriaDescription(newDescription) {
    153         this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);
     153    /** Sets the aria-label property on the element */
     154    _updateHostAriaDescription(newDescription, oldDescription) {
     155        // ensure content available before setting label
     156        const content = this._updateTextContent();
     157        if (oldDescription) {
     158            this._ariaDescriber.removeDescription(content, oldDescription);
     159        }
    154160        if (newDescription) {
    155             this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);
    156         }
    157         this._description = newDescription;
     161            this._ariaDescriber.describe(content, newDescription);
     162        }
    158163    }
    159164    /** Adds css theme class given the color to the component host */
    160165    _setColor(colorPalette) {
    161         const classList = this._elementRef.nativeElement.classList;
    162         classList.remove(`mat-badge-${this._color}`);
    163         if (colorPalette) {
    164             classList.add(`mat-badge-${colorPalette}`);
     166        if (colorPalette !== this._color) {
     167            const classList = this._elementRef.nativeElement.classList;
     168            if (this._color) {
     169                classList.remove(`mat-badge-${this._color}`);
     170            }
     171            if (colorPalette) {
     172                classList.add(`mat-badge-${colorPalette}`);
     173            }
    165174        }
    166175    }
    167176    /** Clears any existing badges that might be left over from server-side rendering. */
    168     _clearExistingBadges() {
    169         // Only check direct children of this host element in order to avoid deleting
    170         // any badges that might exist in descendant elements.
    171         const badges = this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);
    172         for (const badgeElement of Array.from(badges)) {
    173             if (badgeElement !== this._badgeElement) {
    174                 badgeElement.remove();
    175             }
    176         }
     177    _clearExistingBadges(cssClass) {
     178        const element = this._elementRef.nativeElement;
     179        let childCount = element.children.length;
     180        // Use a reverse while, because we'll be removing elements from the list as we're iterating.
     181        while (childCount--) {
     182            const currentChild = element.children[childCount];
     183            if (currentChild.classList.contains(cssClass)) {
     184                element.removeChild(currentChild);
     185            }
     186        }
     187    }
     188    /** Gets the string representation of the badge content. */
     189    _stringifyContent() {
     190        // Convert null and undefined to an empty string which is consistent
     191        // with how Angular handles them in inside template interpolations.
     192        const content = this.content;
     193        return content == null ? '' : `${content}`;
    177194    }
    178195}
     
    191208                    '[class.mat-badge-medium]': 'size === "medium"',
    192209                    '[class.mat-badge-large]': 'size === "large"',
    193                     '[class.mat-badge-hidden]': 'hidden || !content',
     210                    '[class.mat-badge-hidden]': 'hidden || !_hasContent',
    194211                    '[class.mat-badge-disabled]': 'disabled',
    195212                },
  • trip-planner-front/node_modules/@angular/material/fesm2015/badge.js.map

    r6a3a178 rfa375fe  
    1 {"version":3,"file":"badge.js","sources":["../../../../../../src/material/badge/badge.ts","../../../../../../src/material/badge/badge-module.ts","../../../../../../src/material/badge/public-api.ts","../../../../../../src/material/badge/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AriaDescriber} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Renderer2,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled, ThemePalette} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextId = 0;\n\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {});\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n    'above after' | 'above before' | 'below before' | 'below after' |\n    'before' | 'after' | 'above' | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n\n/** Directive to display a text badge. */\n@Directive({\n  selector: '[matBadge]',\n  inputs: ['disabled: matBadgeDisabled'],\n  host: {\n    'class': 'mat-badge',\n    '[class.mat-badge-overlap]': 'overlap',\n    '[class.mat-badge-above]': 'isAbove()',\n    '[class.mat-badge-below]': '!isAbove()',\n    '[class.mat-badge-before]': '!isAfter()',\n    '[class.mat-badge-after]': 'isAfter()',\n    '[class.mat-badge-small]': 'size === \"small\"',\n    '[class.mat-badge-medium]': 'size === \"medium\"',\n    '[class.mat-badge-large]': 'size === \"large\"',\n    '[class.mat-badge-hidden]': 'hidden || !content',\n    '[class.mat-badge-disabled]': 'disabled',\n  },\n})\nexport class MatBadge extends _MatBadgeBase implements OnInit, OnDestroy, CanDisable {\n  /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n  @Input('matBadgeColor')\n  get color(): ThemePalette { return this._color; }\n  set color(value: ThemePalette) {\n    this._setColor(value);\n    this._color = value;\n  }\n  private _color: ThemePalette = 'primary';\n\n  /** Whether the badge should overlap its contents or not */\n  @Input('matBadgeOverlap')\n  get overlap(): boolean { return this._overlap; }\n  set overlap(val: boolean) {\n    this._overlap = coerceBooleanProperty(val);\n  }\n  private _overlap: boolean = true;\n\n  /**\n   * Position the badge should reside.\n   * Accepts any combination of 'above'|'below' and 'before'|'after'\n   */\n  @Input('matBadgePosition') position: MatBadgePosition = 'above after';\n\n  /** The content for the badge */\n  @Input('matBadge')\n  get content(): string | number | undefined | null {\n    return this._content;\n  }\n  set content(newContent: string | number | undefined | null) {\n    this._updateRenderedContent(newContent);\n  }\n  private _content: string | number | undefined | null;\n\n  /** Message used to describe the decorated element via aria-describedby */\n  @Input('matBadgeDescription')\n  get description(): string { return this._description; }\n  set description(newDescription: string) {\n    this._updateHostAriaDescription(newDescription);\n  }\n  private _description: string;\n\n  /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n  @Input('matBadgeSize') size: MatBadgeSize = 'medium';\n\n  /** Whether the badge is hidden. */\n  @Input('matBadgeHidden')\n  get hidden(): boolean { return this._hidden; }\n  set hidden(val: boolean) {\n    this._hidden = coerceBooleanProperty(val);\n  }\n  private _hidden: boolean;\n\n  /** Unique id for the badge */\n  _id: number = nextId++;\n\n  /** Visible badge element. */\n  private _badgeElement: HTMLElement | undefined;\n\n  /** Whether the OnInit lifecycle hook has run yet */\n  private _isInitialized = false;\n\n  constructor(\n      private _ngZone: NgZone,\n      private _elementRef: ElementRef<HTMLElement>,\n      private _ariaDescriber: AriaDescriber,\n      private _renderer: Renderer2,\n      @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n      super();\n\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        const nativeElement = _elementRef.nativeElement;\n        if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n          throw Error('matBadge must be attached to an element node.');\n        }\n      }\n    }\n\n  /** Whether the badge is above the host or not */\n  isAbove(): boolean {\n    return this.position.indexOf('below') === -1;\n  }\n\n  /** Whether the badge is after the host or not */\n  isAfter(): boolean {\n    return this.position.indexOf('before') === -1;\n  }\n\n  /**\n   * Gets the element into which the badge's content is being rendered. Undefined if the element\n   * hasn't been created (e.g. if the badge doesn't have content).\n   */\n  getBadgeElement(): HTMLElement | undefined {\n    return this._badgeElement;\n  }\n\n  ngOnInit() {\n    // We may have server-side rendered badge that we need to clear.\n    // We need to do this in ngOnInit because the full content of the component\n    // on which the badge is attached won't necessarily be in the DOM until this point.\n    this._clearExistingBadges();\n\n    if (this.content && !this._badgeElement) {\n      this._badgeElement = this._createBadgeElement();\n      this._updateRenderedContent(this.content);\n    }\n\n    this._isInitialized = true;\n  }\n\n  ngOnDestroy() {\n    // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n    // We have to destroy it ourselves, otherwise it'll be retained in memory.\n    if (this._renderer.destroyNode) {\n      this._renderer.destroyNode(this._badgeElement);\n    }\n\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n  }\n\n  /** Creates the badge element */\n  private _createBadgeElement(): HTMLElement {\n    const badgeElement = this._renderer.createElement('span');\n    const activeClass = 'mat-badge-active';\n\n    badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n\n    // The badge is aria-hidden because we don't want it to appear in the page's navigation\n    // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n    badgeElement.setAttribute('aria-hidden', 'true');\n    badgeElement.classList.add(BADGE_CONTENT_CLASS);\n\n    if (this._animationMode === 'NoopAnimations') {\n      badgeElement.classList.add('_mat-animation-noopable');\n    }\n\n    this._elementRef.nativeElement.appendChild(badgeElement);\n\n    // animate in after insertion\n    if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n      this._ngZone.runOutsideAngular(() => {\n        requestAnimationFrame(() => {\n          badgeElement.classList.add(activeClass);\n        });\n      });\n    } else {\n      badgeElement.classList.add(activeClass);\n    }\n\n    return badgeElement;\n  }\n\n  /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n  private _updateRenderedContent(newContent: string | number | undefined | null): void {\n    const newContentNormalized: string = `${newContent ?? ''}`.trim();\n\n    // Don't create the badge element if the directive isn't initialized because we want to\n    // append the badge element to the *end* of the host element's content for backwards\n    // compatibility.\n    if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n      this._badgeElement = this._createBadgeElement();\n    }\n\n    if (this._badgeElement) {\n      this._badgeElement.textContent = newContentNormalized;\n    }\n\n    this._content = newContentNormalized;\n  }\n\n  /** Updates the host element's aria description via AriaDescriber. */\n  private _updateHostAriaDescription(newDescription: string): void {\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n    if (newDescription) {\n      this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n    }\n    this._description = newDescription;\n  }\n\n  /** Adds css theme class given the color to the component host */\n  private _setColor(colorPalette: ThemePalette) {\n    const classList = this._elementRef.nativeElement.classList;\n    classList.remove(`mat-badge-${this._color}`);\n    if (colorPalette) {\n      classList.add(`mat-badge-${colorPalette}`);\n    }\n  }\n\n  /** Clears any existing badges that might be left over from server-side rendering. */\n  private _clearExistingBadges() {\n    // Only check direct children of this host element in order to avoid deleting\n    // any badges that might exist in descendant elements.\n    const badges =\n        this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);\n    for (const badgeElement of Array.from(badges)) {\n      if (badgeElement !== this._badgeElement) {\n        badgeElement.remove();\n      }\n    }\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_hidden: BooleanInput;\n  static ngAcceptInputType_overlap: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatBadge} from './badge';\n\n\n@NgModule({\n  imports: [\n    A11yModule,\n    MatCommonModule\n  ],\n  exports: [MatBadge, MatCommonModule],\n  declarations: [MatBadge],\n})\nexport class MatBadgeModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './badge-module';\nexport * from './badge';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
     1{"version":3,"file":"badge.js","sources":["../../../../../../src/material/badge/badge.ts","../../../../../../src/material/badge/badge-module.ts","../../../../../../src/material/badge/public-api.ts","../../../../../../src/material/badge/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AriaDescriber} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Renderer2,\n  SimpleChanges,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled, ThemePalette} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextId = 0;\n\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {});\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n    'above after' | 'above before' | 'below before' | 'below after' |\n    'before' | 'after' | 'above' | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\n/** Directive to display a text badge. */\n@Directive({\n  selector: '[matBadge]',\n  inputs: ['disabled: matBadgeDisabled'],\n  host: {\n    'class': 'mat-badge',\n    '[class.mat-badge-overlap]': 'overlap',\n    '[class.mat-badge-above]': 'isAbove()',\n    '[class.mat-badge-below]': '!isAbove()',\n    '[class.mat-badge-before]': '!isAfter()',\n    '[class.mat-badge-after]': 'isAfter()',\n    '[class.mat-badge-small]': 'size === \"small\"',\n    '[class.mat-badge-medium]': 'size === \"medium\"',\n    '[class.mat-badge-large]': 'size === \"large\"',\n    '[class.mat-badge-hidden]': 'hidden || !_hasContent',\n    '[class.mat-badge-disabled]': 'disabled',\n  },\n})\nexport class MatBadge extends _MatBadgeBase implements OnDestroy, OnChanges, CanDisable {\n  /** Whether the badge has any content. */\n  _hasContent = false;\n\n  /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n  @Input('matBadgeColor')\n  get color(): ThemePalette { return this._color; }\n  set color(value: ThemePalette) {\n    this._setColor(value);\n    this._color = value;\n  }\n  private _color: ThemePalette = 'primary';\n\n  /** Whether the badge should overlap its contents or not */\n  @Input('matBadgeOverlap')\n  get overlap(): boolean { return this._overlap; }\n  set overlap(val: boolean) {\n    this._overlap = coerceBooleanProperty(val);\n  }\n  private _overlap: boolean = true;\n\n  /**\n   * Position the badge should reside.\n   * Accepts any combination of 'above'|'below' and 'before'|'after'\n   */\n  @Input('matBadgePosition') position: MatBadgePosition = 'above after';\n\n  /** The content for the badge */\n  @Input('matBadge') content: string | number | undefined | null;\n\n  /** Message used to describe the decorated element via aria-describedby */\n  @Input('matBadgeDescription')\n  get description(): string { return this._description; }\n  set description(newDescription: string) {\n    if (newDescription !== this._description) {\n      const badgeElement = this._badgeElement;\n      this._updateHostAriaDescription(newDescription, this._description);\n      this._description = newDescription;\n\n      if (badgeElement) {\n        newDescription ? badgeElement.setAttribute('aria-label', newDescription) :\n            badgeElement.removeAttribute('aria-label');\n      }\n    }\n  }\n  private _description: string;\n\n  /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n  @Input('matBadgeSize') size: MatBadgeSize = 'medium';\n\n  /** Whether the badge is hidden. */\n  @Input('matBadgeHidden')\n  get hidden(): boolean { return this._hidden; }\n  set hidden(val: boolean) {\n    this._hidden = coerceBooleanProperty(val);\n  }\n  private _hidden: boolean;\n\n  /** Unique id for the badge */\n  _id: number = nextId++;\n\n  private _badgeElement: HTMLElement | undefined;\n\n  constructor(\n      private _ngZone: NgZone,\n      private _elementRef: ElementRef<HTMLElement>,\n      private _ariaDescriber: AriaDescriber,\n      private _renderer: Renderer2,\n      @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n      super();\n\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        const nativeElement = _elementRef.nativeElement;\n        if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n          throw Error('matBadge must be attached to an element node.');\n        }\n      }\n    }\n\n  /** Whether the badge is above the host or not */\n  isAbove(): boolean {\n    return this.position.indexOf('below') === -1;\n  }\n\n  /** Whether the badge is after the host or not */\n  isAfter(): boolean {\n    return this.position.indexOf('before') === -1;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const contentChange = changes['content'];\n\n    if (contentChange) {\n      const value = contentChange.currentValue;\n      this._hasContent = value != null && `${value}`.trim().length > 0;\n      this._updateTextContent();\n    }\n  }\n\n  ngOnDestroy() {\n    const badgeElement = this._badgeElement;\n\n    if (badgeElement) {\n      if (this.description) {\n        this._ariaDescriber.removeDescription(badgeElement, this.description);\n      }\n\n      // When creating a badge through the Renderer, Angular will keep it in an index.\n      // We have to destroy it ourselves, otherwise it'll be retained in memory.\n      if (this._renderer.destroyNode) {\n        this._renderer.destroyNode(badgeElement);\n      }\n    }\n  }\n\n  /**\n   * Gets the element into which the badge's content is being rendered.\n   * Undefined if the element hasn't been created (e.g. if the badge doesn't have content).\n   */\n  getBadgeElement(): HTMLElement | undefined {\n    return this._badgeElement;\n  }\n\n  /** Injects a span element into the DOM with the content. */\n  private _updateTextContent(): HTMLSpanElement {\n    if (!this._badgeElement) {\n      this._badgeElement = this._createBadgeElement();\n    } else {\n      this._badgeElement.textContent = this._stringifyContent();\n    }\n    return this._badgeElement;\n  }\n\n  /** Creates the badge element */\n  private _createBadgeElement(): HTMLElement {\n    const badgeElement = this._renderer.createElement('span');\n    const activeClass = 'mat-badge-active';\n    const contentClass = 'mat-badge-content';\n\n    // Clear any existing badges which may have persisted from a server-side render.\n    this._clearExistingBadges(contentClass);\n    badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n    badgeElement.classList.add(contentClass);\n    badgeElement.textContent = this._stringifyContent();\n\n    if (this._animationMode === 'NoopAnimations') {\n      badgeElement.classList.add('_mat-animation-noopable');\n    }\n\n    if (this.description) {\n      badgeElement.setAttribute('aria-label', this.description);\n    }\n\n    this._elementRef.nativeElement.appendChild(badgeElement);\n\n    // animate in after insertion\n    if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n      this._ngZone.runOutsideAngular(() => {\n        requestAnimationFrame(() => {\n          badgeElement.classList.add(activeClass);\n        });\n      });\n    } else {\n      badgeElement.classList.add(activeClass);\n    }\n\n    return badgeElement;\n  }\n\n  /** Sets the aria-label property on the element */\n  private _updateHostAriaDescription(newDescription: string, oldDescription: string): void {\n    // ensure content available before setting label\n    const content = this._updateTextContent();\n\n    if (oldDescription) {\n      this._ariaDescriber.removeDescription(content, oldDescription);\n    }\n\n    if (newDescription) {\n      this._ariaDescriber.describe(content, newDescription);\n    }\n  }\n\n  /** Adds css theme class given the color to the component host */\n  private _setColor(colorPalette: ThemePalette) {\n    if (colorPalette !== this._color) {\n      const classList = this._elementRef.nativeElement.classList;\n      if (this._color) {\n        classList.remove(`mat-badge-${this._color}`);\n      }\n      if (colorPalette) {\n        classList.add(`mat-badge-${colorPalette}`);\n      }\n    }\n  }\n\n  /** Clears any existing badges that might be left over from server-side rendering. */\n  private _clearExistingBadges(cssClass: string) {\n    const element = this._elementRef.nativeElement;\n    let childCount = element.children.length;\n\n    // Use a reverse while, because we'll be removing elements from the list as we're iterating.\n    while (childCount--) {\n      const currentChild = element.children[childCount];\n\n      if (currentChild.classList.contains(cssClass)) {\n        element.removeChild(currentChild);\n      }\n    }\n  }\n\n  /** Gets the string representation of the badge content. */\n  private _stringifyContent(): string {\n    // Convert null and undefined to an empty string which is consistent\n    // with how Angular handles them in inside template interpolations.\n    const content = this.content;\n    return content == null ? '' : `${content}`;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_hidden: BooleanInput;\n  static ngAcceptInputType_overlap: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatBadge} from './badge';\n\n\n@NgModule({\n  imports: [\n    A11yModule,\n    MatCommonModule\n  ],\n  exports: [MatBadge, MatCommonModule],\n  declarations: [MatBadge],\n})\nexport class MatBadgeModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './badge-module';\nexport * from './badge';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
  • trip-planner-front/node_modules/@angular/material/fesm2015/core.js

    r6a3a178 rfa375fe  
    2020 */
    2121/** Current version of Angular Material. */
    22 const VERSION$1 = new Version('12.2.9');
     22const VERSION$1 = new Version('12.2.10');
    2323
    2424/**
     
    5454// Can be removed once the Material primary entry-point no longer
    5555// re-exports all secondary entry-points
    56 const VERSION = new Version('12.2.9');
     56const VERSION = new Version('12.2.10');
    5757/** @docs-private */
    5858function MATERIAL_SANITY_CHECKS_FACTORY() {
  • trip-planner-front/node_modules/@angular/material/fesm2015/core.js.map

    r6a3a178 rfa375fe  
    1 {"version":3,"file":"core.js","sources":["../../../../../../src/material/core/version.ts","../../../../../../src/material/core/animation/animation.ts","../../../../../../src/material/core/common-behaviors/common-module.ts","../../../../../../src/material/core/common-behaviors/disabled.ts","../../../../../../src/material/core/common-behaviors/color.ts","../../../../../../src/material/core/common-behaviors/disable-ripple.ts","../../../../../../src/material/core/common-behaviors/tabindex.ts","../../../../../../src/material/core/common-behaviors/error-state.ts","../../../../../../src/material/core/common-behaviors/initialized.ts","../../../../../../src/material/core/common-behaviors/index.ts","../../../../../../src/material/core/datetime/date-adapter.ts","../../../../../../src/material/core/datetime/date-formats.ts","../../../../../../src/material/core/datetime/native-date-adapter.ts","../../../../../../src/material/core/datetime/native-date-formats.ts","../../../../../../src/material/core/datetime/index.ts","../../../../../../src/material/core/error/error-options.ts","../../../../../../src/material/core/line/line.ts","../../../../../../src/material/core/ripple/ripple-ref.ts","../../../../../../src/material/core/ripple/ripple-renderer.ts","../../../../../../src/material/core/ripple/ripple.ts","../../../../../../src/material/core/ripple/index.ts","../../../../../../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../../../../src/material/core/selection/index.ts","../../../../../../src/material/core/option/option-parent.ts","../../../../../../src/material/core/option/optgroup.ts","../../../../../../src/material/core/option/option.ts","../../../../../../src/material/core/option/index.ts","../../../../../../src/material/core/public-api.ts","../../../../../../src/material/core/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('12.2.9');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport class AnimationCurves {\n  static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n  static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n  static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n  static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n\n/** @docs-private */\nexport class AnimationDurations {\n  static COMPLEX = '375ms';\n  static ENTERING = '225ms';\n  static EXITING = '195ms';\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {HighContrastModeDetector} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Inject, InjectionToken, isDevMode, NgModule, Optional, Version} from '@angular/core';\nimport {VERSION as CDK_VERSION} from '@angular/cdk';\nimport {DOCUMENT} from '@angular/common';\nimport {_isTestEnvironment} from '@angular/cdk/platform';\n\n// Private version constant to circumvent test/build issues,\n// i.e. avoid core to depend on the @angular/material primary entry-point\n// Can be removed once the Material primary entry-point no longer\n// re-exports all secondary entry-points\nconst VERSION = new Version('12.2.9');\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): SanityChecks {\n  return true;\n}\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<SanityChecks>('mat-sanity-checks', {\n  providedIn: 'root',\n  factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n\n/**\n * Possible sanity checks that can be enabled. If set to\n * true/false, all checks will be enabled/disabled.\n */\nexport type SanityChecks = boolean | GranularSanityChecks;\n\n/** Object that can be used to configure the sanity checks granularly. */\nexport interface GranularSanityChecks {\n  doctype: boolean;\n  theme: boolean;\n  version: boolean;\n}\n\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\n@NgModule({\n  imports: [BidiModule],\n  exports: [BidiModule],\n})\nexport class MatCommonModule {\n  /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n  private _hasDoneGlobalChecks = false;\n\n  /** Configured sanity checks. */\n  private _sanityChecks: SanityChecks;\n\n  /** Used to reference correct document/window */\n  protected _document: Document;\n\n  constructor(\n      highContrastModeDetector: HighContrastModeDetector,\n      @Optional() @Inject(MATERIAL_SANITY_CHECKS) sanityChecks: any,\n      @Inject(DOCUMENT) document: any) {\n    this._document = document;\n\n    // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n    // in MatCommonModule.\n    highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n\n    // Note that `_sanityChecks` is typed to `any`, because AoT\n    // throws an error if we use the `SanityChecks` type directly.\n    this._sanityChecks = sanityChecks;\n\n    if (!this._hasDoneGlobalChecks) {\n      this._checkDoctypeIsDefined();\n      this._checkThemeIsPresent();\n      this._checkCdkVersionMatch();\n      this._hasDoneGlobalChecks = true;\n    }\n  }\n\n  /** Gets whether a specific sanity check is enabled. */\n  private _checkIsEnabled(name: keyof GranularSanityChecks): boolean {\n    // TODO(crisbeto): we can't use `ngDevMode` here yet, because ViewEngine apps might not support\n    // it. Since these checks can have performance implications and they aren't tree shakeable\n    // in their current form, we can leave the `isDevMode` check in for now.\n    // tslint:disable-next-line:ban\n    if (!isDevMode() || _isTestEnvironment()) {\n      return false;\n    }\n\n    if (typeof this._sanityChecks === 'boolean') {\n      return this._sanityChecks;\n    }\n\n    return !!this._sanityChecks[name];\n  }\n\n  private _checkDoctypeIsDefined(): void {\n    if (this._checkIsEnabled('doctype') && !this._document.doctype) {\n      console.warn(\n        'Current document does not have a doctype. This may cause ' +\n        'some Angular Material components not to behave as expected.'\n      );\n    }\n  }\n\n  private _checkThemeIsPresent(): void {\n    // We need to assert that the `body` is defined, because these checks run very early\n    // and the `body` won't be defined if the consumer put their scripts in the `head`.\n    if (!this._checkIsEnabled('theme') || !this._document.body ||\n        typeof getComputedStyle !== 'function') {\n      return;\n    }\n\n    const testElement = this._document.createElement('div');\n\n    testElement.classList.add('mat-theme-loaded-marker');\n    this._document.body.appendChild(testElement);\n\n    const computedStyle = getComputedStyle(testElement);\n\n    // In some situations the computed style of the test element can be null. For example in\n    // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n    // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n    if (computedStyle && computedStyle.display !== 'none') {\n      console.warn(\n        'Could not find Angular Material core theme. Most Material ' +\n        'components may not work as expected. For more info refer ' +\n        'to the theming guide: https://material.angular.io/guide/theming'\n      );\n    }\n\n    this._document.body.removeChild(testElement);\n  }\n\n  /** Checks whether the material version matches the cdk version */\n  private _checkCdkVersionMatch(): void {\n    if (this._checkIsEnabled('version') && VERSION.full !== CDK_VERSION.full) {\n      console.warn(\n          'The Angular Material version (' + VERSION.full + ') does not match ' +\n          'the Angular CDK version (' + CDK_VERSION.full + ').\\n' +\n          'Please ensure the versions of these two packages exactly match.'\n      );\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisable {\n  /** Whether the component is disabled. */\n  disabled: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n  return class extends base {\n    private _disabled: boolean = false;\n\n    get disabled() { return this._disabled; }\n    set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AbstractConstructor, Constructor} from './constructor';\nimport {ElementRef} from '@angular/core';\n\n/** @docs-private */\nexport interface CanColor {\n  /** Theme color palette for the component. */\n  color: ThemePalette;\n\n  /** Default color to fall back to if no value is set. */\n  defaultColor: ThemePalette | undefined;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\n/** @docs-private */\nexport interface HasElementRef {\n  _elementRef: ElementRef;\n}\n\n/** Possible color palette values. */\nexport type ThemePalette = 'primary' | 'accent' | 'warn' | undefined;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T;\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T {\n  return class extends base {\n    private _color: ThemePalette;\n    defaultColor = defaultColor;\n\n    get color(): ThemePalette { return this._color; }\n    set color(value: ThemePalette) {\n      const colorPalette = value || this.defaultColor;\n\n      if (colorPalette !== this._color) {\n        if (this._color) {\n          this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n        }\n        if (colorPalette) {\n          this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n        }\n\n        this._color = colorPalette;\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n\n      // Set the default color that can be specified from the mixin.\n      this.color = defaultColor;\n    }\n  };\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n  /** Whether ripples are disabled. */\n  disableRipple: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableRippleCtor = Constructor<CanDisableRipple> &\n                                   AbstractConstructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends AbstractConstructor<{}>>(base: T):\n  CanDisableRippleCtor & T;\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): CanDisableRippleCtor & T {\n  return class extends base {\n    private _disableRipple: boolean = false;\n\n    /** Whether the ripple effect is disabled or not. */\n    get disableRipple() { return this._disableRipple; }\n    set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Constructor, AbstractConstructor} from './constructor';\nimport {CanDisable} from './disabled';\n\n\n/** @docs-private */\nexport interface HasTabIndex {\n  /** Tabindex of the component. */\n  tabIndex: number;\n\n  /** Tabindex to which to fall back to if no value is set. */\n  defaultTabIndex: number;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(base: T,\n  defaultTabIndex?: number): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n  base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n  return class extends base implements HasTabIndex {\n    private _tabIndex: number = defaultTabIndex;\n    defaultTabIndex = defaultTabIndex;\n\n    get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\n    set tabIndex(value: number) {\n      // If the specified tabIndex value is null or undefined, fall back to the default value.\n      this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n  /** Emits whenever the component state changes. */\n  readonly stateChanges: Subject<void>;\n  /** Updates the error state based on the provided error state matcher. */\n  updateErrorState(): void;\n  /** Whether the component is in an error state. */\n  errorState: boolean;\n  /** An object used to control the error state of the component. */\n  errorStateMatcher: ErrorStateMatcher;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState> &\n                                      AbstractConstructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n  _parentFormGroup: FormGroupDirective;\n  _parentForm: NgForm;\n  _defaultErrorStateMatcher: ErrorStateMatcher;\n  ngControl: NgControl;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T {\n  return class extends base {\n    // This class member exists as an interop with `MatFormFieldControl` which expects\n    // a public `stateChanges` observable to emit whenever the form field should be updated.\n    // The description is not specifically mentioning the error state, as classes using this\n    // mixin can/should emit an event in other cases too.\n    /** Emits whenever the component state changes. */\n    readonly stateChanges = new Subject<void>();\n\n    /** Whether the component is in an error state. */\n    errorState: boolean = false;\n\n    /** An object used to control the error state of the component. */\n    errorStateMatcher: ErrorStateMatcher;\n\n    /** Updates the error state based on the provided error state matcher. */\n    updateErrorState() {\n      const oldState = this.errorState;\n      const parent = this._parentFormGroup || this._parentForm;\n      const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n      const control = this.ngControl ? this.ngControl.control as FormControl : null;\n      const newState = matcher.isErrorState(control, parent);\n\n      if (newState !== oldState) {\n        this.errorState = newState;\n        this.stateChanges.next();\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Observable, Subscriber} from 'rxjs';\nimport {Constructor} from './constructor';\n\n\n/**\n * Mixin that adds an initialized property to a directive which, when subscribed to, will emit a\n * value once markInitialized has been called, which should be done during the ngOnInit function.\n * If the subscription is made after it has already been marked as initialized, then it will trigger\n * an emit immediately.\n * @docs-private\n */\nexport interface HasInitialized {\n  /** Stream that emits once during the directive/component's ngOnInit. */\n  initialized: Observable<void>;\n\n  /**\n   * Sets the state as initialized and must be called during ngOnInit to notify subscribers that\n   * the directive has been initialized.\n   * @docs-private\n   */\n  _markInitialized: () => void;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasInitializedCtor = Constructor<HasInitialized>;\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nexport function mixinInitialized<T extends Constructor<{}>>(base: T):\n    HasInitializedCtor & T {\n  return class extends base {\n    /** Whether this directive has been marked as initialized. */\n    _isInitialized = false;\n\n    /**\n     * List of subscribers that subscribed before the directive was initialized. Should be notified\n     * during _markInitialized. Set to null after pending subscribers are notified, and should\n     * not expect to be populated after.\n     */\n    _pendingSubscribers: Subscriber<void>[] | null = [];\n\n    /**\n     * Observable stream that emits when the directive initializes. If already initialized, the\n     * subscriber is stored to be notified once _markInitialized is called.\n     */\n    initialized = new Observable<void>(subscriber => {\n      // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n      // when _markInitialized is called.\n      if (this._isInitialized) {\n        this._notifySubscriber(subscriber);\n      } else {\n        this._pendingSubscribers!.push(subscriber);\n      }\n    });\n\n    constructor(...args: any[]) { super(...args); }\n\n    /**\n     * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n     * of ngOnInit.\n     * @docs-private\n     */\n    _markInitialized(): void {\n      if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('This directive has already been marked as initialized and ' +\n            'should not be called twice.');\n      }\n\n      this._isInitialized = true;\n\n      this._pendingSubscribers!.forEach(this._notifySubscriber);\n      this._pendingSubscribers = null;\n    }\n\n    /** Emits and completes the subscriber stream (should only emit once). */\n    _notifySubscriber(subscriber: Subscriber<void>): void {\n      subscriber.next();\n      subscriber.complete();\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport {\n  MatCommonModule,\n  MATERIAL_SANITY_CHECKS,\n  SanityChecks,\n  GranularSanityChecks,\n} from './common-module';\nexport {CanDisable, CanDisableCtor, mixinDisabled} from './disabled';\nexport {CanColor, CanColorCtor, mixinColor, ThemePalette} from './color';\nexport {CanDisableRipple, CanDisableRippleCtor, mixinDisableRipple} from './disable-ripple';\nexport {HasTabIndex, HasTabIndexCtor, mixinTabIndex} from './tabindex';\nexport {CanUpdateErrorState, CanUpdateErrorStateCtor, mixinErrorState} from './error-state';\nexport {HasInitialized, HasInitializedCtor, mixinInitialized} from './initialized';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n  providedIn: 'root',\n  factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n  return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n  /** The locale to use for all dates. */\n  protected locale: any;\n  protected readonly _localeChanges = new Subject<void>();\n\n  /** A stream that emits when the locale changes. */\n  readonly localeChanges: Observable<void> = this._localeChanges;\n\n  /**\n   * Gets the year component of the given date.\n   * @param date The date to extract the year from.\n   * @returns The year component.\n   */\n  abstract getYear(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   * @param date The date to extract the month from.\n   * @returns The month component (0-indexed, 0 = January).\n   */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the date of the month component of the given date.\n   * @param date The date to extract the date of the month from.\n   * @returns The month component (1-indexed, 1 = first of month).\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the day of the week component of the given date.\n   * @param date The date to extract the day of the week from.\n   * @returns The month component (0-indexed, 0 = Sunday).\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Gets a list of names for the months.\n   * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n   * @returns An ordered list of all month names, starting with January.\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets a list of names for the dates of the month.\n   * @returns An ordered list of all date of the month names, starting with '1'.\n   */\n  abstract getDateNames(): string[];\n\n  /**\n   * Gets a list of names for the days of the week.\n   * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n   * @returns An ordered list of all weekday names, starting with Sunday.\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets the name for the year of the given date.\n   * @param date The date to get the year name for.\n   * @returns The name of the given year (e.g. '2017').\n   */\n  abstract getYearName(date: D): string;\n\n  /**\n   * Gets the first day of the week.\n   * @returns The first day of the week (0-indexed, 0 = Sunday).\n   */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   * @param date The date whose month should be checked.\n   * @returns The number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: D): number;\n\n  /**\n   * Clones the given date.\n   * @param date The date to clone\n   * @returns A new date equal to the given date.\n   */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n   * month and date.\n   * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n   * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n   * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n   * @returns The new date, or null if invalid.\n   */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Gets today's date.\n   * @returns Today's date.\n   */\n  abstract today(): D;\n\n  /**\n   * Parses a date from a user-provided value.\n   * @param value The value to parse.\n   * @param parseFormat The expected format of the value being parsed\n   *     (type is implementation-dependent).\n   * @returns The parsed date.\n   */\n  abstract parse(value: any, parseFormat: any): D | null;\n\n  /**\n   * Formats a date as a string according to the given format.\n   * @param date The value to format.\n   * @param displayFormat The format to use to display the date as a string.\n   * @returns The formatted date string.\n   */\n  abstract format(date: D, displayFormat: any): string;\n\n  /**\n   * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n   * calendar for each year and then finding the closest date in the new month. For example when\n   * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n   * @param date The date to add years to.\n   * @param years The number of years to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of years added.\n   */\n  abstract addCalendarYears(date: D, years: number): D;\n\n  /**\n   * Adds the given number of months to the date. Months are counted as if flipping a page on the\n   * calendar for each month and then finding the closest date in the new month. For example when\n   * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n   * @param date The date to add months to.\n   * @param months The number of months to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of months added.\n   */\n  abstract addCalendarMonths(date: D, months: number): D;\n\n  /**\n   * Adds the given number of days to the date. Days are counted as if moving one cell on the\n   * calendar for each day.\n   * @param date The date to add days to.\n   * @param days The number of days to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of days added.\n   */\n  abstract addCalendarDays(date: D, days: number): D;\n\n  /**\n   * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n   * This method is used to generate date strings that are compatible with native HTML attributes\n   * such as the `min` or `max` attribute of an `<input>`.\n   * @param date The date to get the ISO date string for.\n   * @returns The ISO date string date string.\n   */\n  abstract toIso8601(date: D): string;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateAdapter.\n   * @param obj The object to check\n   * @returns Whether the object is a date instance.\n   */\n  abstract isDateInstance(obj: any): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   * @param date The date to check.\n   * @returns Whether the date is valid.\n   */\n  abstract isValid(date: D): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   * @returns An invalid date.\n   */\n  abstract invalid(): D;\n\n /**\n  * Given a potential date object, returns that same date object if it is\n  * a valid date, or `null` if it's not a valid date.\n  * @param obj The object to check.\n  * @returns A date or `null`.\n  */\n  getValidDateOrNull(obj: unknown): D | null {\n    return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n   * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   * @param value The value to be deserialized into a date object.\n   * @returns The deserialized date object, either a valid date, null if the value can be\n   *     deserialized into a null date (e.g. the empty string), or an invalid date.\n   */\n  deserialize(value: any): D | null {\n    if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   * @param locale The new locale.\n   */\n  setLocale(locale: any) {\n    this.locale = locale;\n    this._localeChanges.next();\n  }\n\n  /**\n   * Compares two dates.\n   * @param first The first date to compare.\n   * @param second The second date to compare.\n   * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n   *     a number greater than 0 if the first date is later.\n   */\n  compareDate(first: D, second: D): number {\n    return this.getYear(first) - this.getYear(second) ||\n        this.getMonth(first) - this.getMonth(second) ||\n        this.getDate(first) - this.getDate(second);\n  }\n\n  /**\n   * Checks if two dates are equal.\n   * @param first The first date to check.\n   * @param second The second date to check.\n   * @returns Whether the two dates are equal.\n   *     Null dates are considered equal to other null dates.\n   */\n  sameDate(first: D | null, second: D | null): boolean {\n    if (first && second) {\n      let firstValid = this.isValid(first);\n      let secondValid = this.isValid(second);\n      if (firstValid && secondValid) {\n        return !this.compareDate(first, second);\n      }\n      return firstValid == secondValid;\n    }\n    return first == second;\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   * @param date The date to clamp.\n   * @param min The minimum value to allow. If null or omitted no min is enforced.\n   * @param max The maximum value to allow. If null or omitted no max is enforced.\n   * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n   *     otherwise `date`.\n   */\n  clampDate(date: D, min?: D | null, max?: D | null): D {\n    if (min && this.compareDate(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compareDate(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n\nexport type MatDateFormats = {\n  parse: {\n    dateInput: any\n  },\n  display: {\n    dateInput: any,\n    monthLabel?: any,\n    monthYearLabel: any,\n    dateA11yLabel: any,\n    monthYearA11yLabel: any,\n  }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n  SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n  SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n  'long': [\n    'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n    'October', 'November', 'December'\n  ],\n  'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n  'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n    /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   *\n   * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n   * getting the string representation of a Date object from its utc representation. We're keeping\n   * it here for sometime, just for precaution, in case we decide to revert some of these changes\n   * though.\n   */\n  useUtcForDisplay: boolean = true;\n\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string, platform: Platform) {\n    super();\n    super.setLocale(matDateLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\n  }\n\n  getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  getDayOfWeek(date: Date): number {\n    return date.getDay();\n  }\n\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n      return range(12, i =>\n          this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n    }\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  getDateNames(): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n      return range(31, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DATE_NAMES;\n  }\n\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n      return range(7, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  getYearName(date: Date): string {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return String(this.getYear(date));\n  }\n\n  getFirstDayOfWeek(): number {\n    // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n    return 0;\n  }\n\n  getNumDaysInMonth(date: Date): number {\n    return this.getDate(this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + 1, 0));\n  }\n\n  clone(date: Date): Date {\n    return new Date(date.getTime());\n  }\n\n  createDate(year: number, month: number, date: number): Date {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      // Check for invalid month and date (except upper bound on date which we have to check after\n      // creating the Date).\n      if (month < 0 || month > 11) {\n        throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n      }\n\n      if (date < 1) {\n        throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n      }\n    }\n\n    let result = this._createDateWithOverflow(year, month, date);\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result;\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  parse(value: any): Date | null {\n    // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n    // parameters.\n    if (typeof value == 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value)) : null;\n  }\n\n  format(date: Date, displayFormat: Object): string {\n    if (!this.isValid(date)) {\n      throw Error('NativeDateAdapter: Cannot format invalid date.');\n    }\n\n    if (SUPPORTS_INTL_API) {\n      // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n      // if we attempt to format a date whose year is less than 1 or greater than 9999.\n      if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n        date = this.clone(date);\n        date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n      }\n\n      displayFormat = {...displayFormat, timeZone: 'utc'};\n\n      const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return this._stripDirectionalityCharacters(date.toDateString());\n  }\n\n  addCalendarYears(date: Date, years: number): Date {\n    return this.addCalendarMonths(date, years * 12);\n  }\n\n  addCalendarMonths(date: Date, months: number): Date {\n    let newDate = this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n    // It's possible to wind up in the wrong month if the original month has more days than the new\n    // month. In this case we want to go to the last day of the desired month.\n    // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n    // guarantee this.\n    if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n      newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n    }\n\n    return newDate;\n  }\n\n  addCalendarDays(date: Date, days: number): Date {\n    return this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n  }\n\n  toIso8601(date: Date): string {\n    return [\n      date.getUTCFullYear(),\n      this._2digit(date.getUTCMonth() + 1),\n      this._2digit(date.getUTCDate())\n    ].join('-');\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  override deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        let date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  isDateInstance(obj: any) {\n    return obj instanceof Date;\n  }\n\n  isValid(date: Date) {\n    return !isNaN(date.getTime());\n  }\n\n  invalid(): Date {\n    return new Date(NaN);\n  }\n\n  /** Creates a date but allows the month and date to overflow. */\n  private _createDateWithOverflow(year: number, month: number, date: number) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setFullYear` and `setHours` instead.\n    const d = new Date();\n    d.setFullYear(year, month, date);\n    d.setHours(0, 0, 0, 0);\n    return d;\n  }\n\n  /**\n   * Pads a number to make it two digits.\n   * @param n The number to pad.\n   * @returns The padded number.\n   */\n  private _2digit(n: number) {\n    return ('00' + n).slice(-2);\n  }\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   * @param str The string to strip direction characters from.\n   * @returns The stripped string.\n   */\n  private _stripDirectionalityCharacters(str: string) {\n    return str.replace(/[\\u200e\\u200f]/g, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n   *    timeZone set to 'utc' to work fine.\n   * @param date Date from which we want to get the string representation according to dtf\n   * @returns A Date object with its UTC representation based on the passed in date info\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n    const d = new Date();\n    d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    return dtf.format(d);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {MatDateFormats} from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n  parse: {\n    dateInput: null,\n  },\n  display: {\n    dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n    monthYearLabel: {year: 'numeric', month: 'short'},\n    dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n    monthYearA11yLabel: {year: 'numeric', month: 'long'},\n  }\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n\n@NgModule({\n  imports: [PlatformModule],\n  providers: [\n    {provide: DateAdapter, useClass: NativeDateAdapter},\n  ],\n})\nexport class NativeDateModule {}\n\n\n@NgModule({\n  imports: [NativeDateModule],\n  providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS}],\n})\nexport class MatNativeDateModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, FormControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n  }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  NgModule,\n  Directive,\n  ElementRef,\n  QueryList,\n} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n  selector: '[mat-line], [matLine]',\n  host: {'class': 'mat-line'}\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(lines: QueryList<unknown>, element: ElementRef<HTMLElement>,\n                         prefix = 'mat') {\n  // Note: doesn't need to unsubscribe, because `changes`\n  // gets completed by Angular when the view is destroyed.\n  lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n    setClass(element, `${prefix}-2-line`, false);\n    setClass(element, `${prefix}-3-line`, false);\n    setClass(element, `${prefix}-multi-line`, false);\n\n    if (length === 2 || length === 3) {\n      setClass(element, `${prefix}-${length}-line`, true);\n    } else if (length > 3) {\n      setClass(element, `${prefix}-multi-line`, true);\n    }\n  });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n  const classList = element.nativeElement.classList;\n  isAdd ? classList.add(className) : classList.remove(className);\n}\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatLine, MatCommonModule],\n  declarations: [MatLine],\n})\nexport class MatLineModule { }\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** Possible states for a ripple element. */\nexport const enum RippleState {\n  FADING_IN, VISIBLE, FADING_OUT, HIDDEN\n}\n\nexport type RippleConfig = {\n  color?: string;\n  centered?: boolean;\n  radius?: number;\n  persistent?: boolean;\n  animation?: RippleAnimationConfig;\n  terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n  /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n  enterDuration?: number;\n  /** Duration in milliseconds for the exit animation (fade-out). */\n  exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n\n  /** Current state of the ripple. */\n  state: RippleState = RippleState.HIDDEN;\n\n  constructor(\n    private _renderer: {fadeOutRipple(ref: RippleRef): void},\n    /** Reference to the ripple HTML element. */\n    public element: HTMLElement,\n    /** Ripple configuration used for the ripple. */\n    public config: RippleConfig) {\n  }\n\n  /** Fades out the ripple element. */\n  fadeOut() {\n    this._renderer.fadeOutRipple(this);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 {ElementRef, NgZone} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n  /** Configuration for ripples that are launched on pointer down. */\n  rippleConfig: RippleConfig;\n  /** Whether ripples on pointer down should be disabled. */\n  rippleDisabled: boolean;\n}\n\n\n// TODO: import these values from `@material/ripple` eventually.\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n  enterDuration: 225,\n  exitDuration: 150\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options that apply to all the event listeners that are bound by the ripple renderer. */\nconst passiveEventOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n  /** Element where the ripples are being added to. */\n  private _containerElement: HTMLElement;\n\n  /** Element which triggers the ripple elements on mouse events. */\n  private _triggerElement: HTMLElement | null;\n\n  /** Whether the pointer is currently down or not. */\n  private _isPointerDown = false;\n\n  /** Set of currently active ripple references. */\n  private _activeRipples = new Set<RippleRef>();\n\n  /** Latest non-persistent ripple that was triggered. */\n  private _mostRecentTransientRipple: RippleRef | null;\n\n  /** Time in milliseconds when the last touchstart event happened. */\n  private _lastTouchStartEvent: number;\n\n  /** Whether pointer-up event listeners have been registered. */\n  private _pointerUpEventsRegistered = false;\n\n  /**\n   * Cached dimensions of the ripple container. Set when the first\n   * ripple is shown and cleared once no more ripples are visible.\n   */\n  private _containerRect: ClientRect | null;\n\n  constructor(private _target: RippleTarget,\n              private _ngZone: NgZone,\n              elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n              platform: Platform) {\n\n    // Only do anything if we're on the browser.\n    if (platform.isBrowser) {\n      this._containerElement = coerceElement(elementOrElementRef);\n    }\n  }\n\n  /**\n   * Fades in a ripple at the given coordinates.\n   * @param x Coordinate within the element, along the X axis at which to start the ripple.\n   * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n   * @param config Extra ripple options.\n   */\n  fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n    const containerRect = this._containerRect =\n                          this._containerRect || this._containerElement.getBoundingClientRect();\n    const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n    if (config.centered) {\n      x = containerRect.left + containerRect.width / 2;\n      y = containerRect.top + containerRect.height / 2;\n    }\n\n    const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n    const offsetX = x - containerRect.left;\n    const offsetY = y - containerRect.top;\n    const duration = animationConfig.enterDuration;\n\n    const ripple = document.createElement('div');\n    ripple.classList.add('mat-ripple-element');\n\n    ripple.style.left = `${offsetX - radius}px`;\n    ripple.style.top = `${offsetY - radius}px`;\n    ripple.style.height = `${radius * 2}px`;\n    ripple.style.width = `${radius * 2}px`;\n\n    // If a custom color has been specified, set it as inline style. If no color is\n    // set, the default color will be applied through the ripple theme styles.\n    if (config.color != null) {\n      ripple.style.backgroundColor = config.color;\n    }\n\n    ripple.style.transitionDuration = `${duration}ms`;\n\n    this._containerElement.appendChild(ripple);\n\n    // By default the browser does not recalculate the styles of dynamically created\n    // ripple elements. This is critical because then the `scale` would not animate properly.\n    enforceStyleRecalculation(ripple);\n\n    ripple.style.transform = 'scale(1)';\n\n    // Exposed reference to the ripple that will be returned.\n    const rippleRef = new RippleRef(this, ripple, config);\n\n    rippleRef.state = RippleState.FADING_IN;\n\n    // Add the ripple reference to the list of all active ripples.\n    this._activeRipples.add(rippleRef);\n\n    if (!config.persistent) {\n      this._mostRecentTransientRipple = rippleRef;\n    }\n\n    // Wait for the ripple element to be completely faded in.\n    // Once it's faded in, the ripple can be hidden immediately if the mouse is released.\n    this._runTimeoutOutsideZone(() => {\n      const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n\n      rippleRef.state = RippleState.VISIBLE;\n\n      // When the timer runs out while the user has kept their pointer down, we want to\n      // keep only the persistent ripples and the latest transient ripple. We do this,\n      // because we don't want stacked transient ripples to appear after their enter\n      // animation has finished.\n      if (!config.persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n        rippleRef.fadeOut();\n      }\n    }, duration);\n\n    return rippleRef;\n  }\n\n  /** Fades out a ripple reference. */\n  fadeOutRipple(rippleRef: RippleRef) {\n    const wasActive = this._activeRipples.delete(rippleRef);\n\n    if (rippleRef === this._mostRecentTransientRipple) {\n      this._mostRecentTransientRipple = null;\n    }\n\n    // Clear out the cached bounding rect if we have no more ripples.\n    if (!this._activeRipples.size) {\n      this._containerRect = null;\n    }\n\n    // For ripples that are not active anymore, don't re-run the fade-out animation.\n    if (!wasActive) {\n      return;\n    }\n\n    const rippleEl = rippleRef.element;\n    const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n    rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n    rippleEl.style.opacity = '0';\n    rippleRef.state = RippleState.FADING_OUT;\n\n    // Once the ripple faded out, the ripple can be safely removed from the DOM.\n    this._runTimeoutOutsideZone(() => {\n      rippleRef.state = RippleState.HIDDEN;\n      rippleEl.parentNode!.removeChild(rippleEl);\n    }, animationConfig.exitDuration);\n  }\n\n  /** Fades out all currently active ripples. */\n  fadeOutAll() {\n    this._activeRipples.forEach(ripple => ripple.fadeOut());\n  }\n\n  /** Fades out all currently active non-persistent ripples. */\n  fadeOutAllNonPersistent() {\n    this._activeRipples.forEach(ripple => {\n      if (!ripple.config.persistent) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Sets up the trigger event listeners */\n  setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n    const element = coerceElement(elementOrElementRef);\n\n    if (!element || element === this._triggerElement) {\n      return;\n    }\n\n    // Remove all previously registered event listeners from the trigger element.\n    this._removeTriggerEvents();\n\n    this._triggerElement = element;\n    this._registerEvents(pointerDownEvents);\n  }\n\n  /**\n   * Handles all registered events.\n   * @docs-private\n   */\n  handleEvent(event: Event) {\n    if (event.type === 'mousedown') {\n      this._onMousedown(event as MouseEvent);\n    } else if (event.type === 'touchstart') {\n      this._onTouchStart(event as TouchEvent);\n    } else {\n      this._onPointerUp();\n    }\n\n    // If pointer-up events haven't been registered yet, do so now.\n    // We do this on-demand in order to reduce the total number of event listeners\n    // registered by the ripples, which speeds up the rendering time for large UIs.\n    if (!this._pointerUpEventsRegistered) {\n      this._registerEvents(pointerUpEvents);\n      this._pointerUpEventsRegistered = true;\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using mouse. */\n  private _onMousedown(event: MouseEvent) {\n    // Screen readers will fire fake mouse events for space/enter. Skip launching a\n    // ripple in this case for consistency with the non-screen-reader experience.\n    const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n    const isSyntheticEvent = this._lastTouchStartEvent &&\n        Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n    if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n      this._isPointerDown = true;\n      this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using touch. */\n  private _onTouchStart(event: TouchEvent) {\n    if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n      // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n      // events will launch a second ripple if we don't ignore mouse events for a specific\n      // time after a touchstart event.\n      this._lastTouchStartEvent = Date.now();\n      this._isPointerDown = true;\n\n      // Use `changedTouches` so we skip any touches where the user put\n      // their finger down, but used another finger to tap the element again.\n      const touches = event.changedTouches;\n\n      for (let i = 0; i < touches.length; i++) {\n        this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n      }\n    }\n  }\n\n  /** Function being called whenever the trigger is being released. */\n  private _onPointerUp() {\n    if (!this._isPointerDown) {\n      return;\n    }\n\n    this._isPointerDown = false;\n\n    // Fade-out all ripples that are visible and not persistent.\n    this._activeRipples.forEach(ripple => {\n      // By default, only ripples that are completely visible will fade out on pointer release.\n      // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n      const isVisible = ripple.state === RippleState.VISIBLE ||\n        ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN;\n\n      if (!ripple.config.persistent && isVisible) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n  private _runTimeoutOutsideZone(fn: Function, delay = 0) {\n    this._ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n  }\n\n  /** Registers event listeners for a given list of events. */\n  private _registerEvents(eventTypes: string[]) {\n    this._ngZone.runOutsideAngular(() => {\n      eventTypes.forEach((type) => {\n        this._triggerElement!.addEventListener(type, this, passiveEventOptions);\n      });\n    });\n  }\n\n  /** Removes previously registered event listeners from the trigger element. */\n  _removeTriggerEvents() {\n    if (this._triggerElement) {\n      pointerDownEvents.forEach((type) => {\n        this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n      });\n\n      if (this._pointerUpEventsRegistered) {\n        pointerUpEvents.forEach((type) => {\n          this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n        });\n      }\n    }\n  }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n  // Enforce a style recalculation by calling `getComputedStyle` and accessing any property.\n  // Calling `getPropertyValue` is important to let optimizers know that this is not a noop.\n  // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n  window.getComputedStyle(element).getPropertyValue('opacity');\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: ClientRect) {\n  const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n  const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n  return Math.sqrt(distX * distX + distY * distY);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n} from '@angular/core';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n  /**\n   * Whether ripples should be disabled. Ripples can be still launched manually by using\n   * the `launch()` method. Therefore focus indicators will still show up.\n   */\n  disabled?: boolean;\n\n  /**\n   * Default configuration for the animation duration of the ripples. There are two phases with\n   * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n   * by the value of `matRippleAnimation` or if the `NoopAnimationsModule` is included.\n   */\n  animation?: RippleAnimationConfig;\n\n  /**\n   * Whether ripples should start fading out immediately after the mouse or touch is released. By\n   * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n   */\n  terminateOnPointerUp?: boolean;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\n    new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\n\n@Directive({\n  selector: '[mat-ripple], [matRipple]',\n  exportAs: 'matRipple',\n  host: {\n    'class': 'mat-ripple',\n    '[class.mat-ripple-unbounded]': 'unbounded'\n  }\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n\n  /** Custom color for all ripples. */\n  @Input('matRippleColor') color: string;\n\n  /** Whether the ripples should be visible outside the component's bounds. */\n  @Input('matRippleUnbounded') unbounded: boolean;\n\n  /**\n   * Whether the ripple always originates from the center of the host element's bounds, rather\n   * than originating from the location of the click event.\n   */\n  @Input('matRippleCentered') centered: boolean;\n\n  /**\n   * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n   * will be the distance from the center of the ripple to the furthest corner of the host element's\n   * bounding rectangle.\n   */\n  @Input('matRippleRadius') radius: number = 0;\n\n  /**\n   * Configuration for the ripple animation. Allows modifying the enter and exit animation\n   * duration of the ripples. The animation durations will be overwritten if the\n   * `NoopAnimationsModule` is being used.\n   */\n  @Input('matRippleAnimation') animation: RippleAnimationConfig;\n\n  /**\n   * Whether click events will not trigger the ripple. Ripples can be still launched manually\n   * by using the `launch()` method.\n   */\n  @Input('matRippleDisabled')\n  get disabled() { return this._disabled; }\n  set disabled(value: boolean) {\n    if (value) {\n      this.fadeOutAllNonPersistent();\n    }\n    this._disabled = value;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _disabled: boolean = false;\n\n  /**\n   * The element that triggers the ripple when click events are received.\n   * Defaults to the directive's host element.\n   */\n  @Input('matRippleTrigger')\n  get trigger() { return this._trigger || this._elementRef.nativeElement; }\n  set trigger(trigger: HTMLElement) {\n    this._trigger = trigger;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _trigger: HTMLElement;\n\n  /** Renderer for the ripple DOM manipulations. */\n  private _rippleRenderer: RippleRenderer;\n\n  /** Options that are set globally for all ripples. */\n  private _globalOptions: RippleGlobalOptions;\n\n  /** Whether ripple directive is initialized and the input bindings are set. */\n  private _isInitialized: boolean = false;\n\n  constructor(private _elementRef: ElementRef<HTMLElement>,\n              ngZone: NgZone,\n              platform: Platform,\n              @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions?: RippleGlobalOptions,\n              @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n    this._globalOptions = globalOptions || {};\n    this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n  }\n\n  ngOnInit() {\n    this._isInitialized = true;\n    this._setupTriggerEventsIfEnabled();\n  }\n\n  ngOnDestroy() {\n    this._rippleRenderer._removeTriggerEvents();\n  }\n\n  /** Fades out all currently showing ripple elements. */\n  fadeOutAll() {\n    this._rippleRenderer.fadeOutAll();\n  }\n\n  /** Fades out all currently showing non-persistent ripple elements. */\n  fadeOutAllNonPersistent() {\n    this._rippleRenderer.fadeOutAllNonPersistent();\n  }\n\n  /**\n   * Ripple configuration from the directive's input values.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleConfig(): RippleConfig {\n    return {\n      centered: this.centered,\n      radius: this.radius,\n      color: this.color,\n      animation: {\n        ...this._globalOptions.animation,\n        ...(this._animationMode === 'NoopAnimations' ? {enterDuration: 0, exitDuration: 0} : {}),\n        ...this.animation\n      },\n      terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n    };\n  }\n\n  /**\n   * Whether ripples on pointer-down are disabled or not.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleDisabled(): boolean {\n    return this.disabled || !!this._globalOptions.disabled;\n  }\n\n  /** Sets up the trigger event listeners if ripples are enabled. */\n  private _setupTriggerEventsIfEnabled() {\n    if (!this.disabled && this._isInitialized) {\n      this._rippleRenderer.setupTriggerEvents(this.trigger);\n    }\n  }\n\n  /**\n   * Launches a manual ripple using the specified ripple configuration.\n   * @param config Configuration for the manual ripple.\n   */\n  launch(config: RippleConfig): RippleRef;\n\n  /**\n   * Launches a manual ripple at the specified coordinates relative to the viewport.\n   * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param config Optional ripple configuration for the manual ripple.\n   */\n  launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n  /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n  launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n    if (typeof configOrX === 'number') {\n      return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n    } else {\n      return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\n    }\n  }\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatRipple} from './ripple';\n\nexport * from './ripple';\nexport * from './ripple-ref';\nexport * from './ripple-renderer';\n\n@NgModule({\n  imports: [MatCommonModule, PlatformModule],\n  exports: [MatRipple, MatCommonModule],\n  declarations: [MatRipple],\n})\nexport class MatRippleModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  Component,\n  ViewEncapsulation,\n  Input,\n  ChangeDetectionStrategy,\n  Inject,\n  Optional,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'mat-pseudo-checkbox',\n  styleUrls: ['pseudo-checkbox.css'],\n  template: '',\n  host: {\n    'class': 'mat-pseudo-checkbox',\n    '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n    '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n    '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n    '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n  },\n})\nexport class MatPseudoCheckbox {\n  /** Display state of the checkbox. */\n  @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n  /** Whether the checkbox is disabled. */\n  @Input() disabled: boolean = false;\n\n  constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox/pseudo-checkbox';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatPseudoCheckbox],\n  declarations: [MatPseudoCheckbox]\n})\nexport class MatPseudoCheckboxModule { }\n\n\nexport * from './pseudo-checkbox/pseudo-checkbox';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n  disableRipple?: boolean;\n  multiple?: boolean;\n  inertGroups?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT =\n    new InjectionToken<MatOptionParentComponent>('MAT_OPTION_PARENT_COMPONENT');\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  InjectionToken,\n  Input,\n  ViewEncapsulation,\n  Directive, Inject, Optional\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '../common-behaviors/disabled';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n//    when the text will be read out so sometimes it comes in too late or never if the user\n//    navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n//    won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n//     doesn't read out the text at all. Furthermore, on\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nconst _MatOptgroupMixinBase = mixinDisabled(class {});\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n@Directive()\nexport class _MatOptgroupBase extends _MatOptgroupMixinBase implements CanDisable {\n  /** Label for the option group. */\n  @Input() label: string;\n\n  /** Unique id for the underlying label. */\n  _labelId: string = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n\n  /** Whether the group is in inert a11y mode. */\n  _inert: boolean;\n\n  constructor(@Inject(MAT_OPTION_PARENT_COMPONENT) @Optional() parent?: MatOptionParentComponent) {\n    super();\n    this._inert = parent?.inertGroups ?? false;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n  selector: 'mat-optgroup',\n  exportAs: 'matOptgroup',\n  templateUrl: 'optgroup.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  styleUrls: ['optgroup.css'],\n  host: {\n    'class': 'mat-optgroup',\n    '[attr.role]': '_inert ? null : \"group\"',\n    '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n    '[attr.aria-labelledby]': '_inert ? null : _labelId',\n    '[class.mat-optgroup-disabled]': 'disabled',\n  },\n  providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup extends _MatOptgroupBase {\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n  Directive,\n} from '@angular/core';\nimport {FocusOptions, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {MatOptgroup, _MatOptgroupBase, MAT_OPTGROUP} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange {\n  constructor(\n    /** Reference to the option that emitted the event. */\n    public source: _MatOptionBase,\n    /** Whether the change in the option's value was a result of a user action. */\n    public isUserInput = false) { }\n}\n\n@Directive()\nexport class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy {\n  private _selected = false;\n  private _active = false;\n  private _disabled = false;\n  private _mostRecentViewValue = '';\n\n  /** Whether the wrapping component is in multiple selection mode. */\n  get multiple() { return this._parent && this._parent.multiple; }\n\n  /** Whether or not the option is currently selected. */\n  get selected(): boolean { return this._selected; }\n\n  /** The form value of the option. */\n  @Input() value: any;\n\n  /** The unique ID of the option. */\n  @Input() id: string = `mat-option-${_uniqueIdCounter++}`;\n\n  /** Whether the option is disabled. */\n  @Input()\n  get disabled() { return (this.group && this.group.disabled) || this._disabled; }\n  set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n  /** Whether ripples for the option are disabled. */\n  get disableRipple() { return this._parent && this._parent.disableRipple; }\n\n  /** Event emitted when the option is selected or deselected. */\n  // tslint:disable-next-line:no-output-on-prefix\n  @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange>();\n\n  /** Emits when the state of the option changes and any parents have to be notified. */\n  readonly _stateChanges = new Subject<void>();\n\n  constructor(\n    private _element: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _parent: MatOptionParentComponent,\n    readonly group: _MatOptgroupBase) {}\n\n  /**\n   * Whether or not the option is currently active and ready to be selected.\n   * An active option displays styles as if it is focused, but the\n   * focus is actually retained somewhere else. This comes in handy\n   * for components like autocomplete where focus must remain on the input.\n   */\n  get active(): boolean {\n    return this._active;\n  }\n\n  /**\n   * The displayed value of the option. It is necessary to show the selected option in the\n   * select's trigger.\n   */\n  get viewValue(): string {\n    // TODO(kara): Add input property alternative for node envs.\n    return (this._getHostElement().textContent || '').trim();\n  }\n\n  /** Selects the option. */\n  select(): void {\n    if (!this._selected) {\n      this._selected = true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Deselects the option. */\n  deselect(): void {\n    if (this._selected) {\n      this._selected = false;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Sets focus onto this option. */\n  focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n    // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n    // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n    const element = this._getHostElement();\n\n    if (typeof element.focus === 'function') {\n      element.focus(options);\n    }\n  }\n\n  /**\n   * This method sets display styles on the option to make it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setActiveStyles(): void {\n    if (!this._active) {\n      this._active = true;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * This method removes display styles on the option that made it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setInactiveStyles(): void {\n    if (this._active) {\n      this._active = false;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    return this.viewValue;\n  }\n\n  /** Ensures the option is selected when activated from the keyboard. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n      this._selectViaInteraction();\n\n      // Prevent the page from scrolling down and form submits.\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * `Selects the option while indicating the selection came from the user. Used to\n   * determine if the select's view -> model callback should be invoked.`\n   */\n  _selectViaInteraction(): void {\n    if (!this.disabled) {\n      this._selected = this.multiple ? !this._selected : true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent(true);\n    }\n  }\n\n  /**\n   * Gets the `aria-selected` value for the option. We explicitly omit the `aria-selected`\n   * attribute from single-selection, unselected options. Including the `aria-selected=\"false\"`\n   * attributes adds a significant amount of noise to screen-reader users without providing useful\n   * information.\n   */\n  _getAriaSelected(): boolean|null {\n    return this.selected || (this.multiple ? false : null);\n  }\n\n  /** Returns the correct tabindex for the option depending on disabled state. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Gets the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._element.nativeElement;\n  }\n\n  ngAfterViewChecked() {\n    // Since parent components could be using the option's label to display the selected values\n    // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n    // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n    // relatively cheap, however we still limit them only to selected options in order to avoid\n    // hitting the DOM too often.\n    if (this._selected) {\n      const viewValue = this.viewValue;\n\n      if (viewValue !== this._mostRecentViewValue) {\n        this._mostRecentViewValue = viewValue;\n        this._stateChanges.next();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  /** Emits the selection change event. */\n  private _emitSelectionChangeEvent(isUserInput = false): void {\n    this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n  selector: 'mat-option',\n  exportAs: 'matOption',\n  host: {\n    'role': 'option',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[class.mat-selected]': 'selected',\n    '[class.mat-option-multiple]': 'multiple',\n    '[class.mat-active]': 'active',\n    '[id]': 'id',\n    '[attr.aria-selected]': '_getAriaSelected()',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[class.mat-option-disabled]': 'disabled',\n    '(click)': '_selectViaInteraction()',\n    '(keydown)': '_handleKeydown($event)',\n    'class': 'mat-option mat-focus-indicator',\n  },\n  styleUrls: ['option.css'],\n  templateUrl: 'option.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption extends _MatOptionBase {\n  constructor(\n    element: ElementRef<HTMLElement>,\n    changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(MAT_OPTION_PARENT_COMPONENT) parent: MatOptionParentComponent,\n    @Optional() @Inject(MAT_OPTGROUP) group: MatOptgroup) {\n    super(element, changeDetectorRef, parent, group);\n  }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(optionIndex: number, options: QueryList<MatOption>,\n  optionGroups: QueryList<MatOptgroup>): number {\n\n  if (optionGroups.length) {\n    let optionsArray = options.toArray();\n    let groups = optionGroups.toArray();\n    let groupCounter = 0;\n\n    for (let i = 0; i < optionIndex + 1; i++) {\n      if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n        groupCounter++;\n      }\n    }\n\n    return groupCounter;\n  }\n\n  return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(optionOffset: number, optionHeight: number,\n    currentScrollPosition: number, panelHeight: number): number {\n  if (optionOffset < currentScrollPosition) {\n    return optionOffset;\n  }\n\n  if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n    return Math.max(0, optionOffset - panelHeight + optionHeight);\n  }\n\n  return currentScrollPosition;\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatRippleModule} from '../ripple/index';\nimport {MatPseudoCheckboxModule} from '../selection/index';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n\n@NgModule({\n  imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n  exports: [MatOption, MatOptgroup],\n  declarations: [MatOption, MatOptgroup]\n})\nexport class MatOptionModule {}\n\n\nexport * from './option';\nexport * from './optgroup';\nexport * from './option-parent';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './version';\nexport * from './animation/animation';\nexport * from './common-behaviors/index';\nexport * from './datetime/index';\nexport * from './error/error-options';\nexport * from './line/line';\nexport * from './option/index';\nexport * from './ripple/index';\nexport * from './selection/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MATERIAL_SANITY_CHECKS_FACTORY as ɵangular_material_src_material_core_core_a} from './common-behaviors/common-module';"],"names":["VERSION","CDK_VERSION"],"mappings":"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"}
     1{"version":3,"file":"core.js","sources":["../../../../../../src/material/core/version.ts","../../../../../../src/material/core/animation/animation.ts","../../../../../../src/material/core/common-behaviors/common-module.ts","../../../../../../src/material/core/common-behaviors/disabled.ts","../../../../../../src/material/core/common-behaviors/color.ts","../../../../../../src/material/core/common-behaviors/disable-ripple.ts","../../../../../../src/material/core/common-behaviors/tabindex.ts","../../../../../../src/material/core/common-behaviors/error-state.ts","../../../../../../src/material/core/common-behaviors/initialized.ts","../../../../../../src/material/core/common-behaviors/index.ts","../../../../../../src/material/core/datetime/date-adapter.ts","../../../../../../src/material/core/datetime/date-formats.ts","../../../../../../src/material/core/datetime/native-date-adapter.ts","../../../../../../src/material/core/datetime/native-date-formats.ts","../../../../../../src/material/core/datetime/index.ts","../../../../../../src/material/core/error/error-options.ts","../../../../../../src/material/core/line/line.ts","../../../../../../src/material/core/ripple/ripple-ref.ts","../../../../../../src/material/core/ripple/ripple-renderer.ts","../../../../../../src/material/core/ripple/ripple.ts","../../../../../../src/material/core/ripple/index.ts","../../../../../../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../../../../src/material/core/selection/index.ts","../../../../../../src/material/core/option/option-parent.ts","../../../../../../src/material/core/option/optgroup.ts","../../../../../../src/material/core/option/option.ts","../../../../../../src/material/core/option/index.ts","../../../../../../src/material/core/public-api.ts","../../../../../../src/material/core/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('12.2.10');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport class AnimationCurves {\n  static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n  static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n  static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n  static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n\n/** @docs-private */\nexport class AnimationDurations {\n  static COMPLEX = '375ms';\n  static ENTERING = '225ms';\n  static EXITING = '195ms';\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {HighContrastModeDetector} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Inject, InjectionToken, isDevMode, NgModule, Optional, Version} from '@angular/core';\nimport {VERSION as CDK_VERSION} from '@angular/cdk';\nimport {DOCUMENT} from '@angular/common';\nimport {_isTestEnvironment} from '@angular/cdk/platform';\n\n// Private version constant to circumvent test/build issues,\n// i.e. avoid core to depend on the @angular/material primary entry-point\n// Can be removed once the Material primary entry-point no longer\n// re-exports all secondary entry-points\nconst VERSION = new Version('12.2.10');\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): SanityChecks {\n  return true;\n}\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<SanityChecks>('mat-sanity-checks', {\n  providedIn: 'root',\n  factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n\n/**\n * Possible sanity checks that can be enabled. If set to\n * true/false, all checks will be enabled/disabled.\n */\nexport type SanityChecks = boolean | GranularSanityChecks;\n\n/** Object that can be used to configure the sanity checks granularly. */\nexport interface GranularSanityChecks {\n  doctype: boolean;\n  theme: boolean;\n  version: boolean;\n}\n\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\n@NgModule({\n  imports: [BidiModule],\n  exports: [BidiModule],\n})\nexport class MatCommonModule {\n  /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n  private _hasDoneGlobalChecks = false;\n\n  /** Configured sanity checks. */\n  private _sanityChecks: SanityChecks;\n\n  /** Used to reference correct document/window */\n  protected _document: Document;\n\n  constructor(\n      highContrastModeDetector: HighContrastModeDetector,\n      @Optional() @Inject(MATERIAL_SANITY_CHECKS) sanityChecks: any,\n      @Inject(DOCUMENT) document: any) {\n    this._document = document;\n\n    // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n    // in MatCommonModule.\n    highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n\n    // Note that `_sanityChecks` is typed to `any`, because AoT\n    // throws an error if we use the `SanityChecks` type directly.\n    this._sanityChecks = sanityChecks;\n\n    if (!this._hasDoneGlobalChecks) {\n      this._checkDoctypeIsDefined();\n      this._checkThemeIsPresent();\n      this._checkCdkVersionMatch();\n      this._hasDoneGlobalChecks = true;\n    }\n  }\n\n  /** Gets whether a specific sanity check is enabled. */\n  private _checkIsEnabled(name: keyof GranularSanityChecks): boolean {\n    // TODO(crisbeto): we can't use `ngDevMode` here yet, because ViewEngine apps might not support\n    // it. Since these checks can have performance implications and they aren't tree shakeable\n    // in their current form, we can leave the `isDevMode` check in for now.\n    // tslint:disable-next-line:ban\n    if (!isDevMode() || _isTestEnvironment()) {\n      return false;\n    }\n\n    if (typeof this._sanityChecks === 'boolean') {\n      return this._sanityChecks;\n    }\n\n    return !!this._sanityChecks[name];\n  }\n\n  private _checkDoctypeIsDefined(): void {\n    if (this._checkIsEnabled('doctype') && !this._document.doctype) {\n      console.warn(\n        'Current document does not have a doctype. This may cause ' +\n        'some Angular Material components not to behave as expected.'\n      );\n    }\n  }\n\n  private _checkThemeIsPresent(): void {\n    // We need to assert that the `body` is defined, because these checks run very early\n    // and the `body` won't be defined if the consumer put their scripts in the `head`.\n    if (!this._checkIsEnabled('theme') || !this._document.body ||\n        typeof getComputedStyle !== 'function') {\n      return;\n    }\n\n    const testElement = this._document.createElement('div');\n\n    testElement.classList.add('mat-theme-loaded-marker');\n    this._document.body.appendChild(testElement);\n\n    const computedStyle = getComputedStyle(testElement);\n\n    // In some situations the computed style of the test element can be null. For example in\n    // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n    // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n    if (computedStyle && computedStyle.display !== 'none') {\n      console.warn(\n        'Could not find Angular Material core theme. Most Material ' +\n        'components may not work as expected. For more info refer ' +\n        'to the theming guide: https://material.angular.io/guide/theming'\n      );\n    }\n\n    this._document.body.removeChild(testElement);\n  }\n\n  /** Checks whether the material version matches the cdk version */\n  private _checkCdkVersionMatch(): void {\n    if (this._checkIsEnabled('version') && VERSION.full !== CDK_VERSION.full) {\n      console.warn(\n          'The Angular Material version (' + VERSION.full + ') does not match ' +\n          'the Angular CDK version (' + CDK_VERSION.full + ').\\n' +\n          'Please ensure the versions of these two packages exactly match.'\n      );\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisable {\n  /** Whether the component is disabled. */\n  disabled: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n  return class extends base {\n    private _disabled: boolean = false;\n\n    get disabled() { return this._disabled; }\n    set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AbstractConstructor, Constructor} from './constructor';\nimport {ElementRef} from '@angular/core';\n\n/** @docs-private */\nexport interface CanColor {\n  /** Theme color palette for the component. */\n  color: ThemePalette;\n\n  /** Default color to fall back to if no value is set. */\n  defaultColor: ThemePalette | undefined;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\n/** @docs-private */\nexport interface HasElementRef {\n  _elementRef: ElementRef;\n}\n\n/** Possible color palette values. */\nexport type ThemePalette = 'primary' | 'accent' | 'warn' | undefined;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T;\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n    base: T, defaultColor?: ThemePalette): CanColorCtor & T {\n  return class extends base {\n    private _color: ThemePalette;\n    defaultColor = defaultColor;\n\n    get color(): ThemePalette { return this._color; }\n    set color(value: ThemePalette) {\n      const colorPalette = value || this.defaultColor;\n\n      if (colorPalette !== this._color) {\n        if (this._color) {\n          this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n        }\n        if (colorPalette) {\n          this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n        }\n\n        this._color = colorPalette;\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n\n      // Set the default color that can be specified from the mixin.\n      this.color = defaultColor;\n    }\n  };\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n  /** Whether ripples are disabled. */\n  disableRipple: boolean;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanDisableRippleCtor = Constructor<CanDisableRipple> &\n                                   AbstractConstructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends AbstractConstructor<{}>>(base: T):\n  CanDisableRippleCtor & T;\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): CanDisableRippleCtor & T {\n  return class extends base {\n    private _disableRipple: boolean = false;\n\n    /** Whether the ripple effect is disabled or not. */\n    get disableRipple() { return this._disableRipple; }\n    set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n\n    constructor(...args: any[]) { super(...args); }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Constructor, AbstractConstructor} from './constructor';\nimport {CanDisable} from './disabled';\n\n\n/** @docs-private */\nexport interface HasTabIndex {\n  /** Tabindex of the component. */\n  tabIndex: number;\n\n  /** Tabindex to which to fall back to if no value is set. */\n  defaultTabIndex: number;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(base: T,\n  defaultTabIndex?: number): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n  base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n  return class extends base implements HasTabIndex {\n    private _tabIndex: number = defaultTabIndex;\n    defaultTabIndex = defaultTabIndex;\n\n    get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\n    set tabIndex(value: number) {\n      // If the specified tabIndex value is null or undefined, fall back to the default value.\n      this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {FormControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher} from '../error/error-options';\nimport {AbstractConstructor, Constructor} from './constructor';\n\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n  /** Emits whenever the component state changes. */\n  readonly stateChanges: Subject<void>;\n  /** Updates the error state based on the provided error state matcher. */\n  updateErrorState(): void;\n  /** Whether the component is in an error state. */\n  errorState: boolean;\n  /** An object used to control the error state of the component. */\n  errorStateMatcher: ErrorStateMatcher;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState> &\n                                      AbstractConstructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n  _parentFormGroup: FormGroupDirective;\n  _parentForm: NgForm;\n  _defaultErrorStateMatcher: ErrorStateMatcher;\n  ngControl: NgControl;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T):\n  CanUpdateErrorStateCtor & T {\n  return class extends base {\n    // This class member exists as an interop with `MatFormFieldControl` which expects\n    // a public `stateChanges` observable to emit whenever the form field should be updated.\n    // The description is not specifically mentioning the error state, as classes using this\n    // mixin can/should emit an event in other cases too.\n    /** Emits whenever the component state changes. */\n    readonly stateChanges = new Subject<void>();\n\n    /** Whether the component is in an error state. */\n    errorState: boolean = false;\n\n    /** An object used to control the error state of the component. */\n    errorStateMatcher: ErrorStateMatcher;\n\n    /** Updates the error state based on the provided error state matcher. */\n    updateErrorState() {\n      const oldState = this.errorState;\n      const parent = this._parentFormGroup || this._parentForm;\n      const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n      const control = this.ngControl ? this.ngControl.control as FormControl : null;\n      const newState = matcher.isErrorState(control, parent);\n\n      if (newState !== oldState) {\n        this.errorState = newState;\n        this.stateChanges.next();\n      }\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Observable, Subscriber} from 'rxjs';\nimport {Constructor} from './constructor';\n\n\n/**\n * Mixin that adds an initialized property to a directive which, when subscribed to, will emit a\n * value once markInitialized has been called, which should be done during the ngOnInit function.\n * If the subscription is made after it has already been marked as initialized, then it will trigger\n * an emit immediately.\n * @docs-private\n */\nexport interface HasInitialized {\n  /** Stream that emits once during the directive/component's ngOnInit. */\n  initialized: Observable<void>;\n\n  /**\n   * Sets the state as initialized and must be called during ngOnInit to notify subscribers that\n   * the directive has been initialized.\n   * @docs-private\n   */\n  _markInitialized: () => void;\n}\n\n/**\n * @docs-private\n * @deprecated No longer necessary to apply to mixin classes. To be made private.\n * @breaking-change 13.0.0\n */\nexport type HasInitializedCtor = Constructor<HasInitialized>;\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nexport function mixinInitialized<T extends Constructor<{}>>(base: T):\n    HasInitializedCtor & T {\n  return class extends base {\n    /** Whether this directive has been marked as initialized. */\n    _isInitialized = false;\n\n    /**\n     * List of subscribers that subscribed before the directive was initialized. Should be notified\n     * during _markInitialized. Set to null after pending subscribers are notified, and should\n     * not expect to be populated after.\n     */\n    _pendingSubscribers: Subscriber<void>[] | null = [];\n\n    /**\n     * Observable stream that emits when the directive initializes. If already initialized, the\n     * subscriber is stored to be notified once _markInitialized is called.\n     */\n    initialized = new Observable<void>(subscriber => {\n      // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n      // when _markInitialized is called.\n      if (this._isInitialized) {\n        this._notifySubscriber(subscriber);\n      } else {\n        this._pendingSubscribers!.push(subscriber);\n      }\n    });\n\n    constructor(...args: any[]) { super(...args); }\n\n    /**\n     * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n     * of ngOnInit.\n     * @docs-private\n     */\n    _markInitialized(): void {\n      if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('This directive has already been marked as initialized and ' +\n            'should not be called twice.');\n      }\n\n      this._isInitialized = true;\n\n      this._pendingSubscribers!.forEach(this._notifySubscriber);\n      this._pendingSubscribers = null;\n    }\n\n    /** Emits and completes the subscriber stream (should only emit once). */\n    _notifySubscriber(subscriber: Subscriber<void>): void {\n      subscriber.next();\n      subscriber.complete();\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport {\n  MatCommonModule,\n  MATERIAL_SANITY_CHECKS,\n  SanityChecks,\n  GranularSanityChecks,\n} from './common-module';\nexport {CanDisable, CanDisableCtor, mixinDisabled} from './disabled';\nexport {CanColor, CanColorCtor, mixinColor, ThemePalette} from './color';\nexport {CanDisableRipple, CanDisableRippleCtor, mixinDisableRipple} from './disable-ripple';\nexport {HasTabIndex, HasTabIndexCtor, mixinTabIndex} from './tabindex';\nexport {CanUpdateErrorState, CanUpdateErrorStateCtor, mixinErrorState} from './error-state';\nexport {HasInitialized, HasInitializedCtor, mixinInitialized} from './initialized';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n  providedIn: 'root',\n  factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n  return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n  /** The locale to use for all dates. */\n  protected locale: any;\n  protected readonly _localeChanges = new Subject<void>();\n\n  /** A stream that emits when the locale changes. */\n  readonly localeChanges: Observable<void> = this._localeChanges;\n\n  /**\n   * Gets the year component of the given date.\n   * @param date The date to extract the year from.\n   * @returns The year component.\n   */\n  abstract getYear(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   * @param date The date to extract the month from.\n   * @returns The month component (0-indexed, 0 = January).\n   */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the date of the month component of the given date.\n   * @param date The date to extract the date of the month from.\n   * @returns The month component (1-indexed, 1 = first of month).\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the day of the week component of the given date.\n   * @param date The date to extract the day of the week from.\n   * @returns The month component (0-indexed, 0 = Sunday).\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Gets a list of names for the months.\n   * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n   * @returns An ordered list of all month names, starting with January.\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets a list of names for the dates of the month.\n   * @returns An ordered list of all date of the month names, starting with '1'.\n   */\n  abstract getDateNames(): string[];\n\n  /**\n   * Gets a list of names for the days of the week.\n   * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n   * @returns An ordered list of all weekday names, starting with Sunday.\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets the name for the year of the given date.\n   * @param date The date to get the year name for.\n   * @returns The name of the given year (e.g. '2017').\n   */\n  abstract getYearName(date: D): string;\n\n  /**\n   * Gets the first day of the week.\n   * @returns The first day of the week (0-indexed, 0 = Sunday).\n   */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   * @param date The date whose month should be checked.\n   * @returns The number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: D): number;\n\n  /**\n   * Clones the given date.\n   * @param date The date to clone\n   * @returns A new date equal to the given date.\n   */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n   * month and date.\n   * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n   * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n   * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n   * @returns The new date, or null if invalid.\n   */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Gets today's date.\n   * @returns Today's date.\n   */\n  abstract today(): D;\n\n  /**\n   * Parses a date from a user-provided value.\n   * @param value The value to parse.\n   * @param parseFormat The expected format of the value being parsed\n   *     (type is implementation-dependent).\n   * @returns The parsed date.\n   */\n  abstract parse(value: any, parseFormat: any): D | null;\n\n  /**\n   * Formats a date as a string according to the given format.\n   * @param date The value to format.\n   * @param displayFormat The format to use to display the date as a string.\n   * @returns The formatted date string.\n   */\n  abstract format(date: D, displayFormat: any): string;\n\n  /**\n   * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n   * calendar for each year and then finding the closest date in the new month. For example when\n   * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n   * @param date The date to add years to.\n   * @param years The number of years to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of years added.\n   */\n  abstract addCalendarYears(date: D, years: number): D;\n\n  /**\n   * Adds the given number of months to the date. Months are counted as if flipping a page on the\n   * calendar for each month and then finding the closest date in the new month. For example when\n   * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n   * @param date The date to add months to.\n   * @param months The number of months to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of months added.\n   */\n  abstract addCalendarMonths(date: D, months: number): D;\n\n  /**\n   * Adds the given number of days to the date. Days are counted as if moving one cell on the\n   * calendar for each day.\n   * @param date The date to add days to.\n   * @param days The number of days to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of days added.\n   */\n  abstract addCalendarDays(date: D, days: number): D;\n\n  /**\n   * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n   * This method is used to generate date strings that are compatible with native HTML attributes\n   * such as the `min` or `max` attribute of an `<input>`.\n   * @param date The date to get the ISO date string for.\n   * @returns The ISO date string date string.\n   */\n  abstract toIso8601(date: D): string;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateAdapter.\n   * @param obj The object to check\n   * @returns Whether the object is a date instance.\n   */\n  abstract isDateInstance(obj: any): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   * @param date The date to check.\n   * @returns Whether the date is valid.\n   */\n  abstract isValid(date: D): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   * @returns An invalid date.\n   */\n  abstract invalid(): D;\n\n /**\n  * Given a potential date object, returns that same date object if it is\n  * a valid date, or `null` if it's not a valid date.\n  * @param obj The object to check.\n  * @returns A date or `null`.\n  */\n  getValidDateOrNull(obj: unknown): D | null {\n    return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n   * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   * @param value The value to be deserialized into a date object.\n   * @returns The deserialized date object, either a valid date, null if the value can be\n   *     deserialized into a null date (e.g. the empty string), or an invalid date.\n   */\n  deserialize(value: any): D | null {\n    if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   * @param locale The new locale.\n   */\n  setLocale(locale: any) {\n    this.locale = locale;\n    this._localeChanges.next();\n  }\n\n  /**\n   * Compares two dates.\n   * @param first The first date to compare.\n   * @param second The second date to compare.\n   * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n   *     a number greater than 0 if the first date is later.\n   */\n  compareDate(first: D, second: D): number {\n    return this.getYear(first) - this.getYear(second) ||\n        this.getMonth(first) - this.getMonth(second) ||\n        this.getDate(first) - this.getDate(second);\n  }\n\n  /**\n   * Checks if two dates are equal.\n   * @param first The first date to check.\n   * @param second The second date to check.\n   * @returns Whether the two dates are equal.\n   *     Null dates are considered equal to other null dates.\n   */\n  sameDate(first: D | null, second: D | null): boolean {\n    if (first && second) {\n      let firstValid = this.isValid(first);\n      let secondValid = this.isValid(second);\n      if (firstValid && secondValid) {\n        return !this.compareDate(first, second);\n      }\n      return firstValid == secondValid;\n    }\n    return first == second;\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   * @param date The date to clamp.\n   * @param min The minimum value to allow. If null or omitted no min is enforced.\n   * @param max The maximum value to allow. If null or omitted no max is enforced.\n   * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n   *     otherwise `date`.\n   */\n  clampDate(date: D, min?: D | null, max?: D | null): D {\n    if (min && this.compareDate(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compareDate(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n\nexport type MatDateFormats = {\n  parse: {\n    dateInput: any\n  },\n  display: {\n    dateInput: any,\n    monthLabel?: any,\n    monthYearLabel: any,\n    dateA11yLabel: any,\n    monthYearA11yLabel: any,\n  }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n  SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n  SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n  'long': [\n    'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n    'October', 'November', 'December'\n  ],\n  'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n  'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n    /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   *\n   * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n   * getting the string representation of a Date object from its utc representation. We're keeping\n   * it here for sometime, just for precaution, in case we decide to revert some of these changes\n   * though.\n   */\n  useUtcForDisplay: boolean = true;\n\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string, platform: Platform) {\n    super();\n    super.setLocale(matDateLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\n  }\n\n  getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  getDayOfWeek(date: Date): number {\n    return date.getDay();\n  }\n\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n      return range(12, i =>\n          this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n    }\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  getDateNames(): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n      return range(31, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DATE_NAMES;\n  }\n\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n      return range(7, i => this._stripDirectionalityCharacters(\n          this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  getYearName(date: Date): string {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return String(this.getYear(date));\n  }\n\n  getFirstDayOfWeek(): number {\n    // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n    return 0;\n  }\n\n  getNumDaysInMonth(date: Date): number {\n    return this.getDate(this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + 1, 0));\n  }\n\n  clone(date: Date): Date {\n    return new Date(date.getTime());\n  }\n\n  createDate(year: number, month: number, date: number): Date {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      // Check for invalid month and date (except upper bound on date which we have to check after\n      // creating the Date).\n      if (month < 0 || month > 11) {\n        throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n      }\n\n      if (date < 1) {\n        throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n      }\n    }\n\n    let result = this._createDateWithOverflow(year, month, date);\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result;\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  parse(value: any): Date | null {\n    // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n    // parameters.\n    if (typeof value == 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value)) : null;\n  }\n\n  format(date: Date, displayFormat: Object): string {\n    if (!this.isValid(date)) {\n      throw Error('NativeDateAdapter: Cannot format invalid date.');\n    }\n\n    if (SUPPORTS_INTL_API) {\n      // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n      // if we attempt to format a date whose year is less than 1 or greater than 9999.\n      if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n        date = this.clone(date);\n        date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n      }\n\n      displayFormat = {...displayFormat, timeZone: 'utc'};\n\n      const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return this._stripDirectionalityCharacters(date.toDateString());\n  }\n\n  addCalendarYears(date: Date, years: number): Date {\n    return this.addCalendarMonths(date, years * 12);\n  }\n\n  addCalendarMonths(date: Date, months: number): Date {\n    let newDate = this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n    // It's possible to wind up in the wrong month if the original month has more days than the new\n    // month. In this case we want to go to the last day of the desired month.\n    // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n    // guarantee this.\n    if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n      newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n    }\n\n    return newDate;\n  }\n\n  addCalendarDays(date: Date, days: number): Date {\n    return this._createDateWithOverflow(\n        this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n  }\n\n  toIso8601(date: Date): string {\n    return [\n      date.getUTCFullYear(),\n      this._2digit(date.getUTCMonth() + 1),\n      this._2digit(date.getUTCDate())\n    ].join('-');\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  override deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        let date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  isDateInstance(obj: any) {\n    return obj instanceof Date;\n  }\n\n  isValid(date: Date) {\n    return !isNaN(date.getTime());\n  }\n\n  invalid(): Date {\n    return new Date(NaN);\n  }\n\n  /** Creates a date but allows the month and date to overflow. */\n  private _createDateWithOverflow(year: number, month: number, date: number) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setFullYear` and `setHours` instead.\n    const d = new Date();\n    d.setFullYear(year, month, date);\n    d.setHours(0, 0, 0, 0);\n    return d;\n  }\n\n  /**\n   * Pads a number to make it two digits.\n   * @param n The number to pad.\n   * @returns The padded number.\n   */\n  private _2digit(n: number) {\n    return ('00' + n).slice(-2);\n  }\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   * @param str The string to strip direction characters from.\n   * @returns The stripped string.\n   */\n  private _stripDirectionalityCharacters(str: string) {\n    return str.replace(/[\\u200e\\u200f]/g, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n   *    timeZone set to 'utc' to work fine.\n   * @param date Date from which we want to get the string representation according to dtf\n   * @returns A Date object with its UTC representation based on the passed in date info\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n    const d = new Date();\n    d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    return dtf.format(d);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {MatDateFormats} from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n  parse: {\n    dateInput: null,\n  },\n  display: {\n    dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n    monthYearLabel: {year: 'numeric', month: 'short'},\n    dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n    monthYearA11yLabel: {year: 'numeric', month: 'long'},\n  }\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n\n@NgModule({\n  imports: [PlatformModule],\n  providers: [\n    {provide: DateAdapter, useClass: NativeDateAdapter},\n  ],\n})\nexport class NativeDateModule {}\n\n\n@NgModule({\n  imports: [NativeDateModule],\n  providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS}],\n})\nexport class MatNativeDateModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, FormControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n  }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n  isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  NgModule,\n  Directive,\n  ElementRef,\n  QueryList,\n} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n  selector: '[mat-line], [matLine]',\n  host: {'class': 'mat-line'}\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(lines: QueryList<unknown>, element: ElementRef<HTMLElement>,\n                         prefix = 'mat') {\n  // Note: doesn't need to unsubscribe, because `changes`\n  // gets completed by Angular when the view is destroyed.\n  lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n    setClass(element, `${prefix}-2-line`, false);\n    setClass(element, `${prefix}-3-line`, false);\n    setClass(element, `${prefix}-multi-line`, false);\n\n    if (length === 2 || length === 3) {\n      setClass(element, `${prefix}-${length}-line`, true);\n    } else if (length > 3) {\n      setClass(element, `${prefix}-multi-line`, true);\n    }\n  });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n  const classList = element.nativeElement.classList;\n  isAdd ? classList.add(className) : classList.remove(className);\n}\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatLine, MatCommonModule],\n  declarations: [MatLine],\n})\nexport class MatLineModule { }\n","/**\n * @license\n * Copyright Google LLC 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 */\n\n/** Possible states for a ripple element. */\nexport const enum RippleState {\n  FADING_IN, VISIBLE, FADING_OUT, HIDDEN\n}\n\nexport type RippleConfig = {\n  color?: string;\n  centered?: boolean;\n  radius?: number;\n  persistent?: boolean;\n  animation?: RippleAnimationConfig;\n  terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n  /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n  enterDuration?: number;\n  /** Duration in milliseconds for the exit animation (fade-out). */\n  exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n\n  /** Current state of the ripple. */\n  state: RippleState = RippleState.HIDDEN;\n\n  constructor(\n    private _renderer: {fadeOutRipple(ref: RippleRef): void},\n    /** Reference to the ripple HTML element. */\n    public element: HTMLElement,\n    /** Ripple configuration used for the ripple. */\n    public config: RippleConfig) {\n  }\n\n  /** Fades out the ripple element. */\n  fadeOut() {\n    this._renderer.fadeOutRipple(this);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC 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 {ElementRef, NgZone} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n  /** Configuration for ripples that are launched on pointer down. */\n  rippleConfig: RippleConfig;\n  /** Whether ripples on pointer down should be disabled. */\n  rippleDisabled: boolean;\n}\n\n\n// TODO: import these values from `@material/ripple` eventually.\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n  enterDuration: 225,\n  exitDuration: 150\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options that apply to all the event listeners that are bound by the ripple renderer. */\nconst passiveEventOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n  /** Element where the ripples are being added to. */\n  private _containerElement: HTMLElement;\n\n  /** Element which triggers the ripple elements on mouse events. */\n  private _triggerElement: HTMLElement | null;\n\n  /** Whether the pointer is currently down or not. */\n  private _isPointerDown = false;\n\n  /** Set of currently active ripple references. */\n  private _activeRipples = new Set<RippleRef>();\n\n  /** Latest non-persistent ripple that was triggered. */\n  private _mostRecentTransientRipple: RippleRef | null;\n\n  /** Time in milliseconds when the last touchstart event happened. */\n  private _lastTouchStartEvent: number;\n\n  /** Whether pointer-up event listeners have been registered. */\n  private _pointerUpEventsRegistered = false;\n\n  /**\n   * Cached dimensions of the ripple container. Set when the first\n   * ripple is shown and cleared once no more ripples are visible.\n   */\n  private _containerRect: ClientRect | null;\n\n  constructor(private _target: RippleTarget,\n              private _ngZone: NgZone,\n              elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n              platform: Platform) {\n\n    // Only do anything if we're on the browser.\n    if (platform.isBrowser) {\n      this._containerElement = coerceElement(elementOrElementRef);\n    }\n  }\n\n  /**\n   * Fades in a ripple at the given coordinates.\n   * @param x Coordinate within the element, along the X axis at which to start the ripple.\n   * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n   * @param config Extra ripple options.\n   */\n  fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n    const containerRect = this._containerRect =\n                          this._containerRect || this._containerElement.getBoundingClientRect();\n    const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n    if (config.centered) {\n      x = containerRect.left + containerRect.width / 2;\n      y = containerRect.top + containerRect.height / 2;\n    }\n\n    const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n    const offsetX = x - containerRect.left;\n    const offsetY = y - containerRect.top;\n    const duration = animationConfig.enterDuration;\n\n    const ripple = document.createElement('div');\n    ripple.classList.add('mat-ripple-element');\n\n    ripple.style.left = `${offsetX - radius}px`;\n    ripple.style.top = `${offsetY - radius}px`;\n    ripple.style.height = `${radius * 2}px`;\n    ripple.style.width = `${radius * 2}px`;\n\n    // If a custom color has been specified, set it as inline style. If no color is\n    // set, the default color will be applied through the ripple theme styles.\n    if (config.color != null) {\n      ripple.style.backgroundColor = config.color;\n    }\n\n    ripple.style.transitionDuration = `${duration}ms`;\n\n    this._containerElement.appendChild(ripple);\n\n    // By default the browser does not recalculate the styles of dynamically created\n    // ripple elements. This is critical because then the `scale` would not animate properly.\n    enforceStyleRecalculation(ripple);\n\n    ripple.style.transform = 'scale(1)';\n\n    // Exposed reference to the ripple that will be returned.\n    const rippleRef = new RippleRef(this, ripple, config);\n\n    rippleRef.state = RippleState.FADING_IN;\n\n    // Add the ripple reference to the list of all active ripples.\n    this._activeRipples.add(rippleRef);\n\n    if (!config.persistent) {\n      this._mostRecentTransientRipple = rippleRef;\n    }\n\n    // Wait for the ripple element to be completely faded in.\n    // Once it's faded in, the ripple can be hidden immediately if the mouse is released.\n    this._runTimeoutOutsideZone(() => {\n      const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n\n      rippleRef.state = RippleState.VISIBLE;\n\n      // When the timer runs out while the user has kept their pointer down, we want to\n      // keep only the persistent ripples and the latest transient ripple. We do this,\n      // because we don't want stacked transient ripples to appear after their enter\n      // animation has finished.\n      if (!config.persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n        rippleRef.fadeOut();\n      }\n    }, duration);\n\n    return rippleRef;\n  }\n\n  /** Fades out a ripple reference. */\n  fadeOutRipple(rippleRef: RippleRef) {\n    const wasActive = this._activeRipples.delete(rippleRef);\n\n    if (rippleRef === this._mostRecentTransientRipple) {\n      this._mostRecentTransientRipple = null;\n    }\n\n    // Clear out the cached bounding rect if we have no more ripples.\n    if (!this._activeRipples.size) {\n      this._containerRect = null;\n    }\n\n    // For ripples that are not active anymore, don't re-run the fade-out animation.\n    if (!wasActive) {\n      return;\n    }\n\n    const rippleEl = rippleRef.element;\n    const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n    rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n    rippleEl.style.opacity = '0';\n    rippleRef.state = RippleState.FADING_OUT;\n\n    // Once the ripple faded out, the ripple can be safely removed from the DOM.\n    this._runTimeoutOutsideZone(() => {\n      rippleRef.state = RippleState.HIDDEN;\n      rippleEl.parentNode!.removeChild(rippleEl);\n    }, animationConfig.exitDuration);\n  }\n\n  /** Fades out all currently active ripples. */\n  fadeOutAll() {\n    this._activeRipples.forEach(ripple => ripple.fadeOut());\n  }\n\n  /** Fades out all currently active non-persistent ripples. */\n  fadeOutAllNonPersistent() {\n    this._activeRipples.forEach(ripple => {\n      if (!ripple.config.persistent) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Sets up the trigger event listeners */\n  setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n    const element = coerceElement(elementOrElementRef);\n\n    if (!element || element === this._triggerElement) {\n      return;\n    }\n\n    // Remove all previously registered event listeners from the trigger element.\n    this._removeTriggerEvents();\n\n    this._triggerElement = element;\n    this._registerEvents(pointerDownEvents);\n  }\n\n  /**\n   * Handles all registered events.\n   * @docs-private\n   */\n  handleEvent(event: Event) {\n    if (event.type === 'mousedown') {\n      this._onMousedown(event as MouseEvent);\n    } else if (event.type === 'touchstart') {\n      this._onTouchStart(event as TouchEvent);\n    } else {\n      this._onPointerUp();\n    }\n\n    // If pointer-up events haven't been registered yet, do so now.\n    // We do this on-demand in order to reduce the total number of event listeners\n    // registered by the ripples, which speeds up the rendering time for large UIs.\n    if (!this._pointerUpEventsRegistered) {\n      this._registerEvents(pointerUpEvents);\n      this._pointerUpEventsRegistered = true;\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using mouse. */\n  private _onMousedown(event: MouseEvent) {\n    // Screen readers will fire fake mouse events for space/enter. Skip launching a\n    // ripple in this case for consistency with the non-screen-reader experience.\n    const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n    const isSyntheticEvent = this._lastTouchStartEvent &&\n        Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n    if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n      this._isPointerDown = true;\n      this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n    }\n  }\n\n  /** Function being called whenever the trigger is being pressed using touch. */\n  private _onTouchStart(event: TouchEvent) {\n    if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n      // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n      // events will launch a second ripple if we don't ignore mouse events for a specific\n      // time after a touchstart event.\n      this._lastTouchStartEvent = Date.now();\n      this._isPointerDown = true;\n\n      // Use `changedTouches` so we skip any touches where the user put\n      // their finger down, but used another finger to tap the element again.\n      const touches = event.changedTouches;\n\n      for (let i = 0; i < touches.length; i++) {\n        this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n      }\n    }\n  }\n\n  /** Function being called whenever the trigger is being released. */\n  private _onPointerUp() {\n    if (!this._isPointerDown) {\n      return;\n    }\n\n    this._isPointerDown = false;\n\n    // Fade-out all ripples that are visible and not persistent.\n    this._activeRipples.forEach(ripple => {\n      // By default, only ripples that are completely visible will fade out on pointer release.\n      // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n      const isVisible = ripple.state === RippleState.VISIBLE ||\n        ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN;\n\n      if (!ripple.config.persistent && isVisible) {\n        ripple.fadeOut();\n      }\n    });\n  }\n\n  /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n  private _runTimeoutOutsideZone(fn: Function, delay = 0) {\n    this._ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n  }\n\n  /** Registers event listeners for a given list of events. */\n  private _registerEvents(eventTypes: string[]) {\n    this._ngZone.runOutsideAngular(() => {\n      eventTypes.forEach((type) => {\n        this._triggerElement!.addEventListener(type, this, passiveEventOptions);\n      });\n    });\n  }\n\n  /** Removes previously registered event listeners from the trigger element. */\n  _removeTriggerEvents() {\n    if (this._triggerElement) {\n      pointerDownEvents.forEach((type) => {\n        this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n      });\n\n      if (this._pointerUpEventsRegistered) {\n        pointerUpEvents.forEach((type) => {\n          this._triggerElement!.removeEventListener(type, this, passiveEventOptions);\n        });\n      }\n    }\n  }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n  // Enforce a style recalculation by calling `getComputedStyle` and accessing any property.\n  // Calling `getPropertyValue` is important to let optimizers know that this is not a noop.\n  // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n  window.getComputedStyle(element).getPropertyValue('opacity');\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: ClientRect) {\n  const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n  const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n  return Math.sqrt(distX * distX + distY * distY);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n} from '@angular/core';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n  /**\n   * Whether ripples should be disabled. Ripples can be still launched manually by using\n   * the `launch()` method. Therefore focus indicators will still show up.\n   */\n  disabled?: boolean;\n\n  /**\n   * Default configuration for the animation duration of the ripples. There are two phases with\n   * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n   * by the value of `matRippleAnimation` or if the `NoopAnimationsModule` is included.\n   */\n  animation?: RippleAnimationConfig;\n\n  /**\n   * Whether ripples should start fading out immediately after the mouse or touch is released. By\n   * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n   */\n  terminateOnPointerUp?: boolean;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\n    new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\n\n@Directive({\n  selector: '[mat-ripple], [matRipple]',\n  exportAs: 'matRipple',\n  host: {\n    'class': 'mat-ripple',\n    '[class.mat-ripple-unbounded]': 'unbounded'\n  }\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n\n  /** Custom color for all ripples. */\n  @Input('matRippleColor') color: string;\n\n  /** Whether the ripples should be visible outside the component's bounds. */\n  @Input('matRippleUnbounded') unbounded: boolean;\n\n  /**\n   * Whether the ripple always originates from the center of the host element's bounds, rather\n   * than originating from the location of the click event.\n   */\n  @Input('matRippleCentered') centered: boolean;\n\n  /**\n   * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n   * will be the distance from the center of the ripple to the furthest corner of the host element's\n   * bounding rectangle.\n   */\n  @Input('matRippleRadius') radius: number = 0;\n\n  /**\n   * Configuration for the ripple animation. Allows modifying the enter and exit animation\n   * duration of the ripples. The animation durations will be overwritten if the\n   * `NoopAnimationsModule` is being used.\n   */\n  @Input('matRippleAnimation') animation: RippleAnimationConfig;\n\n  /**\n   * Whether click events will not trigger the ripple. Ripples can be still launched manually\n   * by using the `launch()` method.\n   */\n  @Input('matRippleDisabled')\n  get disabled() { return this._disabled; }\n  set disabled(value: boolean) {\n    if (value) {\n      this.fadeOutAllNonPersistent();\n    }\n    this._disabled = value;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _disabled: boolean = false;\n\n  /**\n   * The element that triggers the ripple when click events are received.\n   * Defaults to the directive's host element.\n   */\n  @Input('matRippleTrigger')\n  get trigger() { return this._trigger || this._elementRef.nativeElement; }\n  set trigger(trigger: HTMLElement) {\n    this._trigger = trigger;\n    this._setupTriggerEventsIfEnabled();\n  }\n  private _trigger: HTMLElement;\n\n  /** Renderer for the ripple DOM manipulations. */\n  private _rippleRenderer: RippleRenderer;\n\n  /** Options that are set globally for all ripples. */\n  private _globalOptions: RippleGlobalOptions;\n\n  /** Whether ripple directive is initialized and the input bindings are set. */\n  private _isInitialized: boolean = false;\n\n  constructor(private _elementRef: ElementRef<HTMLElement>,\n              ngZone: NgZone,\n              platform: Platform,\n              @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions?: RippleGlobalOptions,\n              @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n    this._globalOptions = globalOptions || {};\n    this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n  }\n\n  ngOnInit() {\n    this._isInitialized = true;\n    this._setupTriggerEventsIfEnabled();\n  }\n\n  ngOnDestroy() {\n    this._rippleRenderer._removeTriggerEvents();\n  }\n\n  /** Fades out all currently showing ripple elements. */\n  fadeOutAll() {\n    this._rippleRenderer.fadeOutAll();\n  }\n\n  /** Fades out all currently showing non-persistent ripple elements. */\n  fadeOutAllNonPersistent() {\n    this._rippleRenderer.fadeOutAllNonPersistent();\n  }\n\n  /**\n   * Ripple configuration from the directive's input values.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleConfig(): RippleConfig {\n    return {\n      centered: this.centered,\n      radius: this.radius,\n      color: this.color,\n      animation: {\n        ...this._globalOptions.animation,\n        ...(this._animationMode === 'NoopAnimations' ? {enterDuration: 0, exitDuration: 0} : {}),\n        ...this.animation\n      },\n      terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n    };\n  }\n\n  /**\n   * Whether ripples on pointer-down are disabled or not.\n   * @docs-private Implemented as part of RippleTarget\n   */\n  get rippleDisabled(): boolean {\n    return this.disabled || !!this._globalOptions.disabled;\n  }\n\n  /** Sets up the trigger event listeners if ripples are enabled. */\n  private _setupTriggerEventsIfEnabled() {\n    if (!this.disabled && this._isInitialized) {\n      this._rippleRenderer.setupTriggerEvents(this.trigger);\n    }\n  }\n\n  /**\n   * Launches a manual ripple using the specified ripple configuration.\n   * @param config Configuration for the manual ripple.\n   */\n  launch(config: RippleConfig): RippleRef;\n\n  /**\n   * Launches a manual ripple at the specified coordinates relative to the viewport.\n   * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n   *   should be relative to the viewport.\n   * @param config Optional ripple configuration for the manual ripple.\n   */\n  launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n  /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n  launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n    if (typeof configOrX === 'number') {\n      return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n    } else {\n      return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\n    }\n  }\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatRipple} from './ripple';\n\nexport * from './ripple';\nexport * from './ripple-ref';\nexport * from './ripple-renderer';\n\n@NgModule({\n  imports: [MatCommonModule, PlatformModule],\n  exports: [MatRipple, MatCommonModule],\n  declarations: [MatRipple],\n})\nexport class MatRippleModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {\n  Component,\n  ViewEncapsulation,\n  Input,\n  ChangeDetectionStrategy,\n  Inject,\n  Optional,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'mat-pseudo-checkbox',\n  styleUrls: ['pseudo-checkbox.css'],\n  template: '',\n  host: {\n    'class': 'mat-pseudo-checkbox',\n    '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n    '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n    '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n    '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n  },\n})\nexport class MatPseudoCheckbox {\n  /** Display state of the checkbox. */\n  @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n  /** Whether the checkbox is disabled. */\n  @Input() disabled: boolean = false;\n\n  constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox/pseudo-checkbox';\nimport {MatCommonModule} from '../common-behaviors/common-module';\n\n\n@NgModule({\n  imports: [MatCommonModule],\n  exports: [MatPseudoCheckbox],\n  declarations: [MatPseudoCheckbox]\n})\nexport class MatPseudoCheckboxModule { }\n\n\nexport * from './pseudo-checkbox/pseudo-checkbox';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n  disableRipple?: boolean;\n  multiple?: boolean;\n  inertGroups?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT =\n    new InjectionToken<MatOptionParentComponent>('MAT_OPTION_PARENT_COMPONENT');\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  InjectionToken,\n  Input,\n  ViewEncapsulation,\n  Directive, Inject, Optional\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '../common-behaviors/disabled';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n//    when the text will be read out so sometimes it comes in too late or never if the user\n//    navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n//    won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n//     doesn't read out the text at all. Furthermore, on\n\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nconst _MatOptgroupMixinBase = mixinDisabled(class {});\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n@Directive()\nexport class _MatOptgroupBase extends _MatOptgroupMixinBase implements CanDisable {\n  /** Label for the option group. */\n  @Input() label: string;\n\n  /** Unique id for the underlying label. */\n  _labelId: string = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n\n  /** Whether the group is in inert a11y mode. */\n  _inert: boolean;\n\n  constructor(@Inject(MAT_OPTION_PARENT_COMPONENT) @Optional() parent?: MatOptionParentComponent) {\n    super();\n    this._inert = parent?.inertGroups ?? false;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n  selector: 'mat-optgroup',\n  exportAs: 'matOptgroup',\n  templateUrl: 'optgroup.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  styleUrls: ['optgroup.css'],\n  host: {\n    'class': 'mat-optgroup',\n    '[attr.role]': '_inert ? null : \"group\"',\n    '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n    '[attr.aria-labelledby]': '_inert ? null : _labelId',\n    '[class.mat-optgroup-disabled]': 'disabled',\n  },\n  providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup extends _MatOptgroupBase {\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n  Directive,\n} from '@angular/core';\nimport {FocusOptions, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {MatOptgroup, _MatOptgroupBase, MAT_OPTGROUP} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange {\n  constructor(\n    /** Reference to the option that emitted the event. */\n    public source: _MatOptionBase,\n    /** Whether the change in the option's value was a result of a user action. */\n    public isUserInput = false) { }\n}\n\n@Directive()\nexport class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy {\n  private _selected = false;\n  private _active = false;\n  private _disabled = false;\n  private _mostRecentViewValue = '';\n\n  /** Whether the wrapping component is in multiple selection mode. */\n  get multiple() { return this._parent && this._parent.multiple; }\n\n  /** Whether or not the option is currently selected. */\n  get selected(): boolean { return this._selected; }\n\n  /** The form value of the option. */\n  @Input() value: any;\n\n  /** The unique ID of the option. */\n  @Input() id: string = `mat-option-${_uniqueIdCounter++}`;\n\n  /** Whether the option is disabled. */\n  @Input()\n  get disabled() { return (this.group && this.group.disabled) || this._disabled; }\n  set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n\n  /** Whether ripples for the option are disabled. */\n  get disableRipple() { return this._parent && this._parent.disableRipple; }\n\n  /** Event emitted when the option is selected or deselected. */\n  // tslint:disable-next-line:no-output-on-prefix\n  @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange>();\n\n  /** Emits when the state of the option changes and any parents have to be notified. */\n  readonly _stateChanges = new Subject<void>();\n\n  constructor(\n    private _element: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _parent: MatOptionParentComponent,\n    readonly group: _MatOptgroupBase) {}\n\n  /**\n   * Whether or not the option is currently active and ready to be selected.\n   * An active option displays styles as if it is focused, but the\n   * focus is actually retained somewhere else. This comes in handy\n   * for components like autocomplete where focus must remain on the input.\n   */\n  get active(): boolean {\n    return this._active;\n  }\n\n  /**\n   * The displayed value of the option. It is necessary to show the selected option in the\n   * select's trigger.\n   */\n  get viewValue(): string {\n    // TODO(kara): Add input property alternative for node envs.\n    return (this._getHostElement().textContent || '').trim();\n  }\n\n  /** Selects the option. */\n  select(): void {\n    if (!this._selected) {\n      this._selected = true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Deselects the option. */\n  deselect(): void {\n    if (this._selected) {\n      this._selected = false;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Sets focus onto this option. */\n  focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n    // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n    // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n    const element = this._getHostElement();\n\n    if (typeof element.focus === 'function') {\n      element.focus(options);\n    }\n  }\n\n  /**\n   * This method sets display styles on the option to make it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setActiveStyles(): void {\n    if (!this._active) {\n      this._active = true;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * This method removes display styles on the option that made it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setInactiveStyles(): void {\n    if (this._active) {\n      this._active = false;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    return this.viewValue;\n  }\n\n  /** Ensures the option is selected when activated from the keyboard. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n      this._selectViaInteraction();\n\n      // Prevent the page from scrolling down and form submits.\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * `Selects the option while indicating the selection came from the user. Used to\n   * determine if the select's view -> model callback should be invoked.`\n   */\n  _selectViaInteraction(): void {\n    if (!this.disabled) {\n      this._selected = this.multiple ? !this._selected : true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent(true);\n    }\n  }\n\n  /**\n   * Gets the `aria-selected` value for the option. We explicitly omit the `aria-selected`\n   * attribute from single-selection, unselected options. Including the `aria-selected=\"false\"`\n   * attributes adds a significant amount of noise to screen-reader users without providing useful\n   * information.\n   */\n  _getAriaSelected(): boolean|null {\n    return this.selected || (this.multiple ? false : null);\n  }\n\n  /** Returns the correct tabindex for the option depending on disabled state. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Gets the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._element.nativeElement;\n  }\n\n  ngAfterViewChecked() {\n    // Since parent components could be using the option's label to display the selected values\n    // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n    // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n    // relatively cheap, however we still limit them only to selected options in order to avoid\n    // hitting the DOM too often.\n    if (this._selected) {\n      const viewValue = this.viewValue;\n\n      if (viewValue !== this._mostRecentViewValue) {\n        this._mostRecentViewValue = viewValue;\n        this._stateChanges.next();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  /** Emits the selection change event. */\n  private _emitSelectionChangeEvent(isUserInput = false): void {\n    this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n  selector: 'mat-option',\n  exportAs: 'matOption',\n  host: {\n    'role': 'option',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[class.mat-selected]': 'selected',\n    '[class.mat-option-multiple]': 'multiple',\n    '[class.mat-active]': 'active',\n    '[id]': 'id',\n    '[attr.aria-selected]': '_getAriaSelected()',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[class.mat-option-disabled]': 'disabled',\n    '(click)': '_selectViaInteraction()',\n    '(keydown)': '_handleKeydown($event)',\n    'class': 'mat-option mat-focus-indicator',\n  },\n  styleUrls: ['option.css'],\n  templateUrl: 'option.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatOption extends _MatOptionBase {\n  constructor(\n    element: ElementRef<HTMLElement>,\n    changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(MAT_OPTION_PARENT_COMPONENT) parent: MatOptionParentComponent,\n    @Optional() @Inject(MAT_OPTGROUP) group: MatOptgroup) {\n    super(element, changeDetectorRef, parent, group);\n  }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(optionIndex: number, options: QueryList<MatOption>,\n  optionGroups: QueryList<MatOptgroup>): number {\n\n  if (optionGroups.length) {\n    let optionsArray = options.toArray();\n    let groups = optionGroups.toArray();\n    let groupCounter = 0;\n\n    for (let i = 0; i < optionIndex + 1; i++) {\n      if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n        groupCounter++;\n      }\n    }\n\n    return groupCounter;\n  }\n\n  return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(optionOffset: number, optionHeight: number,\n    currentScrollPosition: number, panelHeight: number): number {\n  if (optionOffset < currentScrollPosition) {\n    return optionOffset;\n  }\n\n  if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n    return Math.max(0, optionOffset - panelHeight + optionHeight);\n  }\n\n  return currentScrollPosition;\n}\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatRippleModule} from '../ripple/index';\nimport {MatPseudoCheckboxModule} from '../selection/index';\nimport {MatCommonModule} from '../common-behaviors/common-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n\n@NgModule({\n  imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n  exports: [MatOption, MatOptgroup],\n  declarations: [MatOption, MatOptgroup]\n})\nexport class MatOptionModule {}\n\n\nexport * from './option';\nexport * from './optgroup';\nexport * from './option-parent';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './version';\nexport * from './animation/animation';\nexport * from './common-behaviors/index';\nexport * from './datetime/index';\nexport * from './error/error-options';\nexport * from './line/line';\nexport * from './option/index';\nexport * from './ripple/index';\nexport * from './selection/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MATERIAL_SANITY_CHECKS_FACTORY as ɵangular_material_src_material_core_core_a} from './common-behaviors/common-module';"],"names":["VERSION","CDK_VERSION"],"mappings":"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"}
  • trip-planner-front/node_modules/@angular/material/fesm2015/sort.js

    r6a3a178 rfa375fe  
    11import * as i0 from '@angular/core';
    22import { InjectionToken, EventEmitter, Directive, Optional, Inject, Input, Output, Injectable, SkipSelf, Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, NgModule } from '@angular/core';
     3import { FocusMonitor, AriaDescriber } from '@angular/cdk/a11y';
    34import { coerceBooleanProperty } from '@angular/cdk/coercion';
     5import { SPACE, ENTER } from '@angular/cdk/keycodes';
    46import { mixinInitialized, mixinDisabled, AnimationDurations, AnimationCurves, MatCommonModule } from '@angular/material/core';
    5 import { FocusMonitor } from '@angular/cdk/a11y';
    6 import { SPACE, ENTER } from '@angular/cdk/keycodes';
    77import { Subject, merge } from 'rxjs';
    88import { trigger, state, style, transition, animate, keyframes, query, animateChild } from '@angular/animations';
     
    260260 * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and
    261261 * include it in a custom provider.
    262  * @deprecated No longer being used. To be removed.
    263  * @breaking-change 13.0.0
    264262 */
    265263class MatSortHeaderIntl {
     
    317315    // `MatSort` is not optionally injected, but just asserted manually w/ better error.
    318316    // tslint:disable-next-line: lightweight-tokens
    319     _sort, _columnDef, _focusMonitor, _elementRef) {
     317    _sort, _columnDef, _focusMonitor, _elementRef,
     318    /** @breaking-change 14.0.0 _ariaDescriber will be required. */
     319    _ariaDescriber) {
    320320        // Note that we use a string token for the `_columnDef`, because the value is provided both by
    321321        // `material/table` and `cdk/table` and we can't have the CDK depending on Material,
     
    329329        this._focusMonitor = _focusMonitor;
    330330        this._elementRef = _elementRef;
     331        this._ariaDescriber = _ariaDescriber;
    331332        /**
    332333         * Flag set to true when the indicator should be displayed while the sort is not active. Used to
     
    348349        /** Sets the position of the arrow that displays when sorted. */
    349350        this.arrowPosition = 'after';
     351        // Default the action description to "Sort" because it's better than nothing.
     352        // Without a description, the button's label comes from the sort header text content,
     353        // which doesn't give any indication that it performs a sorting operation.
     354        this._sortActionDescription = 'Sort';
    350355        if (!_sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {
    351356            throw getSortHeaderNotContainedWithinSortError();
    352357        }
    353358        this._handleStateChanges();
     359    }
     360    /**
     361     * Description applied to MatSortHeader's button element with aria-describedby. This text should
     362     * describe the action that will occur when the user clicks the sort header.
     363     */
     364    get sortActionDescription() {
     365        return this._sortActionDescription;
     366    }
     367    set sortActionDescription(value) {
     368        this._updateSortActionDescription(value);
    354369    }
    355370    /** Overrides the disable clear value of the containing MatSort for this MatSortable. */
     
    364379        this._setAnimationTransitionState({ toState: this._isSorted() ? 'active' : this._arrowDirection });
    365380        this._sort.register(this);
     381        this._sortButton = this._elementRef.nativeElement.querySelector('[role="button"]');
     382        this._updateSortActionDescription(this._sortActionDescription);
    366383    }
    367384    ngAfterViewInit() {
     
    480497    _renderArrow() {
    481498        return !this._isDisabled() || this._isSorted();
     499    }
     500    _updateSortActionDescription(newDescription) {
     501        // We use AriaDescriber for the sort button instead of setting an `aria-label` because some
     502        // screen readers (notably VoiceOver) will read both the column header *and* the button's label
     503        // for every *cell* in the table, creating a lot of unnecessary noise.
     504        var _a, _b;
     505        // If _sortButton is undefined, the component hasn't been initialized yet so there's
     506        // nothing to update in the DOM.
     507        if (this._sortButton) {
     508            // removeDescription will no-op if there is no existing message.
     509            // TODO(jelbourn): remove optional chaining when AriaDescriber is required.
     510            (_a = this._ariaDescriber) === null || _a === void 0 ? void 0 : _a.removeDescription(this._sortButton, this._sortActionDescription);
     511            (_b = this._ariaDescriber) === null || _b === void 0 ? void 0 : _b.describe(this._sortButton, newDescription);
     512        }
     513        this._sortActionDescription = newDescription;
    482514    }
    483515    /** Handles changes in the sorting state. */
     
    537569    { type: undefined, decorators: [{ type: Inject, args: ['MAT_SORT_HEADER_COLUMN_DEF',] }, { type: Optional }] },
    538570    { type: FocusMonitor },
    539     { type: ElementRef }
     571    { type: ElementRef },
     572    { type: AriaDescriber, decorators: [{ type: Inject, args: [AriaDescriber,] }, { type: Optional }] }
    540573];
    541574MatSortHeader.propDecorators = {
     
    543576    arrowPosition: [{ type: Input }],
    544577    start: [{ type: Input }],
     578    sortActionDescription: [{ type: Input }],
    545579    disableClear: [{ type: Input }]
    546580};
  • trip-planner-front/node_modules/@angular/material/fesm2015/sort.js.map

    r6a3a178 rfa375fe  
    1 {"version":3,"file":"sort.js","sources":["../../../../../../src/material/sort/sort-errors.ts","../../../../../../src/material/sort/sort.ts","../../../../../../src/material/sort/sort-animations.ts","../../../../../../src/material/sort/sort-header-intl.ts","../../../../../../src/material/sort/sort-header.ts","../../../../../../src/material/sort/sort-module.ts","../../../../../../src/material/sort/sort-direction.ts","../../../../../../src/material/sort/public-api.ts","../../../../../../src/material/sort/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n  return Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n  return Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n  return Error(`MatSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n  return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n} from '@angular/core';\nimport {\n  CanDisable,\n  HasInitialized,\n  mixinDisabled,\n  mixinInitialized,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {SortDirection} from './sort-direction';\nimport {\n  getSortDuplicateSortableIdError,\n  getSortHeaderMissingIdError,\n  getSortInvalidDirectionError,\n} from './sort-errors';\n\n/** Interface for a directive that holds sorting state consumed by `MatSortHeader`. */\nexport interface MatSortable {\n  /** The id of the column being sorted. */\n  id: string;\n\n  /** Starting sort direction. */\n  start: 'asc' | 'desc';\n\n  /** Whether to disable clearing the sorting state. */\n  disableClear: boolean;\n}\n\n/** The current sort state. */\nexport interface Sort {\n  /** The id of the column being sorted. */\n  active: string;\n\n  /** The sort direction. */\n  direction: SortDirection;\n}\n\n/** Default options for `mat-sort`.  */\nexport interface MatSortDefaultOptions {\n  /** Whether to disable clearing the sorting state. */\n  disableClear?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-sort`. */\nexport const MAT_SORT_DEFAULT_OPTIONS =\n    new InjectionToken<MatSortDefaultOptions>('MAT_SORT_DEFAULT_OPTIONS');\n\n\n// Boilerplate for applying mixins to MatSort.\n/** @docs-private */\nconst _MatSortBase = mixinInitialized(mixinDisabled(class {}));\n\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\n@Directive({\n  selector: '[matSort]',\n  exportAs: 'matSort',\n  host: {'class': 'mat-sort'},\n  inputs: ['disabled: matSortDisabled']\n})\nexport class MatSort extends _MatSortBase\n    implements CanDisable, HasInitialized, OnChanges, OnDestroy, OnInit {\n  /** Collection of all registered sortables that this directive manages. */\n  sortables = new Map<string, MatSortable>();\n\n  /** Used to notify any child components listening to state changes. */\n  readonly _stateChanges = new Subject<void>();\n\n  /** The id of the most recently sorted MatSortable. */\n  @Input('matSortActive') active: string;\n\n  /**\n   * The direction to set when an MatSortable is initially sorted.\n   * May be overriden by the MatSortable's sort start.\n   */\n  @Input('matSortStart') start: 'asc' | 'desc' = 'asc';\n\n  /** The sort direction of the currently active MatSortable. */\n  @Input('matSortDirection')\n  get direction(): SortDirection { return this._direction; }\n  set direction(direction: SortDirection) {\n    if (direction && direction !== 'asc' && direction !== 'desc' &&\n      (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getSortInvalidDirectionError(direction);\n    }\n    this._direction = direction;\n  }\n  private _direction: SortDirection = '';\n\n  /**\n   * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n   * May be overriden by the MatSortable's disable clear input.\n   */\n  @Input('matSortDisableClear')\n  get disableClear(): boolean { return this._disableClear; }\n  set disableClear(v: boolean) { this._disableClear = coerceBooleanProperty(v); }\n  private _disableClear: boolean;\n\n  /** Event emitted when the user changes either the active sort or sort direction. */\n  @Output('matSortChange') readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n  constructor(@Optional() @Inject(MAT_SORT_DEFAULT_OPTIONS)\n              private _defaultOptions?: MatSortDefaultOptions) {\n    super();\n  }\n\n  /**\n   * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n   * collection of MatSortables.\n   */\n  register(sortable: MatSortable): void {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (!sortable.id) {\n        throw getSortHeaderMissingIdError();\n      }\n\n      if (this.sortables.has(sortable.id)) {\n        throw getSortDuplicateSortableIdError(sortable.id);\n      }\n    }\n\n    this.sortables.set(sortable.id, sortable);\n  }\n\n  /**\n   * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n   * collection of contained MatSortables.\n   */\n  deregister(sortable: MatSortable): void {\n    this.sortables.delete(sortable.id);\n  }\n\n  /** Sets the active sort id and determines the new sort direction. */\n  sort(sortable: MatSortable): void {\n    if (this.active != sortable.id) {\n      this.active = sortable.id;\n      this.direction = sortable.start ? sortable.start : this.start;\n    } else {\n      this.direction = this.getNextSortDirection(sortable);\n    }\n\n    this.sortChange.emit({active: this.active, direction: this.direction});\n  }\n\n  /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n  getNextSortDirection(sortable: MatSortable): SortDirection {\n    if (!sortable) { return ''; }\n\n    // Get the sort direction cycle with the potential sortable overrides.\n    const disableClear = sortable?.disableClear ??\n        this.disableClear ?? !!this._defaultOptions?.disableClear;\n    let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n\n    // Get and return the next direction in the cycle\n    let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n    if (nextDirectionIndex >= sortDirectionCycle.length) { nextDirectionIndex = 0; }\n    return sortDirectionCycle[nextDirectionIndex];\n  }\n\n  ngOnInit() {\n    this._markInitialized();\n  }\n\n  ngOnChanges() {\n    this._stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  static ngAcceptInputType_disableClear: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: 'asc' | 'desc',\n                               disableClear: boolean): SortDirection[] {\n  let sortOrder: SortDirection[] = ['asc', 'desc'];\n  if (start == 'desc') { sortOrder.reverse(); }\n  if (!disableClear) { sortOrder.push(''); }\n\n  return sortOrder;\n}\n","/**\n * @license\n * Copyright Google LLC 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 {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  keyframes,\n  AnimationTriggerMetadata, query, animateChild,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\nconst SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' +\n                                  AnimationCurves.STANDARD_CURVE;\n\n/**\n * Animations used by MatSort.\n * @docs-private\n */\nexport const matSortAnimations: {\n  readonly indicator: AnimationTriggerMetadata;\n  readonly leftPointer: AnimationTriggerMetadata;\n  readonly rightPointer: AnimationTriggerMetadata;\n  readonly arrowOpacity: AnimationTriggerMetadata;\n  readonly arrowPosition: AnimationTriggerMetadata;\n  readonly allowChildren: AnimationTriggerMetadata;\n} = {\n  /** Animation that moves the sort indicator. */\n  indicator: trigger('indicator', [\n    state('active-asc, asc', style({transform: 'translateY(0px)'})),\n    // 10px is the height of the sort indicator, minus the width of the pointers\n    state('active-desc, desc', style({transform: 'translateY(10px)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n  leftPointer: trigger('leftPointer', [\n    state('active-asc, asc', style({transform: 'rotate(-45deg)'})),\n    state('active-desc, desc', style({transform: 'rotate(45deg)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n  rightPointer: trigger('rightPointer', [\n    state('active-asc, asc', style({transform: 'rotate(45deg)'})),\n    state('active-desc, desc', style({transform: 'rotate(-45deg)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that controls the arrow opacity. */\n  arrowOpacity: trigger('arrowOpacity', [\n    state('desc-to-active, asc-to-active, active', style({opacity: 1})),\n    state('desc-to-hint, asc-to-hint, hint', style({opacity: .54})),\n    state('hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void',\n        style({opacity: 0})),\n    // Transition between all states except for immediate transitions\n    transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\n    transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\n  ]),\n\n  /**\n   * Animation for the translation of the arrow as a whole. States are separated into two\n   * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n   * peek, and active. The other states define a specific animation (source-to-destination)\n   * and are determined as a function of their prev user-perceived state and what the next state\n   * should be.\n   */\n  arrowPosition: trigger('arrowPosition', [\n    // Hidden Above => Hint Center\n    transition('* => desc-to-hint, * => desc-to-active',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(-25%)'}),\n          style({transform: 'translateY(0)'})\n        ]))),\n    // Hint Center => Hidden Below\n    transition('* => hint-to-desc, * => active-to-desc',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(0)'}),\n          style({transform: 'translateY(25%)'})\n        ]))),\n    // Hidden Below => Hint Center\n    transition('* => asc-to-hint, * => asc-to-active',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(25%)'}),\n          style({transform: 'translateY(0)'})\n        ]))),\n    // Hint Center => Hidden Above\n    transition('* => hint-to-asc, * => active-to-asc',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(0)'}),\n          style({transform: 'translateY(-25%)'})\n        ]))),\n    state('desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active',\n        style({transform: 'translateY(0)'})),\n    state('hint-to-desc, active-to-desc, desc',\n        style({transform: 'translateY(-25%)'})),\n    state('hint-to-asc, active-to-asc, asc',\n        style({transform: 'translateY(25%)'})),\n  ]),\n\n  /** Necessary trigger that calls animate on children animations. */\n  allowChildren: trigger('allowChildren', [\n    transition('* <=> *', [\n      query('@*', animateChild(), {optional: true})\n    ])\n  ]),\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable, SkipSelf, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n@Injectable({providedIn: 'root'})\nexport class MatSortHeaderIntl {\n  /**\n   * Stream that emits whenever the labels here are changed. Use this to notify\n   * components if the labels have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n}\n\n/** @docs-private */\nexport function MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: MatSortHeaderIntl) {\n  return parentIntl || new MatSortHeaderIntl();\n}\n\n/** @docs-private */\nexport const MAT_SORT_HEADER_INTL_PROVIDER = {\n  // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one.\n  provide: MatSortHeaderIntl,\n  deps: [[new Optional(), new SkipSelf(), MatSortHeaderIntl]],\n  useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY\n};\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  ViewEncapsulation,\n  Inject,\n  ElementRef,\n  AfterViewInit,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\nimport {FocusMonitor} from '@angular/cdk/a11y';\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\nimport {merge, Subscription} from 'rxjs';\nimport {MatSort, MatSortable} from './sort';\nimport {matSortAnimations} from './sort-animations';\nimport {SortDirection} from './sort-direction';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {MatSortHeaderIntl} from './sort-header-intl';\n\n\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nconst _MatSortHeaderBase = mixinDisabled(class {});\n\n/**\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\n * be fully opaque in the center.\n *\n * @docs-private\n */\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\n\n/**\n * States describing the arrow's animated position (animating fromState to toState).\n * If the fromState is not defined, there will be no animated transition to the toState.\n * @docs-private\n */\nexport interface ArrowViewStateTransition {\n  fromState?: ArrowViewState;\n  toState?: ArrowViewState;\n}\n\n/** Column definition associated with a `MatSortHeader`. */\ninterface MatSortHeaderColumnDef {\n  name: string;\n}\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n  selector: '[mat-sort-header]',\n  exportAs: 'matSortHeader',\n  templateUrl: 'sort-header.html',\n  styleUrls: ['sort-header.css'],\n  host: {\n    'class': 'mat-sort-header',\n    '(click)': '_handleClick()',\n    '(keydown)': '_handleKeydown($event)',\n    '(mouseenter)': '_setIndicatorHintVisible(true)',\n    '(mouseleave)': '_setIndicatorHintVisible(false)',\n    '[attr.aria-sort]': '_getAriaSortAttribute()',\n    '[class.mat-sort-header-disabled]': '_isDisabled()',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  animations: [\n    matSortAnimations.indicator,\n    matSortAnimations.leftPointer,\n    matSortAnimations.rightPointer,\n    matSortAnimations.arrowOpacity,\n    matSortAnimations.arrowPosition,\n    matSortAnimations.allowChildren,\n  ]\n})\nexport class MatSortHeader extends _MatSortHeaderBase\n    implements CanDisable, MatSortable, OnDestroy, OnInit, AfterViewInit {\n  private _rerenderSubscription: Subscription;\n\n  /**\n   * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n   * provide an affordance that the header is sortable by showing on focus and hover.\n   */\n  _showIndicatorHint: boolean = false;\n\n  /**\n   * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\n   * position through the animation. If animations are currently disabled, the fromState is removed\n   * so that there is no animation displayed.\n   */\n  _viewState: ArrowViewStateTransition = { };\n\n  /** The direction the arrow should be facing according to the current state. */\n  _arrowDirection: SortDirection = '';\n\n  /**\n   * Whether the view state animation should show the transition between the `from` and `to` states.\n   */\n  _disableViewStateAnimation = false;\n\n  /**\n   * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n   * the column's name.\n   */\n  @Input('mat-sort-header') id: string;\n\n  /** Sets the position of the arrow that displays when sorted. */\n  @Input() arrowPosition: 'before' | 'after' = 'after';\n\n  /** Overrides the sort start value of the containing MatSort for this MatSortable. */\n  @Input() start: 'asc' | 'desc';\n\n  /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\n  @Input()\n  get disableClear(): boolean { return this._disableClear; }\n  set disableClear(v) { this._disableClear = coerceBooleanProperty(v); }\n  private _disableClear: boolean;\n\n  constructor(\n              /**\n               * @deprecated `_intl` parameter isn't being used anymore and it'll be removed.\n               * @breaking-change 13.0.0\n               */\n              public _intl: MatSortHeaderIntl,\n              private _changeDetectorRef: ChangeDetectorRef,\n              // `MatSort` is not optionally injected, but just asserted manually w/ better error.\n              // tslint:disable-next-line: lightweight-tokens\n              @Optional() public _sort: MatSort,\n              @Inject('MAT_SORT_HEADER_COLUMN_DEF') @Optional()\n                  public _columnDef: MatSortHeaderColumnDef,\n              private _focusMonitor: FocusMonitor,\n              private _elementRef: ElementRef<HTMLElement>) {\n    // Note that we use a string token for the `_columnDef`, because the value is provided both by\n    // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n    // and we want to avoid having the sort header depending on the CDK table because\n    // of this single reference.\n    super();\n\n    if (!_sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getSortHeaderNotContainedWithinSortError();\n    }\n\n    this._handleStateChanges();\n  }\n\n  ngOnInit() {\n    if (!this.id && this._columnDef) {\n      this.id = this._columnDef.name;\n    }\n\n    // Initialize the direction of the arrow and set the view state to be immediately that state.\n    this._updateArrowDirection();\n    this._setAnimationTransitionState(\n        {toState: this._isSorted() ? 'active' : this._arrowDirection});\n\n    this._sort.register(this);\n  }\n\n  ngAfterViewInit() {\n    // We use the focus monitor because we also want to style\n    // things differently based on the focus origin.\n    this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n      const newState = !!origin;\n      if (newState !== this._showIndicatorHint) {\n        this._setIndicatorHintVisible(newState);\n        this._changeDetectorRef.markForCheck();\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n    this._sort.deregister(this);\n    this._rerenderSubscription.unsubscribe();\n  }\n\n  /**\n   * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n   * user showing what the active sort will become. If set to false, the arrow will fade away.\n   */\n  _setIndicatorHintVisible(visible: boolean) {\n    // No-op if the sort header is disabled - should not make the hint visible.\n    if (this._isDisabled() && visible) { return; }\n\n    this._showIndicatorHint = visible;\n\n    if (!this._isSorted()) {\n      this._updateArrowDirection();\n      if (this._showIndicatorHint) {\n        this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'hint'});\n      } else {\n        this._setAnimationTransitionState({fromState: 'hint', toState: this._arrowDirection});\n      }\n    }\n  }\n\n  /**\n   * Sets the animation transition view state for the arrow's position and opacity. If the\n   * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n   * no animation appears.\n   */\n  _setAnimationTransitionState(viewState: ArrowViewStateTransition) {\n    this._viewState = viewState || { };\n\n    // If the animation for arrow position state (opacity/translation) should be disabled,\n    // remove the fromState so that it jumps right to the toState.\n    if (this._disableViewStateAnimation) {\n      this._viewState = {toState: viewState.toState};\n    }\n  }\n\n  /** Triggers the sort on this sort header and removes the indicator hint. */\n  _toggleOnInteraction() {\n    this._sort.sort(this);\n\n    // Do not show the animation if the header was already shown in the right position.\n    if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n      this._disableViewStateAnimation = true;\n    }\n  }\n\n  _handleClick() {\n    if (!this._isDisabled()) {\n      this._sort.sort(this);\n    }\n  }\n\n  _handleKeydown(event: KeyboardEvent) {\n    if (!this._isDisabled() && (event.keyCode === SPACE || event.keyCode === ENTER)) {\n      event.preventDefault();\n      this._toggleOnInteraction();\n    }\n  }\n\n  /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n  _isSorted() {\n    return this._sort.active == this.id &&\n        (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n  }\n\n  /** Returns the animation state for the arrow direction (indicator and pointers). */\n  _getArrowDirectionState() {\n    return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\n  }\n\n  /** Returns the arrow position state (opacity, translation). */\n  _getArrowViewState() {\n    const fromState = this._viewState.fromState;\n    return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\n  }\n\n  /**\n   * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n   * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n   * active sorted direction. The reason this is updated through a function is because the direction\n   * should only be changed at specific times - when deactivated but the hint is displayed and when\n   * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n   * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n   * preserving its direction, even though the next sort direction is actually different and should\n   * only be changed once the arrow displays again (hint or activation).\n   */\n  _updateArrowDirection() {\n    this._arrowDirection = this._isSorted() ?\n        this._sort.direction :\n        (this.start || this._sort.start);\n  }\n\n  _isDisabled() {\n    return this._sort.disabled || this.disabled;\n  }\n\n  /**\n   * Gets the aria-sort attribute that should be applied to this sort header. If this header\n   * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n   * says that the aria-sort property should only be present on one header at a time, so removing\n   * ensures this is true.\n   */\n  _getAriaSortAttribute() {\n    if (!this._isSorted()) {\n      return 'none';\n    }\n\n    return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n  }\n\n  /** Whether the arrow inside the sort header should be rendered. */\n  _renderArrow() {\n    return !this._isDisabled() || this._isSorted();\n  }\n\n  /** Handles changes in the sorting state. */\n  private _handleStateChanges() {\n    this._rerenderSubscription =\n      merge(this._sort.sortChange, this._sort._stateChanges, this._intl.changes).subscribe(() => {\n        if (this._isSorted()) {\n          this._updateArrowDirection();\n\n          // Do not show the animation if the header was already shown in the right position.\n          if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n            this._disableViewStateAnimation = true;\n          }\n\n          this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'active'});\n          this._showIndicatorHint = false;\n        }\n\n        // If this header was recently active and now no longer sorted, animate away the arrow.\n        if (!this._isSorted() && this._viewState && this._viewState.toState === 'active') {\n          this._disableViewStateAnimation = false;\n          this._setAnimationTransitionState({fromState: 'active', toState: this._arrowDirection});\n        }\n\n        this._changeDetectorRef.markForCheck();\n      });\n  }\n\n  static ngAcceptInputType_disableClear: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatSortHeader} from './sort-header';\nimport {MatSort} from './sort';\nimport {MAT_SORT_HEADER_INTL_PROVIDER} from './sort-header-intl';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\n\n@NgModule({\n  imports: [CommonModule, MatCommonModule],\n  exports: [MatSort, MatSortHeader],\n  declarations: [MatSort, MatSortHeader],\n  providers: [MAT_SORT_HEADER_INTL_PROVIDER]\n})\nexport class MatSortModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport type SortDirection = 'asc' | 'desc' | '';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './sort-module';\nexport * from './sort-direction';\nexport * from './sort-header';\nexport * from './sort-header-intl';\nexport * from './sort';\nexport * from './sort-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
     1{"version":3,"file":"sort.js","sources":["../../../../../../src/material/sort/sort-errors.ts","../../../../../../src/material/sort/sort.ts","../../../../../../src/material/sort/sort-animations.ts","../../../../../../src/material/sort/sort-header-intl.ts","../../../../../../src/material/sort/sort-header.ts","../../../../../../src/material/sort/sort-module.ts","../../../../../../src/material/sort/sort-direction.ts","../../../../../../src/material/sort/public-api.ts","../../../../../../src/material/sort/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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 */\n\n/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n  return Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n  return Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n  return Error(`MatSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n  return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n} from '@angular/core';\nimport {\n  CanDisable,\n  HasInitialized,\n  mixinDisabled,\n  mixinInitialized,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {SortDirection} from './sort-direction';\nimport {\n  getSortDuplicateSortableIdError,\n  getSortHeaderMissingIdError,\n  getSortInvalidDirectionError,\n} from './sort-errors';\n\n/** Interface for a directive that holds sorting state consumed by `MatSortHeader`. */\nexport interface MatSortable {\n  /** The id of the column being sorted. */\n  id: string;\n\n  /** Starting sort direction. */\n  start: 'asc' | 'desc';\n\n  /** Whether to disable clearing the sorting state. */\n  disableClear: boolean;\n}\n\n/** The current sort state. */\nexport interface Sort {\n  /** The id of the column being sorted. */\n  active: string;\n\n  /** The sort direction. */\n  direction: SortDirection;\n}\n\n/** Default options for `mat-sort`.  */\nexport interface MatSortDefaultOptions {\n  /** Whether to disable clearing the sorting state. */\n  disableClear?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-sort`. */\nexport const MAT_SORT_DEFAULT_OPTIONS =\n    new InjectionToken<MatSortDefaultOptions>('MAT_SORT_DEFAULT_OPTIONS');\n\n\n// Boilerplate for applying mixins to MatSort.\n/** @docs-private */\nconst _MatSortBase = mixinInitialized(mixinDisabled(class {}));\n\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\n@Directive({\n  selector: '[matSort]',\n  exportAs: 'matSort',\n  host: {'class': 'mat-sort'},\n  inputs: ['disabled: matSortDisabled']\n})\nexport class MatSort extends _MatSortBase\n    implements CanDisable, HasInitialized, OnChanges, OnDestroy, OnInit {\n  /** Collection of all registered sortables that this directive manages. */\n  sortables = new Map<string, MatSortable>();\n\n  /** Used to notify any child components listening to state changes. */\n  readonly _stateChanges = new Subject<void>();\n\n  /** The id of the most recently sorted MatSortable. */\n  @Input('matSortActive') active: string;\n\n  /**\n   * The direction to set when an MatSortable is initially sorted.\n   * May be overriden by the MatSortable's sort start.\n   */\n  @Input('matSortStart') start: 'asc' | 'desc' = 'asc';\n\n  /** The sort direction of the currently active MatSortable. */\n  @Input('matSortDirection')\n  get direction(): SortDirection { return this._direction; }\n  set direction(direction: SortDirection) {\n    if (direction && direction !== 'asc' && direction !== 'desc' &&\n      (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getSortInvalidDirectionError(direction);\n    }\n    this._direction = direction;\n  }\n  private _direction: SortDirection = '';\n\n  /**\n   * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n   * May be overriden by the MatSortable's disable clear input.\n   */\n  @Input('matSortDisableClear')\n  get disableClear(): boolean { return this._disableClear; }\n  set disableClear(v: boolean) { this._disableClear = coerceBooleanProperty(v); }\n  private _disableClear: boolean;\n\n  /** Event emitted when the user changes either the active sort or sort direction. */\n  @Output('matSortChange') readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n  constructor(@Optional() @Inject(MAT_SORT_DEFAULT_OPTIONS)\n              private _defaultOptions?: MatSortDefaultOptions) {\n    super();\n  }\n\n  /**\n   * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n   * collection of MatSortables.\n   */\n  register(sortable: MatSortable): void {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (!sortable.id) {\n        throw getSortHeaderMissingIdError();\n      }\n\n      if (this.sortables.has(sortable.id)) {\n        throw getSortDuplicateSortableIdError(sortable.id);\n      }\n    }\n\n    this.sortables.set(sortable.id, sortable);\n  }\n\n  /**\n   * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n   * collection of contained MatSortables.\n   */\n  deregister(sortable: MatSortable): void {\n    this.sortables.delete(sortable.id);\n  }\n\n  /** Sets the active sort id and determines the new sort direction. */\n  sort(sortable: MatSortable): void {\n    if (this.active != sortable.id) {\n      this.active = sortable.id;\n      this.direction = sortable.start ? sortable.start : this.start;\n    } else {\n      this.direction = this.getNextSortDirection(sortable);\n    }\n\n    this.sortChange.emit({active: this.active, direction: this.direction});\n  }\n\n  /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n  getNextSortDirection(sortable: MatSortable): SortDirection {\n    if (!sortable) { return ''; }\n\n    // Get the sort direction cycle with the potential sortable overrides.\n    const disableClear = sortable?.disableClear ??\n        this.disableClear ?? !!this._defaultOptions?.disableClear;\n    let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n\n    // Get and return the next direction in the cycle\n    let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n    if (nextDirectionIndex >= sortDirectionCycle.length) { nextDirectionIndex = 0; }\n    return sortDirectionCycle[nextDirectionIndex];\n  }\n\n  ngOnInit() {\n    this._markInitialized();\n  }\n\n  ngOnChanges() {\n    this._stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  static ngAcceptInputType_disableClear: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: 'asc' | 'desc',\n                               disableClear: boolean): SortDirection[] {\n  let sortOrder: SortDirection[] = ['asc', 'desc'];\n  if (start == 'desc') { sortOrder.reverse(); }\n  if (!disableClear) { sortOrder.push(''); }\n\n  return sortOrder;\n}\n","/**\n * @license\n * Copyright Google LLC 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 {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  keyframes,\n  AnimationTriggerMetadata, query, animateChild,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\nconst SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' +\n                                  AnimationCurves.STANDARD_CURVE;\n\n/**\n * Animations used by MatSort.\n * @docs-private\n */\nexport const matSortAnimations: {\n  readonly indicator: AnimationTriggerMetadata;\n  readonly leftPointer: AnimationTriggerMetadata;\n  readonly rightPointer: AnimationTriggerMetadata;\n  readonly arrowOpacity: AnimationTriggerMetadata;\n  readonly arrowPosition: AnimationTriggerMetadata;\n  readonly allowChildren: AnimationTriggerMetadata;\n} = {\n  /** Animation that moves the sort indicator. */\n  indicator: trigger('indicator', [\n    state('active-asc, asc', style({transform: 'translateY(0px)'})),\n    // 10px is the height of the sort indicator, minus the width of the pointers\n    state('active-desc, desc', style({transform: 'translateY(10px)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n  leftPointer: trigger('leftPointer', [\n    state('active-asc, asc', style({transform: 'rotate(-45deg)'})),\n    state('active-desc, desc', style({transform: 'rotate(45deg)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n  rightPointer: trigger('rightPointer', [\n    state('active-asc, asc', style({transform: 'rotate(45deg)'})),\n    state('active-desc, desc', style({transform: 'rotate(-45deg)'})),\n    transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n  ]),\n\n  /** Animation that controls the arrow opacity. */\n  arrowOpacity: trigger('arrowOpacity', [\n    state('desc-to-active, asc-to-active, active', style({opacity: 1})),\n    state('desc-to-hint, asc-to-hint, hint', style({opacity: .54})),\n    state('hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void',\n        style({opacity: 0})),\n    // Transition between all states except for immediate transitions\n    transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\n    transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\n  ]),\n\n  /**\n   * Animation for the translation of the arrow as a whole. States are separated into two\n   * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n   * peek, and active. The other states define a specific animation (source-to-destination)\n   * and are determined as a function of their prev user-perceived state and what the next state\n   * should be.\n   */\n  arrowPosition: trigger('arrowPosition', [\n    // Hidden Above => Hint Center\n    transition('* => desc-to-hint, * => desc-to-active',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(-25%)'}),\n          style({transform: 'translateY(0)'})\n        ]))),\n    // Hint Center => Hidden Below\n    transition('* => hint-to-desc, * => active-to-desc',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(0)'}),\n          style({transform: 'translateY(25%)'})\n        ]))),\n    // Hidden Below => Hint Center\n    transition('* => asc-to-hint, * => asc-to-active',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(25%)'}),\n          style({transform: 'translateY(0)'})\n        ]))),\n    // Hint Center => Hidden Above\n    transition('* => hint-to-asc, * => active-to-asc',\n        animate(SORT_ANIMATION_TRANSITION, keyframes([\n          style({transform: 'translateY(0)'}),\n          style({transform: 'translateY(-25%)'})\n        ]))),\n    state('desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active',\n        style({transform: 'translateY(0)'})),\n    state('hint-to-desc, active-to-desc, desc',\n        style({transform: 'translateY(-25%)'})),\n    state('hint-to-asc, active-to-asc, asc',\n        style({transform: 'translateY(25%)'})),\n  ]),\n\n  /** Necessary trigger that calls animate on children animations. */\n  allowChildren: trigger('allowChildren', [\n    transition('* <=> *', [\n      query('@*', animateChild(), {optional: true})\n    ])\n  ]),\n};\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {Injectable, SkipSelf, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n */\n@Injectable({providedIn: 'root'})\nexport class MatSortHeaderIntl {\n  /**\n   * Stream that emits whenever the labels here are changed. Use this to notify\n   * components if the labels have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n}\n\n/** @docs-private */\nexport function MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: MatSortHeaderIntl) {\n  return parentIntl || new MatSortHeaderIntl();\n}\n\n/** @docs-private */\nexport const MAT_SORT_HEADER_INTL_PROVIDER = {\n  // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one.\n  provide: MatSortHeaderIntl,\n  deps: [[new Optional(), new SkipSelf(), MatSortHeaderIntl]],\n  useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY\n};\n\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\nimport {merge, Subscription} from 'rxjs';\nimport {MatSort, MatSortable} from './sort';\nimport {matSortAnimations} from './sort-animations';\nimport {SortDirection} from './sort-direction';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {MatSortHeaderIntl} from './sort-header-intl';\n\n\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nconst _MatSortHeaderBase = mixinDisabled(class {});\n\n/**\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\n * be fully opaque in the center.\n *\n * @docs-private\n */\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\n\n/**\n * States describing the arrow's animated position (animating fromState to toState).\n * If the fromState is not defined, there will be no animated transition to the toState.\n * @docs-private\n */\nexport interface ArrowViewStateTransition {\n  fromState?: ArrowViewState;\n  toState?: ArrowViewState;\n}\n\n/** Column definition associated with a `MatSortHeader`. */\ninterface MatSortHeaderColumnDef {\n  name: string;\n}\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n  selector: '[mat-sort-header]',\n  exportAs: 'matSortHeader',\n  templateUrl: 'sort-header.html',\n  styleUrls: ['sort-header.css'],\n  host: {\n    'class': 'mat-sort-header',\n    '(click)': '_handleClick()',\n    '(keydown)': '_handleKeydown($event)',\n    '(mouseenter)': '_setIndicatorHintVisible(true)',\n    '(mouseleave)': '_setIndicatorHintVisible(false)',\n    '[attr.aria-sort]': '_getAriaSortAttribute()',\n    '[class.mat-sort-header-disabled]': '_isDisabled()',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  animations: [\n    matSortAnimations.indicator,\n    matSortAnimations.leftPointer,\n    matSortAnimations.rightPointer,\n    matSortAnimations.arrowOpacity,\n    matSortAnimations.arrowPosition,\n    matSortAnimations.allowChildren,\n  ]\n})\nexport class MatSortHeader extends _MatSortHeaderBase\n    implements CanDisable, MatSortable, OnDestroy, OnInit, AfterViewInit {\n  private _rerenderSubscription: Subscription;\n\n  /**\n   * The element with role=\"button\" inside this component's view. We need this\n   * in order to apply a description with AriaDescriber.\n   */\n  private _sortButton: HTMLElement;\n\n  /**\n   * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n   * provide an affordance that the header is sortable by showing on focus and hover.\n   */\n  _showIndicatorHint: boolean = false;\n\n  /**\n   * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\n   * position through the animation. If animations are currently disabled, the fromState is removed\n   * so that there is no animation displayed.\n   */\n  _viewState: ArrowViewStateTransition = { };\n\n  /** The direction the arrow should be facing according to the current state. */\n  _arrowDirection: SortDirection = '';\n\n  /**\n   * Whether the view state animation should show the transition between the `from` and `to` states.\n   */\n  _disableViewStateAnimation = false;\n\n  /**\n   * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n   * the column's name.\n   */\n  @Input('mat-sort-header') id: string;\n\n  /** Sets the position of the arrow that displays when sorted. */\n  @Input() arrowPosition: 'before' | 'after' = 'after';\n\n  /** Overrides the sort start value of the containing MatSort for this MatSortable. */\n  @Input() start: 'asc' | 'desc';\n\n  /**\n   * Description applied to MatSortHeader's button element with aria-describedby. This text should\n   * describe the action that will occur when the user clicks the sort header.\n   */\n  @Input()\n  get sortActionDescription(): string {\n    return this._sortActionDescription;\n  }\n  set sortActionDescription(value: string) {\n    this._updateSortActionDescription(value);\n  }\n  // Default the action description to \"Sort\" because it's better than nothing.\n  // Without a description, the button's label comes from the sort header text content,\n  // which doesn't give any indication that it performs a sorting operation.\n  private _sortActionDescription: string = 'Sort';\n\n  /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\n  @Input()\n  get disableClear(): boolean { return this._disableClear; }\n  set disableClear(v) { this._disableClear = coerceBooleanProperty(v); }\n  private _disableClear: boolean;\n\n  constructor(\n              /**\n               * @deprecated `_intl` parameter isn't being used anymore and it'll be removed.\n               * @breaking-change 13.0.0\n               */\n              public _intl: MatSortHeaderIntl,\n              private _changeDetectorRef: ChangeDetectorRef,\n              // `MatSort` is not optionally injected, but just asserted manually w/ better error.\n              // tslint:disable-next-line: lightweight-tokens\n              @Optional() public _sort: MatSort,\n              @Inject('MAT_SORT_HEADER_COLUMN_DEF') @Optional()\n                  public _columnDef: MatSortHeaderColumnDef,\n              private _focusMonitor: FocusMonitor,\n              private _elementRef: ElementRef<HTMLElement>,\n              /** @breaking-change 14.0.0 _ariaDescriber will be required. */\n              @Inject(AriaDescriber) @Optional() private _ariaDescriber?: AriaDescriber | null) {\n    // Note that we use a string token for the `_columnDef`, because the value is provided both by\n    // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n    // and we want to avoid having the sort header depending on the CDK table because\n    // of this single reference.\n    super();\n\n    if (!_sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getSortHeaderNotContainedWithinSortError();\n    }\n\n    this._handleStateChanges();\n  }\n\n  ngOnInit() {\n    if (!this.id && this._columnDef) {\n      this.id = this._columnDef.name;\n    }\n\n    // Initialize the direction of the arrow and set the view state to be immediately that state.\n    this._updateArrowDirection();\n    this._setAnimationTransitionState(\n        {toState: this._isSorted() ? 'active' : this._arrowDirection});\n\n    this._sort.register(this);\n\n    this._sortButton = this._elementRef.nativeElement.querySelector('[role=\"button\"]')!;\n    this._updateSortActionDescription(this._sortActionDescription);\n  }\n\n  ngAfterViewInit() {\n    // We use the focus monitor because we also want to style\n    // things differently based on the focus origin.\n    this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n      const newState = !!origin;\n      if (newState !== this._showIndicatorHint) {\n        this._setIndicatorHintVisible(newState);\n        this._changeDetectorRef.markForCheck();\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n    this._sort.deregister(this);\n    this._rerenderSubscription.unsubscribe();\n  }\n\n  /**\n   * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n   * user showing what the active sort will become. If set to false, the arrow will fade away.\n   */\n  _setIndicatorHintVisible(visible: boolean) {\n    // No-op if the sort header is disabled - should not make the hint visible.\n    if (this._isDisabled() && visible) { return; }\n\n    this._showIndicatorHint = visible;\n\n    if (!this._isSorted()) {\n      this._updateArrowDirection();\n      if (this._showIndicatorHint) {\n        this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'hint'});\n      } else {\n        this._setAnimationTransitionState({fromState: 'hint', toState: this._arrowDirection});\n      }\n    }\n  }\n\n  /**\n   * Sets the animation transition view state for the arrow's position and opacity. If the\n   * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n   * no animation appears.\n   */\n  _setAnimationTransitionState(viewState: ArrowViewStateTransition) {\n    this._viewState = viewState || { };\n\n    // If the animation for arrow position state (opacity/translation) should be disabled,\n    // remove the fromState so that it jumps right to the toState.\n    if (this._disableViewStateAnimation) {\n      this._viewState = {toState: viewState.toState};\n    }\n  }\n\n  /** Triggers the sort on this sort header and removes the indicator hint. */\n  _toggleOnInteraction() {\n    this._sort.sort(this);\n\n    // Do not show the animation if the header was already shown in the right position.\n    if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n      this._disableViewStateAnimation = true;\n    }\n  }\n\n  _handleClick() {\n    if (!this._isDisabled()) {\n      this._sort.sort(this);\n    }\n  }\n\n  _handleKeydown(event: KeyboardEvent) {\n    if (!this._isDisabled() && (event.keyCode === SPACE || event.keyCode === ENTER)) {\n      event.preventDefault();\n      this._toggleOnInteraction();\n    }\n  }\n\n  /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n  _isSorted() {\n    return this._sort.active == this.id &&\n        (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n  }\n\n  /** Returns the animation state for the arrow direction (indicator and pointers). */\n  _getArrowDirectionState() {\n    return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\n  }\n\n  /** Returns the arrow position state (opacity, translation). */\n  _getArrowViewState() {\n    const fromState = this._viewState.fromState;\n    return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\n  }\n\n  /**\n   * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n   * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n   * active sorted direction. The reason this is updated through a function is because the direction\n   * should only be changed at specific times - when deactivated but the hint is displayed and when\n   * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n   * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n   * preserving its direction, even though the next sort direction is actually different and should\n   * only be changed once the arrow displays again (hint or activation).\n   */\n  _updateArrowDirection() {\n    this._arrowDirection = this._isSorted() ?\n        this._sort.direction :\n        (this.start || this._sort.start);\n  }\n\n  _isDisabled() {\n    return this._sort.disabled || this.disabled;\n  }\n\n  /**\n   * Gets the aria-sort attribute that should be applied to this sort header. If this header\n   * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n   * says that the aria-sort property should only be present on one header at a time, so removing\n   * ensures this is true.\n   */\n  _getAriaSortAttribute() {\n    if (!this._isSorted()) {\n      return 'none';\n    }\n\n    return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n  }\n\n  /** Whether the arrow inside the sort header should be rendered. */\n  _renderArrow() {\n    return !this._isDisabled() || this._isSorted();\n  }\n\n  private _updateSortActionDescription(newDescription: string) {\n    // We use AriaDescriber for the sort button instead of setting an `aria-label` because some\n    // screen readers (notably VoiceOver) will read both the column header *and* the button's label\n    // for every *cell* in the table, creating a lot of unnecessary noise.\n\n    // If _sortButton is undefined, the component hasn't been initialized yet so there's\n    // nothing to update in the DOM.\n    if (this._sortButton) {\n      // removeDescription will no-op if there is no existing message.\n      // TODO(jelbourn): remove optional chaining when AriaDescriber is required.\n      this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\n      this._ariaDescriber?.describe(this._sortButton, newDescription);\n    }\n\n    this._sortActionDescription = newDescription;\n  }\n\n  /** Handles changes in the sorting state. */\n  private _handleStateChanges() {\n    this._rerenderSubscription =\n      merge(this._sort.sortChange, this._sort._stateChanges, this._intl.changes).subscribe(() => {\n        if (this._isSorted()) {\n          this._updateArrowDirection();\n\n          // Do not show the animation if the header was already shown in the right position.\n          if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n            this._disableViewStateAnimation = true;\n          }\n\n          this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'active'});\n          this._showIndicatorHint = false;\n        }\n\n        // If this header was recently active and now no longer sorted, animate away the arrow.\n        if (!this._isSorted() && this._viewState && this._viewState.toState === 'active') {\n          this._disableViewStateAnimation = false;\n          this._setAnimationTransitionState({fromState: 'active', toState: this._arrowDirection});\n        }\n\n        this._changeDetectorRef.markForCheck();\n      });\n  }\n\n  static ngAcceptInputType_disableClear: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nimport {NgModule} from '@angular/core';\nimport {MatSortHeader} from './sort-header';\nimport {MatSort} from './sort';\nimport {MAT_SORT_HEADER_INTL_PROVIDER} from './sort-header-intl';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\n\n@NgModule({\n  imports: [CommonModule, MatCommonModule],\n  exports: [MatSort, MatSortHeader],\n  declarations: [MatSort, MatSortHeader],\n  providers: [MAT_SORT_HEADER_INTL_PROVIDER]\n})\nexport class MatSortModule {}\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport type SortDirection = 'asc' | 'desc' | '';\n","/**\n * @license\n * Copyright Google LLC 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 */\n\nexport * from './sort-module';\nexport * from './sort-direction';\nexport * from './sort-header';\nexport * from './sort-header-intl';\nexport * from './sort';\nexport * from './sort-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
  • trip-planner-front/node_modules/@angular/material/package.json

    r6a3a178 rfa375fe  
    11{
    22  "name": "@angular/material",
    3   "version": "12.2.9",
     3  "version": "12.2.10",
    44  "description": "Angular Material",
    55  "repository": {
     
    2020  "peerDependencies": {
    2121    "@angular/animations": "^12.0.0 || ^13.0.0-0",
    22     "@angular/cdk": "12.2.9",
     22    "@angular/cdk": "12.2.10",
    2323    "@angular/core": "^12.0.0 || ^13.0.0-0",
    2424    "@angular/common": "^12.0.0 || ^13.0.0-0",
  • trip-planner-front/node_modules/@angular/material/schematics/ng-add/index.js

    r6a3a178 rfa375fe  
    1919 * the default for Angular framework dependencies in CLI projects.
    2020 */
    21 const fallbackMaterialVersionRange = `~12.2.9`;
     21const fallbackMaterialVersionRange = `~12.2.10`;
    2222/**
    2323 * Schematic factory entry-point for the `ng-add` schematic. The ng-add schematic will be
  • trip-planner-front/node_modules/@angular/material/schematics/ng-add/index.mjs

    r6a3a178 rfa375fe  
    1919 * the default for Angular framework dependencies in CLI projects.
    2020 */
    21 const fallbackMaterialVersionRange = `~12.2.9`;
     21const fallbackMaterialVersionRange = `~12.2.10`;
    2222/**
    2323 * Schematic factory entry-point for the `ng-add` schematic. The ng-add schematic will be
  • trip-planner-front/node_modules/@angular/material/sort/index.metadata.json

    r6a3a178 rfa375fe  
    1 {"__symbolic":"module","version":4,"metadata":{"MatSortModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":12},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":17,"character":26}],"exports":[{"__symbolic":"reference","name":"MatSort"},{"__symbolic":"reference","name":"MatSortHeader"}],"declarations":[{"__symbolic":"reference","name":"MatSort"},{"__symbolic":"reference","name":"MatSortHeader"}],"providers":[{"__symbolic":"reference","name":"MAT_SORT_HEADER_INTL_PROVIDER"}]}]}],"members":{}},"SortDirection":{"__symbolic":"interface"},"ArrowViewState":{"__symbolic":"interface"},"ArrowViewStateTransition":{"__symbolic":"interface"},"MatSortHeader":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":97,"character":35,"module":"./sort-header"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":71,"character":1},"arguments":[{"selector":"[mat-sort-header]","exportAs":"matSortHeader","host":{"class":"mat-sort-header","(click)":"_handleClick()","(keydown)":"_handleKeydown($event)","(mouseenter)":"_setIndicatorHintVisible(true)","(mouseleave)":"_setIndicatorHintVisible(false)","[attr.aria-sort]":"_getAriaSortAttribute()","[class.mat-sort-header-disabled]":"_isDisabled()","$quoted$":["class","(click)","(keydown)","(mouseenter)","(mouseleave)","[attr.aria-sort]","[class.mat-sort-header-disabled]"]},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":85,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":86,"character":19},"member":"OnPush"},"inputs":["disabled"],"animations":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"indicator"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"leftPointer"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"rightPointer"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"arrowOpacity"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"arrowPosition"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"allowChildren"}],"template":"<!--\n  We set the `tabindex` on an element inside the table header, rather than the header itself,\n  because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\n  table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\n  be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\n  over having a button with an `aria-label` inside the header, because the button's `aria-label`\n  will be read out as the user is navigating the table's cell (see #13012).\n\n  The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\n-->\n<div class=\"mat-sort-header-container mat-focus-indicator\"\n     [class.mat-sort-header-sorted]=\"_isSorted()\"\n     [class.mat-sort-header-position-before]=\"arrowPosition == 'before'\"\n     [attr.tabindex]=\"_isDisabled() ? null : 0\"\n     role=\"button\">\n\n  <!--\n    TODO(crisbeto): this div isn't strictly necessary, but we have to keep it due to a large\n    number of screenshot diff failures. It should be removed eventually. Note that the difference\n    isn't visible with a shorter header, but once it breaks up into multiple lines, this element\n    causes it to be center-aligned, whereas removing it will keep the text to the left.\n  -->\n  <div class=\"mat-sort-header-content\">\n    <ng-content></ng-content>\n  </div>\n\n  <!-- Disable animations while a current animation is running -->\n  <div class=\"mat-sort-header-arrow\"\n       *ngIf=\"_renderArrow()\"\n       [@arrowOpacity]=\"_getArrowViewState()\"\n       [@arrowPosition]=\"_getArrowViewState()\"\n       [@allowChildren]=\"_getArrowDirectionState()\"\n       (@arrowPosition.start)=\"_disableViewStateAnimation = true\"\n       (@arrowPosition.done)=\"_disableViewStateAnimation = false\">\n    <div class=\"mat-sort-header-stem\"></div>\n    <div class=\"mat-sort-header-indicator\" [@indicator]=\"_getArrowDirectionState()\">\n      <div class=\"mat-sort-header-pointer-left\" [@leftPointer]=\"_getArrowDirectionState()\"></div>\n      <div class=\"mat-sort-header-pointer-right\" [@rightPointer]=\"_getArrowDirectionState()\"></div>\n      <div class=\"mat-sort-header-pointer-middle\"></div>\n    </div>\n  </div>\n</div>\n","styles":[".mat-sort-header-container{display:flex;cursor:pointer;align-items:center;letter-spacing:normal;outline:0}[mat-sort-header].cdk-keyboard-focused .mat-sort-header-container,[mat-sort-header].cdk-program-focused .mat-sort-header-container{border-bottom:solid 1px currentColor}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-content{text-align:center;display:flex;align-items:center}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex;opacity:0}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.cdk-high-contrast-active .mat-sort-header-stem{width:0;border-left:solid 2px}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.cdk-high-contrast-active .mat-sort-header-pointer-middle{width:0;height:0;border-top:solid 2px;border-left:solid 2px}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}.cdk-high-contrast-active .mat-sort-header-pointer-left,.cdk-high-contrast-active .mat-sort-header-pointer-right{width:0;height:0;border-left:solid 6px;border-top:solid 2px}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\n"]}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":126,"character":3},"arguments":["mat-sort-header"]}]}],"arrowPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":129,"character":3}}]}],"start":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":132,"character":3}}]}],"disableClear":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":135,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":149,"character":15}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":150,"character":15},"arguments":["MAT_SORT_HEADER_COLUMN_DEF"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":150,"character":53}}],null,null],"parameters":[{"__symbolic":"reference","name":"MatSortHeaderIntl"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":146,"character":42},{"__symbolic":"reference","name":"MatSort"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":152,"character":37},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":153,"character":46,"context":{"typeName":"HTMLElement"},"module":"./sort-header"}]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_setIndicatorHintVisible":[{"__symbolic":"method"}],"_setAnimationTransitionState":[{"__symbolic":"method"}],"_toggleOnInteraction":[{"__symbolic":"method"}],"_handleClick":[{"__symbolic":"method"}],"_handleKeydown":[{"__symbolic":"method"}],"_isSorted":[{"__symbolic":"method"}],"_getArrowDirectionState":[{"__symbolic":"method"}],"_getArrowViewState":[{"__symbolic":"method"}],"_updateArrowDirection":[{"__symbolic":"method"}],"_isDisabled":[{"__symbolic":"method"}],"_getAriaSortAttribute":[{"__symbolic":"method"}],"_renderArrow":[{"__symbolic":"method"}],"_handleStateChanges":[{"__symbolic":"method"}]}},"MatSortHeaderIntl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ɵprov":{}}},"MAT_SORT_HEADER_INTL_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentIntl"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentIntl"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"MatSortHeaderIntl"}}}},"MAT_SORT_HEADER_INTL_PROVIDER":{"provide":{"__symbolic":"reference","name":"MatSortHeaderIntl"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":35,"character":14}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":35,"character":30}},{"__symbolic":"reference","name":"MatSortHeaderIntl"}]],"useFactory":{"__symbolic":"reference","name":"MAT_SORT_HEADER_INTL_PROVIDER_FACTORY"}},"MatSortable":{"__symbolic":"interface"},"Sort":{"__symbolic":"interface"},"MatSortDefaultOptions":{"__symbolic":"interface"},"MAT_SORT_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":64,"character":8},"arguments":["MAT_SORT_DEFAULT_OPTIONS"]},"MatSort":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":78,"character":29,"module":"./sort"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":72,"character":1},"arguments":[{"selector":"[matSort]","exportAs":"matSort","host":{"class":"mat-sort","$quoted$":["class"]},"inputs":["disabled: matSortDisabled"]}]}],"members":{"active":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3},"arguments":["matSortActive"]}]}],"start":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3},"arguments":["matSortStart"]}]}],"direction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3},"arguments":["matSortDirection"]}]}],"disableClear":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":111,"character":3},"arguments":["matSortDisableClear"]}]}],"sortChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":117,"character":3},"arguments":["matSortChange"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":119,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":119,"character":27},"arguments":[{"__symbolic":"reference","name":"MAT_SORT_DEFAULT_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}],"register":[{"__symbolic":"method"}],"deregister":[{"__symbolic":"method"}],"sort":[{"__symbolic":"method"}],"getNextSortDirection":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"matSortAnimations":{"indicator":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":34,"character":13},"arguments":["indicator",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":35,"character":4},"arguments":["active-asc, asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":35,"character":29},"arguments":[{"transform":"translateY(0px)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":37,"character":4},"arguments":["active-desc, desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":37,"character":31},"arguments":[{"transform":"translateY(10px)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":38,"character":4},"arguments":["active-asc <=> active-desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":38,"character":45},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}}]}]}]]},"leftPointer":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":42,"character":15},"arguments":["leftPointer",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":43,"character":4},"arguments":["active-asc, asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":43,"character":29},"arguments":[{"transform":"rotate(-45deg)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":44,"character":4},"arguments":["active-desc, desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":44,"character":31},"arguments":[{"transform":"rotate(45deg)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":45,"character":4},"arguments":["active-asc <=> active-desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":45,"character":45},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}}]}]}]]},"rightPointer":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":49,"character":16},"arguments":["rightPointer",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":50,"character":4},"arguments":["active-asc, asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":50,"character":29},"arguments":[{"transform":"rotate(45deg)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":51,"character":4},"arguments":["active-desc, desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":51,"character":31},"arguments":[{"transform":"rotate(-45deg)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":52,"character":4},"arguments":["active-asc <=> active-desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":52,"character":45},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}}]}]}]]},"arrowOpacity":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":56,"character":16},"arguments":["arrowOpacity",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":57,"character":4},"arguments":["desc-to-active, asc-to-active, active",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":57,"character":51},"arguments":[{"opacity":1}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":58,"character":4},"arguments":["desc-to-hint, asc-to-hint, hint",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":58,"character":45},"arguments":[{"opacity":0.54}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":59,"character":4},"arguments":["hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":60,"character":8},"arguments":[{"opacity":0}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":62,"character":4},"arguments":["* => asc, * => desc, * => active, * => hint, * => void",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":62,"character":73},"arguments":["0ms"]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":63,"character":4},"arguments":["* <=> *",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":63,"character":26},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}}]}]}]]},"arrowPosition":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":73,"character":17},"arguments":["arrowPosition",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":75,"character":4},"arguments":["* => desc-to-hint, * => desc-to-active",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":76,"character":8},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"keyframes","line":76,"character":43},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":77,"character":10},"arguments":[{"transform":"translateY(-25%)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":78,"character":10},"arguments":[{"transform":"translateY(0)"}]}]]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":81,"character":4},"arguments":["* => hint-to-desc, * => active-to-desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":82,"character":8},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"keyframes","line":82,"character":43},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":83,"character":10},"arguments":[{"transform":"translateY(0)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":84,"character":10},"arguments":[{"transform":"translateY(25%)"}]}]]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":87,"character":4},"arguments":["* => asc-to-hint, * => asc-to-active",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":88,"character":8},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"keyframes","line":88,"character":43},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":89,"character":10},"arguments":[{"transform":"translateY(25%)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":90,"character":10},"arguments":[{"transform":"translateY(0)"}]}]]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":93,"character":4},"arguments":["* => hint-to-asc, * => active-to-asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":94,"character":8},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"keyframes","line":94,"character":43},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":95,"character":10},"arguments":[{"transform":"translateY(0)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":96,"character":10},"arguments":[{"transform":"translateY(-25%)"}]}]]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":98,"character":4},"arguments":["desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":99,"character":8},"arguments":[{"transform":"translateY(0)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":100,"character":4},"arguments":["hint-to-desc, active-to-desc, desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":101,"character":8},"arguments":[{"transform":"translateY(-25%)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":102,"character":4},"arguments":["hint-to-asc, active-to-asc, asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":103,"character":8},"arguments":[{"transform":"translateY(25%)"}]}]}]]},"allowChildren":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":107,"character":17},"arguments":["allowChildren",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":108,"character":4},"arguments":["* <=> *",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"query","line":109,"character":6},"arguments":["@*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animateChild","line":109,"character":18}},{"optional":true}]}]]}]]}}},"origins":{"MatSortModule":"./sort-module","SortDirection":"./sort-direction","ArrowViewState":"./sort-header","ArrowViewStateTransition":"./sort-header","MatSortHeader":"./sort-header","MatSortHeaderIntl":"./sort-header-intl","MAT_SORT_HEADER_INTL_PROVIDER_FACTORY":"./sort-header-intl","MAT_SORT_HEADER_INTL_PROVIDER":"./sort-header-intl","MatSortable":"./sort","Sort":"./sort","MatSortDefaultOptions":"./sort","MAT_SORT_DEFAULT_OPTIONS":"./sort","MatSort":"./sort","matSortAnimations":"./sort-animations"},"importAs":"@angular/material/sort"}
     1{"__symbolic":"module","version":4,"metadata":{"MatSortModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":12},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":17,"character":26}],"exports":[{"__symbolic":"reference","name":"MatSort"},{"__symbolic":"reference","name":"MatSortHeader"}],"declarations":[{"__symbolic":"reference","name":"MatSort"},{"__symbolic":"reference","name":"MatSortHeader"}],"providers":[{"__symbolic":"reference","name":"MAT_SORT_HEADER_INTL_PROVIDER"}]}]}],"members":{}},"SortDirection":{"__symbolic":"interface"},"ArrowViewState":{"__symbolic":"interface"},"ArrowViewStateTransition":{"__symbolic":"interface"},"MatSortHeader":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":97,"character":35,"module":"./sort-header"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":71,"character":1},"arguments":[{"selector":"[mat-sort-header]","exportAs":"matSortHeader","host":{"class":"mat-sort-header","(click)":"_handleClick()","(keydown)":"_handleKeydown($event)","(mouseenter)":"_setIndicatorHintVisible(true)","(mouseleave)":"_setIndicatorHintVisible(false)","[attr.aria-sort]":"_getAriaSortAttribute()","[class.mat-sort-header-disabled]":"_isDisabled()","$quoted$":["class","(click)","(keydown)","(mouseenter)","(mouseleave)","[attr.aria-sort]","[class.mat-sort-header-disabled]"]},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":85,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":86,"character":19},"member":"OnPush"},"inputs":["disabled"],"animations":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"indicator"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"leftPointer"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"rightPointer"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"arrowOpacity"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"arrowPosition"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matSortAnimations"},"member":"allowChildren"}],"template":"<!--\n  We set the `tabindex` on an element inside the table header, rather than the header itself,\n  because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\n  table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\n  be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\n  over having a button with an `aria-label` inside the header, because the button's `aria-label`\n  will be read out as the user is navigating the table's cell (see #13012).\n\n  The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\n-->\n<div class=\"mat-sort-header-container mat-focus-indicator\"\n     [class.mat-sort-header-sorted]=\"_isSorted()\"\n     [class.mat-sort-header-position-before]=\"arrowPosition == 'before'\"\n     [attr.tabindex]=\"_isDisabled() ? null : 0\"\n     role=\"button\">\n\n  <!--\n    TODO(crisbeto): this div isn't strictly necessary, but we have to keep it due to a large\n    number of screenshot diff failures. It should be removed eventually. Note that the difference\n    isn't visible with a shorter header, but once it breaks up into multiple lines, this element\n    causes it to be center-aligned, whereas removing it will keep the text to the left.\n  -->\n  <div class=\"mat-sort-header-content\">\n    <ng-content></ng-content>\n  </div>\n\n  <!-- Disable animations while a current animation is running -->\n  <div class=\"mat-sort-header-arrow\"\n       *ngIf=\"_renderArrow()\"\n       [@arrowOpacity]=\"_getArrowViewState()\"\n       [@arrowPosition]=\"_getArrowViewState()\"\n       [@allowChildren]=\"_getArrowDirectionState()\"\n       (@arrowPosition.start)=\"_disableViewStateAnimation = true\"\n       (@arrowPosition.done)=\"_disableViewStateAnimation = false\">\n    <div class=\"mat-sort-header-stem\"></div>\n    <div class=\"mat-sort-header-indicator\" [@indicator]=\"_getArrowDirectionState()\">\n      <div class=\"mat-sort-header-pointer-left\" [@leftPointer]=\"_getArrowDirectionState()\"></div>\n      <div class=\"mat-sort-header-pointer-right\" [@rightPointer]=\"_getArrowDirectionState()\"></div>\n      <div class=\"mat-sort-header-pointer-middle\"></div>\n    </div>\n  </div>\n</div>\n","styles":[".mat-sort-header-container{display:flex;cursor:pointer;align-items:center;letter-spacing:normal;outline:0}[mat-sort-header].cdk-keyboard-focused .mat-sort-header-container,[mat-sort-header].cdk-program-focused .mat-sort-header-container{border-bottom:solid 1px currentColor}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-content{text-align:center;display:flex;align-items:center}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex;opacity:0}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.cdk-high-contrast-active .mat-sort-header-stem{width:0;border-left:solid 2px}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.cdk-high-contrast-active .mat-sort-header-pointer-middle{width:0;height:0;border-top:solid 2px;border-left:solid 2px}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}.cdk-high-contrast-active .mat-sort-header-pointer-left,.cdk-high-contrast-active .mat-sort-header-pointer-right{width:0;height:0;border-left:solid 6px;border-top:solid 2px}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\n"]}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":132,"character":3},"arguments":["mat-sort-header"]}]}],"arrowPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":135,"character":3}}]}],"start":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":138,"character":3}}]}],"sortActionDescription":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":144,"character":3}}]}],"disableClear":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":157,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":171,"character":15}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":172,"character":15},"arguments":["MAT_SORT_HEADER_COLUMN_DEF"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":172,"character":53}}],null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":177,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"AriaDescriber","line":177,"character":22}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":177,"character":38}}]],"parameters":[{"__symbolic":"reference","name":"MatSortHeaderIntl"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":168,"character":42},{"__symbolic":"reference","name":"MatSort"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":174,"character":37},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":175,"character":46,"context":{"typeName":"HTMLElement"},"module":"./sort-header"}]},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"AriaDescriber","line":177,"character":74}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_setIndicatorHintVisible":[{"__symbolic":"method"}],"_setAnimationTransitionState":[{"__symbolic":"method"}],"_toggleOnInteraction":[{"__symbolic":"method"}],"_handleClick":[{"__symbolic":"method"}],"_handleKeydown":[{"__symbolic":"method"}],"_isSorted":[{"__symbolic":"method"}],"_getArrowDirectionState":[{"__symbolic":"method"}],"_getArrowViewState":[{"__symbolic":"method"}],"_updateArrowDirection":[{"__symbolic":"method"}],"_isDisabled":[{"__symbolic":"method"}],"_getAriaSortAttribute":[{"__symbolic":"method"}],"_renderArrow":[{"__symbolic":"method"}],"_updateSortActionDescription":[{"__symbolic":"method"}],"_handleStateChanges":[{"__symbolic":"method"}]}},"MatSortHeaderIntl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ɵprov":{}}},"MAT_SORT_HEADER_INTL_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentIntl"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentIntl"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"MatSortHeaderIntl"}}}},"MAT_SORT_HEADER_INTL_PROVIDER":{"provide":{"__symbolic":"reference","name":"MatSortHeaderIntl"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":14}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":33,"character":30}},{"__symbolic":"reference","name":"MatSortHeaderIntl"}]],"useFactory":{"__symbolic":"reference","name":"MAT_SORT_HEADER_INTL_PROVIDER_FACTORY"}},"MatSortable":{"__symbolic":"interface"},"Sort":{"__symbolic":"interface"},"MatSortDefaultOptions":{"__symbolic":"interface"},"MAT_SORT_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":64,"character":8},"arguments":["MAT_SORT_DEFAULT_OPTIONS"]},"MatSort":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":78,"character":29,"module":"./sort"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":72,"character":1},"arguments":[{"selector":"[matSort]","exportAs":"matSort","host":{"class":"mat-sort","$quoted$":["class"]},"inputs":["disabled: matSortDisabled"]}]}],"members":{"active":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3},"arguments":["matSortActive"]}]}],"start":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3},"arguments":["matSortStart"]}]}],"direction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3},"arguments":["matSortDirection"]}]}],"disableClear":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":111,"character":3},"arguments":["matSortDisableClear"]}]}],"sortChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":117,"character":3},"arguments":["matSortChange"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":119,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":119,"character":27},"arguments":[{"__symbolic":"reference","name":"MAT_SORT_DEFAULT_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}],"register":[{"__symbolic":"method"}],"deregister":[{"__symbolic":"method"}],"sort":[{"__symbolic":"method"}],"getNextSortDirection":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"matSortAnimations":{"indicator":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":34,"character":13},"arguments":["indicator",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":35,"character":4},"arguments":["active-asc, asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":35,"character":29},"arguments":[{"transform":"translateY(0px)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":37,"character":4},"arguments":["active-desc, desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":37,"character":31},"arguments":[{"transform":"translateY(10px)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":38,"character":4},"arguments":["active-asc <=> active-desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":38,"character":45},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}}]}]}]]},"leftPointer":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":42,"character":15},"arguments":["leftPointer",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":43,"character":4},"arguments":["active-asc, asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":43,"character":29},"arguments":[{"transform":"rotate(-45deg)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":44,"character":4},"arguments":["active-desc, desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":44,"character":31},"arguments":[{"transform":"rotate(45deg)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":45,"character":4},"arguments":["active-asc <=> active-desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":45,"character":45},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}}]}]}]]},"rightPointer":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":49,"character":16},"arguments":["rightPointer",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":50,"character":4},"arguments":["active-asc, asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":50,"character":29},"arguments":[{"transform":"rotate(45deg)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":51,"character":4},"arguments":["active-desc, desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":51,"character":31},"arguments":[{"transform":"rotate(-45deg)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":52,"character":4},"arguments":["active-asc <=> active-desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":52,"character":45},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}}]}]}]]},"arrowOpacity":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":56,"character":16},"arguments":["arrowOpacity",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":57,"character":4},"arguments":["desc-to-active, asc-to-active, active",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":57,"character":51},"arguments":[{"opacity":1}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":58,"character":4},"arguments":["desc-to-hint, asc-to-hint, hint",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":58,"character":45},"arguments":[{"opacity":0.54}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":59,"character":4},"arguments":["hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":60,"character":8},"arguments":[{"opacity":0}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":62,"character":4},"arguments":["* => asc, * => desc, * => active, * => hint, * => void",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":62,"character":73},"arguments":["0ms"]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":63,"character":4},"arguments":["* <=> *",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":63,"character":26},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}}]}]}]]},"arrowPosition":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":73,"character":17},"arguments":["arrowPosition",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":75,"character":4},"arguments":["* => desc-to-hint, * => desc-to-active",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":76,"character":8},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"keyframes","line":76,"character":43},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":77,"character":10},"arguments":[{"transform":"translateY(-25%)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":78,"character":10},"arguments":[{"transform":"translateY(0)"}]}]]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":81,"character":4},"arguments":["* => hint-to-desc, * => active-to-desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":82,"character":8},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"keyframes","line":82,"character":43},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":83,"character":10},"arguments":[{"transform":"translateY(0)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":84,"character":10},"arguments":[{"transform":"translateY(25%)"}]}]]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":87,"character":4},"arguments":["* => asc-to-hint, * => asc-to-active",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":88,"character":8},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"keyframes","line":88,"character":43},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":89,"character":10},"arguments":[{"transform":"translateY(25%)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":90,"character":10},"arguments":[{"transform":"translateY(0)"}]}]]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":93,"character":4},"arguments":["* => hint-to-asc, * => active-to-asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":94,"character":8},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationDurations","line":18,"character":34},"member":"ENTERING"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/material/core","name":"AnimationCurves","line":19,"character":34},"member":"STANDARD_CURVE"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"keyframes","line":94,"character":43},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":95,"character":10},"arguments":[{"transform":"translateY(0)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":96,"character":10},"arguments":[{"transform":"translateY(-25%)"}]}]]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":98,"character":4},"arguments":["desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":99,"character":8},"arguments":[{"transform":"translateY(0)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":100,"character":4},"arguments":["hint-to-desc, active-to-desc, desc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":101,"character":8},"arguments":[{"transform":"translateY(-25%)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":102,"character":4},"arguments":["hint-to-asc, active-to-asc, asc",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":103,"character":8},"arguments":[{"transform":"translateY(25%)"}]}]}]]},"allowChildren":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":107,"character":17},"arguments":["allowChildren",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":108,"character":4},"arguments":["* <=> *",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"query","line":109,"character":6},"arguments":["@*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animateChild","line":109,"character":18}},{"optional":true}]}]]}]]}}},"origins":{"MatSortModule":"./sort-module","SortDirection":"./sort-direction","ArrowViewState":"./sort-header","ArrowViewStateTransition":"./sort-header","MatSortHeader":"./sort-header","MatSortHeaderIntl":"./sort-header-intl","MAT_SORT_HEADER_INTL_PROVIDER_FACTORY":"./sort-header-intl","MAT_SORT_HEADER_INTL_PROVIDER":"./sort-header-intl","MatSortable":"./sort","Sort":"./sort","MatSortDefaultOptions":"./sort","MAT_SORT_DEFAULT_OPTIONS":"./sort","MatSort":"./sort","matSortAnimations":"./sort-animations"},"importAs":"@angular/material/sort"}
  • trip-planner-front/node_modules/@angular/material/sort/sort-header-intl.d.ts

    r6a3a178 rfa375fe  
    1111 * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and
    1212 * include it in a custom provider.
    13  * @deprecated No longer being used. To be removed.
    14  * @breaking-change 13.0.0
    1513 */
    1614export declare class MatSortHeaderIntl {
  • trip-planner-front/node_modules/@angular/material/sort/sort-header.d.ts

    r6a3a178 rfa375fe  
    66 * found in the LICENSE file at https://angular.io/license
    77 */
     8import { AriaDescriber, FocusMonitor } from '@angular/cdk/a11y';
    89import { BooleanInput } from '@angular/cdk/coercion';
    9 import { ChangeDetectorRef, OnDestroy, OnInit, ElementRef, AfterViewInit } from '@angular/core';
     10import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy, OnInit } from '@angular/core';
    1011import { CanDisable } from '@angular/material/core';
    11 import { FocusMonitor } from '@angular/cdk/a11y';
    1212import { MatSort, MatSortable } from './sort';
    1313import { SortDirection } from './sort-direction';
     
    5959    private _focusMonitor;
    6060    private _elementRef;
     61    /** @breaking-change 14.0.0 _ariaDescriber will be required. */
     62    private _ariaDescriber?;
    6163    private _rerenderSubscription;
     64    /**
     65     * The element with role="button" inside this component's view. We need this
     66     * in order to apply a description with AriaDescriber.
     67     */
     68    private _sortButton;
    6269    /**
    6370     * Flag set to true when the indicator should be displayed while the sort is not active. Used to
     
    8693    /** Overrides the sort start value of the containing MatSort for this MatSortable. */
    8794    start: 'asc' | 'desc';
     95    /**
     96     * Description applied to MatSortHeader's button element with aria-describedby. This text should
     97     * describe the action that will occur when the user clicks the sort header.
     98     */
     99    get sortActionDescription(): string;
     100    set sortActionDescription(value: string);
     101    private _sortActionDescription;
    88102    /** Overrides the disable clear value of the containing MatSort for this MatSortable. */
    89103    get disableClear(): boolean;
     
    95109     * @breaking-change 13.0.0
    96110     */
    97     _intl: MatSortHeaderIntl, _changeDetectorRef: ChangeDetectorRef, _sort: MatSort, _columnDef: MatSortHeaderColumnDef, _focusMonitor: FocusMonitor, _elementRef: ElementRef<HTMLElement>);
     111    _intl: MatSortHeaderIntl, _changeDetectorRef: ChangeDetectorRef, _sort: MatSort, _columnDef: MatSortHeaderColumnDef, _focusMonitor: FocusMonitor, _elementRef: ElementRef<HTMLElement>,
     112    /** @breaking-change 14.0.0 _ariaDescriber will be required. */
     113    _ariaDescriber?: AriaDescriber | null | undefined);
    98114    ngOnInit(): void;
    99115    ngAfterViewInit(): void;
     
    141157    /** Whether the arrow inside the sort header should be rendered. */
    142158    _renderArrow(): boolean;
     159    private _updateSortActionDescription;
    143160    /** Handles changes in the sorting state. */
    144161    private _handleStateChanges;
Note: See TracChangeset for help on using the changeset viewer.