{"version":3,"file":"accordion.mjs","sources":["../../../../../../src/cdk/accordion/accordion.ts","../../../../../../src/cdk/accordion/accordion-item.ts","../../../../../../src/cdk/accordion/accordion-module.ts","../../../../../../src/cdk/accordion/public-api.ts","../../../../../../src/cdk/accordion/index.ts","../../../../../../src/cdk/accordion/accordion_public_index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Directive, InjectionToken, Input, OnChanges, OnDestroy, SimpleChanges} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/** Used to generate unique ID for each accordion. */\nlet nextId = 0;\n\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 */\nexport const CDK_ACCORDION = new InjectionToken<CdkAccordion>('CdkAccordion');\n\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\n@Directive({\n  selector: 'cdk-accordion, [cdkAccordion]',\n  exportAs: 'cdkAccordion',\n  providers: [{provide: CDK_ACCORDION, useExisting: CdkAccordion}],\n})\nexport class CdkAccordion implements OnDestroy, OnChanges {\n  /** Emits when the state of the accordion changes */\n  readonly _stateChanges = new Subject<SimpleChanges>();\n\n  /** Stream that emits true/false when openAll/closeAll is triggered. */\n  readonly _openCloseAllActions: Subject<boolean> = new Subject<boolean>();\n\n  /** A readonly id value to use for unique selection coordination. */\n  readonly id = `cdk-accordion-${nextId++}`;\n\n  /** Whether the accordion should allow multiple expanded accordion items simultaneously. */\n  @Input()\n  get multi(): boolean {\n    return this._multi;\n  }\n  set multi(multi: BooleanInput) {\n    this._multi = coerceBooleanProperty(multi);\n  }\n  private _multi: boolean = false;\n\n  /** Opens all enabled accordion items in an accordion where multi is enabled. */\n  openAll(): void {\n    if (this._multi) {\n      this._openCloseAllActions.next(true);\n    }\n  }\n\n  /** Closes all enabled accordion items in an accordion where multi is enabled. */\n  closeAll(): void {\n    this._openCloseAllActions.next(false);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this._stateChanges.next(changes);\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n    this._openCloseAllActions.complete();\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  Output,\n  Directive,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Optional,\n  ChangeDetectorRef,\n  SkipSelf,\n  Inject,\n} from '@angular/core';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {CDK_ACCORDION, CdkAccordion} from './accordion';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Subscription} from 'rxjs';\n\n/** Used to generate unique ID for each accordion item. */\nlet nextId = 0;\n\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 */\n@Directive({\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})\nexport class CdkAccordionItem implements OnDestroy {\n  /** Subscription to openAll/closeAll events. */\n  private _openCloseAllSubscription = Subscription.EMPTY;\n  /** Event emitted every time the AccordionItem is closed. */\n  @Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();\n  /** Event emitted every time the AccordionItem is opened. */\n  @Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();\n  /** Event emitted when the AccordionItem is destroyed. */\n  @Output() readonly destroyed: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * Emits whenever the expanded state of the accordion changes.\n   * Primarily used to facilitate two-way binding.\n   * @docs-private\n   */\n  @Output() readonly expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  /** The unique AccordionItem id. */\n  readonly id: string = `cdk-accordion-child-${nextId++}`;\n\n  /** Whether the AccordionItem is expanded. */\n  @Input()\n  get expanded(): boolean {\n    return this._expanded;\n  }\n  set expanded(expanded: BooleanInput) {\n    expanded = coerceBooleanProperty(expanded);\n\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\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      } else {\n        this.closed.emit();\n      }\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  private _expanded = false;\n\n  /** Whether the AccordionItem is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(disabled: BooleanInput) {\n    this._disabled = coerceBooleanProperty(disabled);\n  }\n  private _disabled = false;\n\n  /** Unregister function for _expansionDispatcher. */\n  private _removeUniqueSelectionListener: () => void = () => {};\n\n  constructor(\n    @Optional() @Inject(CDK_ACCORDION) @SkipSelf() public accordion: CdkAccordion,\n    private _changeDetectorRef: ChangeDetectorRef,\n    protected _expansionDispatcher: UniqueSelectionDispatcher,\n  ) {\n    this._removeUniqueSelectionListener = _expansionDispatcher.listen(\n      (id: string, accordionId: string) => {\n        if (\n          this.accordion &&\n          !this.accordion.multi &&\n          this.accordion.id === accordionId &&\n          this.id !== id\n        ) {\n          this.expanded = false;\n        }\n      },\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\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\n  /** Toggles the expanded state of the accordion item. */\n  toggle(): void {\n    if (!this.disabled) {\n      this.expanded = !this.expanded;\n    }\n  }\n\n  /** Sets the expanded state of the accordion item to false. */\n  close(): void {\n    if (!this.disabled) {\n      this.expanded = false;\n    }\n  }\n\n  /** Sets the expanded state of the accordion item to true. */\n  open(): void {\n    if (!this.disabled) {\n      this.expanded = true;\n    }\n  }\n\n  private _subscribeToOpenCloseAllActions(): Subscription {\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}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkAccordion} from './accordion';\nimport {CdkAccordionItem} from './accordion-item';\n\n@NgModule({\n  exports: [CdkAccordion, CdkAccordionItem],\n  declarations: [CdkAccordion, CdkAccordionItem],\n})\nexport class CdkAccordionModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {CdkAccordionItem} from './accordion-item';\nexport {CdkAccordion} from './accordion';\nexport * from './accordion-module';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}