{"version":3,"file":"default-src_app_modules_shared_guards_permission-level_guard_ts-src_app_modules_shared_guards-d1ffaa.4f55908a57fffb9f.js","mappings":"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","names":["PermissionLevelGuardFactory","permissionToCheck","AnyPermissionLevelGuardFactory","permissionsToCheck","router","_angular_core__WEBPACK_IMPORTED_MODULE_3__","_angular_router__WEBPACK_IMPORTED_MODULE_4__","_app_services_user_service__WEBPACK_IMPORTED_MODULE_0__","getCashedUserData","pipe","rxjs_operators__WEBPACK_IMPORTED_MODULE_5__","user","_shared_functions_check_permission_level_function__WEBPACK_IMPORTED_MODULE_2__","permissionLevel","noPermissionUrlTree","parseUrl","_shared_constants_app_routes_const__WEBPACK_IMPORTED_MODULE_1__","length","queryParams","join","ViewCloseGuard","canDeactivate","factory","nextId","_MatBadgeBase","mixinDisabled","BADGE_CONTENT_CLASS","MatBadge","constructor","_ngZone","_elementRef","_ariaDescriber","_renderer","_animationMode","super","this","_color","_overlap","position","size","_id","_isInitialized","color","value","_setColor","overlap","val","coerceBooleanProperty","content","_content","newContent","_updateRenderedContent","description","_description","newDescription","_updateHostAriaDescription","hidden","_hidden","isAbove","indexOf","isAfter","getBadgeElement","_badgeElement","ngOnInit","_clearExistingBadges","_createBadgeElement","ngOnDestroy","destroyNode","removeDescription","nativeElement","badgeElement","createElement","activeClass","setAttribute","classList","add","appendChild","requestAnimationFrame","runOutsideAngular","newContentNormalized","trim","textContent","describe","colorPalette","remove","badges","querySelectorAll","Array","from","ɵfac","i0","i1","ANIMATION_MODULE_TYPE","ɵdir","selectors","MatBadgeModule","ɵmod","ɵinj","A11yModule","MatCommonModule","nextId$1","CDK_ACCORDION","InjectionToken","CdkAccordion","_stateChanges","Subject","_openCloseAllActions","id","_multi","multi","openAll","next","closeAll","ngOnChanges","changes","complete","provide","useExisting","CdkAccordionItem","accordion","_changeDetectorRef","_expansionDispatcher","_openCloseAllSubscription","Subscription","closed","EventEmitter","opened","destroyed","expandedChange","_expanded","_disabled","_removeUniqueSelectionListener","listen","accordionId","expanded","_subscribeToOpenCloseAllActions","emit","notify","markForCheck","disabled","unsubscribe","toggle","close","open","subscribe","useValue","undefined","CdkAccordionModule","MAT_ACCORDION","EXPANSION_PANEL_ANIMATION_TIMING","matExpansionAnimations","indicatorRotate","trigger","state","style","transform","transition","animate","bodyExpansion","height","visibility","MAT_EXPANSION_PANEL","MatExpansionPanelContent","_template","_expansionPanel","uniqueId","MAT_EXPANSION_PANEL_DEFAULT_OPTIONS","MatExpansionPanel","_uniqueSelectionDispatcher","_viewContainerRef","_document","defaultOptions","_hideToggle","afterExpand","afterCollapse","_inputChanges","_headerId","_bodyAnimationDone","distinctUntilChanged","x","y","fromState","toState","event","hideToggle","togglePosition","_togglePosition","_hasSpacing","displayMode","_getExpandedState","ngAfterContentInit","_lazyContent","startWith","filter","_portal","take","TemplatePortal","_containsFocus","_body","focusedElement","activeElement","bodyElement","contains","DOCUMENT","ɵcmp","dirIndex","_t","ctx","_c0","ngContentSelectors","_c1","i2","styles","changeDetection","MatExpansionPanelActionRow","_MatExpansionPanelHeaderMixinBase","mixinTabIndex","MatExpansionPanelHeaderBase","MatExpansionPanelHeader","panel","_element","_focusMonitor","tabIndex","_parentChangeSubscription","accordionHideToggleChange","EMPTY","parseInt","merge","focusVia","expandedHeight","collapsedHeight","_toggle","_isExpanded","_getPanelId","_getTogglePosition","_showToggle","_getHeaderHeight","isExpanded","_keydown","keyCode","SPACE","ENTER","hasModifierKey","preventDefault","_handleHeaderKeydown","focus","origin","options","ngAfterViewInit","monitor","_handleHeaderFocus","stopMonitoring","i2$1","_c3","i3","MatExpansionPanelDescription","MatExpansionPanelTitle","MatAccordion","arguments","_ownHeaders","QueryList","show","_headers","headers","reset","header","notifyOnChanges","_keyManager","FocusKeyManager","withWrap","withHomeAndEnd","onKeydown","updateActiveItem","destroy","t","MatExpansionModule","CommonModule","PortalModule"],"sourceRoot":"webpack:///","sources":["./src/app/modules/shared/guards/permission-level.guard.ts","./src/app/modules/shared/guards/view-close.guard.ts","./node_modules/@angular/material/fesm2020/badge.mjs","./node_modules/@angular/cdk/fesm2020/accordion.mjs","./node_modules/@angular/material/fesm2020/expansion.mjs"],"sourcesContent":["import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { map } from 'rxjs/operators';\n\nimport { UserService } from '@app/services/user.service';\nimport { AppRoutes } from '@shared/constants/app-routes.const';\nimport { PermissionLevelType } from '@shared/enums/permission-level.enum';\nimport { checkPermissionLevel } from '@shared/functions/check-permission-level.function';\nimport { UserData } from '@shared/interfaces/user-data';\n\nexport const PermissionLevelGuardFactory = (permissionToCheck: PermissionLevelType): CanActivateFn => {\n return AnyPermissionLevelGuardFactory([permissionToCheck]);\n};\n\n/**\n * Allows activate if user has any permission\n * @param permissionsToCheck\n * @returns CanActivateFn\n */\nexport const AnyPermissionLevelGuardFactory = (permissionsToCheck: PermissionLevelType[]): CanActivateFn => {\n return () => {\n const router = inject(Router);\n const userService = inject(UserService);\n\n return userService.getCashedUserData().pipe(\n map((user: UserData) => {\n if (checkPermissionLevel(user.permissionLevel, permissionsToCheck, 'any')) {\n return true;\n }\n const noPermissionUrlTree = router.parseUrl(AppRoutes.NO_PERMISSION);\n if (permissionsToCheck.length <= 1) {\n noPermissionUrlTree.queryParams['permission-required'] = permissionsToCheck[0];\n } else {\n noPermissionUrlTree.queryParams['any-permission-required'] = permissionsToCheck.join(',');\n }\n return noPermissionUrlTree;\n })\n );\n };\n};\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ViewCloseGuard implements CanDeactivate {\n canDeactivate(): boolean {\n // TODO - temporary - to check\n // this.snackbarService.dismiss();\n return true;\n }\n}\n","import * as i0 from '@angular/core';\nimport { Directive, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { mixinDisabled, MatCommonModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet nextId = 0;\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {\n});\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n/** Directive to display a text badge. */\nclass MatBadge extends _MatBadgeBase {\n constructor(_ngZone, _elementRef, _ariaDescriber, _renderer, _animationMode) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._ariaDescriber = _ariaDescriber;\n this._renderer = _renderer;\n this._animationMode = _animationMode;\n this._color = 'primary';\n this._overlap = true;\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n this.position = 'above after';\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n this.size = 'medium';\n /** Unique id for the badge */\n this._id = nextId++;\n /** Whether the OnInit lifecycle hook has run yet */\n this._isInitialized = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = _elementRef.nativeElement;\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n }\n }\n /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n get color() {\n return this._color;\n }\n set color(value) {\n this._setColor(value);\n this._color = value;\n }\n /** Whether the badge should overlap its contents or not */\n get overlap() {\n return this._overlap;\n }\n set overlap(val) {\n this._overlap = coerceBooleanProperty(val);\n }\n /** The content for the badge */\n get content() {\n return this._content;\n }\n set content(newContent) {\n this._updateRenderedContent(newContent);\n }\n /** Message used to describe the decorated element via aria-describedby */\n get description() {\n return this._description;\n }\n set description(newDescription) {\n this._updateHostAriaDescription(newDescription);\n }\n /** Whether the badge is hidden. */\n get hidden() {\n return this._hidden;\n }\n set hidden(val) {\n this._hidden = coerceBooleanProperty(val);\n }\n /** Whether the badge is above the host or not */\n isAbove() {\n return this.position.indexOf('below') === -1;\n }\n /** Whether the badge is after the host or not */\n isAfter() {\n return this.position.indexOf('before') === -1;\n }\n /**\n * Gets the element into which the badge's content is being rendered. Undefined if the element\n * hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement() {\n return this._badgeElement;\n }\n ngOnInit() {\n // We may have server-side rendered badge that we need to clear.\n // We need to do this in ngOnInit because the full content of the component\n // on which the badge is attached won't necessarily be in the DOM until this point.\n this._clearExistingBadges();\n if (this.content && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n this._updateRenderedContent(this.content);\n }\n this._isInitialized = true;\n }\n ngOnDestroy() {\n // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(this._badgeElement);\n }\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n }\n /** Creates the badge element */\n _createBadgeElement() {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n // The badge is aria-hidden because we don't want it to appear in the page's navigation\n // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n badgeElement.setAttribute('aria-hidden', 'true');\n badgeElement.classList.add(BADGE_CONTENT_CLASS);\n if (this._animationMode === 'NoopAnimations') {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n this._elementRef.nativeElement.appendChild(badgeElement);\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n }\n else {\n badgeElement.classList.add(activeClass);\n }\n return badgeElement;\n }\n /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n _updateRenderedContent(newContent) {\n const newContentNormalized = `${newContent ?? ''}`.trim();\n // Don't create the badge element if the directive isn't initialized because we want to\n // append the badge element to the *end* of the host element's content for backwards\n // compatibility.\n if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n }\n if (this._badgeElement) {\n this._badgeElement.textContent = newContentNormalized;\n }\n this._content = newContentNormalized;\n }\n /** Updates the host element's aria description via AriaDescriber. */\n _updateHostAriaDescription(newDescription) {\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n if (newDescription) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n }\n this._description = newDescription;\n }\n /** Adds css theme class given the color to the component host */\n _setColor(colorPalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-badge-${this._color}`);\n if (colorPalette) {\n classList.add(`mat-badge-${colorPalette}`);\n }\n }\n /** Clears any existing badges that might be left over from server-side rendering. */\n _clearExistingBadges() {\n // Only check direct children of this host element in order to avoid deleting\n // any badges that might exist in descendant elements.\n const badges = this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);\n for (const badgeElement of Array.from(badges)) {\n if (badgeElement !== this._badgeElement) {\n badgeElement.remove();\n }\n }\n }\n}\nMatBadge.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatBadge, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.AriaDescriber }, { token: i0.Renderer2 }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatBadge.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatBadge, selector: \"[matBadge]\", inputs: { disabled: [\"matBadgeDisabled\", \"disabled\"], color: [\"matBadgeColor\", \"color\"], overlap: [\"matBadgeOverlap\", \"overlap\"], position: [\"matBadgePosition\", \"position\"], content: [\"matBadge\", \"content\"], description: [\"matBadgeDescription\", \"description\"], size: [\"matBadgeSize\", \"size\"], hidden: [\"matBadgeHidden\", \"hidden\"] }, host: { properties: { \"class.mat-badge-overlap\": \"overlap\", \"class.mat-badge-above\": \"isAbove()\", \"class.mat-badge-below\": \"!isAbove()\", \"class.mat-badge-before\": \"!isAfter()\", \"class.mat-badge-after\": \"isAfter()\", \"class.mat-badge-small\": \"size === \\\"small\\\"\", \"class.mat-badge-medium\": \"size === \\\"medium\\\"\", \"class.mat-badge-large\": \"size === \\\"large\\\"\", \"class.mat-badge-hidden\": \"hidden || !content\", \"class.mat-badge-disabled\": \"disabled\" }, classAttribute: \"mat-badge\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatBadge, decorators: [{\n type: Directive,\n args: [{\n selector: '[matBadge]',\n inputs: ['disabled: matBadgeDisabled'],\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !content',\n '[class.mat-badge-disabled]': 'disabled',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.AriaDescriber }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { color: [{\n type: Input,\n args: ['matBadgeColor']\n }], overlap: [{\n type: Input,\n args: ['matBadgeOverlap']\n }], position: [{\n type: Input,\n args: ['matBadgePosition']\n }], content: [{\n type: Input,\n args: ['matBadge']\n }], description: [{\n type: Input,\n args: ['matBadgeDescription']\n }], size: [{\n type: Input,\n args: ['matBadgeSize']\n }], hidden: [{\n type: Input,\n args: ['matBadgeHidden']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatBadgeModule {\n}\nMatBadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatBadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatBadgeModule, declarations: [MatBadge], imports: [A11yModule, MatCommonModule], exports: [MatBadge, MatCommonModule] });\nMatBadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatBadgeModule, imports: [A11yModule, MatCommonModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatBadgeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [A11yModule, MatCommonModule],\n exports: [MatBadge, MatCommonModule],\n declarations: [MatBadge],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatBadge, MatBadgeModule };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Input, EventEmitter, Optional, Inject, SkipSelf, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/collections';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each accordion. */\nlet nextId$1 = 0;\n/**\n * Injection token that can be used to reference instances of `CdkAccordion`. It serves\n * as alternative token to the actual `CdkAccordion` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_ACCORDION = new InjectionToken('CdkAccordion');\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\nclass CdkAccordion {\n constructor() {\n /** Emits when the state of the accordion changes */\n this._stateChanges = new Subject();\n /** Stream that emits true/false when openAll/closeAll is triggered. */\n this._openCloseAllActions = new Subject();\n /** A readonly id value to use for unique selection coordination. */\n this.id = `cdk-accordion-${nextId$1++}`;\n this._multi = false;\n }\n /** Whether the accordion should allow multiple expanded accordion items simultaneously. */\n get multi() {\n return this._multi;\n }\n set multi(multi) {\n this._multi = coerceBooleanProperty(multi);\n }\n /** Opens all enabled accordion items in an accordion where multi is enabled. */\n openAll() {\n if (this._multi) {\n this._openCloseAllActions.next(true);\n }\n }\n /** Closes all enabled accordion items in an accordion where multi is enabled. */\n closeAll() {\n this._openCloseAllActions.next(false);\n }\n ngOnChanges(changes) {\n this._stateChanges.next(changes);\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n this._openCloseAllActions.complete();\n }\n}\nCdkAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkAccordion.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkAccordion, selector: \"cdk-accordion, [cdkAccordion]\", inputs: { multi: \"multi\" }, providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }], exportAs: [\"cdkAccordion\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAccordion, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion, [cdkAccordion]',\n exportAs: 'cdkAccordion',\n providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }],\n }]\n }], propDecorators: { multi: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each accordion item. */\nlet nextId = 0;\n/**\n * An basic directive expected to be extended and decorated as a component. Sets up all\n * events and attributes needed to be managed by a CdkAccordion parent.\n */\nclass CdkAccordionItem {\n constructor(accordion, _changeDetectorRef, _expansionDispatcher) {\n this.accordion = accordion;\n this._changeDetectorRef = _changeDetectorRef;\n this._expansionDispatcher = _expansionDispatcher;\n /** Subscription to openAll/closeAll events. */\n this._openCloseAllSubscription = Subscription.EMPTY;\n /** Event emitted every time the AccordionItem is closed. */\n this.closed = new EventEmitter();\n /** Event emitted every time the AccordionItem is opened. */\n this.opened = new EventEmitter();\n /** Event emitted when the AccordionItem is destroyed. */\n this.destroyed = new EventEmitter();\n /**\n * Emits whenever the expanded state of the accordion changes.\n * Primarily used to facilitate two-way binding.\n * @docs-private\n */\n this.expandedChange = new EventEmitter();\n /** The unique AccordionItem id. */\n this.id = `cdk-accordion-child-${nextId++}`;\n this._expanded = false;\n this._disabled = false;\n /** Unregister function for _expansionDispatcher. */\n this._removeUniqueSelectionListener = () => { };\n this._removeUniqueSelectionListener = _expansionDispatcher.listen((id, accordionId) => {\n if (this.accordion &&\n !this.accordion.multi &&\n this.accordion.id === accordionId &&\n this.id !== id) {\n this.expanded = false;\n }\n });\n // When an accordion item is hosted in an accordion, subscribe to open/close events.\n if (this.accordion) {\n this._openCloseAllSubscription = this._subscribeToOpenCloseAllActions();\n }\n }\n /** Whether the AccordionItem is expanded. */\n get expanded() {\n return this._expanded;\n }\n set expanded(expanded) {\n expanded = coerceBooleanProperty(expanded);\n // Only emit events and update the internal value if the value changes.\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n this.expandedChange.emit(expanded);\n if (expanded) {\n this.opened.emit();\n /**\n * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,\n * the name value is the id of the accordion.\n */\n const accordionId = this.accordion ? this.accordion.id : this.id;\n this._expansionDispatcher.notify(this.id, accordionId);\n }\n else {\n this.closed.emit();\n }\n // Ensures that the animation will run when the value is set outside of an `@Input`.\n // This includes cases like the open, close and toggle methods.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the AccordionItem is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(disabled) {\n this._disabled = coerceBooleanProperty(disabled);\n }\n /** Emits an event for the accordion item being destroyed. */\n ngOnDestroy() {\n this.opened.complete();\n this.closed.complete();\n this.destroyed.emit();\n this.destroyed.complete();\n this._removeUniqueSelectionListener();\n this._openCloseAllSubscription.unsubscribe();\n }\n /** Toggles the expanded state of the accordion item. */\n toggle() {\n if (!this.disabled) {\n this.expanded = !this.expanded;\n }\n }\n /** Sets the expanded state of the accordion item to false. */\n close() {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n /** Sets the expanded state of the accordion item to true. */\n open() {\n if (!this.disabled) {\n this.expanded = true;\n }\n }\n _subscribeToOpenCloseAllActions() {\n return this.accordion._openCloseAllActions.subscribe(expanded => {\n // Only change expanded state if item is enabled\n if (!this.disabled) {\n this.expanded = expanded;\n }\n });\n }\n}\nCdkAccordionItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAccordionItem, deps: [{ token: CDK_ACCORDION, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }, { token: i1.UniqueSelectionDispatcher }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAccordionItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkAccordionItem, selector: \"cdk-accordion-item, [cdkAccordionItem]\", inputs: { expanded: \"expanded\", disabled: \"disabled\" }, outputs: { closed: \"closed\", opened: \"opened\", destroyed: \"destroyed\", expandedChange: \"expandedChange\" }, providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ], exportAs: [\"cdkAccordionItem\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAccordionItem, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion-item, [cdkAccordionItem]',\n exportAs: 'cdkAccordionItem',\n providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ],\n }]\n }], ctorParameters: function () { return [{ type: CdkAccordion, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_ACCORDION]\n }, {\n type: SkipSelf\n }] }, { type: i0.ChangeDetectorRef }, { type: i1.UniqueSelectionDispatcher }]; }, propDecorators: { closed: [{\n type: Output\n }], opened: [{\n type: Output\n }], destroyed: [{\n type: Output\n }], expandedChange: [{\n type: Output\n }], expanded: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkAccordionModule {\n}\nCdkAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAccordionModule, declarations: [CdkAccordion, CdkAccordionItem], exports: [CdkAccordion, CdkAccordionItem] });\nCdkAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAccordionModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAccordionModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkAccordion, CdkAccordionItem],\n declarations: [CdkAccordion, CdkAccordionItem],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkAccordion, CdkAccordionItem, CdkAccordionModule };\n","import { CdkAccordionItem, CdkAccordion, CdkAccordionModule } from '@angular/cdk/accordion';\nimport * as i2 from '@angular/cdk/portal';\nimport { TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, SkipSelf, Input, Output, ContentChild, ViewChild, Host, Attribute, QueryList, ContentChildren, NgModule } from '@angular/core';\nimport { mixinTabIndex, MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i2$1 from '@angular/cdk/a11y';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { distinctUntilChanged, startWith, filter, take } from 'rxjs/operators';\nimport { ENTER, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subject, Subscription, EMPTY, merge } from 'rxjs';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Token used to provide a `MatAccordion` to `MatExpansionPanel`.\n * Used primarily to avoid circular imports between `MatAccordion` and `MatExpansionPanel`.\n */\nconst MAT_ACCORDION = new InjectionToken('MAT_ACCORDION');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time and timing curve for expansion panel animations. */\n// Note: Keep this in sync with the Sass variable for the panel header animation.\nconst EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';\n/**\n * Animations used by the Material expansion panel.\n *\n * A bug in angular animation's `state` when ViewContainers are moved using ViewContainerRef.move()\n * causes the animation state of moved components to become `void` upon exit, and not update again\n * upon reentry into the DOM. This can lead a to situation for the expansion panel where the state\n * of the panel is `expanded` or `collapsed` but the animation state is `void`.\n *\n * To correctly handle animating to the next state, we animate between `void` and `collapsed` which\n * are defined to have the same styles. Since angular animates from the current styles to the\n * destination state's style definition, in situations where we are moving from `void`'s styles to\n * `collapsed` this acts a noop since no style values change.\n *\n * In the case where angular's animation state is out of sync with the expansion panel's state, the\n * expansion panel being `expanded` and angular animations being `void`, the animation from the\n * `expanded`'s effective styles (though in a `void` animation state) to the collapsed state will\n * occur as expected.\n *\n * Angular Bug: https://github.com/angular/angular/issues/18847\n *\n * @docs-private\n */\nconst matExpansionAnimations = {\n /** Animation that rotates the indicator arrow. */\n indicatorRotate: trigger('indicatorRotate', [\n state('collapsed, void', style({ transform: 'rotate(0deg)' })),\n state('expanded', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed, void => collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n /** Animation that expands and collapses the panel content. */\n bodyExpansion: trigger('bodyExpansion', [\n state('collapsed, void', style({ height: '0px', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed, void => collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Token used to provide a `MatExpansionPanel` to `MatExpansionPanelContent`.\n * Used to avoid circular imports between `MatExpansionPanel` and `MatExpansionPanelContent`.\n */\nconst MAT_EXPANSION_PANEL = new InjectionToken('MAT_EXPANSION_PANEL');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Expansion panel content that will be rendered lazily\n * after the panel is opened for the first time.\n */\nclass MatExpansionPanelContent {\n constructor(_template, _expansionPanel) {\n this._template = _template;\n this._expansionPanel = _expansionPanel;\n }\n}\nMatExpansionPanelContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelContent, deps: [{ token: i0.TemplateRef }, { token: MAT_EXPANSION_PANEL, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatExpansionPanelContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatExpansionPanelContent, selector: \"ng-template[matExpansionPanelContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelContent, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matExpansionPanelContent]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_EXPANSION_PANEL]\n }, {\n type: Optional\n }] }]; } });\n\n/** Counter for generating unique element ids. */\nlet uniqueId = 0;\n/**\n * Injection token that can be used to configure the default\n * options for the expansion panel component.\n */\nconst MAT_EXPANSION_PANEL_DEFAULT_OPTIONS = new InjectionToken('MAT_EXPANSION_PANEL_DEFAULT_OPTIONS');\n/**\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the MatAccordion directive attached.\n */\nclass MatExpansionPanel extends CdkAccordionItem {\n constructor(accordion, _changeDetectorRef, _uniqueSelectionDispatcher, _viewContainerRef, _document, _animationMode, defaultOptions) {\n super(accordion, _changeDetectorRef, _uniqueSelectionDispatcher);\n this._viewContainerRef = _viewContainerRef;\n this._animationMode = _animationMode;\n this._hideToggle = false;\n /** An event emitted after the body's expansion animation happens. */\n this.afterExpand = new EventEmitter();\n /** An event emitted after the body's collapse animation happens. */\n this.afterCollapse = new EventEmitter();\n /** Stream that emits for changes in `@Input` properties. */\n this._inputChanges = new Subject();\n /** ID for the associated header element. Used for a11y labelling. */\n this._headerId = `mat-expansion-panel-header-${uniqueId++}`;\n /** Stream of body animation done events. */\n this._bodyAnimationDone = new Subject();\n this.accordion = accordion;\n this._document = _document;\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._bodyAnimationDone\n .pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n }))\n .subscribe(event => {\n if (event.fromState !== 'void') {\n if (event.toState === 'expanded') {\n this.afterExpand.emit();\n }\n else if (event.toState === 'collapsed') {\n this.afterCollapse.emit();\n }\n }\n });\n if (defaultOptions) {\n this.hideToggle = defaultOptions.hideToggle;\n }\n }\n /** Whether the toggle indicator should be hidden. */\n get hideToggle() {\n return this._hideToggle || (this.accordion && this.accordion.hideToggle);\n }\n set hideToggle(value) {\n this._hideToggle = coerceBooleanProperty(value);\n }\n /** The position of the expansion indicator. */\n get togglePosition() {\n return this._togglePosition || (this.accordion && this.accordion.togglePosition);\n }\n set togglePosition(value) {\n this._togglePosition = value;\n }\n /** Determines whether the expansion panel should have spacing between it and its siblings. */\n _hasSpacing() {\n if (this.accordion) {\n return this.expanded && this.accordion.displayMode === 'default';\n }\n return false;\n }\n /** Gets the expanded state string. */\n _getExpandedState() {\n return this.expanded ? 'expanded' : 'collapsed';\n }\n /** Toggles the expanded state of the expansion panel. */\n toggle() {\n this.expanded = !this.expanded;\n }\n /** Sets the expanded state of the expansion panel to false. */\n close() {\n this.expanded = false;\n }\n /** Sets the expanded state of the expansion panel to true. */\n open() {\n this.expanded = true;\n }\n ngAfterContentInit() {\n if (this._lazyContent && this._lazyContent._expansionPanel === this) {\n // Render the content as soon as the panel becomes open.\n this.opened\n .pipe(startWith(null), filter(() => this.expanded && !this._portal), take(1))\n .subscribe(() => {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n });\n }\n }\n ngOnChanges(changes) {\n this._inputChanges.next(changes);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._bodyAnimationDone.complete();\n this._inputChanges.complete();\n }\n /** Checks whether the expansion panel's content contains the currently-focused element. */\n _containsFocus() {\n if (this._body) {\n const focusedElement = this._document.activeElement;\n const bodyElement = this._body.nativeElement;\n return focusedElement === bodyElement || bodyElement.contains(focusedElement);\n }\n return false;\n }\n}\nMatExpansionPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanel, deps: [{ token: MAT_ACCORDION, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }, { token: i1.UniqueSelectionDispatcher }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatExpansionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatExpansionPanel, selector: \"mat-expansion-panel\", inputs: { disabled: \"disabled\", expanded: \"expanded\", hideToggle: \"hideToggle\", togglePosition: \"togglePosition\" }, outputs: { opened: \"opened\", closed: \"closed\", expandedChange: \"expandedChange\", afterExpand: \"afterExpand\", afterCollapse: \"afterCollapse\" }, host: { properties: { \"class.mat-expanded\": \"expanded\", \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\", \"class.mat-expansion-panel-spacing\": \"_hasSpacing()\" }, classAttribute: \"mat-expansion-panel\" }, providers: [\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n { provide: MAT_ACCORDION, useValue: undefined },\n { provide: MAT_EXPANSION_PANEL, useExisting: MatExpansionPanel },\n ], queries: [{ propertyName: \"_lazyContent\", first: true, predicate: MatExpansionPanelContent, descendants: true }], viewQueries: [{ propertyName: \"_body\", first: true, predicate: [\"body\"], descendants: true }], exportAs: [\"matExpansionPanel\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"\\n
\\n
\\n \\n \\n
\\n \\n
\\n\", styles: [\".mat-expansion-panel{box-sizing:content-box;display:block;margin:0;border-radius:4px;overflow:hidden;transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);position:relative}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:4px;border-top-left-radius:4px}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.cdk-high-contrast-active .mat-expansion-panel{outline:solid 1px}.mat-expansion-panel.ng-animate-disabled,.ng-animate-disabled .mat-expansion-panel,.mat-expansion-panel._mat-animation-noopable{transition:none}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible}.mat-expansion-panel-content[style*=\\\"visibility: hidden\\\"] *{visibility:hidden !important}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}\"], dependencies: [{ kind: \"directive\", type: i2.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], animations: [matExpansionAnimations.bodyExpansion], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanel, decorators: [{\n type: Component,\n args: [{ selector: 'mat-expansion-panel', exportAs: 'matExpansionPanel', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled', 'expanded'], outputs: ['opened', 'closed', 'expandedChange'], animations: [matExpansionAnimations.bodyExpansion], providers: [\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n { provide: MAT_ACCORDION, useValue: undefined },\n { provide: MAT_EXPANSION_PANEL, useExisting: MatExpansionPanel },\n ], host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n }, template: \"\\n
\\n
\\n \\n \\n
\\n \\n
\\n\", styles: [\".mat-expansion-panel{box-sizing:content-box;display:block;margin:0;border-radius:4px;overflow:hidden;transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);position:relative}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:4px;border-top-left-radius:4px}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.cdk-high-contrast-active .mat-expansion-panel{outline:solid 1px}.mat-expansion-panel.ng-animate-disabled,.ng-animate-disabled .mat-expansion-panel,.mat-expansion-panel._mat-animation-noopable{transition:none}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible}.mat-expansion-panel-content[style*=\\\"visibility: hidden\\\"] *{visibility:hidden !important}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [MAT_ACCORDION]\n }] }, { type: i0.ChangeDetectorRef }, { type: i1.UniqueSelectionDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_EXPANSION_PANEL_DEFAULT_OPTIONS]\n }, {\n type: Optional\n }] }]; }, propDecorators: { hideToggle: [{\n type: Input\n }], togglePosition: [{\n type: Input\n }], afterExpand: [{\n type: Output\n }], afterCollapse: [{\n type: Output\n }], _lazyContent: [{\n type: ContentChild,\n args: [MatExpansionPanelContent]\n }], _body: [{\n type: ViewChild,\n args: ['body']\n }] } });\n/**\n * Actions of a ``.\n */\nclass MatExpansionPanelActionRow {\n}\nMatExpansionPanelActionRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelActionRow, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatExpansionPanelActionRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatExpansionPanelActionRow, selector: \"mat-action-row\", host: { classAttribute: \"mat-action-row\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelActionRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row',\n },\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to MatExpansionPanelHeader.\n/** @docs-private */\nclass MatExpansionPanelHeaderBase {\n}\nconst _MatExpansionPanelHeaderMixinBase = mixinTabIndex(MatExpansionPanelHeaderBase);\n/**\n * Header element of a ``.\n */\nclass MatExpansionPanelHeader extends _MatExpansionPanelHeaderMixinBase {\n constructor(panel, _element, _focusMonitor, _changeDetectorRef, defaultOptions, _animationMode, tabIndex) {\n super();\n this.panel = panel;\n this._element = _element;\n this._focusMonitor = _focusMonitor;\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n this._parentChangeSubscription = Subscription.EMPTY;\n const accordionHideToggleChange = panel.accordion\n ? panel.accordion._stateChanges.pipe(filter(changes => !!(changes['hideToggle'] || changes['togglePosition'])))\n : EMPTY;\n this.tabIndex = parseInt(tabIndex || '') || 0;\n // Since the toggle state depends on an @Input on the panel, we\n // need to subscribe and trigger change detection manually.\n this._parentChangeSubscription = merge(panel.opened, panel.closed, accordionHideToggleChange, panel._inputChanges.pipe(filter(changes => {\n return !!(changes['hideToggle'] || changes['disabled'] || changes['togglePosition']);\n }))).subscribe(() => this._changeDetectorRef.markForCheck());\n // Avoids focus being lost if the panel contained the focused element and was closed.\n panel.closed\n .pipe(filter(() => panel._containsFocus()))\n .subscribe(() => _focusMonitor.focusVia(_element, 'program'));\n if (defaultOptions) {\n this.expandedHeight = defaultOptions.expandedHeight;\n this.collapsedHeight = defaultOptions.collapsedHeight;\n }\n }\n /**\n * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.\n * @docs-private\n */\n get disabled() {\n return this.panel.disabled;\n }\n /** Toggles the expanded state of the panel. */\n _toggle() {\n if (!this.disabled) {\n this.panel.toggle();\n }\n }\n /** Gets whether the panel is expanded. */\n _isExpanded() {\n return this.panel.expanded;\n }\n /** Gets the expanded state string of the panel. */\n _getExpandedState() {\n return this.panel._getExpandedState();\n }\n /** Gets the panel id. */\n _getPanelId() {\n return this.panel.id;\n }\n /** Gets the toggle position for the header. */\n _getTogglePosition() {\n return this.panel.togglePosition;\n }\n /** Gets whether the expand indicator should be shown. */\n _showToggle() {\n return !this.panel.hideToggle && !this.panel.disabled;\n }\n /**\n * Gets the current height of the header. Null if no custom height has been\n * specified, and if the default height from the stylesheet should be used.\n */\n _getHeaderHeight() {\n const isExpanded = this._isExpanded();\n if (isExpanded && this.expandedHeight) {\n return this.expandedHeight;\n }\n else if (!isExpanded && this.collapsedHeight) {\n return this.collapsedHeight;\n }\n return null;\n }\n /** Handle keydown event calling to toggle() if appropriate. */\n _keydown(event) {\n switch (event.keyCode) {\n // Toggle for space and enter keys.\n case SPACE:\n case ENTER:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this._toggle();\n }\n break;\n default:\n if (this.panel.accordion) {\n this.panel.accordion._handleHeaderKeydown(event);\n }\n return;\n }\n }\n /**\n * Focuses the panel header. Implemented as a part of `FocusableOption`.\n * @param origin Origin of the action that triggered the focus.\n * @docs-private\n */\n focus(origin, options) {\n if (origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n }\n else {\n this._element.nativeElement.focus(options);\n }\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._element).subscribe(origin => {\n if (origin && this.panel.accordion) {\n this.panel.accordion._handleHeaderFocus(this);\n }\n });\n }\n ngOnDestroy() {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element);\n }\n}\nMatExpansionPanelHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelHeader, deps: [{ token: MatExpansionPanel, host: true }, { token: i0.ElementRef }, { token: i2$1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component });\nMatExpansionPanelHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatExpansionPanelHeader, selector: \"mat-expansion-panel-header\", inputs: { tabIndex: \"tabIndex\", expandedHeight: \"expandedHeight\", collapsedHeight: \"collapsedHeight\" }, host: { attributes: { \"role\": \"button\" }, listeners: { \"click\": \"_toggle()\", \"keydown\": \"_keydown($event)\" }, properties: { \"attr.id\": \"panel._headerId\", \"attr.tabindex\": \"tabIndex\", \"attr.aria-controls\": \"_getPanelId()\", \"attr.aria-expanded\": \"_isExpanded()\", \"attr.aria-disabled\": \"panel.disabled\", \"class.mat-expanded\": \"_isExpanded()\", \"class.mat-expansion-toggle-indicator-after\": \"_getTogglePosition() === 'after'\", \"class.mat-expansion-toggle-indicator-before\": \"_getTogglePosition() === 'before'\", \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\", \"style.height\": \"_getHeaderHeight()\" }, classAttribute: \"mat-expansion-panel-header mat-focus-indicator\" }, usesInheritance: true, ngImport: i0, template: \"\\n \\n \\n \\n\\n\\n\", styles: [\".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:\\\"\\\";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}.cdk-high-contrast-active .mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}\"], dependencies: [{ kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [matExpansionAnimations.indicatorRotate], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-expansion-panel-header', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['tabIndex'], animations: [matExpansionAnimations.indicatorRotate], host: {\n 'class': 'mat-expansion-panel-header mat-focus-indicator',\n 'role': 'button',\n '[attr.id]': 'panel._headerId',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-controls]': '_getPanelId()',\n '[attr.aria-expanded]': '_isExpanded()',\n '[attr.aria-disabled]': 'panel.disabled',\n '[class.mat-expanded]': '_isExpanded()',\n '[class.mat-expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,\n '[class.mat-expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '[style.height]': '_getHeaderHeight()',\n '(click)': '_toggle()',\n '(keydown)': '_keydown($event)',\n }, template: \"\\n \\n \\n \\n\\n\\n\", styles: [\".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:\\\"\\\";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}.cdk-high-contrast-active .mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}\"] }]\n }], ctorParameters: function () { return [{ type: MatExpansionPanel, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: i2$1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_EXPANSION_PANEL_DEFAULT_OPTIONS]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }]; }, propDecorators: { expandedHeight: [{\n type: Input\n }], collapsedHeight: [{\n type: Input\n }] } });\n/**\n * Description element of a ``.\n */\nclass MatExpansionPanelDescription {\n}\nMatExpansionPanelDescription.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatExpansionPanelDescription.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatExpansionPanelDescription, selector: \"mat-panel-description\", host: { classAttribute: \"mat-expansion-panel-header-description\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelDescription, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-panel-description',\n host: {\n class: 'mat-expansion-panel-header-description',\n },\n }]\n }] });\n/**\n * Title element of a ``.\n */\nclass MatExpansionPanelTitle {\n}\nMatExpansionPanelTitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatExpansionPanelTitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatExpansionPanelTitle, selector: \"mat-panel-title\", host: { classAttribute: \"mat-expansion-panel-header-title\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionPanelTitle, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-panel-title',\n host: {\n class: 'mat-expansion-panel-header-title',\n },\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive for a Material Design Accordion.\n */\nclass MatAccordion extends CdkAccordion {\n constructor() {\n super(...arguments);\n /** Headers belonging to this accordion. */\n this._ownHeaders = new QueryList();\n this._hideToggle = false;\n /**\n * Display mode used for all expansion panels in the accordion. Currently two display\n * modes exist:\n * default - a gutter-like spacing is placed around any expanded panel, placing the expanded\n * panel at a different elevation from the rest of the accordion.\n * flat - no spacing is placed around expanded panels, showing all panels at the same\n * elevation.\n */\n this.displayMode = 'default';\n /** The position of the expansion indicator. */\n this.togglePosition = 'after';\n }\n /** Whether the expansion indicator should be hidden. */\n get hideToggle() {\n return this._hideToggle;\n }\n set hideToggle(show) {\n this._hideToggle = coerceBooleanProperty(show);\n }\n ngAfterContentInit() {\n this._headers.changes\n .pipe(startWith(this._headers))\n .subscribe((headers) => {\n this._ownHeaders.reset(headers.filter(header => header.panel.accordion === this));\n this._ownHeaders.notifyOnChanges();\n });\n this._keyManager = new FocusKeyManager(this._ownHeaders).withWrap().withHomeAndEnd();\n }\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown(event) {\n this._keyManager.onKeydown(event);\n }\n _handleHeaderFocus(header) {\n this._keyManager.updateActiveItem(header);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._ownHeaders.destroy();\n }\n}\nMatAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAccordion, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatAccordion.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatAccordion, selector: \"mat-accordion\", inputs: { multi: \"multi\", hideToggle: \"hideToggle\", displayMode: \"displayMode\", togglePosition: \"togglePosition\" }, host: { properties: { \"class.mat-accordion-multi\": \"this.multi\" }, classAttribute: \"mat-accordion\" }, providers: [\n {\n provide: MAT_ACCORDION,\n useExisting: MatAccordion,\n },\n ], queries: [{ propertyName: \"_headers\", predicate: MatExpansionPanelHeader, descendants: true }], exportAs: [\"matAccordion\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAccordion, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n inputs: ['multi'],\n providers: [\n {\n provide: MAT_ACCORDION,\n useExisting: MatAccordion,\n },\n ],\n host: {\n class: 'mat-accordion',\n // Class binding which is only used by the test harness as there is no other\n // way for the harness to detect if multiple panel support is enabled.\n '[class.mat-accordion-multi]': 'this.multi',\n },\n }]\n }], propDecorators: { _headers: [{\n type: ContentChildren,\n args: [MatExpansionPanelHeader, { descendants: true }]\n }], hideToggle: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], togglePosition: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatExpansionModule {\n}\nMatExpansionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatExpansionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionModule, declarations: [MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent], imports: [CommonModule, MatCommonModule, CdkAccordionModule, PortalModule], exports: [MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent] });\nMatExpansionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionModule, imports: [CommonModule, MatCommonModule, CdkAccordionModule, PortalModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatExpansionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule, CdkAccordionModule, PortalModule],\n exports: [\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n declarations: [\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { EXPANSION_PANEL_ANIMATION_TIMING, MAT_ACCORDION, MAT_EXPANSION_PANEL, MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, MatAccordion, MatExpansionModule, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelContent, MatExpansionPanelDescription, MatExpansionPanelHeader, MatExpansionPanelTitle, matExpansionAnimations };\n"],"x_google_ignoreList":[2,3,4]}