{"version":3,"sources":["node_modules/@angular/material/fesm2022/chips.mjs","src/app/pages/blog/components/featured-article/featured-article.component.ts","src/app/pages/blog/components/featured-article/featured-article.component.html","src/app/pages/blog/components/featured-article-skeleton/featured-article-skeleton.component.ts","src/app/pages/blog/components/featured-article-skeleton/featured-article-skeleton.component.html","src/app/pages/blog/components/article-card-skeleton/article-card-skeleton.component.ts","src/app/pages/blog/components/article-card-skeleton/article-card-skeleton.component.html","src/app/pages/blog/pages/blog-list/blog.component.ts","src/app/pages/blog/pages/blog-list/blog.component.html"],"sourcesContent":["import { FocusMonitor, _IdGenerator, FocusKeyManager } from '@angular/cdk/a11y';\nimport { ENTER, SPACE, BACKSPACE, DELETE, TAB, hasModifierKey, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { _CdkPrivateStyleLoader, _VisuallyHiddenLoader } from '@angular/cdk/private';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, ElementRef, booleanAttribute, numberAttribute, Directive, Input, ChangeDetectorRef, HOST_TAG_NAME, NgZone, DOCUMENT, EventEmitter, Injector, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, Output, ContentChild, ViewChild, afterNextRender, QueryList, forwardRef, NgModule } from '@angular/core';\nimport { Subject, merge } from 'rxjs';\nimport { _StructuralStylesLoader } from './structural-styles.mjs';\nimport { MAT_RIPPLE_GLOBAL_OPTIONS } from './ripple.mjs';\nimport { _animationsDisabled } from './animation.mjs';\nimport { MatRippleLoader } from './ripple-loader.mjs';\nimport { takeUntil, startWith, switchMap } from 'rxjs/operators';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { NG_VALUE_ACCESSOR, NgControl, Validators, NgForm, FormGroupDirective } from '@angular/forms';\nimport { ErrorStateMatcher } from './error-options.mjs';\nimport { _ErrorStateTracker } from './error-state.mjs';\nimport { MatFormFieldControl, MAT_FORM_FIELD } from './form-field2.mjs';\nimport { MatCommonModule } from './common-module.mjs';\nimport { MatRippleModule } from './ripple-module.mjs';\nimport '@angular/cdk/platform';\nimport '@angular/cdk/coercion';\nimport '@angular/cdk/layout';\nimport '@angular/common';\nimport '@angular/cdk/observers/private';\n\n/** Injection token to be used to override the default options for the chips module. */\nconst _c0 = [\"*\", [[\"mat-chip-avatar\"], [\"\", \"matChipAvatar\", \"\"]], [[\"mat-chip-trailing-icon\"], [\"\", \"matChipRemove\", \"\"], [\"\", \"matChipTrailingIcon\", \"\"]]];\nconst _c1 = [\"*\", \"mat-chip-avatar, [matChipAvatar]\", \"mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]\"];\nfunction MatChip_Conditional_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 3);\n    i0.ɵɵprojection(1, 1);\n    i0.ɵɵelementEnd();\n  }\n}\nfunction MatChip_Conditional_7_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 6);\n    i0.ɵɵprojection(1, 2);\n    i0.ɵɵelementEnd();\n  }\n}\nfunction MatChipOption_Conditional_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 3);\n    i0.ɵɵprojection(1, 1);\n    i0.ɵɵelementStart(2, \"span\", 7);\n    i0.ɵɵnamespaceSVG();\n    i0.ɵɵelementStart(3, \"svg\", 8);\n    i0.ɵɵelement(4, \"path\", 9);\n    i0.ɵɵelementEnd()()();\n  }\n}\nfunction MatChipOption_Conditional_7_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 6);\n    i0.ɵɵprojection(1, 2);\n    i0.ɵɵelementEnd();\n  }\n}\nconst _c2 = \".mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}@media(forced-colors: active){.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{forced-color-adjust:none}}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mat-chip-outline-width, 1px);border-radius:var(--mat-chip-container-shape-radius, 8px);box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mat-chip-outline-color, var(--mat-sys-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mat-chip-focus-outline-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mat-chip-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mat-chip-flat-selected-outline-width, 0)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--secondary{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--secondary{color:var(--mat-chip-with-trailing-icon-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--secondary{color:var(--mat-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mat-chip-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-chip-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-chip-label-text-size, var(--mat-sys-label-large-size));font-weight:var(--mat-chip-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mat-chip-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mat-chip-label-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mat-chip-selected-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mat-chip-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mat-chip-with-avatar-avatar-size, 24px);height:var(--mat-chip-with-avatar-avatar-size, 24px);font-size:var(--mat-chip-with-avatar-avatar-size, 24px)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__graphic{padding-left:0}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mat-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mat-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@media(forced-colors: active){.mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity, 1)*var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity, 1)*var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mat-mdc-standard-chip{border-radius:var(--mat-chip-container-shape-radius, 8px);height:var(--mat-chip-container-height, 32px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mat-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mat-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mat-chip-elevated-selected-container-color, var(--mat-sys-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mat-chip-flat-disabled-selected-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}@media(forced-colors: active){.mat-mdc-standard-chip{outline:solid 1px}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mat-chip-with-avatar-avatar-shape-radius, 24px);width:var(--mat-chip-with-icon-icon-size, 18px);height:var(--mat-chip-with-icon-icon-size, 18px);font-size:var(--mat-chip-with-icon-icon-size, 18px)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mat-chip-with-icon-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mat-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-highlighted{--mat-chip-with-icon-icon-color: var(--mat-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container));--mat-chip-elevated-container-color: var(--mat-chip-elevated-selected-container-color, var(--mat-sys-secondary-container));--mat-chip-label-text-color: var(--mat-chip-selected-label-text-color, var(--mat-sys-on-secondary-container));--mat-chip-outline-width: var(--mat-chip-flat-selected-outline-width, 0)}.mat-mdc-chip-focus-overlay{background:var(--mat-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mat-chip-hover-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mat-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-hover-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mat-chip-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mat-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mat-chip-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mat-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mat-chip-with-avatar-disabled-avatar-opacity, 0.38)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mat-chip-with-icon-disabled-icon-opacity, 0.38)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity, 1)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-edit,.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity, 1)}.mat-mdc-chip-edit:focus,.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity, 1)}.mat-mdc-chip-edit::after,.mat-mdc-chip-remove::after{background-color:var(--mat-chip-trailing-action-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-edit:hover::after,.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-edit:focus::after,.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background-color:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mat-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-edit::before,.mat-mdc-chip-remove::before{margin:calc(var(--mat-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-edit::after,.mat-mdc-chip-remove::after{content:\\\"\\\";display:block;opacity:0;position:absolute;top:-3px;bottom:-3px;left:5px;right:5px;border-radius:50%;box-sizing:border-box;padding:12px;margin:-12px;background-clip:content-box}.mat-mdc-chip-edit .mat-icon,.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}@media(forced-colors: active){.mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}}.mat-mdc-chip-action:focus .mat-focus-indicator::before{content:\\\"\\\"}.mdc-evolution-chip__icon,.mat-mdc-chip-edit .mat-icon,.mat-mdc-chip-remove .mat-icon{min-height:fit-content}img.mdc-evolution-chip__icon{min-height:0}\\n\";\nconst _c3 = [[[\"\", \"matChipEdit\", \"\"]], [[\"mat-chip-avatar\"], [\"\", \"matChipAvatar\", \"\"]], [[\"\", \"matChipEditInput\", \"\"]], \"*\", [[\"mat-chip-trailing-icon\"], [\"\", \"matChipRemove\", \"\"], [\"\", \"matChipTrailingIcon\", \"\"]]];\nconst _c4 = [\"[matChipEdit]\", \"mat-chip-avatar, [matChipAvatar]\", \"[matChipEditInput]\", \"*\", \"mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]\"];\nfunction MatChipRow_Conditional_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 0);\n  }\n}\nfunction MatChipRow_Conditional_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 1);\n    i0.ɵɵprojection(1);\n    i0.ɵɵelementEnd();\n  }\n}\nfunction MatChipRow_Conditional_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 3);\n    i0.ɵɵprojection(1, 1);\n    i0.ɵɵelementEnd();\n  }\n}\nfunction MatChipRow_Conditional_5_Conditional_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵprojection(0, 2);\n  }\n}\nfunction MatChipRow_Conditional_5_Conditional_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 7);\n  }\n}\nfunction MatChipRow_Conditional_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵconditionalCreate(0, MatChipRow_Conditional_5_Conditional_0_Template, 1, 0)(1, MatChipRow_Conditional_5_Conditional_1_Template, 1, 0, \"span\", 7);\n  }\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵconditional(ctx_r0.contentEditInput ? 0 : 1);\n  }\n}\nfunction MatChipRow_Conditional_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵprojection(0, 3);\n  }\n}\nfunction MatChipRow_Conditional_8_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 6);\n    i0.ɵɵprojection(1, 4);\n    i0.ɵɵelementEnd();\n  }\n}\nconst _c5 = [\"*\"];\nconst _c6 = \".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::-moz-placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::-webkit-input-placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input:-ms-input-placeholder{opacity:1}.mat-mdc-chip-set+input.mat-mdc-chip-input{margin-left:0;margin-right:0}\\n\";\nconst MAT_CHIPS_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-chips-default-options', {\n  providedIn: 'root',\n  factory: () => ({\n    separatorKeyCodes: [ENTER]\n  })\n});\n/**\n * Injection token that can be used to reference instances of `MatChipAvatar`. It serves as\n * alternative token to the actual `MatChipAvatar` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_AVATAR = /*#__PURE__*/new InjectionToken('MatChipAvatar');\n/**\n * Injection token that can be used to reference instances of `MatChipTrailingIcon`. It serves as\n * alternative token to the actual `MatChipTrailingIcon` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_TRAILING_ICON = /*#__PURE__*/new InjectionToken('MatChipTrailingIcon');\n/**\n * Injection token that can be used to reference instances of `MatChipEdit`. It serves as\n * alternative token to the actual `MatChipEdit` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_EDIT = /*#__PURE__*/new InjectionToken('MatChipEdit');\n/**\n * Injection token that can be used to reference instances of `MatChipRemove`. It serves as\n * alternative token to the actual `MatChipRemove` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_REMOVE = /*#__PURE__*/new InjectionToken('MatChipRemove');\n/**\n * Injection token used to avoid a circular dependency between the `MatChip` and `MatChipAction`.\n */\nconst MAT_CHIP = /*#__PURE__*/new InjectionToken('MatChip');\n\n/**\n * Section within a chip.\n * @docs-private\n */\nlet MatChipAction = /*#__PURE__*/(() => {\n  class MatChipAction {\n    _elementRef = inject(ElementRef);\n    _parentChip = inject(MAT_CHIP);\n    /** Whether the action is interactive. */\n    isInteractive = true;\n    /** Whether this is the primary action in the chip. */\n    _isPrimary = true;\n    /** Whether this is the leading action in the chip. */\n    _isLeading = false; // TODO(adolgachev): consolidate usage to secondary css class\n    /** Whether the action is disabled. */\n    get disabled() {\n      return this._disabled || this._parentChip?.disabled || false;\n    }\n    set disabled(value) {\n      this._disabled = value;\n    }\n    _disabled = false;\n    /** Tab index of the action. */\n    tabIndex = -1;\n    /**\n     * Private API to allow focusing this chip when it is disabled.\n     */\n    _allowFocusWhenDisabled = false;\n    /**\n     * Determine the value of the disabled attribute for this chip action.\n     */\n    _getDisabledAttribute() {\n      // When this chip action is disabled and focusing disabled chips is not permitted, return empty\n      // string to indicate that disabled attribute should be included.\n      return this.disabled && !this._allowFocusWhenDisabled ? '' : null;\n    }\n    /**\n     * Determine the value of the tabindex attribute for this chip action.\n     */\n    _getTabindex() {\n      return this.disabled && !this._allowFocusWhenDisabled || !this.isInteractive ? null : this.tabIndex.toString();\n    }\n    constructor() {\n      inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n      if (this._elementRef.nativeElement.nodeName === 'BUTTON') {\n        this._elementRef.nativeElement.setAttribute('type', 'button');\n      }\n    }\n    focus() {\n      this._elementRef.nativeElement.focus();\n    }\n    _handleClick(event) {\n      if (!this.disabled && this.isInteractive && this._isPrimary) {\n        event.preventDefault();\n        this._parentChip._handlePrimaryActionInteraction();\n      }\n    }\n    _handleKeydown(event) {\n      if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled && this.isInteractive && this._isPrimary && !this._parentChip._isEditing) {\n        event.preventDefault();\n        this._parentChip._handlePrimaryActionInteraction();\n      }\n    }\n    static ɵfac = function MatChipAction_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MatChipAction)();\n    };\n    static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n      type: MatChipAction,\n      selectors: [[\"\", \"matChipAction\", \"\"]],\n      hostAttrs: [1, \"mdc-evolution-chip__action\", \"mat-mdc-chip-action\"],\n      hostVars: 11,\n      hostBindings: function MatChipAction_HostBindings(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵlistener(\"click\", function MatChipAction_click_HostBindingHandler($event) {\n            return ctx._handleClick($event);\n          })(\"keydown\", function MatChipAction_keydown_HostBindingHandler($event) {\n            return ctx._handleKeydown($event);\n          });\n        }\n        if (rf & 2) {\n          i0.ɵɵattribute(\"tabindex\", ctx._getTabindex())(\"disabled\", ctx._getDisabledAttribute())(\"aria-disabled\", ctx.disabled);\n          i0.ɵɵclassProp(\"mdc-evolution-chip__action--primary\", ctx._isPrimary)(\"mdc-evolution-chip__action--presentational\", !ctx.isInteractive)(\"mdc-evolution-chip__action--secondary\", !ctx._isPrimary)(\"mdc-evolution-chip__action--trailing\", !ctx._isPrimary && !ctx._isLeading);\n        }\n      },\n      inputs: {\n        isInteractive: \"isInteractive\",\n        disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n        tabIndex: [2, \"tabIndex\", \"tabIndex\", value => value == null ? -1 : numberAttribute(value)],\n        _allowFocusWhenDisabled: \"_allowFocusWhenDisabled\"\n      }\n    });\n  }\n  return MatChipAction;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Avatar image within a chip. */\nlet MatChipAvatar = /*#__PURE__*/(() => {\n  class MatChipAvatar {\n    static ɵfac = function MatChipAvatar_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MatChipAvatar)();\n    };\n    static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n      type: MatChipAvatar,\n      selectors: [[\"mat-chip-avatar\"], [\"\", \"matChipAvatar\", \"\"]],\n      hostAttrs: [\"role\", \"img\", 1, \"mat-mdc-chip-avatar\", \"mdc-evolution-chip__icon\", \"mdc-evolution-chip__icon--primary\"],\n      features: [i0.ɵɵProvidersFeature([{\n        provide: MAT_CHIP_AVATAR,\n        useExisting: MatChipAvatar\n      }])]\n    });\n  }\n  return MatChipAvatar;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Non-interactive trailing icon in a chip. */\nlet MatChipTrailingIcon = /*#__PURE__*/(() => {\n  class MatChipTrailingIcon extends MatChipAction {\n    /**\n     * MDC considers all trailing actions as a remove icon,\n     * but we support non-interactive trailing icons.\n     */\n    isInteractive = false;\n    _isPrimary = false;\n    static ɵfac = /* @__PURE__ */(() => {\n      let ɵMatChipTrailingIcon_BaseFactory;\n      return function MatChipTrailingIcon_Factory(__ngFactoryType__) {\n        return (ɵMatChipTrailingIcon_BaseFactory || (ɵMatChipTrailingIcon_BaseFactory = i0.ɵɵgetInheritedFactory(MatChipTrailingIcon)))(__ngFactoryType__ || MatChipTrailingIcon);\n      };\n    })();\n    static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n      type: MatChipTrailingIcon,\n      selectors: [[\"mat-chip-trailing-icon\"], [\"\", \"matChipTrailingIcon\", \"\"]],\n      hostAttrs: [\"aria-hidden\", \"true\", 1, \"mat-mdc-chip-trailing-icon\", \"mdc-evolution-chip__icon\", \"mdc-evolution-chip__icon--trailing\"],\n      features: [i0.ɵɵProvidersFeature([{\n        provide: MAT_CHIP_TRAILING_ICON,\n        useExisting: MatChipTrailingIcon\n      }]), i0.ɵɵInheritDefinitionFeature]\n    });\n  }\n  return MatChipTrailingIcon;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Directive to edit the parent chip when the leading action icon is clicked or\n * when the ENTER key is pressed on it.\n *\n * Recommended for use with the Material Design \"edit\" icon\n * available at https://material.io/icons/#ic_edit.\n *\n * Example:\n *\n * ```\n * <mat-chip>\n *   <button matChipEdit aria-label=\"Edit\">\n *     <mat-icon>edit</mat-icon>\n *   </button>\n * </mat-chip>\n * ```\n */\nlet MatChipEdit = /*#__PURE__*/(() => {\n  class MatChipEdit extends MatChipAction {\n    _isPrimary = false;\n    _isLeading = true;\n    _handleClick(event) {\n      if (!this.disabled) {\n        event.stopPropagation();\n        event.preventDefault();\n        this._parentChip._edit();\n      }\n    }\n    _handleKeydown(event) {\n      if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled) {\n        event.stopPropagation();\n        event.preventDefault();\n        this._parentChip._edit();\n      }\n    }\n    static ɵfac = /* @__PURE__ */(() => {\n      let ɵMatChipEdit_BaseFactory;\n      return function MatChipEdit_Factory(__ngFactoryType__) {\n        return (ɵMatChipEdit_BaseFactory || (ɵMatChipEdit_BaseFactory = i0.ɵɵgetInheritedFactory(MatChipEdit)))(__ngFactoryType__ || MatChipEdit);\n      };\n    })();\n    static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n      type: MatChipEdit,\n      selectors: [[\"\", \"matChipEdit\", \"\"]],\n      hostAttrs: [\"role\", \"button\", 1, \"mat-mdc-chip-edit\", \"mat-mdc-chip-avatar\", \"mat-focus-indicator\", \"mdc-evolution-chip__icon\", \"mdc-evolution-chip__icon--primary\"],\n      hostVars: 1,\n      hostBindings: function MatChipEdit_HostBindings(rf, ctx) {\n        if (rf & 2) {\n          i0.ɵɵattribute(\"aria-hidden\", null);\n        }\n      },\n      features: [i0.ɵɵProvidersFeature([{\n        provide: MAT_CHIP_EDIT,\n        useExisting: MatChipEdit\n      }]), i0.ɵɵInheritDefinitionFeature]\n    });\n  }\n  return MatChipEdit;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Directive to remove the parent chip when the trailing icon is clicked or\n * when the ENTER key is pressed on it.\n *\n * Recommended for use with the Material Design \"cancel\" icon\n * available at https://material.io/icons/#ic_cancel.\n *\n * Example:\n *\n * ```\n * <mat-chip>\n *   <mat-icon matChipRemove>cancel</mat-icon>\n * </mat-chip>\n * ```\n */\nlet MatChipRemove = /*#__PURE__*/(() => {\n  class MatChipRemove extends MatChipAction {\n    _isPrimary = false;\n    _handleClick(event) {\n      if (!this.disabled) {\n        event.stopPropagation();\n        event.preventDefault();\n        this._parentChip.remove();\n      }\n    }\n    _handleKeydown(event) {\n      if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled) {\n        event.stopPropagation();\n        event.preventDefault();\n        this._parentChip.remove();\n      }\n    }\n    static ɵfac = /* @__PURE__ */(() => {\n      let ɵMatChipRemove_BaseFactory;\n      return function MatChipRemove_Factory(__ngFactoryType__) {\n        return (ɵMatChipRemove_BaseFactory || (ɵMatChipRemove_BaseFactory = i0.ɵɵgetInheritedFactory(MatChipRemove)))(__ngFactoryType__ || MatChipRemove);\n      };\n    })();\n    static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n      type: MatChipRemove,\n      selectors: [[\"\", \"matChipRemove\", \"\"]],\n      hostAttrs: [\"role\", \"button\", 1, \"mat-mdc-chip-remove\", \"mat-mdc-chip-trailing-icon\", \"mat-focus-indicator\", \"mdc-evolution-chip__icon\", \"mdc-evolution-chip__icon--trailing\"],\n      hostVars: 1,\n      hostBindings: function MatChipRemove_HostBindings(rf, ctx) {\n        if (rf & 2) {\n          i0.ɵɵattribute(\"aria-hidden\", null);\n        }\n      },\n      features: [i0.ɵɵProvidersFeature([{\n        provide: MAT_CHIP_REMOVE,\n        useExisting: MatChipRemove\n      }]), i0.ɵɵInheritDefinitionFeature]\n    });\n  }\n  return MatChipRemove;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Material design styled Chip base component. Used inside the MatChipSet component.\n *\n * Extended by MatChipOption and MatChipRow for different interaction patterns.\n */\nlet MatChip = /*#__PURE__*/(() => {\n  class MatChip {\n    _changeDetectorRef = inject(ChangeDetectorRef);\n    _elementRef = inject(ElementRef);\n    _tagName = inject(HOST_TAG_NAME);\n    _ngZone = inject(NgZone);\n    _focusMonitor = inject(FocusMonitor);\n    _globalRippleOptions = inject(MAT_RIPPLE_GLOBAL_OPTIONS, {\n      optional: true\n    });\n    _document = inject(DOCUMENT);\n    /** Emits when the chip is focused. */\n    _onFocus = new Subject();\n    /** Emits when the chip is blurred. */\n    _onBlur = new Subject();\n    /** Whether this chip is a basic (unstyled) chip. */\n    _isBasicChip;\n    /** Role for the root of the chip. */\n    role = null;\n    /** Whether the chip has focus. */\n    _hasFocusInternal = false;\n    /** Whether moving focus into the chip is pending. */\n    _pendingFocus;\n    /** Subscription to changes in the chip's actions. */\n    _actionChanges;\n    /** Whether animations for the chip are enabled. */\n    _animationsDisabled = _animationsDisabled();\n    /** All avatars present in the chip. */\n    _allLeadingIcons;\n    /** All trailing icons present in the chip. */\n    _allTrailingIcons;\n    /** All edit icons present in the chip. */\n    _allEditIcons;\n    /** All remove icons present in the chip. */\n    _allRemoveIcons;\n    _hasFocus() {\n      return this._hasFocusInternal;\n    }\n    /** A unique id for the chip. If none is supplied, it will be auto-generated. */\n    id = inject(_IdGenerator).getId('mat-mdc-chip-');\n    // TODO(#26104): Consider deprecating and using `_computeAriaAccessibleName` instead.\n    // `ariaLabel` may be unnecessary, and `_computeAriaAccessibleName` only supports\n    // datepicker's use case.\n    /** ARIA label for the content of the chip. */\n    ariaLabel = null;\n    // TODO(#26104): Consider deprecating and using `_computeAriaAccessibleName` instead.\n    // `ariaDescription` may be unnecessary, and `_computeAriaAccessibleName` only supports\n    // datepicker's use case.\n    /** ARIA description for the content of the chip. */\n    ariaDescription = null;\n    /** Whether the chip list is disabled. */\n    _chipListDisabled = false;\n    /** Whether the chip was focused when it was removed. */\n    _hadFocusOnRemove = false;\n    _textElement;\n    /**\n     * The value of the chip. Defaults to the content inside\n     * the `mat-mdc-chip-action-label` element.\n     */\n    get value() {\n      return this._value !== undefined ? this._value : this._textElement.textContent.trim();\n    }\n    set value(value) {\n      this._value = value;\n    }\n    _value;\n    // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n    /**\n     * Theme color of the chip. This API is supported in M2 themes only, it has no\n     * effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/chips/styling.\n     *\n     * For information on applying color variants in M3, see\n     * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n     */\n    color;\n    /**\n     * Determines whether or not the chip displays the remove styling and emits (removed) events.\n     */\n    removable = true;\n    /**\n     * Colors the chip for emphasis as if it were selected.\n     */\n    highlighted = false;\n    /** Whether the ripple effect is disabled or not. */\n    disableRipple = false;\n    /** Whether the chip is disabled. */\n    get disabled() {\n      return this._disabled || this._chipListDisabled;\n    }\n    set disabled(value) {\n      this._disabled = value;\n    }\n    _disabled = false;\n    /** Emitted when a chip is to be removed. */\n    removed = new EventEmitter();\n    /** Emitted when the chip is destroyed. */\n    destroyed = new EventEmitter();\n    /** The unstyled chip selector for this component. */\n    basicChipAttrName = 'mat-basic-chip';\n    /** The chip's leading icon. */\n    leadingIcon;\n    /** The chip's leading edit icon. */\n    editIcon;\n    /** The chip's trailing icon. */\n    trailingIcon;\n    /** The chip's trailing remove icon. */\n    removeIcon;\n    /** Action receiving the primary set of user interactions. */\n    primaryAction;\n    /**\n     * Handles the lazy creation of the MatChip ripple.\n     * Used to improve initial load time of large applications.\n     */\n    _rippleLoader = inject(MatRippleLoader);\n    _injector = inject(Injector);\n    constructor() {\n      const styleLoader = inject(_CdkPrivateStyleLoader);\n      styleLoader.load(_StructuralStylesLoader);\n      styleLoader.load(_VisuallyHiddenLoader);\n      this._monitorFocus();\n      this._rippleLoader?.configureRipple(this._elementRef.nativeElement, {\n        className: 'mat-mdc-chip-ripple',\n        disabled: this._isRippleDisabled()\n      });\n    }\n    ngOnInit() {\n      // This check needs to happen in `ngOnInit` so the overridden value of\n      // `basicChipAttrName` coming from base classes can be picked up.\n      this._isBasicChip = this._elementRef.nativeElement.hasAttribute(this.basicChipAttrName) || this._tagName.toLowerCase() === this.basicChipAttrName;\n    }\n    ngAfterViewInit() {\n      this._textElement = this._elementRef.nativeElement.querySelector('.mat-mdc-chip-action-label');\n      if (this._pendingFocus) {\n        this._pendingFocus = false;\n        this.focus();\n      }\n    }\n    ngAfterContentInit() {\n      // Since the styling depends on the presence of some\n      // actions, we have to mark for check on changes.\n      this._actionChanges = merge(this._allLeadingIcons.changes, this._allTrailingIcons.changes, this._allEditIcons.changes, this._allRemoveIcons.changes).subscribe(() => this._changeDetectorRef.markForCheck());\n    }\n    ngDoCheck() {\n      this._rippleLoader.setDisabled(this._elementRef.nativeElement, this._isRippleDisabled());\n    }\n    ngOnDestroy() {\n      this._focusMonitor.stopMonitoring(this._elementRef);\n      this._rippleLoader?.destroyRipple(this._elementRef.nativeElement);\n      this._actionChanges?.unsubscribe();\n      this.destroyed.emit({\n        chip: this\n      });\n      this.destroyed.complete();\n    }\n    /**\n     * Allows for programmatic removal of the chip.\n     *\n     * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n     */\n    remove() {\n      if (this.removable) {\n        this._hadFocusOnRemove = this._hasFocus();\n        this.removed.emit({\n          chip: this\n        });\n      }\n    }\n    /** Whether or not the ripple should be disabled. */\n    _isRippleDisabled() {\n      return this.disabled || this.disableRipple || this._animationsDisabled || this._isBasicChip || !this._hasInteractiveActions() || !!this._globalRippleOptions?.disabled;\n    }\n    /** Returns whether the chip has a trailing icon. */\n    _hasTrailingIcon() {\n      return !!(this.trailingIcon || this.removeIcon);\n    }\n    /** Handles keyboard events on the chip. */\n    _handleKeydown(event) {\n      // Ignore backspace events where the user is holding down the key\n      // so that we don't accidentally remove too many chips.\n      if (event.keyCode === BACKSPACE && !event.repeat || event.keyCode === DELETE) {\n        event.preventDefault();\n        this.remove();\n      }\n    }\n    /** Allows for programmatic focusing of the chip. */\n    focus() {\n      if (!this.disabled) {\n        // If `focus` is called before `ngAfterViewInit`, we won't have access to the primary action.\n        // This can happen if the consumer tries to focus a chip immediately after it is added.\n        // Queue the method to be called again on init.\n        if (this.primaryAction) {\n          this.primaryAction.focus();\n        } else {\n          this._pendingFocus = true;\n        }\n      }\n    }\n    /** Gets the action that contains a specific target node. */\n    _getSourceAction(target) {\n      return this._getActions().find(action => {\n        const element = action._elementRef.nativeElement;\n        return element === target || element.contains(target);\n      });\n    }\n    /** Gets all of the actions within the chip. */\n    _getActions() {\n      const result = [];\n      if (this.editIcon) {\n        result.push(this.editIcon);\n      }\n      if (this.primaryAction) {\n        result.push(this.primaryAction);\n      }\n      if (this.removeIcon) {\n        result.push(this.removeIcon);\n      }\n      if (this.trailingIcon) {\n        result.push(this.trailingIcon);\n      }\n      return result;\n    }\n    /** Handles interactions with the primary action of the chip. */\n    _handlePrimaryActionInteraction() {\n      // Empty here, but is overwritten in child classes.\n    }\n    /** Returns whether the chip has any interactive actions. */\n    _hasInteractiveActions() {\n      return this._getActions().some(a => a.isInteractive);\n    }\n    /** Handles interactions with the edit action of the chip. */\n    _edit(event) {\n      // Empty here, but is overwritten in child classes.\n    }\n    /** Starts the focus monitoring process on the chip. */\n    _monitorFocus() {\n      this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n        const hasFocus = origin !== null;\n        if (hasFocus !== this._hasFocusInternal) {\n          this._hasFocusInternal = hasFocus;\n          if (hasFocus) {\n            this._onFocus.next({\n              chip: this\n            });\n          } else {\n            // When animations are enabled, Angular may end up removing the chip from the DOM a little\n            // earlier than usual, causing it to be blurred and throwing off the logic in the chip list\n            // that moves focus to the next item. To work around the issue, we defer marking the chip\n            // as not focused until after the next render.\n            this._changeDetectorRef.markForCheck();\n            setTimeout(() => this._ngZone.run(() => this._onBlur.next({\n              chip: this\n            })));\n          }\n        }\n      });\n    }\n    static ɵfac = function MatChip_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MatChip)();\n    };\n    static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n      type: MatChip,\n      selectors: [[\"mat-basic-chip\"], [\"\", \"mat-basic-chip\", \"\"], [\"mat-chip\"], [\"\", \"mat-chip\", \"\"]],\n      contentQueries: function MatChip_ContentQueries(rf, ctx, dirIndex) {\n        if (rf & 1) {\n          i0.ɵɵcontentQuery(dirIndex, MAT_CHIP_AVATAR, 5);\n          i0.ɵɵcontentQuery(dirIndex, MAT_CHIP_EDIT, 5);\n          i0.ɵɵcontentQuery(dirIndex, MAT_CHIP_TRAILING_ICON, 5);\n          i0.ɵɵcontentQuery(dirIndex, MAT_CHIP_REMOVE, 5);\n          i0.ɵɵcontentQuery(dirIndex, MAT_CHIP_AVATAR, 5);\n          i0.ɵɵcontentQuery(dirIndex, MAT_CHIP_TRAILING_ICON, 5);\n          i0.ɵɵcontentQuery(dirIndex, MAT_CHIP_EDIT, 5);\n          i0.ɵɵcontentQuery(dirIndex, MAT_CHIP_REMOVE, 5);\n        }\n        if (rf & 2) {\n          let _t;\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.leadingIcon = _t.first);\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.editIcon = _t.first);\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.trailingIcon = _t.first);\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.removeIcon = _t.first);\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allLeadingIcons = _t);\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allTrailingIcons = _t);\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allEditIcons = _t);\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allRemoveIcons = _t);\n        }\n      },\n      viewQuery: function MatChip_Query(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵviewQuery(MatChipAction, 5);\n        }\n        if (rf & 2) {\n          let _t;\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.primaryAction = _t.first);\n        }\n      },\n      hostAttrs: [1, \"mat-mdc-chip\"],\n      hostVars: 31,\n      hostBindings: function MatChip_HostBindings(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵlistener(\"keydown\", function MatChip_keydown_HostBindingHandler($event) {\n            return ctx._handleKeydown($event);\n          });\n        }\n        if (rf & 2) {\n          i0.ɵɵdomProperty(\"id\", ctx.id);\n          i0.ɵɵattribute(\"role\", ctx.role)(\"aria-label\", ctx.ariaLabel);\n          i0.ɵɵclassMap(\"mat-\" + (ctx.color || \"primary\"));\n          i0.ɵɵclassProp(\"mdc-evolution-chip\", !ctx._isBasicChip)(\"mdc-evolution-chip--disabled\", ctx.disabled)(\"mdc-evolution-chip--with-trailing-action\", ctx._hasTrailingIcon())(\"mdc-evolution-chip--with-primary-graphic\", ctx.leadingIcon)(\"mdc-evolution-chip--with-primary-icon\", ctx.leadingIcon)(\"mdc-evolution-chip--with-avatar\", ctx.leadingIcon)(\"mat-mdc-chip-with-avatar\", ctx.leadingIcon)(\"mat-mdc-chip-highlighted\", ctx.highlighted)(\"mat-mdc-chip-disabled\", ctx.disabled)(\"mat-mdc-basic-chip\", ctx._isBasicChip)(\"mat-mdc-standard-chip\", !ctx._isBasicChip)(\"mat-mdc-chip-with-trailing-icon\", ctx._hasTrailingIcon())(\"_mat-animation-noopable\", ctx._animationsDisabled);\n        }\n      },\n      inputs: {\n        role: \"role\",\n        id: \"id\",\n        ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n        ariaDescription: [0, \"aria-description\", \"ariaDescription\"],\n        value: \"value\",\n        color: \"color\",\n        removable: [2, \"removable\", \"removable\", booleanAttribute],\n        highlighted: [2, \"highlighted\", \"highlighted\", booleanAttribute],\n        disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n        disabled: [2, \"disabled\", \"disabled\", booleanAttribute]\n      },\n      outputs: {\n        removed: \"removed\",\n        destroyed: \"destroyed\"\n      },\n      exportAs: [\"matChip\"],\n      features: [i0.ɵɵProvidersFeature([{\n        provide: MAT_CHIP,\n        useExisting: MatChip\n      }])],\n      ngContentSelectors: _c1,\n      decls: 8,\n      vars: 3,\n      consts: [[1, \"mat-mdc-chip-focus-overlay\"], [1, \"mdc-evolution-chip__cell\", \"mdc-evolution-chip__cell--primary\"], [\"matChipAction\", \"\", 3, \"isInteractive\"], [1, \"mdc-evolution-chip__graphic\", \"mat-mdc-chip-graphic\"], [1, \"mdc-evolution-chip__text-label\", \"mat-mdc-chip-action-label\"], [1, \"mat-mdc-chip-primary-focus-indicator\", \"mat-focus-indicator\"], [1, \"mdc-evolution-chip__cell\", \"mdc-evolution-chip__cell--trailing\"]],\n      template: function MatChip_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵprojectionDef(_c0);\n          i0.ɵɵelement(0, \"span\", 0);\n          i0.ɵɵelementStart(1, \"span\", 1)(2, \"span\", 2);\n          i0.ɵɵconditionalCreate(3, MatChip_Conditional_3_Template, 2, 0, \"span\", 3);\n          i0.ɵɵelementStart(4, \"span\", 4);\n          i0.ɵɵprojection(5);\n          i0.ɵɵelement(6, \"span\", 5);\n          i0.ɵɵelementEnd()()();\n          i0.ɵɵconditionalCreate(7, MatChip_Conditional_7_Template, 2, 0, \"span\", 6);\n        }\n        if (rf & 2) {\n          i0.ɵɵadvance(2);\n          i0.ɵɵproperty(\"isInteractive\", false);\n          i0.ɵɵadvance();\n          i0.ɵɵconditional(ctx.leadingIcon ? 3 : -1);\n          i0.ɵɵadvance(4);\n          i0.ɵɵconditional(ctx._hasTrailingIcon() ? 7 : -1);\n        }\n      },\n      dependencies: [MatChipAction],\n      styles: [\".mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}@media(forced-colors: active){.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{forced-color-adjust:none}}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mat-chip-outline-width, 1px);border-radius:var(--mat-chip-container-shape-radius, 8px);box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mat-chip-outline-color, var(--mat-sys-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mat-chip-focus-outline-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mat-chip-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mat-chip-flat-selected-outline-width, 0)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--secondary{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--secondary{color:var(--mat-chip-with-trailing-icon-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--secondary{color:var(--mat-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mat-chip-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-chip-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-chip-label-text-size, var(--mat-sys-label-large-size));font-weight:var(--mat-chip-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mat-chip-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mat-chip-label-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mat-chip-selected-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mat-chip-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mat-chip-with-avatar-avatar-size, 24px);height:var(--mat-chip-with-avatar-avatar-size, 24px);font-size:var(--mat-chip-with-avatar-avatar-size, 24px)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__graphic{padding-left:0}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mat-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mat-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@media(forced-colors: active){.mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity, 1)*var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity, 1)*var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mat-mdc-standard-chip{border-radius:var(--mat-chip-container-shape-radius, 8px);height:var(--mat-chip-container-height, 32px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mat-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mat-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mat-chip-elevated-selected-container-color, var(--mat-sys-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mat-chip-flat-disabled-selected-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}@media(forced-colors: active){.mat-mdc-standard-chip{outline:solid 1px}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mat-chip-with-avatar-avatar-shape-radius, 24px);width:var(--mat-chip-with-icon-icon-size, 18px);height:var(--mat-chip-with-icon-icon-size, 18px);font-size:var(--mat-chip-with-icon-icon-size, 18px)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mat-chip-with-icon-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mat-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-highlighted{--mat-chip-with-icon-icon-color: var(--mat-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container));--mat-chip-elevated-container-color: var(--mat-chip-elevated-selected-container-color, var(--mat-sys-secondary-container));--mat-chip-label-text-color: var(--mat-chip-selected-label-text-color, var(--mat-sys-on-secondary-container));--mat-chip-outline-width: var(--mat-chip-flat-selected-outline-width, 0)}.mat-mdc-chip-focus-overlay{background:var(--mat-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mat-chip-hover-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mat-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-hover-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mat-chip-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mat-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mat-chip-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mat-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mat-chip-with-avatar-disabled-avatar-opacity, 0.38)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mat-chip-with-icon-disabled-icon-opacity, 0.38)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity, 1)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-edit,.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity, 1)}.mat-mdc-chip-edit:focus,.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity, 1)}.mat-mdc-chip-edit::after,.mat-mdc-chip-remove::after{background-color:var(--mat-chip-trailing-action-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-edit:hover::after,.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-edit:focus::after,.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background-color:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mat-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-edit::before,.mat-mdc-chip-remove::before{margin:calc(var(--mat-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-edit::after,.mat-mdc-chip-remove::after{content:\\\"\\\";display:block;opacity:0;position:absolute;top:-3px;bottom:-3px;left:5px;right:5px;border-radius:50%;box-sizing:border-box;padding:12px;margin:-12px;background-clip:content-box}.mat-mdc-chip-edit .mat-icon,.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}@media(forced-colors: active){.mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}}.mat-mdc-chip-action:focus .mat-focus-indicator::before{content:\\\"\\\"}.mdc-evolution-chip__icon,.mat-mdc-chip-edit .mat-icon,.mat-mdc-chip-remove .mat-icon{min-height:fit-content}img.mdc-evolution-chip__icon{min-height:0}\\n\"],\n      encapsulation: 2,\n      changeDetection: 0\n    });\n  }\n  return MatChip;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Event object emitted by MatChipOption when selected or deselected. */\nclass MatChipSelectionChange {\n  source;\n  selected;\n  isUserInput;\n  constructor(/** Reference to the chip that emitted the event. */\n  source, /** Whether the chip that emitted the event is selected. */\n  selected, /** Whether the selection change was a result of a user interaction. */\n  isUserInput = false) {\n    this.source = source;\n    this.selected = selected;\n    this.isUserInput = isUserInput;\n  }\n}\n/**\n * An extension of the MatChip component that supports chip selection. Used with MatChipListbox.\n *\n * Unlike other chips, the user can focus on disabled chip options inside a MatChipListbox. The\n * user cannot click disabled chips.\n */\nlet MatChipOption = /*#__PURE__*/(() => {\n  class MatChipOption extends MatChip {\n    /** Default chip options. */\n    _defaultOptions = inject(MAT_CHIPS_DEFAULT_OPTIONS, {\n      optional: true\n    });\n    /** Whether the chip list is selectable. */\n    chipListSelectable = true;\n    /** Whether the chip list is in multi-selection mode. */\n    _chipListMultiple = false;\n    /** Whether the chip list hides single-selection indicator. */\n    _chipListHideSingleSelectionIndicator = this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n    /**\n     * Whether or not the chip is selectable.\n     *\n     * When a chip is not selectable, changes to its selected state are always\n     * ignored. By default an option chip is selectable, and it becomes\n     * non-selectable if its parent chip list is not selectable.\n     */\n    get selectable() {\n      return this._selectable && this.chipListSelectable;\n    }\n    set selectable(value) {\n      this._selectable = value;\n      this._changeDetectorRef.markForCheck();\n    }\n    _selectable = true;\n    /** Whether the chip is selected. */\n    get selected() {\n      return this._selected;\n    }\n    set selected(value) {\n      this._setSelectedState(value, false, true);\n    }\n    _selected = false;\n    /**\n     * The ARIA selected applied to the chip. Conforms to WAI ARIA best practices for listbox\n     * interaction patterns.\n     *\n     * From [WAI ARIA Listbox authoring practices guide](\n     * https://www.w3.org/WAI/ARIA/apg/patterns/listbox/):\n     *  \"If any options are selected, each selected option has either aria-selected or aria-checked\n     *  set to true. All options that are selectable but not selected have either aria-selected or\n     *  aria-checked set to false.\"\n     *\n     * Set `aria-selected=\"false\"` on not-selected listbox options that are selectable to fix\n     * VoiceOver reading every option as \"selected\" (#25736).\n     */\n    get ariaSelected() {\n      return this.selectable ? this.selected.toString() : null;\n    }\n    /** The unstyled chip selector for this component. */\n    basicChipAttrName = 'mat-basic-chip-option';\n    /** Emitted when the chip is selected or deselected. */\n    selectionChange = new EventEmitter();\n    ngOnInit() {\n      super.ngOnInit();\n      this.role = 'presentation';\n    }\n    /** Selects the chip. */\n    select() {\n      this._setSelectedState(true, false, true);\n    }\n    /** Deselects the chip. */\n    deselect() {\n      this._setSelectedState(false, false, true);\n    }\n    /** Selects this chip and emits userInputSelection event */\n    selectViaInteraction() {\n      this._setSelectedState(true, true, true);\n    }\n    /** Toggles the current selected state of this chip. */\n    toggleSelected(isUserInput = false) {\n      this._setSelectedState(!this.selected, isUserInput, true);\n      return this.selected;\n    }\n    _handlePrimaryActionInteraction() {\n      if (!this.disabled) {\n        // Interacting with the primary action implies that the chip already has focus, however\n        // there's a bug in Safari where focus ends up lingering on the previous chip (see #27544).\n        // We work around it by explicitly focusing the primary action of the current chip.\n        this.focus();\n        if (this.selectable) {\n          this.toggleSelected(true);\n        }\n      }\n    }\n    _hasLeadingGraphic() {\n      if (this.leadingIcon) {\n        return true;\n      }\n      // The checkmark graphic communicates selected state for both single-select and multi-select.\n      // Include checkmark in single-select to fix a11y issue where selected state is communicated\n      // visually only using color (#25886).\n      return !this._chipListHideSingleSelectionIndicator || this._chipListMultiple;\n    }\n    _setSelectedState(isSelected, isUserInput, emitEvent) {\n      if (isSelected !== this.selected) {\n        this._selected = isSelected;\n        if (emitEvent) {\n          this.selectionChange.emit({\n            source: this,\n            isUserInput,\n            selected: this.selected\n          });\n        }\n        this._changeDetectorRef.markForCheck();\n      }\n    }\n    static ɵfac = /* @__PURE__ */(() => {\n      let ɵMatChipOption_BaseFactory;\n      return function MatChipOption_Factory(__ngFactoryType__) {\n        return (ɵMatChipOption_BaseFactory || (ɵMatChipOption_BaseFactory = i0.ɵɵgetInheritedFactory(MatChipOption)))(__ngFactoryType__ || MatChipOption);\n      };\n    })();\n    static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n      type: MatChipOption,\n      selectors: [[\"mat-basic-chip-option\"], [\"\", \"mat-basic-chip-option\", \"\"], [\"mat-chip-option\"], [\"\", \"mat-chip-option\", \"\"]],\n      hostAttrs: [1, \"mat-mdc-chip\", \"mat-mdc-chip-option\"],\n      hostVars: 37,\n      hostBindings: function MatChipOption_HostBindings(rf, ctx) {\n        if (rf & 2) {\n          i0.ɵɵdomProperty(\"id\", ctx.id);\n          i0.ɵɵattribute(\"tabindex\", null)(\"aria-label\", null)(\"aria-description\", null)(\"role\", ctx.role);\n          i0.ɵɵclassProp(\"mdc-evolution-chip\", !ctx._isBasicChip)(\"mdc-evolution-chip--filter\", !ctx._isBasicChip)(\"mdc-evolution-chip--selectable\", !ctx._isBasicChip)(\"mat-mdc-chip-selected\", ctx.selected)(\"mat-mdc-chip-multiple\", ctx._chipListMultiple)(\"mat-mdc-chip-disabled\", ctx.disabled)(\"mat-mdc-chip-with-avatar\", ctx.leadingIcon)(\"mdc-evolution-chip--disabled\", ctx.disabled)(\"mdc-evolution-chip--selected\", ctx.selected)(\"mdc-evolution-chip--selecting\", !ctx._animationsDisabled)(\"mdc-evolution-chip--with-trailing-action\", ctx._hasTrailingIcon())(\"mdc-evolution-chip--with-primary-icon\", ctx.leadingIcon)(\"mdc-evolution-chip--with-primary-graphic\", ctx._hasLeadingGraphic())(\"mdc-evolution-chip--with-avatar\", ctx.leadingIcon)(\"mat-mdc-chip-highlighted\", ctx.highlighted)(\"mat-mdc-chip-with-trailing-icon\", ctx._hasTrailingIcon());\n        }\n      },\n      inputs: {\n        selectable: [2, \"selectable\", \"selectable\", booleanAttribute],\n        selected: [2, \"selected\", \"selected\", booleanAttribute]\n      },\n      outputs: {\n        selectionChange: \"selectionChange\"\n      },\n      features: [i0.ɵɵProvidersFeature([{\n        provide: MatChip,\n        useExisting: MatChipOption\n      }, {\n        provide: MAT_CHIP,\n        useExisting: MatChipOption\n      }]), i0.ɵɵInheritDefinitionFeature],\n      ngContentSelectors: _c1,\n      decls: 8,\n      vars: 6,\n      consts: [[1, \"mat-mdc-chip-focus-overlay\"], [1, \"mdc-evolution-chip__cell\", \"mdc-evolution-chip__cell--primary\"], [\"matChipAction\", \"\", \"role\", \"option\", 3, \"_allowFocusWhenDisabled\"], [1, \"mdc-evolution-chip__graphic\", \"mat-mdc-chip-graphic\"], [1, \"mdc-evolution-chip__text-label\", \"mat-mdc-chip-action-label\"], [1, \"mat-mdc-chip-primary-focus-indicator\", \"mat-focus-indicator\"], [1, \"mdc-evolution-chip__cell\", \"mdc-evolution-chip__cell--trailing\"], [1, \"mdc-evolution-chip__checkmark\"], [\"viewBox\", \"-2 -3 30 30\", \"focusable\", \"false\", \"aria-hidden\", \"true\", 1, \"mdc-evolution-chip__checkmark-svg\"], [\"fill\", \"none\", \"stroke\", \"currentColor\", \"d\", \"M1.73,12.91 8.1,19.28 22.79,4.59\", 1, \"mdc-evolution-chip__checkmark-path\"]],\n      template: function MatChipOption_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵprojectionDef(_c0);\n          i0.ɵɵelement(0, \"span\", 0);\n          i0.ɵɵelementStart(1, \"span\", 1)(2, \"button\", 2);\n          i0.ɵɵconditionalCreate(3, MatChipOption_Conditional_3_Template, 5, 0, \"span\", 3);\n          i0.ɵɵelementStart(4, \"span\", 4);\n          i0.ɵɵprojection(5);\n          i0.ɵɵelement(6, \"span\", 5);\n          i0.ɵɵelementEnd()()();\n          i0.ɵɵconditionalCreate(7, MatChipOption_Conditional_7_Template, 2, 0, \"span\", 6);\n        }\n        if (rf & 2) {\n          i0.ɵɵadvance(2);\n          i0.ɵɵproperty(\"_allowFocusWhenDisabled\", true);\n          i0.ɵɵattribute(\"aria-description\", ctx.ariaDescription)(\"aria-label\", ctx.ariaLabel)(\"aria-selected\", ctx.ariaSelected);\n          i0.ɵɵadvance();\n          i0.ɵɵconditional(ctx._hasLeadingGraphic() ? 3 : -1);\n          i0.ɵɵadvance(4);\n          i0.ɵɵconditional(ctx._hasTrailingIcon() ? 7 : -1);\n        }\n      },\n      dependencies: [MatChipAction],\n      styles: [_c2],\n      encapsulation: 2,\n      changeDetection: 0\n    });\n  }\n  return MatChipOption;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive that makes a span editable and exposes functions to modify and retrieve the\n * element's contents.\n */\nlet MatChipEditInput = /*#__PURE__*/(() => {\n  class MatChipEditInput {\n    _elementRef = inject(ElementRef);\n    _document = inject(DOCUMENT);\n    constructor() {}\n    initialize(initialValue) {\n      this.getNativeElement().focus();\n      this.setValue(initialValue);\n    }\n    getNativeElement() {\n      return this._elementRef.nativeElement;\n    }\n    setValue(value) {\n      this.getNativeElement().textContent = value;\n      this._moveCursorToEndOfInput();\n    }\n    getValue() {\n      return this.getNativeElement().textContent || '';\n    }\n    _moveCursorToEndOfInput() {\n      const range = this._document.createRange();\n      range.selectNodeContents(this.getNativeElement());\n      range.collapse(false);\n      const sel = window.getSelection();\n      sel.removeAllRanges();\n      sel.addRange(range);\n    }\n    static ɵfac = function MatChipEditInput_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MatChipEditInput)();\n    };\n    static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n      type: MatChipEditInput,\n      selectors: [[\"span\", \"matChipEditInput\", \"\"]],\n      hostAttrs: [\"role\", \"textbox\", \"tabindex\", \"-1\", \"contenteditable\", \"true\", 1, \"mat-chip-edit-input\"]\n    });\n  }\n  return MatChipEditInput;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * An extension of the MatChip component used with MatChipGrid and\n * the matChipInputFor directive.\n */\nlet MatChipRow = /*#__PURE__*/(() => {\n  class MatChipRow extends MatChip {\n    basicChipAttrName = 'mat-basic-chip-row';\n    /**\n     * The editing action has to be triggered in a timeout. While we're waiting on it, a blur\n     * event might occur which will interrupt the editing. This flag is used to avoid interruptions\n     * while the editing action is being initialized.\n     */\n    _editStartPending = false;\n    editable = false;\n    /** Emitted when the chip is edited. */\n    edited = new EventEmitter();\n    /** The default chip edit input that is used if none is projected into this chip row. */\n    defaultEditInput;\n    /** The projected chip edit input. */\n    contentEditInput;\n    /**\n     * Set on a mousedown when the chip is already focused via mouse or keyboard.\n     *\n     * This allows us to ensure chip is already focused when deciding whether to enter the\n     * edit mode on a subsequent click. Otherwise, the chip appears focused when handling the\n     * first click event.\n     */\n    _alreadyFocused = false;\n    _isEditing = false;\n    constructor() {\n      super();\n      this.role = 'row';\n      this._onBlur.pipe(takeUntil(this.destroyed)).subscribe(() => {\n        if (this._isEditing && !this._editStartPending) {\n          this._onEditFinish();\n        }\n        this._alreadyFocused = false;\n      });\n    }\n    ngAfterViewInit() {\n      super.ngAfterViewInit();\n      // Sets _alreadyFocused (ahead of click) when chip already has focus.\n      this._ngZone.runOutsideAngular(() => {\n        this._elementRef.nativeElement.addEventListener('mousedown', () => this._alreadyFocused = this._hasFocus());\n      });\n    }\n    _hasLeadingActionIcon() {\n      // The leading action (edit) icon is hidden while editing.\n      return !this._isEditing && !!this.editIcon;\n    }\n    _hasTrailingIcon() {\n      // The trailing icon is hidden while editing.\n      return !this._isEditing && super._hasTrailingIcon();\n    }\n    /** Sends focus to the first gridcell when the user clicks anywhere inside the chip. */\n    _handleFocus() {\n      if (!this._isEditing && !this.disabled) {\n        this.focus();\n      }\n    }\n    _handleKeydown(event) {\n      if (event.keyCode === ENTER && !this.disabled) {\n        if (this._isEditing) {\n          event.preventDefault();\n          this._onEditFinish();\n        } else if (this.editable) {\n          this._startEditing(event);\n        }\n      } else if (this._isEditing) {\n        // Stop the event from reaching the chip set in order to avoid navigating.\n        event.stopPropagation();\n      } else {\n        super._handleKeydown(event);\n      }\n    }\n    _handleClick(event) {\n      if (!this.disabled && this.editable && !this._isEditing && this._alreadyFocused) {\n        // Ensure click event not picked up unintentionally by other listeners, as\n        // once editing starts, the source element is detached from DOM.\n        event.preventDefault();\n        event.stopPropagation();\n        this._startEditing(event);\n      }\n    }\n    _handleDoubleclick(event) {\n      if (!this.disabled && this.editable) {\n        this._startEditing(event);\n      }\n    }\n    _edit() {\n      // markForCheck necessary for edit input to be rendered\n      this._changeDetectorRef.markForCheck();\n      this._startEditing();\n    }\n    _startEditing(event) {\n      if (!this.primaryAction || this.removeIcon && !!event && this._getSourceAction(event.target) === this.removeIcon) {\n        return;\n      }\n      // The value depends on the DOM so we need to extract it before we flip the flag.\n      const value = this.value;\n      this._isEditing = this._editStartPending = true;\n      // Defer initializing the input until after it has been added to the DOM.\n      afterNextRender(() => {\n        this._getEditInput().initialize(value);\n        // Necessary when using edit icon to prevent edit from aborting\n        setTimeout(() => this._ngZone.run(() => this._editStartPending = false));\n      }, {\n        injector: this._injector\n      });\n    }\n    _onEditFinish() {\n      this._isEditing = this._editStartPending = false;\n      this.edited.emit({\n        chip: this,\n        value: this._getEditInput().getValue()\n      });\n      // If the edit input is still focused or focus was returned to the body after it was destroyed,\n      // return focus to the chip contents.\n      if (this._document.activeElement === this._getEditInput().getNativeElement() || this._document.activeElement === this._document.body) {\n        this.primaryAction.focus();\n      }\n    }\n    _isRippleDisabled() {\n      return super._isRippleDisabled() || this._isEditing;\n    }\n    /**\n     * Gets the projected chip edit input, or the default input if none is projected in. One of these\n     * two values is guaranteed to be defined.\n     */\n    _getEditInput() {\n      return this.contentEditInput || this.defaultEditInput;\n    }\n    static ɵfac = function MatChipRow_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MatChipRow)();\n    };\n    static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n      type: MatChipRow,\n      selectors: [[\"mat-chip-row\"], [\"\", \"mat-chip-row\", \"\"], [\"mat-basic-chip-row\"], [\"\", \"mat-basic-chip-row\", \"\"]],\n      contentQueries: function MatChipRow_ContentQueries(rf, ctx, dirIndex) {\n        if (rf & 1) {\n          i0.ɵɵcontentQuery(dirIndex, MatChipEditInput, 5);\n        }\n        if (rf & 2) {\n          let _t;\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentEditInput = _t.first);\n        }\n      },\n      viewQuery: function MatChipRow_Query(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵviewQuery(MatChipEditInput, 5);\n        }\n        if (rf & 2) {\n          let _t;\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.defaultEditInput = _t.first);\n        }\n      },\n      hostAttrs: [1, \"mat-mdc-chip\", \"mat-mdc-chip-row\", \"mdc-evolution-chip\"],\n      hostVars: 29,\n      hostBindings: function MatChipRow_HostBindings(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵlistener(\"focus\", function MatChipRow_focus_HostBindingHandler() {\n            return ctx._handleFocus();\n          })(\"click\", function MatChipRow_click_HostBindingHandler($event) {\n            return ctx._handleClick($event);\n          })(\"dblclick\", function MatChipRow_dblclick_HostBindingHandler($event) {\n            return ctx._handleDoubleclick($event);\n          });\n        }\n        if (rf & 2) {\n          i0.ɵɵdomProperty(\"id\", ctx.id);\n          i0.ɵɵattribute(\"tabindex\", ctx.disabled ? null : -1)(\"aria-label\", null)(\"aria-description\", null)(\"role\", ctx.role);\n          i0.ɵɵclassProp(\"mat-mdc-chip-with-avatar\", ctx.leadingIcon)(\"mat-mdc-chip-disabled\", ctx.disabled)(\"mat-mdc-chip-editing\", ctx._isEditing)(\"mat-mdc-chip-editable\", ctx.editable)(\"mdc-evolution-chip--disabled\", ctx.disabled)(\"mdc-evolution-chip--with-leading-action\", ctx._hasLeadingActionIcon())(\"mdc-evolution-chip--with-trailing-action\", ctx._hasTrailingIcon())(\"mdc-evolution-chip--with-primary-graphic\", ctx.leadingIcon)(\"mdc-evolution-chip--with-primary-icon\", ctx.leadingIcon)(\"mdc-evolution-chip--with-avatar\", ctx.leadingIcon)(\"mat-mdc-chip-highlighted\", ctx.highlighted)(\"mat-mdc-chip-with-trailing-icon\", ctx._hasTrailingIcon());\n        }\n      },\n      inputs: {\n        editable: \"editable\"\n      },\n      outputs: {\n        edited: \"edited\"\n      },\n      features: [i0.ɵɵProvidersFeature([{\n        provide: MatChip,\n        useExisting: MatChipRow\n      }, {\n        provide: MAT_CHIP,\n        useExisting: MatChipRow\n      }]), i0.ɵɵInheritDefinitionFeature],\n      ngContentSelectors: _c4,\n      decls: 9,\n      vars: 8,\n      consts: [[1, \"mat-mdc-chip-focus-overlay\"], [\"role\", \"gridcell\", 1, \"mdc-evolution-chip__cell\", \"mdc-evolution-chip__cell--leading\"], [\"role\", \"gridcell\", \"matChipAction\", \"\", 1, \"mdc-evolution-chip__cell\", \"mdc-evolution-chip__cell--primary\", 3, \"disabled\"], [1, \"mdc-evolution-chip__graphic\", \"mat-mdc-chip-graphic\"], [1, \"mdc-evolution-chip__text-label\", \"mat-mdc-chip-action-label\"], [\"aria-hidden\", \"true\", 1, \"mat-mdc-chip-primary-focus-indicator\", \"mat-focus-indicator\"], [\"role\", \"gridcell\", 1, \"mdc-evolution-chip__cell\", \"mdc-evolution-chip__cell--trailing\"], [\"matChipEditInput\", \"\"]],\n      template: function MatChipRow_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵprojectionDef(_c3);\n          i0.ɵɵconditionalCreate(0, MatChipRow_Conditional_0_Template, 1, 0, \"span\", 0);\n          i0.ɵɵconditionalCreate(1, MatChipRow_Conditional_1_Template, 2, 0, \"span\", 1);\n          i0.ɵɵelementStart(2, \"span\", 2);\n          i0.ɵɵconditionalCreate(3, MatChipRow_Conditional_3_Template, 2, 0, \"span\", 3);\n          i0.ɵɵelementStart(4, \"span\", 4);\n          i0.ɵɵconditionalCreate(5, MatChipRow_Conditional_5_Template, 2, 1)(6, MatChipRow_Conditional_6_Template, 1, 0);\n          i0.ɵɵelement(7, \"span\", 5);\n          i0.ɵɵelementEnd()();\n          i0.ɵɵconditionalCreate(8, MatChipRow_Conditional_8_Template, 2, 0, \"span\", 6);\n        }\n        if (rf & 2) {\n          i0.ɵɵconditional(!ctx._isEditing ? 0 : -1);\n          i0.ɵɵadvance();\n          i0.ɵɵconditional(ctx._hasLeadingActionIcon() ? 1 : -1);\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"disabled\", ctx.disabled);\n          i0.ɵɵattribute(\"aria-description\", ctx.ariaDescription)(\"aria-label\", ctx.ariaLabel);\n          i0.ɵɵadvance();\n          i0.ɵɵconditional(ctx.leadingIcon ? 3 : -1);\n          i0.ɵɵadvance(2);\n          i0.ɵɵconditional(ctx._isEditing ? 5 : 6);\n          i0.ɵɵadvance(3);\n          i0.ɵɵconditional(ctx._hasTrailingIcon() ? 8 : -1);\n        }\n      },\n      dependencies: [MatChipAction, MatChipEditInput],\n      styles: [_c2],\n      encapsulation: 2,\n      changeDetection: 0\n    });\n  }\n  return MatChipRow;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Basic container component for the MatChip component.\n *\n * Extended by MatChipListbox and MatChipGrid for different interaction patterns.\n */\nlet MatChipSet = /*#__PURE__*/(() => {\n  class MatChipSet {\n    _elementRef = inject(ElementRef);\n    _changeDetectorRef = inject(ChangeDetectorRef);\n    _dir = inject(Directionality, {\n      optional: true\n    });\n    /** Index of the last destroyed chip that had focus. */\n    _lastDestroyedFocusedChipIndex = null;\n    /** Used to manage focus within the chip list. */\n    _keyManager;\n    /** Subject that emits when the component has been destroyed. */\n    _destroyed = new Subject();\n    /** Role to use if it hasn't been overwritten by the user. */\n    _defaultRole = 'presentation';\n    /** Combined stream of all of the child chips' focus events. */\n    get chipFocusChanges() {\n      return this._getChipStream(chip => chip._onFocus);\n    }\n    /** Combined stream of all of the child chips' destroy events. */\n    get chipDestroyedChanges() {\n      return this._getChipStream(chip => chip.destroyed);\n    }\n    /** Combined stream of all of the child chips' remove events. */\n    get chipRemovedChanges() {\n      return this._getChipStream(chip => chip.removed);\n    }\n    /** Whether the chip set is disabled. */\n    get disabled() {\n      return this._disabled;\n    }\n    set disabled(value) {\n      this._disabled = value;\n      this._syncChipsState();\n    }\n    _disabled = false;\n    /** Whether the chip list contains chips or not. */\n    get empty() {\n      return !this._chips || this._chips.length === 0;\n    }\n    /** The ARIA role applied to the chip set. */\n    get role() {\n      if (this._explicitRole) {\n        return this._explicitRole;\n      }\n      return this.empty ? null : this._defaultRole;\n    }\n    /** Tabindex of the chip set. */\n    tabIndex = 0;\n    set role(value) {\n      this._explicitRole = value;\n    }\n    _explicitRole = null;\n    /** Whether any of the chips inside of this chip-set has focus. */\n    get focused() {\n      return this._hasFocusedChip();\n    }\n    /** The chips that are part of this chip set. */\n    _chips;\n    /** Flat list of all the actions contained within the chips. */\n    _chipActions = new QueryList();\n    constructor() {}\n    ngAfterViewInit() {\n      this._setUpFocusManagement();\n      this._trackChipSetChanges();\n      this._trackDestroyedFocusedChip();\n    }\n    ngOnDestroy() {\n      this._keyManager?.destroy();\n      this._chipActions.destroy();\n      this._destroyed.next();\n      this._destroyed.complete();\n    }\n    /** Checks whether any of the chips is focused. */\n    _hasFocusedChip() {\n      return this._chips && this._chips.some(chip => chip._hasFocus());\n    }\n    /** Syncs the chip-set's state with the individual chips. */\n    _syncChipsState() {\n      this._chips?.forEach(chip => {\n        chip._chipListDisabled = this._disabled;\n        chip._changeDetectorRef.markForCheck();\n      });\n    }\n    /** Dummy method for subclasses to override. Base chip set cannot be focused. */\n    focus() {}\n    /** Handles keyboard events on the chip set. */\n    _handleKeydown(event) {\n      if (this._originatesFromChip(event)) {\n        this._keyManager.onKeydown(event);\n      }\n    }\n    /**\n     * Utility to ensure all indexes are valid.\n     *\n     * @param index The index to be checked.\n     * @returns True if the index is valid for our list of chips.\n     */\n    _isValidIndex(index) {\n      return index >= 0 && index < this._chips.length;\n    }\n    /**\n     * Removes the `tabindex` from the chip set and resets it back afterwards, allowing the\n     * user to tab out of it. This prevents the set from capturing focus and redirecting\n     * it back to the first chip, creating a focus trap, if it user tries to tab away.\n     */\n    _allowFocusEscape() {\n      const previous = this._elementRef.nativeElement.tabIndex;\n      if (previous !== -1) {\n        // Set the tabindex directly on the element, instead of going through\n        // the data binding, because we aren't guaranteed that change detection\n        // will run quickly enough to allow focus to escape.\n        this._elementRef.nativeElement.tabIndex = -1;\n        // Note that this needs to be a `setTimeout`, because a `Promise.resolve`\n        // doesn't allow enough time for the focus to escape.\n        setTimeout(() => this._elementRef.nativeElement.tabIndex = previous);\n      }\n    }\n    /**\n     * Gets a stream of events from all the chips within the set.\n     * The stream will automatically incorporate any newly-added chips.\n     */\n    _getChipStream(mappingFunction) {\n      return this._chips.changes.pipe(startWith(null), switchMap(() => merge(...this._chips.map(mappingFunction))));\n    }\n    /** Checks whether an event comes from inside a chip element. */\n    _originatesFromChip(event) {\n      let currentElement = event.target;\n      while (currentElement && currentElement !== this._elementRef.nativeElement) {\n        if (currentElement.classList.contains('mat-mdc-chip')) {\n          return true;\n        }\n        currentElement = currentElement.parentElement;\n      }\n      return false;\n    }\n    /** Sets up the chip set's focus management logic. */\n    _setUpFocusManagement() {\n      // Create a flat `QueryList` containing the actions of all of the chips.\n      // This allows us to navigate both within the chip and move to the next/previous\n      // one using the existing `ListKeyManager`.\n      this._chips.changes.pipe(startWith(this._chips)).subscribe(chips => {\n        const actions = [];\n        chips.forEach(chip => chip._getActions().forEach(action => actions.push(action)));\n        this._chipActions.reset(actions);\n        this._chipActions.notifyOnChanges();\n      });\n      this._keyManager = new FocusKeyManager(this._chipActions).withVerticalOrientation().withHorizontalOrientation(this._dir ? this._dir.value : 'ltr').withHomeAndEnd().skipPredicate(action => this._skipPredicate(action));\n      // Keep the manager active index in sync so that navigation picks\n      // up from the current chip if the user clicks into the list directly.\n      this.chipFocusChanges.pipe(takeUntil(this._destroyed)).subscribe(({\n        chip\n      }) => {\n        const action = chip._getSourceAction(document.activeElement);\n        if (action) {\n          this._keyManager.updateActiveItem(action);\n        }\n      });\n      this._dir?.change.pipe(takeUntil(this._destroyed)).subscribe(direction => this._keyManager.withHorizontalOrientation(direction));\n    }\n    /**\n     * Determines if key manager should avoid putting a given chip action in the tab index. Skip\n     * non-interactive and disabled actions since the user can't do anything with them.\n     */\n    _skipPredicate(action) {\n      // Skip chips that the user cannot interact with. `mat-chip-set` does not permit focusing disabled\n      // chips.\n      return !action.isInteractive || action.disabled;\n    }\n    /** Listens to changes in the chip set and syncs up the state of the individual chips. */\n    _trackChipSetChanges() {\n      this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n        if (this.disabled) {\n          // Since this happens after the content has been\n          // checked, we need to defer it to the next tick.\n          Promise.resolve().then(() => this._syncChipsState());\n        }\n        this._redirectDestroyedChipFocus();\n      });\n    }\n    /** Starts tracking the destroyed chips in order to capture the focused one. */\n    _trackDestroyedFocusedChip() {\n      this.chipDestroyedChanges.pipe(takeUntil(this._destroyed)).subscribe(event => {\n        // If the focused chip is destroyed, save its index so that we can move focus to the next\n        // chip. We only save the index here, rather than move the focus immediately, because we want\n        // to wait until the chip is removed from the chip list before focusing the next one. This\n        // allows us to keep focus on the same index if the chip gets swapped out.\n        const chipArray = this._chips.toArray();\n        const chipIndex = chipArray.indexOf(event.chip);\n        const hasFocus = event.chip._hasFocus();\n        const wasLastFocused = event.chip._hadFocusOnRemove && this._keyManager.activeItem && event.chip._getActions().includes(this._keyManager.activeItem);\n        // Note that depending on the timing, the chip might've already lost focus by the\n        // time we check this. We need the `wasLastFocused` as a fallback to detect such cases.\n        // In `wasLastFocused` we also need to ensure that the chip actually had focus when it was\n        // deleted so that we don't steal away the user's focus after they've moved on from the chip.\n        const shouldMoveFocus = hasFocus || wasLastFocused;\n        if (this._isValidIndex(chipIndex) && shouldMoveFocus) {\n          this._lastDestroyedFocusedChipIndex = chipIndex;\n        }\n      });\n    }\n    /**\n     * Finds the next appropriate chip to move focus to,\n     * if the currently-focused chip is destroyed.\n     */\n    _redirectDestroyedChipFocus() {\n      if (this._lastDestroyedFocusedChipIndex == null) {\n        return;\n      }\n      if (this._chips.length) {\n        const newIndex = Math.min(this._lastDestroyedFocusedChipIndex, this._chips.length - 1);\n        const chipToFocus = this._chips.toArray()[newIndex];\n        if (chipToFocus.disabled) {\n          // If we're down to one disabled chip, move focus back to the set.\n          if (this._chips.length === 1) {\n            this.focus();\n          } else {\n            this._keyManager.setPreviousItemActive();\n          }\n        } else {\n          chipToFocus.focus();\n        }\n      } else {\n        this.focus();\n      }\n      this._lastDestroyedFocusedChipIndex = null;\n    }\n    static ɵfac = function MatChipSet_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MatChipSet)();\n    };\n    static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n      type: MatChipSet,\n      selectors: [[\"mat-chip-set\"]],\n      contentQueries: function MatChipSet_ContentQueries(rf, ctx, dirIndex) {\n        if (rf & 1) {\n          i0.ɵɵcontentQuery(dirIndex, MatChip, 5);\n        }\n        if (rf & 2) {\n          let _t;\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._chips = _t);\n        }\n      },\n      hostAttrs: [1, \"mat-mdc-chip-set\", \"mdc-evolution-chip-set\"],\n      hostVars: 1,\n      hostBindings: function MatChipSet_HostBindings(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵlistener(\"keydown\", function MatChipSet_keydown_HostBindingHandler($event) {\n            return ctx._handleKeydown($event);\n          });\n        }\n        if (rf & 2) {\n          i0.ɵɵattribute(\"role\", ctx.role);\n        }\n      },\n      inputs: {\n        disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n        role: \"role\",\n        tabIndex: [2, \"tabIndex\", \"tabIndex\", value => value == null ? 0 : numberAttribute(value)]\n      },\n      ngContentSelectors: _c5,\n      decls: 2,\n      vars: 0,\n      consts: [[\"role\", \"presentation\", 1, \"mdc-evolution-chip-set__chips\"]],\n      template: function MatChipSet_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵprojectionDef();\n          i0.ɵɵdomElementStart(0, \"div\", 0);\n          i0.ɵɵprojection(1);\n          i0.ɵɵdomElementEnd();\n        }\n      },\n      styles: [\".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::-moz-placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::-webkit-input-placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input:-ms-input-placeholder{opacity:1}.mat-mdc-chip-set+input.mat-mdc-chip-input{margin-left:0;margin-right:0}\\n\"],\n      encapsulation: 2,\n      changeDetection: 0\n    });\n  }\n  return MatChipSet;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Change event object that is emitted when the chip listbox value has changed. */\nclass MatChipListboxChange {\n  source;\n  value;\n  constructor(/** Chip listbox that emitted the event. */\n  source, /** Value of the chip listbox when the event was emitted. */\n  value) {\n    this.source = source;\n    this.value = value;\n  }\n}\n/**\n * Provider Expression that allows mat-chip-listbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nconst MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: /*#__PURE__*/forwardRef(() => MatChipListbox),\n  multi: true\n};\n/**\n * An extension of the MatChipSet component that supports chip selection.\n * Used with MatChipOption chips.\n */\nlet MatChipListbox = /*#__PURE__*/(() => {\n  class MatChipListbox extends MatChipSet {\n    /**\n     * Function when touched. Set as part of ControlValueAccessor implementation.\n     * @docs-private\n     */\n    _onTouched = () => {};\n    /**\n     * Function when changed. Set as part of ControlValueAccessor implementation.\n     * @docs-private\n     */\n    _onChange = () => {};\n    // TODO: MDC uses `grid` here\n    _defaultRole = 'listbox';\n    /** Default chip options. */\n    _defaultOptions = inject(MAT_CHIPS_DEFAULT_OPTIONS, {\n      optional: true\n    });\n    /** Whether the user should be allowed to select multiple chips. */\n    get multiple() {\n      return this._multiple;\n    }\n    set multiple(value) {\n      this._multiple = value;\n      this._syncListboxProperties();\n    }\n    _multiple = false;\n    /** The array of selected chips inside the chip listbox. */\n    get selected() {\n      const selectedChips = this._chips.toArray().filter(chip => chip.selected);\n      return this.multiple ? selectedChips : selectedChips[0];\n    }\n    /** Orientation of the chip list. */\n    ariaOrientation = 'horizontal';\n    /**\n     * Whether or not this chip listbox is selectable.\n     *\n     * When a chip listbox is not selectable, the selected states for all\n     * the chips inside the chip listbox are always ignored.\n     */\n    get selectable() {\n      return this._selectable;\n    }\n    set selectable(value) {\n      this._selectable = value;\n      this._syncListboxProperties();\n    }\n    _selectable = true;\n    /**\n     * A function to compare the option values with the selected values. The first argument\n     * is a value from an option. The second is a value from the selection. A boolean\n     * should be returned.\n     */\n    compareWith = (o1, o2) => o1 === o2;\n    /** Whether this chip listbox is required. */\n    required = false;\n    /** Whether checkmark indicator for single-selection options is hidden. */\n    get hideSingleSelectionIndicator() {\n      return this._hideSingleSelectionIndicator;\n    }\n    set hideSingleSelectionIndicator(value) {\n      this._hideSingleSelectionIndicator = value;\n      this._syncListboxProperties();\n    }\n    _hideSingleSelectionIndicator = this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n    /** Combined stream of all of the child chips' selection change events. */\n    get chipSelectionChanges() {\n      return this._getChipStream(chip => chip.selectionChange);\n    }\n    /** Combined stream of all of the child chips' blur events. */\n    get chipBlurChanges() {\n      return this._getChipStream(chip => chip._onBlur);\n    }\n    /** The value of the listbox, which is the combined value of the selected chips. */\n    get value() {\n      return this._value;\n    }\n    set value(value) {\n      if (this._chips && this._chips.length) {\n        this._setSelectionByValue(value, false);\n      }\n      this._value = value;\n    }\n    _value;\n    /** Event emitted when the selected chip listbox value has been changed by the user. */\n    change = new EventEmitter();\n    _chips = undefined;\n    ngAfterContentInit() {\n      this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n        if (this.value !== undefined) {\n          Promise.resolve().then(() => {\n            this._setSelectionByValue(this.value, false);\n          });\n        }\n        // Update listbox selectable/multiple properties on chips\n        this._syncListboxProperties();\n      });\n      this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => this._blur());\n      this.chipSelectionChanges.pipe(takeUntil(this._destroyed)).subscribe(event => {\n        if (!this.multiple) {\n          this._chips.forEach(chip => {\n            if (chip !== event.source) {\n              chip._setSelectedState(false, false, false);\n            }\n          });\n        }\n        if (event.isUserInput) {\n          this._propagateChanges();\n        }\n      });\n    }\n    /**\n     * Focuses the first selected chip in this chip listbox, or the first non-disabled chip when there\n     * are no selected chips.\n     */\n    focus() {\n      if (this.disabled) {\n        return;\n      }\n      const firstSelectedChip = this._getFirstSelectedChip();\n      if (firstSelectedChip && !firstSelectedChip.disabled) {\n        firstSelectedChip.focus();\n      } else if (this._chips.length > 0) {\n        this._keyManager.setFirstItemActive();\n      } else {\n        this._elementRef.nativeElement.focus();\n      }\n    }\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @docs-private\n     */\n    writeValue(value) {\n      if (value != null) {\n        this.value = value;\n      } else {\n        this.value = undefined;\n      }\n    }\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @docs-private\n     */\n    registerOnChange(fn) {\n      this._onChange = fn;\n    }\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @docs-private\n     */\n    registerOnTouched(fn) {\n      this._onTouched = fn;\n    }\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @docs-private\n     */\n    setDisabledState(isDisabled) {\n      this.disabled = isDisabled;\n    }\n    /** Selects all chips with value. */\n    _setSelectionByValue(value, isUserInput = true) {\n      this._clearSelection();\n      if (Array.isArray(value)) {\n        value.forEach(currentValue => this._selectValue(currentValue, isUserInput));\n      } else {\n        this._selectValue(value, isUserInput);\n      }\n    }\n    /** When blurred, marks the field as touched when focus moved outside the chip listbox. */\n    _blur() {\n      if (!this.disabled) {\n        // Wait to see if focus moves to an individual chip.\n        setTimeout(() => {\n          if (!this.focused) {\n            this._markAsTouched();\n          }\n        });\n      }\n    }\n    _keydown(event) {\n      if (event.keyCode === TAB) {\n        super._allowFocusEscape();\n      }\n    }\n    /** Marks the field as touched */\n    _markAsTouched() {\n      this._onTouched();\n      this._changeDetectorRef.markForCheck();\n    }\n    /** Emits change event to set the model value. */\n    _propagateChanges() {\n      let valueToEmit = null;\n      if (Array.isArray(this.selected)) {\n        valueToEmit = this.selected.map(chip => chip.value);\n      } else {\n        valueToEmit = this.selected ? this.selected.value : undefined;\n      }\n      this._value = valueToEmit;\n      this.change.emit(new MatChipListboxChange(this, valueToEmit));\n      this._onChange(valueToEmit);\n      this._changeDetectorRef.markForCheck();\n    }\n    /**\n     * Deselects every chip in the listbox.\n     * @param skip Chip that should not be deselected.\n     */\n    _clearSelection(skip) {\n      this._chips.forEach(chip => {\n        if (chip !== skip) {\n          chip.deselect();\n        }\n      });\n    }\n    /**\n     * Finds and selects the chip based on its value.\n     * @returns Chip that has the corresponding value.\n     */\n    _selectValue(value, isUserInput) {\n      const correspondingChip = this._chips.find(chip => {\n        return chip.value != null && this.compareWith(chip.value, value);\n      });\n      if (correspondingChip) {\n        isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n      }\n      return correspondingChip;\n    }\n    /** Syncs the chip-listbox selection state with the individual chips. */\n    _syncListboxProperties() {\n      if (this._chips) {\n        // Defer setting the value in order to avoid the \"Expression\n        // has changed after it was checked\" errors from Angular.\n        Promise.resolve().then(() => {\n          this._chips.forEach(chip => {\n            chip._chipListMultiple = this.multiple;\n            chip.chipListSelectable = this._selectable;\n            chip._chipListHideSingleSelectionIndicator = this.hideSingleSelectionIndicator;\n            chip._changeDetectorRef.markForCheck();\n          });\n        });\n      }\n    }\n    /** Returns the first selected chip in this listbox, or undefined if no chips are selected. */\n    _getFirstSelectedChip() {\n      if (Array.isArray(this.selected)) {\n        return this.selected.length ? this.selected[0] : undefined;\n      } else {\n        return this.selected;\n      }\n    }\n    /**\n     * Determines if key manager should avoid putting a given chip action in the tab index. Skip\n     * non-interactive actions since the user can't do anything with them.\n     */\n    _skipPredicate(action) {\n      // Override the skip predicate in the base class to avoid skipping disabled chips. Allow\n      // disabled chip options to receive focus to align with WAI ARIA recommendation. Normally WAI\n      // ARIA's instructions are to exclude disabled items from the tab order, but it makes a few\n      // exceptions for compound widgets.\n      //\n      // From [Developing a Keyboard Interface](\n      // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n      //   \"For the following composite widget elements, keep them focusable when disabled: Options in a\n      //   Listbox...\"\n      return !action.isInteractive;\n    }\n    static ɵfac = /* @__PURE__ */(() => {\n      let ɵMatChipListbox_BaseFactory;\n      return function MatChipListbox_Factory(__ngFactoryType__) {\n        return (ɵMatChipListbox_BaseFactory || (ɵMatChipListbox_BaseFactory = i0.ɵɵgetInheritedFactory(MatChipListbox)))(__ngFactoryType__ || MatChipListbox);\n      };\n    })();\n    static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n      type: MatChipListbox,\n      selectors: [[\"mat-chip-listbox\"]],\n      contentQueries: function MatChipListbox_ContentQueries(rf, ctx, dirIndex) {\n        if (rf & 1) {\n          i0.ɵɵcontentQuery(dirIndex, MatChipOption, 5);\n        }\n        if (rf & 2) {\n          let _t;\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._chips = _t);\n        }\n      },\n      hostAttrs: [1, \"mdc-evolution-chip-set\", \"mat-mdc-chip-listbox\"],\n      hostVars: 10,\n      hostBindings: function MatChipListbox_HostBindings(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵlistener(\"focus\", function MatChipListbox_focus_HostBindingHandler() {\n            return ctx.focus();\n          })(\"blur\", function MatChipListbox_blur_HostBindingHandler() {\n            return ctx._blur();\n          })(\"keydown\", function MatChipListbox_keydown_HostBindingHandler($event) {\n            return ctx._keydown($event);\n          });\n        }\n        if (rf & 2) {\n          i0.ɵɵdomProperty(\"tabIndex\", ctx.disabled || ctx.empty ? -1 : ctx.tabIndex);\n          i0.ɵɵattribute(\"role\", ctx.role)(\"aria-required\", ctx.role ? ctx.required : null)(\"aria-disabled\", ctx.disabled.toString())(\"aria-multiselectable\", ctx.multiple)(\"aria-orientation\", ctx.ariaOrientation);\n          i0.ɵɵclassProp(\"mat-mdc-chip-list-disabled\", ctx.disabled)(\"mat-mdc-chip-list-required\", ctx.required);\n        }\n      },\n      inputs: {\n        multiple: [2, \"multiple\", \"multiple\", booleanAttribute],\n        ariaOrientation: [0, \"aria-orientation\", \"ariaOrientation\"],\n        selectable: [2, \"selectable\", \"selectable\", booleanAttribute],\n        compareWith: \"compareWith\",\n        required: [2, \"required\", \"required\", booleanAttribute],\n        hideSingleSelectionIndicator: [2, \"hideSingleSelectionIndicator\", \"hideSingleSelectionIndicator\", booleanAttribute],\n        value: \"value\"\n      },\n      outputs: {\n        change: \"change\"\n      },\n      features: [i0.ɵɵProvidersFeature([MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR]), i0.ɵɵInheritDefinitionFeature],\n      ngContentSelectors: _c5,\n      decls: 2,\n      vars: 0,\n      consts: [[\"role\", \"presentation\", 1, \"mdc-evolution-chip-set__chips\"]],\n      template: function MatChipListbox_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵprojectionDef();\n          i0.ɵɵdomElementStart(0, \"div\", 0);\n          i0.ɵɵprojection(1);\n          i0.ɵɵdomElementEnd();\n        }\n      },\n      styles: [_c6],\n      encapsulation: 2,\n      changeDetection: 0\n    });\n  }\n  return MatChipListbox;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Change event object that is emitted when the chip grid value has changed. */\nclass MatChipGridChange {\n  source;\n  value;\n  constructor(/** Chip grid that emitted the event. */\n  source, /** Value of the chip grid when the event was emitted. */\n  value) {\n    this.source = source;\n    this.value = value;\n  }\n}\n/**\n * An extension of the MatChipSet component used with MatChipRow chips and\n * the matChipInputFor directive.\n */\nlet MatChipGrid = /*#__PURE__*/(() => {\n  class MatChipGrid extends MatChipSet {\n    ngControl = inject(NgControl, {\n      optional: true,\n      self: true\n    });\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    controlType = 'mat-chip-grid';\n    /** The chip input to add more chips */\n    _chipInput;\n    _defaultRole = 'grid';\n    _errorStateTracker;\n    /**\n     * List of element ids to propagate to the chipInput's aria-describedby attribute.\n     */\n    _ariaDescribedbyIds = [];\n    /**\n     * Function when touched. Set as part of ControlValueAccessor implementation.\n     * @docs-private\n     */\n    _onTouched = () => {};\n    /**\n     * Function when changed. Set as part of ControlValueAccessor implementation.\n     * @docs-private\n     */\n    _onChange = () => {};\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    get disabled() {\n      return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n    }\n    set disabled(value) {\n      this._disabled = value;\n      this._syncChipsState();\n      this.stateChanges.next();\n    }\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    get id() {\n      return this._chipInput.id;\n    }\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    get empty() {\n      return (!this._chipInput || this._chipInput.empty) && (!this._chips || this._chips.length === 0);\n    }\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    get placeholder() {\n      return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n    }\n    set placeholder(value) {\n      this._placeholder = value;\n      this.stateChanges.next();\n    }\n    _placeholder;\n    /** Whether any chips or the matChipInput inside of this chip-grid has focus. */\n    get focused() {\n      return this._chipInput.focused || this._hasFocusedChip();\n    }\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    get required() {\n      return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n    }\n    set required(value) {\n      this._required = value;\n      this.stateChanges.next();\n    }\n    _required;\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    get shouldLabelFloat() {\n      return !this.empty || this.focused;\n    }\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    get value() {\n      return this._value;\n    }\n    set value(value) {\n      this._value = value;\n    }\n    _value = [];\n    /** An object used to control when error messages are shown. */\n    get errorStateMatcher() {\n      return this._errorStateTracker.matcher;\n    }\n    set errorStateMatcher(value) {\n      this._errorStateTracker.matcher = value;\n    }\n    /** Combined stream of all of the child chips' blur events. */\n    get chipBlurChanges() {\n      return this._getChipStream(chip => chip._onBlur);\n    }\n    /** Emits when the chip grid value has been changed by the user. */\n    change = new EventEmitter();\n    /**\n     * Emits whenever the raw value of the chip-grid changes. This is here primarily\n     * to facilitate the two-way binding for the `value` input.\n     * @docs-private\n     */\n    valueChange = new EventEmitter();\n    _chips = undefined;\n    /**\n     * Emits whenever the component state changes and should cause the parent\n     * form-field to update. Implemented as part of `MatFormFieldControl`.\n     * @docs-private\n     */\n    stateChanges = new Subject();\n    /** Whether the chip grid is in an error state. */\n    get errorState() {\n      return this._errorStateTracker.errorState;\n    }\n    set errorState(value) {\n      this._errorStateTracker.errorState = value;\n    }\n    constructor() {\n      super();\n      const parentForm = inject(NgForm, {\n        optional: true\n      });\n      const parentFormGroup = inject(FormGroupDirective, {\n        optional: true\n      });\n      const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n      if (this.ngControl) {\n        this.ngControl.valueAccessor = this;\n      }\n      this._errorStateTracker = new _ErrorStateTracker(defaultErrorStateMatcher, this.ngControl, parentFormGroup, parentForm, this.stateChanges);\n    }\n    ngAfterContentInit() {\n      this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => {\n        this._blur();\n        this.stateChanges.next();\n      });\n      merge(this.chipFocusChanges, this._chips.changes).pipe(takeUntil(this._destroyed)).subscribe(() => this.stateChanges.next());\n    }\n    ngAfterViewInit() {\n      super.ngAfterViewInit();\n      if (!this._chipInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('mat-chip-grid must be used in combination with matChipInputFor.');\n      }\n    }\n    ngDoCheck() {\n      if (this.ngControl) {\n        // We need to re-evaluate this on every change detection cycle, because there are some\n        // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n        // that whatever logic is in here has to be super lean or we risk destroying the performance.\n        this.updateErrorState();\n      }\n    }\n    ngOnDestroy() {\n      super.ngOnDestroy();\n      this.stateChanges.complete();\n    }\n    /** Associates an HTML input element with this chip grid. */\n    registerInput(inputElement) {\n      this._chipInput = inputElement;\n      this._chipInput.setDescribedByIds(this._ariaDescribedbyIds);\n    }\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    onContainerClick(event) {\n      if (!this.disabled && !this._originatesFromChip(event)) {\n        this.focus();\n      }\n    }\n    /**\n     * Focuses the first chip in this chip grid, or the associated input when there\n     * are no eligible chips.\n     */\n    focus() {\n      if (this.disabled || this._chipInput.focused) {\n        return;\n      }\n      if (!this._chips.length || this._chips.first.disabled) {\n        // Delay until the next tick, because this can cause a \"changed after checked\"\n        // error if the input does something on focus (e.g. opens an autocomplete).\n        Promise.resolve().then(() => this._chipInput.focus());\n      } else {\n        const activeItem = this._keyManager.activeItem;\n        if (activeItem) {\n          activeItem.focus();\n        } else {\n          this._keyManager.setFirstItemActive();\n        }\n      }\n      this.stateChanges.next();\n    }\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    get describedByIds() {\n      return this._chipInput?.describedByIds || [];\n    }\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    setDescribedByIds(ids) {\n      // We must keep this up to date to handle the case where ids are set\n      // before the chip input is registered.\n      this._ariaDescribedbyIds = ids;\n      this._chipInput?.setDescribedByIds(ids);\n    }\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @docs-private\n     */\n    writeValue(value) {\n      // The user is responsible for creating the child chips, so we just store the value.\n      this._value = value;\n    }\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @docs-private\n     */\n    registerOnChange(fn) {\n      this._onChange = fn;\n    }\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @docs-private\n     */\n    registerOnTouched(fn) {\n      this._onTouched = fn;\n    }\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @docs-private\n     */\n    setDisabledState(isDisabled) {\n      this.disabled = isDisabled;\n      this.stateChanges.next();\n    }\n    /** Refreshes the error state of the chip grid. */\n    updateErrorState() {\n      this._errorStateTracker.updateErrorState();\n    }\n    /** When blurred, mark the field as touched when focus moved outside the chip grid. */\n    _blur() {\n      if (!this.disabled) {\n        // Check whether the focus moved to chip input.\n        // If the focus is not moved to chip input, mark the field as touched. If the focus moved\n        // to chip input, do nothing.\n        // Timeout is needed to wait for the focus() event trigger on chip input.\n        setTimeout(() => {\n          if (!this.focused) {\n            this._propagateChanges();\n            this._markAsTouched();\n          }\n        });\n      }\n    }\n    /**\n     * Removes the `tabindex` from the chip grid and resets it back afterwards, allowing the\n     * user to tab out of it. This prevents the grid from capturing focus and redirecting\n     * it back to the first chip, creating a focus trap, if it user tries to tab away.\n     */\n    _allowFocusEscape() {\n      if (!this._chipInput.focused) {\n        super._allowFocusEscape();\n      }\n    }\n    /** Handles custom keyboard events. */\n    _handleKeydown(event) {\n      const keyCode = event.keyCode;\n      const activeItem = this._keyManager.activeItem;\n      if (keyCode === TAB) {\n        if (this._chipInput.focused && hasModifierKey(event, 'shiftKey') && this._chips.length && !this._chips.last.disabled) {\n          event.preventDefault();\n          if (activeItem) {\n            this._keyManager.setActiveItem(activeItem);\n          } else {\n            this._focusLastChip();\n          }\n        } else {\n          // Use the super method here since it doesn't check for the input\n          // focused state. This allows focus to escape if there's only one\n          // disabled chip left in the list.\n          super._allowFocusEscape();\n        }\n      } else if (!this._chipInput.focused) {\n        // The up and down arrows are supposed to navigate between the individual rows in the grid.\n        // We do this by filtering the actions down to the ones that have the same `_isPrimary`\n        // flag as the active action and moving focus between them ourseles instead of delegating\n        // to the key manager. For more information, see #29359 and:\n        // https://www.w3.org/WAI/ARIA/apg/patterns/grid/examples/layout-grids/#ex2_label\n        if ((keyCode === UP_ARROW || keyCode === DOWN_ARROW) && activeItem) {\n          const eligibleActions = this._chipActions.filter(action => action._isPrimary === activeItem._isPrimary && !this._skipPredicate(action));\n          const currentIndex = eligibleActions.indexOf(activeItem);\n          const delta = event.keyCode === UP_ARROW ? -1 : 1;\n          event.preventDefault();\n          if (currentIndex > -1 && this._isValidIndex(currentIndex + delta)) {\n            this._keyManager.setActiveItem(eligibleActions[currentIndex + delta]);\n          }\n        } else {\n          super._handleKeydown(event);\n        }\n      }\n      this.stateChanges.next();\n    }\n    _focusLastChip() {\n      if (this._chips.length) {\n        this._chips.last.focus();\n      }\n    }\n    /** Emits change event to set the model value. */\n    _propagateChanges() {\n      const valueToEmit = this._chips.length ? this._chips.toArray().map(chip => chip.value) : [];\n      this._value = valueToEmit;\n      this.change.emit(new MatChipGridChange(this, valueToEmit));\n      this.valueChange.emit(valueToEmit);\n      this._onChange(valueToEmit);\n      this._changeDetectorRef.markForCheck();\n    }\n    /** Mark the field as touched */\n    _markAsTouched() {\n      this._onTouched();\n      this._changeDetectorRef.markForCheck();\n      this.stateChanges.next();\n    }\n    static ɵfac = function MatChipGrid_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MatChipGrid)();\n    };\n    static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n      type: MatChipGrid,\n      selectors: [[\"mat-chip-grid\"]],\n      contentQueries: function MatChipGrid_ContentQueries(rf, ctx, dirIndex) {\n        if (rf & 1) {\n          i0.ɵɵcontentQuery(dirIndex, MatChipRow, 5);\n        }\n        if (rf & 2) {\n          let _t;\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._chips = _t);\n        }\n      },\n      hostAttrs: [1, \"mat-mdc-chip-set\", \"mat-mdc-chip-grid\", \"mdc-evolution-chip-set\"],\n      hostVars: 10,\n      hostBindings: function MatChipGrid_HostBindings(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵlistener(\"focus\", function MatChipGrid_focus_HostBindingHandler() {\n            return ctx.focus();\n          })(\"blur\", function MatChipGrid_blur_HostBindingHandler() {\n            return ctx._blur();\n          });\n        }\n        if (rf & 2) {\n          i0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx.disabled || ctx._chips && ctx._chips.length === 0 ? -1 : ctx.tabIndex)(\"aria-disabled\", ctx.disabled.toString())(\"aria-invalid\", ctx.errorState);\n          i0.ɵɵclassProp(\"mat-mdc-chip-list-disabled\", ctx.disabled)(\"mat-mdc-chip-list-invalid\", ctx.errorState)(\"mat-mdc-chip-list-required\", ctx.required);\n        }\n      },\n      inputs: {\n        disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n        placeholder: \"placeholder\",\n        required: [2, \"required\", \"required\", booleanAttribute],\n        value: \"value\",\n        errorStateMatcher: \"errorStateMatcher\"\n      },\n      outputs: {\n        change: \"change\",\n        valueChange: \"valueChange\"\n      },\n      features: [i0.ɵɵProvidersFeature([{\n        provide: MatFormFieldControl,\n        useExisting: MatChipGrid\n      }]), i0.ɵɵInheritDefinitionFeature],\n      ngContentSelectors: _c5,\n      decls: 2,\n      vars: 0,\n      consts: [[\"role\", \"presentation\", 1, \"mdc-evolution-chip-set__chips\"]],\n      template: function MatChipGrid_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵprojectionDef();\n          i0.ɵɵdomElementStart(0, \"div\", 0);\n          i0.ɵɵprojection(1);\n          i0.ɵɵdomElementEnd();\n        }\n      },\n      styles: [_c6],\n      encapsulation: 2,\n      changeDetection: 0\n    });\n  }\n  return MatChipGrid;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Directive that adds chip-specific behaviors to an input element inside `<mat-form-field>`.\n * May be placed inside or outside of a `<mat-chip-grid>`.\n */\nlet MatChipInput = /*#__PURE__*/(() => {\n  class MatChipInput {\n    _elementRef = inject(ElementRef);\n    /** Whether the control is focused. */\n    focused = false;\n    /** Register input for chip list */\n    get chipGrid() {\n      return this._chipGrid;\n    }\n    set chipGrid(value) {\n      if (value) {\n        this._chipGrid = value;\n        this._chipGrid.registerInput(this);\n      }\n    }\n    _chipGrid;\n    /**\n     * Whether or not the chipEnd event will be emitted when the input is blurred.\n     */\n    addOnBlur = false;\n    /**\n     * The list of key codes that will trigger a chipEnd event.\n     *\n     * Defaults to `[ENTER]`.\n     */\n    separatorKeyCodes;\n    /** Emitted when a chip is to be added. */\n    chipEnd = new EventEmitter();\n    /** The input's placeholder text. */\n    placeholder = '';\n    /** Unique id for the input. */\n    id = inject(_IdGenerator).getId('mat-mdc-chip-list-input-');\n    /** Whether the input is disabled. */\n    get disabled() {\n      return this._disabled || this._chipGrid && this._chipGrid.disabled;\n    }\n    set disabled(value) {\n      this._disabled = value;\n    }\n    _disabled = false;\n    /** Whether the input is readonly. */\n    readonly = false;\n    /** Whether the input should remain interactive when it is disabled. */\n    disabledInteractive;\n    /** Whether the input is empty. */\n    get empty() {\n      return !this.inputElement.value;\n    }\n    /** The native input element to which this directive is attached. */\n    inputElement;\n    constructor() {\n      const defaultOptions = inject(MAT_CHIPS_DEFAULT_OPTIONS);\n      const formField = inject(MAT_FORM_FIELD, {\n        optional: true\n      });\n      this.inputElement = this._elementRef.nativeElement;\n      this.separatorKeyCodes = defaultOptions.separatorKeyCodes;\n      this.disabledInteractive = defaultOptions.inputDisabledInteractive ?? false;\n      if (formField) {\n        this.inputElement.classList.add('mat-mdc-form-field-input-control');\n      }\n    }\n    ngOnChanges() {\n      this._chipGrid.stateChanges.next();\n    }\n    ngOnDestroy() {\n      this.chipEnd.complete();\n    }\n    /** Utility method to make host definition/tests more clear. */\n    _keydown(event) {\n      if (this.empty && event.keyCode === BACKSPACE) {\n        // Ignore events where the user is holding down backspace\n        // so that we don't accidentally remove too many chips.\n        if (!event.repeat) {\n          this._chipGrid._focusLastChip();\n        }\n        event.preventDefault();\n      } else {\n        this._emitChipEnd(event);\n      }\n    }\n    /** Checks to see if the blur should emit the (chipEnd) event. */\n    _blur() {\n      if (this.addOnBlur) {\n        this._emitChipEnd();\n      }\n      this.focused = false;\n      // Blur the chip list if it is not focused\n      if (!this._chipGrid.focused) {\n        this._chipGrid._blur();\n      }\n      this._chipGrid.stateChanges.next();\n    }\n    _focus() {\n      this.focused = true;\n      this._chipGrid.stateChanges.next();\n    }\n    /** Checks to see if the (chipEnd) event needs to be emitted. */\n    _emitChipEnd(event) {\n      if (!event || this._isSeparatorKey(event) && !event.repeat) {\n        this.chipEnd.emit({\n          input: this.inputElement,\n          value: this.inputElement.value,\n          chipInput: this\n        });\n        event?.preventDefault();\n      }\n    }\n    _onInput() {\n      // Let chip list know whenever the value changes.\n      this._chipGrid.stateChanges.next();\n    }\n    /** Focuses the input. */\n    focus() {\n      this.inputElement.focus();\n    }\n    /** Clears the input */\n    clear() {\n      this.inputElement.value = '';\n    }\n    /**\n     * Implemented as part of MatChipTextControl.\n     * @docs-private\n     */\n    get describedByIds() {\n      const element = this._elementRef.nativeElement;\n      const existingDescribedBy = element.getAttribute('aria-describedby');\n      return existingDescribedBy?.split(' ') || [];\n    }\n    setDescribedByIds(ids) {\n      const element = this._elementRef.nativeElement;\n      // Set the value directly in the DOM since this binding\n      // is prone to \"changed after checked\" errors.\n      if (ids.length) {\n        element.setAttribute('aria-describedby', ids.join(' '));\n      } else {\n        element.removeAttribute('aria-describedby');\n      }\n    }\n    /** Checks whether a keycode is one of the configured separators. */\n    _isSeparatorKey(event) {\n      return !hasModifierKey(event) && new Set(this.separatorKeyCodes).has(event.keyCode);\n    }\n    /** Gets the value to set on the `readonly` attribute. */\n    _getReadonlyAttribute() {\n      return this.readonly || this.disabled && this.disabledInteractive ? 'true' : null;\n    }\n    static ɵfac = function MatChipInput_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MatChipInput)();\n    };\n    static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n      type: MatChipInput,\n      selectors: [[\"input\", \"matChipInputFor\", \"\"]],\n      hostAttrs: [1, \"mat-mdc-chip-input\", \"mat-mdc-input-element\", \"mdc-text-field__input\", \"mat-input-element\"],\n      hostVars: 8,\n      hostBindings: function MatChipInput_HostBindings(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵlistener(\"keydown\", function MatChipInput_keydown_HostBindingHandler($event) {\n            return ctx._keydown($event);\n          })(\"blur\", function MatChipInput_blur_HostBindingHandler() {\n            return ctx._blur();\n          })(\"focus\", function MatChipInput_focus_HostBindingHandler() {\n            return ctx._focus();\n          })(\"input\", function MatChipInput_input_HostBindingHandler() {\n            return ctx._onInput();\n          });\n        }\n        if (rf & 2) {\n          i0.ɵɵdomProperty(\"id\", ctx.id);\n          i0.ɵɵattribute(\"disabled\", ctx.disabled && !ctx.disabledInteractive ? \"\" : null)(\"placeholder\", ctx.placeholder || null)(\"aria-invalid\", ctx._chipGrid && ctx._chipGrid.ngControl ? ctx._chipGrid.ngControl.invalid : null)(\"aria-required\", ctx._chipGrid && ctx._chipGrid.required || null)(\"aria-disabled\", ctx.disabled && ctx.disabledInteractive ? \"true\" : null)(\"readonly\", ctx._getReadonlyAttribute())(\"required\", ctx._chipGrid && ctx._chipGrid.required || null);\n        }\n      },\n      inputs: {\n        chipGrid: [0, \"matChipInputFor\", \"chipGrid\"],\n        addOnBlur: [2, \"matChipInputAddOnBlur\", \"addOnBlur\", booleanAttribute],\n        separatorKeyCodes: [0, \"matChipInputSeparatorKeyCodes\", \"separatorKeyCodes\"],\n        placeholder: \"placeholder\",\n        id: \"id\",\n        disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n        readonly: [2, \"readonly\", \"readonly\", booleanAttribute],\n        disabledInteractive: [2, \"matChipInputDisabledInteractive\", \"disabledInteractive\", booleanAttribute]\n      },\n      outputs: {\n        chipEnd: \"matChipInputTokenEnd\"\n      },\n      exportAs: [\"matChipInput\", \"matChipInputFor\"],\n      features: [i0.ɵɵNgOnChangesFeature]\n    });\n  }\n  return MatChipInput;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst CHIP_DECLARATIONS = [MatChip, MatChipAvatar, MatChipEdit, MatChipEditInput, MatChipGrid, MatChipInput, MatChipListbox, MatChipOption, MatChipRemove, MatChipRow, MatChipSet, MatChipTrailingIcon];\nlet MatChipsModule = /*#__PURE__*/(() => {\n  class MatChipsModule {\n    static ɵfac = function MatChipsModule_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MatChipsModule)();\n    };\n    static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n      type: MatChipsModule\n    });\n    static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n      providers: [ErrorStateMatcher, {\n        provide: MAT_CHIPS_DEFAULT_OPTIONS,\n        useValue: {\n          separatorKeyCodes: [ENTER]\n        }\n      }],\n      imports: [MatCommonModule, MatRippleModule, MatCommonModule]\n    });\n  }\n  return MatChipsModule;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nexport { MAT_CHIP, MAT_CHIPS_DEFAULT_OPTIONS, MAT_CHIP_AVATAR, MAT_CHIP_EDIT, MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR, MAT_CHIP_REMOVE, MAT_CHIP_TRAILING_ICON, MatChip, MatChipAvatar, MatChipEdit, MatChipEditInput, MatChipGrid, MatChipGridChange, MatChipInput, MatChipListbox, MatChipListboxChange, MatChipOption, MatChipRemove, MatChipRow, MatChipSelectionChange, MatChipSet, MatChipTrailingIcon, MatChipsModule };\n","import {Component, inject, Input, OnInit} from '@angular/core';\r\nimport {DatePipe} from \"@angular/common\";\r\nimport {LucideArrowRight, LucideCalendar, LucideClock4} from \"@lucide/angular\";\r\nimport {RouterLink} from \"@angular/router\";\r\nimport {blogCategories} from '../../../../core/data/blog-categories';\r\nimport {BlogService} from '../../services/blog.service';\r\n\r\n@Component({\r\n  selector: 'app-featured-article',\r\n    imports: [\r\n        DatePipe,\r\n        LucideArrowRight,\r\n        LucideCalendar,\r\n        LucideClock4,\r\n        RouterLink\r\n    ],\r\n  templateUrl: './featured-article.component.html',\r\n  styleUrl: './featured-article.component.sass'\r\n})\r\nexport class FeaturedArticleComponent implements OnInit {\r\n@Input() featuredArticle: any;\r\ncategories= blogCategories;\r\narticleCategorieLabel : string | undefined;\r\nprivate blogService = inject(BlogService);\r\n\r\nngOnInit() {\r\n  this.articleCategorieLabel  = this.blogService.getArticleCategoryLabel(this.featuredArticle);\r\n}\r\n\r\n}\r\n","<article class=\"latest-article\">\r\n  <a\r\n    class=\"article-link-overlay\"\r\n    [routerLink]=\"['/blog', featuredArticle.slug]\"\r\n    aria-label=\"Lire l'article\">\r\n  </a>\r\n  <div class=\"article-image\">\r\n\r\n    <img\r\n      src=\"assets/img/blog/cover/{{featuredArticle.coverImage}}\"\r\n      alt=\"{{featuredArticle.title}}\"\r\n      loading=\"eager\">\r\n    <span class=\"article-category-absolute\">\r\n          {{articleCategorieLabel}}\r\n        </span>\r\n  </div>\r\n\r\n  <div class=\"article-content\">\r\n    <div class=\"article-meta\">\r\n        <span class=\"article-category\">\r\n          {{articleCategorieLabel}}\r\n        </span>\r\n      <span class=\"article-reading-time\">\r\n            <svg lucideClock4 class=\"icon\"></svg>\r\n        {{ featuredArticle.readingTime }} min\r\n        </span>\r\n\r\n      <time datetime=\"2025-01-12\" class=\"article-date\">\r\n        <svg lucideCalendar class=\"icon\"></svg>\r\n        {{featuredArticle.publishedAt | date: 'dd MMMM yyyy'}}\r\n      </time>\r\n    </div>\r\n\r\n    <h2 class=\"article-title\">\r\n        {{featuredArticle.title}}\r\n    </h2>\r\n\r\n    <p class=\"article-short-description\">\r\n      {{featuredArticle.excerpt}}\r\n    </p>\r\n\r\n    <a\r\n      routerLink=\"/blog/{{featuredArticle.slug}}\"\r\n      class=\"read-more-btn\">\r\n      Lire l'article\r\n      <svg lucideArrowRight class=\"icon\"></svg>\r\n    </a>\r\n\r\n  </div>\r\n\r\n</article>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-featured-article-skeleton',\r\n  imports: [],\r\n  templateUrl: './featured-article-skeleton.component.html',\r\n  styleUrl: './featured-article-skeleton.component.sass'\r\n})\r\nexport class FeaturedArticleSkeletonComponent {\r\n\r\n}\r\n","<div class=\"featured-skeleton skeleton\">\r\n  <div class=\"image\"></div>\r\n\r\n  <div class=\"content\">\r\n    <div class=\"badge\"></div>\r\n\r\n    <div class=\"title\"></div>\r\n    <div class=\"title short\"></div>\r\n\r\n    <div class=\"text\"></div>\r\n    <div class=\"text\"></div>\r\n    <div class=\"text short\"></div>\r\n\r\n    <div class=\"meta\"></div>\r\n  </div>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-article-card-skeleton',\r\n  imports: [],\r\n  templateUrl: './article-card-skeleton.component.html',\r\n  styleUrl: './article-card-skeleton.component.sass'\r\n})\r\nexport class ArticleCardSkeletonComponent {\r\n\r\n}\r\n","\r\n<div class=\"article-card-skeleton skeleton\">\r\n  <div class=\"image\"></div>\r\n\r\n  <div class=\"content\">\r\n\r\n    <div class=\"title\"></div>\r\n\r\n    <div class=\"text\"></div>\r\n    <div class=\"text\"></div>\r\n\r\n    <div class=\"meta\"></div>\r\n\r\n  </div>\r\n</div>\r\n","import {Component, inject, OnInit} from '@angular/core';\r\nimport {LucideArrowRight} from '@lucide/angular';\r\nimport {MatChipsModule} from '@angular/material/chips';\r\nimport {ReactiveFormsModule} from '@angular/forms';\r\n\r\n\r\nimport {ArticleCardComponent} from '../../components/blog-article/article-card.component';\r\nimport {FeaturedArticleComponent} from '../../components/featured-article/featured-article.component';\r\nimport {NewsletterComponent} from '../../components/newsletter/newsletter.component';\r\nimport {ProjectCtaComponent} from '../../components/project-cta/project-cta.component';\r\nimport {BlogCategories} from '../../../../core/interfaces/blogArticleCategory.type';\r\nimport {BlogService} from '../../services/blog.service';\r\nimport {blogCategories} from '../../../../core/data/blog-categories';\r\nimport {\r\n  FeaturedArticleSkeletonComponent\r\n} from '../../components/featured-article-skeleton/featured-article-skeleton.component';\r\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\r\nimport {AsyncPipe} from '@angular/common';\r\nimport {ArticleCardSkeletonComponent} from '../../components/article-card-skeleton/article-card-skeleton.component';\r\nimport {BlogArticle} from '../../../../core/interfaces/blogArticle.interface';\r\n\r\n\r\n@Component({\r\n  selector: 'app-blog',\r\n  imports: [\r\n    MatChipsModule,\r\n    ReactiveFormsModule,\r\n    ArticleCardComponent,\r\n    FeaturedArticleComponent,\r\n    NewsletterComponent,\r\n    ProjectCtaComponent,\r\n    FeaturedArticleSkeletonComponent,\r\n    ArticleCardSkeletonComponent,\r\n    AsyncPipe\r\n\r\n  ],\r\n  templateUrl: './blog.component.html',\r\n  styleUrl: './blog.component.sass'\r\n})\r\nexport class BlogComponent implements OnInit{\r\n\r\n\r\n  private readonly blogService = inject(BlogService);\r\n\r\n  categories: BlogCategories[] = blogCategories;\r\n\r\n  selectedCategory = 'all';\r\n  featuredArticle !: BlogArticle | undefined;\r\n\r\n  private selectedCategorySubject =\r\n    new BehaviorSubject<string>('all');\r\n\r\n  readonly articles$ =\r\n    this.blogService.getAllArticles();\r\n\r\n  readonly filteredArticles$ = combineLatest([\r\n    this.articles$,\r\n    this.selectedCategorySubject\r\n  ]).pipe(\r\n    map(([articles, category]) => {\r\n\r\n      if (category === 'all') {\r\n        return articles;\r\n      }\r\n      console.log(articles)\r\n      return articles.filter(\r\n        article =>\r\n          article.category === category\r\n      );\r\n    })\r\n  );\r\n\r\n  ngOnInit(): void {\r\n    this.findFeatured();\r\n  }\r\n\r\n  selectCategory(category: string): void {\r\n\r\n    this.selectedCategory = category;\r\n\r\n    this.selectedCategorySubject.next(category);\r\n  }\r\n\r\n  findFeatured(){\r\n     this.articles$.subscribe(articles => {\r\n       this.featuredArticle = articles.find(article => article.featured);\r\n    })\r\n  }\r\n}\r\n","<div class=\"blog-page\" >\r\n  <section class=\"blog-hero\">\r\n    <!-- Background shapes -->\r\n    <div class=\"hero-glow\">\r\n      <div class=\"hero-glow__gradient\"></div>\r\n    </div>\r\n\r\n    <div class=\"hero-content\">\r\n      <div class=\"hero-badge\">\r\n        <span>Blog</span>\r\n        <span class=\"dot\">•</span>\r\n        <span>Développement Web</span>\r\n        <span class=\"dot\">•</span>\r\n        <span>SEO</span>\r\n        <span class=\"dot\">•</span>\r\n        <span>Businness</span>\r\n      </div>\r\n      <h1 class=\"hero-title \">\r\n        Conseils <strong class=\"highlight\">Web & SEO</strong>\r\n      </h1>\r\n\r\n      <p class=\"hero-subtitle\">\r\n        Des guides pratiques et des stratégies concrètes pour aider les entrepreneurs, artisans et PME à développer leur\r\n        présence en ligne et générer plus de revenus.\r\n      </p>\r\n    </div>\r\n\r\n  </section>\r\n\r\n  <section class=\"featured-article\">\r\n    <h2>Articles à la une</h2>\r\n\r\n    @if (featuredArticle) {\r\n\r\n      <app-featured-article [featuredArticle]=\"featuredArticle\"></app-featured-article>\r\n    } @else {\r\n      <app-featured-article-skeleton></app-featured-article-skeleton>\r\n\r\n    }\r\n\r\n\r\n  </section>\r\n  <section class=\"latest-posts\">\r\n    <h2>Derniers articles</h2>\r\n    @if (filteredArticles$ | async; as articles) {\r\n      <div class=\"categories-filter\">\r\n        @for (category of categories; track category.id) {\r\n          <button\r\n            class=\"filter-chip\"\r\n            [class.active]=\"selectedCategory === category.filter\"\r\n            (click)=\"selectCategory(category.filter)\"\r\n          >\r\n            {{ category.label }}\r\n          </button>\r\n        }\r\n      </div>\r\n      <div class=\"list-articles\">\r\n        @if (articles.length > 0) {\r\n\r\n          @for (article of articles; track article.id) {\r\n            <app-article-card [article]=\"article\"></app-article-card>\r\n          }\r\n\r\n        } @else {\r\n          @for (item of [1, 2, 3, 4, 5, 6]; track item) {\r\n            <app-article-card-skeleton></app-article-card-skeleton>\r\n          }\r\n        }\r\n      </div>\r\n\r\n    }\r\n\r\n  </section>\r\n  <app-newsletter></app-newsletter>\r\n\r\n  <app-project-cta></app-project-cta>\r\n\r\n</div>\r\n"],"mappings":"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","names":["MAT_CHIPS_DEFAULT_OPTIONS","InjectionToken","MatChipsModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","ErrorStateMatcher","MAT_CHIPS_DEFAULT_OPTIONS","MatCommonModule","MatRippleModule","FeaturedArticleComponent","featuredArticle","categories","blogCategories","articleCategorieLabel","blogService","inject","BlogService","ngOnInit","getArticleCategoryLabel","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpureFunction1","_c0","slug","ɵɵinterpolate1","coverImage","ɵɵsanitizeUrl","ɵɵinterpolate","title","ɵɵtextInterpolate1","readingTime","ɵɵpipeBind2","publishedAt","excerpt","LucideArrowRight","LucideCalendar","LucideClock4","RouterLink","DatePipe","styles","FeaturedArticleSkeletonComponent","selectors","decls","vars","consts","template","rf","ctx","ɵɵdomElementStart","ɵɵdomElement","ɵɵdomElementEnd","ArticleCardSkeletonComponent","selectors","decls","vars","consts","template","rf","ctx","ɵɵdomElementStart","ɵɵdomElement","ɵɵdomElementEnd","ɵɵelement","ɵɵproperty","ctx_r0","featuredArticle","ɵɵelementStart","ɵɵlistener","category_r3","ɵɵrestoreView","_r2","$implicit","ɵɵnextContext","ɵɵresetView","selectCategory","filter","ɵɵtext","ɵɵelementEnd","ɵɵclassProp","selectedCategory","ɵɵadvance","ɵɵtextInterpolate1","label","article_r4","ɵɵrepeaterCreate","BlogComponent_Conditional_34_Conditional_4_For_1_Template","_forTrack0","ɵɵrepeater","articles_r5","BlogComponent_Conditional_34_Conditional_5_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵpureFunction0","_c0","BlogComponent_Conditional_34_For_2_Template","ɵɵconditionalCreate","BlogComponent_Conditional_34_Conditional_4_Template","BlogComponent_Conditional_34_Conditional_5_Template","categories","ɵɵconditional","ctx","length","BlogComponent","blogService","inject","BlogService","blogCategories","selectedCategorySubject","BehaviorSubject","articles$","getAllArticles","filteredArticles$","combineLatest","pipe","map","articles","category","console","log","article","ngOnInit","findFeatured","next","subscribe","find","featured","selectors","decls","vars","consts","template","rf","BlogComponent_Conditional_29_Template","BlogComponent_Conditional_30_Template","BlogComponent_Conditional_34_Template","tmp_1_0","ɵɵpipeBind1","MatChipsModule","ReactiveFormsModule","ArticleCardComponent","FeaturedArticleComponent","NewsletterComponent","ProjectCtaComponent","FeaturedArticleSkeletonComponent","ArticleCardSkeletonComponent","AsyncPipe","styles"],"x_google_ignoreList":[0]}