{"version":3,"file":"natec-mef-dev-ui-kit.mjs","sources":["../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse-set/collapse-set.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse-set/collapse-set.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse/collapse.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse/collapse.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field.service.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-item/filtered-field-item.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-item/filtered-field-item.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-container/filtered-field-container.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-container/filtered-field-container.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtred-item.model.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-simple/card-simple.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-simple/card-simple.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/util/convert.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/option.pipe.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/select.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/select.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/select/option.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/option.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/select/select.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/fill/fill.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/fill/fill.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-up/slide-up.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-up/slide-up.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-right/slide-right.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-right/slide-right.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/right-filter/right-filter.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/right-filter/right-filter.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/markup-kit.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page/central-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page/central-page.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page-row/central-page-row.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page-row/central-page-row.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/table-page/table-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/table-page/table-page.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/manage-page/manage-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/manage-page/manage-page.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/page-layouts.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/stage/stage.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/stage/stage.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/step-executor/step-executor.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/step-executor/step-executor.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/mefdev-executor-page/mefdev-executor-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/step-executor.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/drop-down/mefdev-dropdown-menu/mefdev-dropdown-menu.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/drop-down/mefdev-dropdown-menu/mefdev-dropdown-menu.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/drop-down/drop-down-menu.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.config.ts","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/switch/switch.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/switch/switch.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/switch/switch.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab-body.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab-body.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab-label.directive.ts","../../../projects/ui-kit-lib/src/lib/pg-components/util/request-animation.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs-ink-bar.directive.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs-nav.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs-nav.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabset.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabset.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs.module.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/accordion-base.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel-base.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel-content.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel.html","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel-header.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel-header.html","../../../projects/ui-kit-lib/src/lib/v2/collapse/accordion.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/collapse.module.ts","../../../projects/ui-kit-lib/src/lib/v2/card/card.ts","../../../projects/ui-kit-lib/src/lib/v2/card/card.html","../../../projects/ui-kit-lib/src/lib/v2/card/card-title-group.html","../../../projects/ui-kit-lib/src/lib/v2/card/card-header.html","../../../projects/ui-kit-lib/src/lib/v2/card/card.module.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-config.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-ref.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-container.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-container.html","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-content-directives.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/modal-module.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step-label.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper-intl.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step-header.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step-header.html","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper-icon.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step-content.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step-footer.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step.html","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper.html","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper-button.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper-module.ts","../../../projects/ui-kit-lib/src/lib/v2/menu/menu-panel.ts","../../../projects/ui-kit-lib/src/lib/v2/menu/menu-item.ts","../../../projects/ui-kit-lib/src/lib/v2/menu/menu-item.html","../../../projects/ui-kit-lib/src/lib/v2/menu/menu-errors.ts","../../../projects/ui-kit-lib/src/lib/v2/menu/menu-content.ts","../../../projects/ui-kit-lib/src/lib/v2/menu/menu.ts","../../../projects/ui-kit-lib/src/lib/v2/menu/menu.html","../../../projects/ui-kit-lib/src/lib/v2/menu/menu-trigger-base.ts","../../../projects/ui-kit-lib/src/lib/v2/menu/menu-trigger.ts","../../../projects/ui-kit-lib/src/lib/v2/menu/context-menu-trigger.ts","../../../projects/ui-kit-lib/src/lib/v2/menu/menu-module.ts","../../../projects/ui-kit-lib/src/lib/v2/select/pseudo-checkbox.ts","../../../projects/ui-kit-lib/src/lib/v2/select/option.ts","../../../projects/ui-kit-lib/src/lib/v2/select/option.html","../../../projects/ui-kit-lib/src/lib/v2/select/select-errors.ts","../../../projects/ui-kit-lib/src/lib/v2/select/select.ts","../../../projects/ui-kit-lib/src/lib/v2/select/select.html","../../../projects/ui-kit-lib/src/lib/v2/select/option-group.ts","../../../projects/ui-kit-lib/src/lib/v2/select/option-group.html","../../../projects/ui-kit-lib/src/lib/v2/select/pseudo-checkbox-module.ts","../../../projects/ui-kit-lib/src/lib/v2/select/option-module.ts","../../../projects/ui-kit-lib/src/lib/v2/select/select.module.ts","../../../projects/ui-kit-lib/src/lib/v2/switch/base-editor-helper.ts","../../../projects/ui-kit-lib/src/lib/v2/switch/switch.component.ts","../../../projects/ui-kit-lib/src/lib/v2/switch/switch.component.html","../../../projects/ui-kit-lib/src/lib/v2/switch/switch.module.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/paginated-tab-header.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-body.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-body.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/config.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-content.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-label.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/ink-bar.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-label-wrapper.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-header.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-header.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-group.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-group.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-nav-bar.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-nav-bar.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-link.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/tabs.module.ts","../../../projects/ui-kit-lib/src/lib/v2/checkbox/checkbox.ts","../../../projects/ui-kit-lib/src/lib/v2/checkbox/checkbox.html","../../../projects/ui-kit-lib/src/lib/v2/checkbox/checkbox.module.ts","../../../projects/ui-kit-lib/src/lib/v2/autocomplete/autocomplete.ts","../../../projects/ui-kit-lib/src/lib/v2/autocomplete/autocomplete.html","../../../projects/ui-kit-lib/src/lib/v2/autocomplete/autocomplete-origin.ts","../../../projects/ui-kit-lib/src/lib/v2/autocomplete/autocomplete.trigger.ts","../../../projects/ui-kit-lib/src/lib/v2/autocomplete/autocomplete.module.ts","../../../projects/ui-kit-lib/src/lib/v2/radio-button/radio.ts","../../../projects/ui-kit-lib/src/lib/v2/radio-button/radio.html","../../../projects/ui-kit-lib/src/lib/v2/radio-button/radio.module.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/tokens.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-action.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip.html","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-option.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-option.html","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-edit-input.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-row.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-row.html","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-set.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-listbox.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-grid.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-icons.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chip-input.ts","../../../projects/ui-kit-lib/src/lib/v2/chips/chips-module.ts","../../../projects/ui-kit-lib/src/lib/v2/header-card/header-card.component.ts","../../../projects/ui-kit-lib/src/lib/v2/header-card/header-card.component.html","../../../projects/ui-kit-lib/src/lib/v2/header-card/header-card-set.component.ts","../../../projects/ui-kit-lib/src/lib/v2/header-card/header-card-set.component.html","../../../projects/ui-kit-lib/src/lib/v2/header-card/header-card.module.ts","../../../projects/ui-kit-lib/src/lib/v2/paginator/paginator.component.ts","../../../projects/ui-kit-lib/src/lib/v2/paginator/paginator.component.html","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/cards-grid.types.ts","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/cards-grid.utils.ts","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/cards-grid-column.directive.ts","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/cards-grid-toolbar.directive.ts","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/column-sizing.utils.ts","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/cards-grid.component.ts","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/cards-grid.component.html","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/cards-grid-actions.directive.ts","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/cards-grid.module.ts","../../../projects/ui-kit-lib/src/lib/v2/cards-grid/index.ts","../../../projects/ui-kit-lib/src/lib/v2/paginator/paginator.module.ts","../../../projects/ui-kit-lib/src/natec-mef-dev-ui-kit.ts"],"sourcesContent":["import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { CollapseComponent } from '../collapse/collapse.component';\r\n\r\n\r\n/**\r\n* Component representing a set of collapsible panels.\r\n*\r\n* Example of usage:\r\n*\r\n*```\r\n* <mefdev-collapse-set [Accordion]=\"true\" [Horizontal]=\"true\" [expandAny]=\"false\">\r\n*   <mefdev-collapse [Disabled]=\"false\" [Active]=\"true\">\r\n*       <!-- Content for the collapse panel -->\r\n*       <h3>Panel 1</h3>\r\n*       <p>Panel 1 content...</p>\r\n*   </mefdev-collapse>\r\n\r\n*   <mefdev-collapse [Disabled]=\"false\" [Active]=\"false\">\r\n*       <!-- Content for the collapse panel -->\r\n*       <h3>Panel 2</h3>\r\n*       <p>Panel 2 content...</p>\r\n*   </mefdev-collapse>\r\n\r\n*   <mefdev-collapse [Disabled]=\"false\" [Active]=\"false\">\r\n*       <!-- Content for the collapse panel -->\r\n*       <h3>Panel 3</h3>\r\n*       <p>Panel 3 content...</p>\r\n*   </mefdev-collapse>\r\n* </mefdev-collapse-set>\r\n*```\r\n*/\r\n@Component({\r\n    selector: 'mefdev-collapse-set',\r\n    templateUrl: './collapse-set.component.html',\r\n    styleUrls: ['./collapse-set.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    standalone: false\r\n})\r\nexport class CollapseSetComponent {\r\n  \r\n  private _accordion = false;\r\n  private _horizontal = true;\r\n  private _expandAny = true;\r\n  panels: CollapseComponent[] = [];\r\n\r\n  /**\r\n   * Indicates whether multiple panels can be expanded simultaneously.\r\n   * Set this to `true` to allow multiple panels to be expanded. Defaults to `false`.\r\n   */\r\n  @Input()\r\n  set expandAny(value: boolean) {\r\n    this._accordion = value;\r\n  }\r\n\r\n  get expandAny(): boolean {\r\n    return this._accordion;\r\n  }\r\n\r\n  /**\r\n   * Indicates whether the collapse set operates as an accordion.\r\n   * Set this to `true` to enable accordion behavior. Defaults to `false`.\r\n   */\r\n  @Input()\r\n  set Accordion(value: boolean) {\r\n    this._accordion = value;\r\n  }\r\n\r\n  get Accordion(): boolean {\r\n    return this._accordion;\r\n  }\r\n\r\n  /**\r\n   * Indicates whether the collapse set is displayed horizontally or vertically.\r\n   * Set this to `true` for horizontal display and `false` for vertical display. Defaults to `true`.\r\n   */\r\n  @Input()\r\n  set Horizontal(value: boolean) {\r\n    this._horizontal = value;\r\n  }\r\n\r\n  get Horizontal(): boolean {\r\n    return this._horizontal;\r\n  }\r\n\r\n  /**\r\n   * Event handler for the click event on a collapse panel.\r\n   * Closes other panels if the collapse set is an accordion and does not allow multiple expansions.\r\n   *\r\n   * @param collapse The clicked collapse component.\r\n   */\r\n  pgClick(collapse: CollapseComponent): void {\r\n    if (this.Accordion && !this.expandAny) {\r\n      this.panels.map((item, index) => {\r\n        const curIndex = this.panels.indexOf(collapse);\r\n        if (index !== curIndex) {\r\n          item.Active = false;\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Adds a collapse panel to the collapse set.\r\n   *\r\n   * @param collapse The collapse component to be added.\r\n   */\r\n  addTab(collapse: CollapseComponent): void {\r\n    this.panels.push(collapse);\r\n  }\r\n}\r\n","<div class=\"card-group\" [class.horizontal]=\"Horizontal\">\r\n    <ng-content></ng-content>\r\n</div>","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, ContentChild, ElementRef, EventEmitter, Host, HostBinding, Input, Output, TemplateRef } from '@angular/core';\r\nimport { CollapseSetComponent } from '../collapse-set/collapse-set.component';\r\n\r\n\r\n/**\r\n  * Component for displaying a collapsible content.\r\n  *\r\n  *\r\n  * Example of usage:\r\n  *```\r\n  * <mefdev-collapse [Disabled]=\"false\" [Active]=\"true\" (stateChange)=\"onStateChange($event)\">\r\n  *   <ng-template #CardTitle>\r\n  *     <!-- Content for the card title -->\r\n  *     <h3>Card Title</h3>\r\n  *   </ng-template>\r\n  *   \r\n  *   <!-- Content for the collapsible section -->\r\n  *   <div>\r\n        Content inside collapse\r\n  *   </div>\r\n  * </mefdev-collapse>\r\n  *\r\n  *```\r\n    * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/collapse</example-url>\r\n\r\n  */\r\n@Component({\r\n    selector: 'mefdev-collapse',\r\n    templateUrl: './collapse.component.html',\r\n    styleUrls: ['./collapse.component.scss'],\r\n    animations: [\r\n        trigger('collapseState', [\r\n            state('inactive', style({\r\n                opacity: '0',\r\n                height: 0\r\n            })),\r\n            state('active', style({\r\n                opacity: '1',\r\n                height: '*'\r\n            })),\r\n            transition('inactive => active', animate('125ms ease-in')),\r\n            transition('active => inactive', animate('125ms ease-out'))\r\n        ])\r\n    ],\r\n    host: {\r\n        '[class.card]': 'true',\r\n        '[class.card-default]': 'true',\r\n        '[class.m-b-0]': 'true'\r\n    },\r\n    standalone: false\r\n})\r\nexport class CollapseComponent {\r\n\r\n  private _disabled = false;\r\n  _active = false;\r\n  _el;\r\n\r\n  /**\r\n   * ContentChild for the template of the card title.\r\n   *\r\n   * Example:\r\n   * ```\r\n   * <ng-template #CardTitle>\r\n   *   <h3>Card Title</h3>\r\n   * </ng-template>\r\n   * ```\r\n   */\r\n  @ContentChild(\"CardTitle\") CardTitle: TemplateRef<void>;\r\n\r\n  /**\r\n   * Indicates whether the collapse is disabled.\r\n   * Set this to `true` to disable the collapse. Defaults to `false`.\r\n   */\r\n  @Input()\r\n  @HostBinding('class.disabled')\r\n  set Disabled(value: boolean) {\r\n    this._disabled = value;\r\n  }\r\n\r\n  get Disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n\r\n   /**\r\n   * Indicates whether the collapse is active or not.\r\n   */\r\n  @Input()\r\n  set Active(value: boolean) {\r\n    const active = value;\r\n    if (this._active === active) {\r\n      return;\r\n    }\r\n    if (!this.Disabled) {\r\n      this._active = active;\r\n    }\r\n  }\r\n  \r\n  get Active(): boolean {\r\n    return this._active;\r\n  }\r\n\r\n  /**\r\n   * Event emitter for the state change of the collapse.\r\n   * Emits a boolean value indicating whether the collapse is active or not.\r\n   *\r\n   * Example:\r\n   * ```\r\n   * <mefdev-collapse (stateChange)=\"onStateChange($event)\"></mefdev-collapse>\r\n   * ```\r\n   */\r\n  @Output() stateChange = new EventEmitter<boolean>();\r\n\r\n  /**\r\n   * Event handler for the header click event.\r\n   * Toggles the active state of the collapse and emits the state change event.\r\n   *\r\n   * @param $event The mouse event object.\r\n   */\r\n  clickHeader($event: MouseEvent): void {\r\n    this.Active = !this.Active;\r\n    this.stateChange.next(this.Active);\r\n    /** trigger host collapseSet click event */\r\n    this._collapseSet.pgClick(this);\r\n  }\r\n\r\n  constructor(@Host() private _collapseSet: CollapseSetComponent, private _elementRef: ElementRef) {\r\n    this._el = this._elementRef.nativeElement;\r\n    this._collapseSet.addTab(this);\r\n  }\r\n}\r\n","<div class=\"row w-100 mt-2 card-title\" [attr.aria-expanded]=\"_active\" (click)=\"clickHeader($event)\" role=\"tab\"\r\nhref=\"javascript:;\" [ngClass]=\"{'collapsed':!_active}\">\r\n  <div class=\"col\">\r\n    <ng-template [ngTemplateOutlet]=\"CardTitle\"></ng-template>\r\n  </div>\r\n  <div class=\"col\">\r\n    <i class=\"fa fa-angle-down float-end \" aria-hidden=\"true\" *ngIf=\"!_active\"></i>\r\n    <i class=\"fa fa-angle-up float-end \" aria-hidden=\"true\" *ngIf=\"_active\"></i>\r\n  </div>\r\n</div>\r\n\r\n<div class=\"collapse\" [ngClass]=\"{'show':true,'active':_active,'inactive':!_active}\" [@collapseState]=\"_active?'active':'inactive'\">\r\n    <div *ngIf=\"_active\"\r\n     class=\"card-body mb-3\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule,ModuleWithProviders } from '@angular/core';\r\nimport { CollapseSetComponent } from './collapse-set/collapse-set.component';\r\nimport { CollapseComponent } from './collapse/collapse.component';\r\n\r\nexport const mefDevCollapseModuleComponents = [CollapseSetComponent, CollapseComponent];\r\n\r\n@NgModule({\r\n  declarations: mefDevCollapseModuleComponents,\r\n  exports     : mefDevCollapseModuleComponents,\r\n  imports     : [ CommonModule ]\r\n})\r\n\r\nexport class MefDevCollapseModule {\r\n  static forRoot(): ModuleWithProviders<MefDevCollapseModule> {\r\n    return {\r\n      ngModule: MefDevCollapseModule\r\n    };\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { FiltredItemModel } from './filtred-item.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class FilteredFieldService {\r\n\r\n  private newFilterItem: Subject<FiltredItemModel> = new Subject<FiltredItemModel>();\r\n  private openFilter: Subject<FiltredItemModel> = new Subject<FiltredItemModel>();\r\n\r\n  constructor() {}\r\n\r\n    /**\r\n   * Returns an observable that emits the open filter events.\r\n   */\r\n  public getOpenFilter(): Observable<FiltredItemModel>{\r\n    return this.openFilter;\r\n  }\r\n\r\n    /**\r\n   * Sends an open filter event with the specified item.\r\n   * @param item The filtered item model.\r\n   */\r\n  public sendOpenFilter(item: FiltredItemModel){\r\n    this.openFilter.next(item);\r\n  }\r\n\r\n    /**\r\n   * Returns an observable that emits the new filter item events.\r\n   */\r\n  public getNewFilterItem(): Observable<FiltredItemModel>{\r\n    return this.newFilterItem;\r\n  }\r\n\r\n    /**\r\n   * Sends a new filter item event with the specified item.\r\n   * @param item The filtered item model.\r\n   */\r\n  public sendNewFilterItem(item: FiltredItemModel){\r\n    this.newFilterItem.next(item);\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FiltredItemModel } from '../filtred-item.model';\r\n\r\n/**\r\n  * Component representing a filtered field item.\r\n  * \r\n  * Example of usage:\r\n  * ```\r\n  * <mefdev-filtered-field-item [item]=\"filterItem\" (discard)=\"onDiscardFilter($event)\" (openFilter)=\"onOpenFilter()\">\r\n  * </mefdev-filtered-field-item>\r\n  *``` \r\n  *\r\n*/\r\n@Component({\r\n    selector: 'mefdev-filtered-field-item',\r\n    templateUrl: './filtered-field-item.component.html',\r\n    styleUrls: ['./filtered-field-item.component.scss'],\r\n    standalone: false\r\n})\r\nexport class FilteredFieldItemComponent implements OnInit {\r\n\r\n  /**\r\n   * The filtered item model.\r\n   * ```\r\n   * <mefdev-filtered-field-item [item]=\"filterItem\">\r\n   * Content goes here...\r\n   * </mefdev-filtered-field-item>\r\n   * ```\r\n   */\r\n  @Input() item: FiltredItemModel;\r\n\r\n  /**\r\n   * Event emitted when the filter is discarded.\r\n   * ```\r\n   * <mefdev-filtered-field-item (discard)=\"onDiscardFilter($event)\">\r\n   * Content goes here...\r\n   * </mefdev-filtered-field-item>\r\n   * ```\r\n   */\r\n  @Output() discard = new EventEmitter<FiltredItemModel>();\r\n\r\n  /**\r\n   * Event emitted when the filter is opened.\r\n   * ```\r\n   * <mefdev-filtered-field-item (openFilter)=\"onOpenFilter()\">\r\n   * Content goes here...\r\n   * </mefdev-filtered-field-item>\r\n   * ```\r\n   */\r\n  @Output() openFilter = new EventEmitter<any>();\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  \r\n  /**\r\n   * Event handler for opening the filter.\r\n   * Emits the `openFilter` event.\r\n   */\r\n  onOpenFilter(){\r\n    this.openFilter.next({});\r\n  }\r\n\r\n\r\n  /**\r\n   * Event handler for discarding the filter.\r\n   * Emits the `discard` event with the `item` as the payload.\r\n   */\r\n  onDiscard(){\r\n    this.discard.next(this.item);\r\n  }\r\n\r\n}\r\n","<div class=\"item\">\r\n    <i class=\"fa fa-times\" (click)=\"onDiscard()\" style=\"margin-right: 3px; cursor: pointer;\"></i> \r\n    <span (click)=\"onOpenFilter()\">{{item.newValue}}</span>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FilteredFieldService } from '../filtered-field.service';\r\nimport { FiltredItemModel } from '../filtred-item.model';\r\n\r\n  /**\r\n  * A container component for filtered fields.\r\n  *\r\n  * Example of usage:\r\n  * ```\r\n  * <mefdev-filtered-field-container>\r\n  * \r\n  * <mefdev-filtered-field-item [item]=\"filterItem\" (discard)=\"onDiscardFilter($event)\" (openFilter)=\"onOpenFilter()\">\r\n  * </mefdev-filtered-field-item>\r\n  *\r\n  * </mefdev-filtered-field-container>\r\n  * ```\r\n  * Example of usage:\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/filtered_field</example-url>\r\n  */\r\n@Component({\r\n    selector: 'mefdev-filtered-field-container',\r\n    templateUrl: './filtered-field-container.component.html',\r\n    styleUrls: ['./filtered-field-container.component.scss'],\r\n    standalone: false\r\n})\r\nexport class FilteredFieldContainerComponent implements OnInit {\r\n\r\n  /**\r\n   * An array of filtered item models.\r\n   */\r\n  items: FiltredItemModel[] = [];\r\n\r\n  constructor(\r\n    private service: FilteredFieldService\r\n    ) { }\r\n\r\n  /**\r\n   * Event handler for opening the filter.\r\n   *\r\n   * @param item The filtered item model.\r\n   */\r\n  onOpenFilter(item: FiltredItemModel){\r\n    this.service.sendOpenFilter(item);\r\n  }\r\n\r\n    /**\r\n   * Event handler for discarding the filter.\r\n   *\r\n   * @param item The filtered item model.\r\n   */\r\n  onDiscard(item: FiltredItemModel){\r\n    item.discard(item.standartValue);\r\n    this.items.splice(this.items.findIndex(x => x.id == item.id), 1);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.service.getNewFilterItem().subscribe(item => {\r\n      let i = this.items.findIndex(x => x.id == item.id)\r\n\r\n      if(i != -1 && item.newValue == item.standartValue){\r\n        this.items[i] = item;\r\n        this.items.splice(i, 1);\r\n        return;\r\n      }\r\n\r\n      if(i == -1 && (item.newValue == item.standartValue || item.newValue == '') ){\r\n        return;\r\n      }\r\n\r\n      if(i != -1){\r\n        this.items[i] = item;\r\n        return;\r\n      }\r\n\r\n      this.items.push(item);\r\n\r\n    })\r\n  }\r\n}\r\n","<div class=\"item-container\">\r\n    <mefdev-filtered-field-item *ngFor=\"let item of items\" [item]=\"item\" (discard)=\"onDiscard(item)\" (openFilter)=\"onOpenFilter(item)\"></mefdev-filtered-field-item>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FilteredFieldContainerComponent } from './filtered-field-container/filtered-field-container.component';\r\nimport { FilteredFieldItemComponent } from './filtered-field-item/filtered-field-item.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    FilteredFieldContainerComponent,\r\n    FilteredFieldItemComponent,\r\n  ],\r\n  exports:[\r\n    FilteredFieldItemComponent,\r\n    FilteredFieldContainerComponent\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ]\r\n})\r\nexport class MefDevFilteredFieldModule { }\r\n","export class FiltredItemModel{\r\n\r\n\r\n    constructor(id:string, newValue: string, standartValue: string, discard: (standartValue: string) => any){\r\n        this.id = id;\r\n        this.newValue = newValue;\r\n        this.standartValue = standartValue;\r\n        this.discard = discard;\r\n    }\r\n\r\n    id:string;\r\n    newValue: string;\r\n    standartValue: string;\r\n    discard: (standartValue: string) => any;\r\n}","import {\r\n  Component,\r\n  Input,\r\n  ContentChild,\r\n  TemplateRef,\r\n  ChangeDetectionStrategy,\r\n  ViewEncapsulation,\r\n  HostBinding,\r\n  OnInit,\r\n} from '@angular/core';\r\n\r\n/**\r\n  * Component for displaying a simple card with a title.\r\n  *\r\n  * Example of usage:\r\n  *```\r\n  * <mefdev-card-simple [disabled]=\"true\">\r\n  *   <ng-template #card_title>\r\n  *     <!-- Content for the card title -->\r\n  *   </ng-template>\r\n  * </mefdev-card-simple>\r\n  *```\r\n  *\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/card/card_simple</example-url>\r\n  */\r\n@Component({\r\n    selector: 'mefdev-card-simple',\r\n    templateUrl: './card-simple.component.html',\r\n    styleUrls: ['./card-simple.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: false\r\n})\r\nexport class CardSimpleComponent implements OnInit {\r\n\r\n  /**\r\n   * Determines whether the card is disabled or not.\r\n   */\r\n  @Input(\"disabled\") isDisabled: boolean = false;\r\n\r\n  /**\r\n   * Template for displaying the title of the card.\r\n   *```\r\n   * <mefdev-card-simple>\r\n   *   <ng-template #card_title>\r\n   *     <h3>Card Title</h3>\r\n   *   </ng-template>\r\n   * </mefdev-card-simple>\r\n   *```\r\n   */\r\n  @ContentChild(\"card_title\") card_title: TemplateRef<void>;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<div class=\"md-card-simple\" [class.md-card-simple--disabled]=\"isDisabled\">\r\n  <div class=\"md-card-simple__section md-card-simple__section--header\" *ngIf=\"card_title as tpl\">\r\n    <ng-template [ngTemplateOutlet]=\"tpl\"></ng-template>\r\n  </div>\r\n\r\n  <div class=\"md-card-simple__section md-card-simple__section--content\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n\r\n  <!-- optional named slot for actions -->\r\n  <div class=\"md-card-simple__section md-card-simple__section--actions\">\r\n    <ng-content select=\"[card-actions]\"></ng-content>\r\n  </div>\r\n</div>\r\n","export function toBoolean(value: any): boolean {\r\n  return value === '' || (value && value !== 'false');\r\n}\r\n","/* tslint:disable:no-any */\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { MefDevOptionComponent } from \"./option.component\";\r\n\r\n@Pipe({\r\n    name: \"OptionPipe\",\r\n    standalone: false\r\n})\r\nexport class OptionPipe implements PipeTransform {\r\n  // TODO: enable type checking for this method\r\n  transform(options: MefDevOptionComponent[], value: any): any {\r\n    if (value.searchText) {\r\n      let _options = options.filter(\r\n        option =>\r\n          option.Label &&\r\n          option.Label.toLowerCase().indexOf(value.searchText.toLowerCase()) !==\r\n            -1\r\n      );\r\n      if (value.tags) {\r\n        _options = options.filter(\r\n          option =>\r\n            option.Label &&\r\n            option.Label.toLowerCase() === value.searchText.toLowerCase()\r\n        );\r\n      }\r\n      if (_options.length) {\r\n        return _options;\r\n      } else {\r\n        return [\r\n          ({\r\n            Value: value.value,\r\n            _value: value.value,\r\n            Disabled: value.disabled,\r\n            _disabled: value.disabled,\r\n            Label: value.notFoundContent,\r\n            _label: value.notFoundContent\r\n          } as any) as MefDevOptionComponent\r\n        ];\r\n      }\r\n    } else {\r\n      return options;\r\n    }\r\n  }\r\n}\r\n","/**\r\n * complex but work well\r\n * TODO: rebuild latter\r\n */\r\nimport { DOWN_ARROW, ENTER, TAB } from \"@angular/cdk/keycodes\";\r\nimport {\r\n  CdkConnectedOverlay,\r\n  ConnectedOverlayPositionChange\r\n} from \"@angular/cdk/overlay\";\r\nimport {\r\n  forwardRef,\r\n  AfterContentChecked,\r\n  AfterContentInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  ChangeDetectorRef\r\n} from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { MefDevOptionComponent } from \"./option.component\";\r\nimport { OptionPipe } from \"./option.pipe\";\r\nimport { toBoolean } from '../util/convert';\r\nimport { animate, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\n\r\n/**\r\n  * Example of usage:\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/controls/select</example-url>\r\n  */\r\n@Component({\r\n    selector: \"mefdev-select\",\r\n    encapsulation: ViewEncapsulation.None,\r\n    templateUrl: \"./select.component.html\",\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MefDevSelectComponent),\r\n            multi: true\r\n        }\r\n    ],\r\n    animations: [trigger('dropDownAnimation', [\r\n            state('bottom', style({\r\n                opacity: 1,\r\n                transform: 'scaleY(1)',\r\n                transformOrigin: '0% 0%'\r\n            })),\r\n            transition('void => bottom', [\r\n                style({\r\n                    opacity: 0,\r\n                    transform: 'scaleY(0)',\r\n                    transformOrigin: '0% 0%'\r\n                }),\r\n                animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n            ]),\r\n            state('top', style({\r\n                opacity: 1,\r\n                transform: 'scaleY(1)',\r\n                transformOrigin: '0% 100%'\r\n            })),\r\n            transition('void => top', [\r\n                style({\r\n                    opacity: 0,\r\n                    transform: 'scaleY(0)',\r\n                    transformOrigin: '0% 100%'\r\n                }),\r\n                animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n            ]),\r\n            transition('* => void', [\r\n                animate('250ms 100ms linear', style({ opacity: 0 }))\r\n            ])\r\n        ]),\r\n        trigger('tagAnimation', [\r\n            state('*', style({ opacity: 1, transform: 'scale(1)' })),\r\n            transition('void => *', [\r\n                style({ opacity: 0, transform: 'scale(0)' }),\r\n                animate('150ms linear')\r\n            ]),\r\n            state('void', style({ opacity: 0, transform: 'scale(0)' })),\r\n            transition('* => void', [\r\n                style({ opacity: 1, transform: 'scale(1)' }),\r\n                animate('150ms linear')\r\n            ])\r\n        ])],\r\n    standalone: false\r\n})\r\nexport class MefDevSelectComponent\r\n  implements\r\n    OnInit,\r\n    AfterContentInit,\r\n    AfterContentChecked,\r\n    ControlValueAccessor {\r\n  private _allowClear = false;\r\n  private _disabled = false;\r\n  private _isTags = false;\r\n  private _isMultiple = false;\r\n  private _keepUnListOptions = false;\r\n  private _showSearch = false;\r\n  _el: HTMLElement;\r\n  _isOpen = false;\r\n  _prefixCls = \"pg-select\";\r\n  _classList: string[] = [];\r\n  _dropDownClassMap: any;\r\n  _dropDownPrefixCls = `${this._prefixCls}-dropdown`;\r\n  _selectionClassMap: any;\r\n  _selectionPrefixCls = `${this._prefixCls}-selection`;\r\n  _size: string;\r\n  _value: string[] | string;\r\n  _placeholder = \"\";\r\n  _notFoundContent = \"No Content\";\r\n  _searchText = \"\";\r\n  _triggerWidth = 0;\r\n  _selectedOption: MefDevOptionComponent;\r\n  _operatingMultipleOption: MefDevOptionComponent;\r\n  _selectedOptions: Set<MefDevOptionComponent> = new Set();\r\n  _options: MefDevOptionComponent[] = [];\r\n  _cacheOptions: MefDevOptionComponent[] = [];\r\n  _filterOptions: MefDevOptionComponent[] = [];\r\n  _tagsOptions: MefDevOptionComponent[] = [];\r\n  _activeFilterOption: MefDevOptionComponent;\r\n  _isMultiInit = false;\r\n  _dropDownPosition: \"top\" | \"center\" | \"bottom\" = \"bottom\";\r\n  _composing = false;\r\n  _mode: any;\r\n  // ngModel Access\r\n  onChange: (value: string | string[]) => void = () => null;\r\n  onTouched: () => void = () => null;\r\n  @ViewChild(\"searchInput\") searchInputElementRef: any;\r\n  @ViewChild(\"trigger\") trigger: ElementRef;\r\n  @ViewChild(\"dropdownUl\") dropdownUl: ElementRef;\r\n  @Output() SearchChange: EventEmitter<string> = new EventEmitter();\r\n  @Output() change: EventEmitter<string> = new EventEmitter();\r\n  @Output() OpenChange: EventEmitter<boolean> = new EventEmitter();\r\n  @Output() ScrollToBottom: EventEmitter<boolean> = new EventEmitter();\r\n  @Input() Filter = true;\r\n  @Input() MaxMultiple = Infinity;\r\n  @Input() FirstDefault: boolean = false;\r\n  @ViewChild(CdkConnectedOverlay) _cdkOverlay: CdkConnectedOverlay;\r\n\r\n  @Input()\r\n  set AllowClear(value: boolean) {\r\n    this._allowClear = toBoolean(value);\r\n  }\r\n\r\n  get AllowClear(): boolean {\r\n    return this._allowClear;\r\n  }\r\n\r\n  @Input()\r\n  set KeepUnListOptions(value: boolean) {\r\n    this._keepUnListOptions = toBoolean(value);\r\n  }\r\n\r\n  get KeepUnListOptions(): boolean {\r\n    return this._keepUnListOptions;\r\n  }\r\n\r\n  @Input()\r\n  set Mode(value: string) {\r\n    this._mode = value;\r\n    if (this._mode === \"multiple\") {\r\n      this.Multiple = true;\r\n    } else if (this._mode === \"tags\") {\r\n      this.Tags = true;\r\n    } else if (this._mode === \"combobox\") {\r\n      this.ShowSearch = true;\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  set Multiple(value: boolean) {\r\n    this._isMultiple = toBoolean(value);\r\n    if (this._isMultiple) {\r\n      this.ShowSearch = true;\r\n    }\r\n  }\r\n\r\n  get Multiple(): boolean {\r\n    return this._isMultiple;\r\n  }\r\n\r\n  @Input()\r\n  set PlaceHolder(value: string) {\r\n    this._placeholder = value;\r\n  }\r\n\r\n  get PlaceHolder(): string {\r\n    return this._placeholder;\r\n  }\r\n\r\n  @Input()\r\n  set NotFoundContent(value: string) {\r\n    this._notFoundContent = value;\r\n  }\r\n\r\n  get NotFoundContent(): string {\r\n    return this._notFoundContent;\r\n  }\r\n\r\n  @Input()\r\n  set Size(value: string) {\r\n     // @ts-ignore\r\n    this._size = { large: \"lg\", small: \"sm\" }[value];\r\n    this.setClassMap();\r\n  }\r\n\r\n  get Size(): string {\r\n    return this._size;\r\n  }\r\n\r\n  @Input()\r\n  set ShowSearch(value: boolean) {\r\n    this._showSearch = toBoolean(value);\r\n  }\r\n\r\n  get ShowSearch(): boolean {\r\n    return this._showSearch;\r\n  }\r\n\r\n  @Input()\r\n  set Tags(value: boolean) {\r\n    const isTags = toBoolean(value);\r\n    this._isTags = isTags;\r\n    this.Multiple = isTags;\r\n  }\r\n\r\n  get Tags(): boolean {\r\n    return this._isTags;\r\n  }\r\n\r\n  @Input()\r\n  set Disabled(value: boolean) {\r\n    this._disabled = toBoolean(value);\r\n    this.closeDropDown();\r\n    this.setClassMap();\r\n  }\r\n\r\n  get Disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n\r\n  @Input()\r\n  set Open(value: boolean) {\r\n    const isOpen = toBoolean(value);\r\n    if (this._isOpen === isOpen) {\r\n      return;\r\n    }\r\n    if (isOpen) {\r\n      this.scrollToActive();\r\n      this._setTriggerWidth();\r\n    }\r\n    this._isOpen = isOpen;\r\n    this.OpenChange.emit(this._isOpen);\r\n    this.setClassMap();\r\n    if (this._isOpen) {\r\n      setTimeout(() => {\r\n        this.checkDropDownScroll();\r\n      });\r\n    }\r\n  }\r\n\r\n  get Open(): boolean {\r\n    return this._isOpen;\r\n  }\r\n\r\n  /** new -option insert or new tags insert */\r\n   // @ts-ignore\r\n  addOption = option => {\r\n    this._options.push(option);\r\n    if (!this._isTags) {\r\n      if (option.Value) {\r\n        this.updateSelectedOption(this._value);\r\n      } else {\r\n        this.forceUpdateSelectedOption(this._value);\r\n      }\r\n    }\r\n  };\r\n\r\n  /** -option remove or tags remove */\r\n  removeOption(option: MefDevOptionComponent): void {\r\n    this._options.splice(this._options.indexOf(option), 1);\r\n    if (!this._isTags) {\r\n      this.forceUpdateSelectedOption(this._value);\r\n    }\r\n  }\r\n\r\n  /** dropdown position changed */\r\n  onPositionChange(position: ConnectedOverlayPositionChange): void {\r\n    this._dropDownPosition = position.connectionPair.originY;\r\n  }\r\n\r\n  compositionStart(): void {\r\n    this._composing = true;\r\n  }\r\n\r\n  compositionEnd(): void {\r\n    this._composing = false;\r\n  }\r\n\r\n  /** clear single selected option */\r\n  clearSelect($event?: MouseEvent): void {\r\n    if ($event) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n    } // @ts-ignore\r\n    this._selectedOption = null; // @ts-ignore\r\n    this.Value = null; // @ts-ignore\r\n    this.onChange(null);\r\n  }\r\n\r\n  /** click dropdown option by user */\r\n  clickOption(option: MefDevOptionComponent, $event?: MouseEvent): void {\r\n    if (!option) {\r\n      return;\r\n    }\r\n    this.chooseOption(option, true, $event);\r\n    this.clearSearchText();\r\n    if (!this._isMultiple) {\r\n      this.Open = false;\r\n    }\r\n  }\r\n\r\n  /** choose option */\r\n  chooseOption(\r\n    option: MefDevOptionComponent,\r\n    isUserClick: boolean = false,\r\n    $event?: MouseEvent\r\n  ): void {\r\n    if ($event) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n    }\r\n    this._activeFilterOption = option;\r\n    if (option && !option.Disabled) {\r\n      if (!this.Multiple) {\r\n        this._selectedOption = option;\r\n        this._value = option.Value;\r\n        if (isUserClick) {\r\n          this.change.next(this._value);\r\n          this.onChange(option.Value);\r\n        }\r\n      } else {\r\n        if (isUserClick) {\r\n          this.isInSet(this._selectedOptions, option)\r\n            ? this.unSelectMultipleOption(option)\r\n            : this.selectMultipleOption(option);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  updateWidth(element: HTMLInputElement, text: string): void {\r\n    if (text) {\r\n      /** wait for scroll width change */ // @ts-ignore\r\n      setTimeout(_ => {\r\n        this._renderer.setStyle(element, \"width\", `${element.scrollWidth}px`);\r\n      });\r\n    } else {\r\n      this._renderer.removeStyle(element, \"width\");\r\n    }\r\n  }\r\n\r\n  /** determine if option in set */\r\n  isInSet(\r\n    set: Set<MefDevOptionComponent>,\r\n    option: MefDevOptionComponent\r\n  ): MefDevOptionComponent { // @ts-ignore\r\n    return (Array.from(set) as MefDevOptionComponent[]).find(\r\n      (data: MefDevOptionComponent) => data.Value === option.Value\r\n    );\r\n  }\r\n\r\n  /** cancel select multiple option */ // @ts-ignore\r\n  unSelectMultipleOption = (option, $event?, emitChange = true) => {\r\n    this._operatingMultipleOption = option;\r\n    this._selectedOptions.delete(option);\r\n    if (emitChange) {\r\n      this.emitMultipleOptions();\r\n    }\r\n\r\n    // 对Tag进行特殊处理\r\n    if (\r\n      this._isTags &&\r\n      this._options.indexOf(option) !== -1 &&\r\n      this._tagsOptions.indexOf(option) !== -1\r\n    ) {\r\n      this.removeOption(option);\r\n      this._tagsOptions.splice(this._tagsOptions.indexOf(option), 1);\r\n    }\r\n    if ($event) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n    }\r\n  };\r\n\r\n  /** select multiple option */\r\n  selectMultipleOption(option: MefDevOptionComponent, $event?: MouseEvent): void {\r\n    /** if tags do push to tag option */\r\n    if (\r\n      this._isTags &&\r\n      this._options.indexOf(option) === -1 &&\r\n      this._tagsOptions.indexOf(option) === -1\r\n    ) {\r\n      this.addOption(option);\r\n      this._tagsOptions.push(option);\r\n    }\r\n    this._operatingMultipleOption = option;\r\n    if (this._selectedOptions.size < this.MaxMultiple) {\r\n      this._selectedOptions.add(option);\r\n    }\r\n    this.emitMultipleOptions();\r\n\r\n    if ($event) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n    }\r\n  }\r\n\r\n  /** emit multiple options */\r\n  emitMultipleOptions(): void {\r\n    if (this._isMultiInit) {\r\n      return;\r\n    }\r\n    const arrayOptions = Array.from(this._selectedOptions);\r\n    this._value = arrayOptions.map(item => item.Value);\r\n    this.onChange(this._value);\r\n  }\r\n\r\n  /** update selected option when add remove option etc */\r\n  updateSelectedOption(\r\n    currentModelValue: string | string[],\r\n    triggerByNgModel: boolean = false\r\n  ): void {\r\n    if (currentModelValue == null) {\r\n      return;\r\n    }\r\n    if (this.Multiple) {\r\n      const selectedOptions = this._options.filter(item => {\r\n        return item != null && currentModelValue.indexOf(item.Value) !== -1;\r\n      });\r\n      if ((this.KeepUnListOptions || this.Tags) && !triggerByNgModel) {\r\n        const _selectedOptions = Array.from(this._selectedOptions);\r\n        selectedOptions.forEach(option => {\r\n          const _exist = _selectedOptions.some(\r\n            item => item._value == option._value\r\n          );\r\n          if (!_exist) {\r\n            this._selectedOptions.add(option);\r\n          }\r\n        });\r\n      } else {\r\n        this._selectedOptions = new Set();\r\n        selectedOptions.forEach(option => {\r\n          this._selectedOptions.add(option);\r\n        });\r\n      }\r\n    } else {\r\n      const selectedOption = this._options.filter(item => {\r\n        return item != null && item.Value == currentModelValue;\r\n      });\r\n      this.chooseOption(selectedOption[0]);\r\n    }\r\n  }\r\n\r\n  forceUpdateSelectedOption(value: string | string[]): void {\r\n    /** trigger dirty check */ // @ts-ignore\r\n    setTimeout(_ => {\r\n      this.updateSelectedOption(value);\r\n    });\r\n  }\r\n\r\n  get Value(): string | string[] {\r\n    return this._value;\r\n  }\r\n\r\n  set Value(value: string | string[]) {\r\n    this._updateValue(value);\r\n  }\r\n\r\n  clearAllSelectedOption(emitChange: boolean = true): void {\r\n    this._selectedOptions.forEach(item => {\r\n      this.unSelectMultipleOption(item, null, emitChange);\r\n    });\r\n  }\r\n\r\n  handleKeyEnterEvent(event: KeyboardEvent): void {\r\n    /** when composing end */\r\n    if (!this._composing && this._isOpen) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      this.updateFilterOption(false);\r\n      this.clickOption(this._activeFilterOption);\r\n    }\r\n  }\r\n\r\n  handleKeyBackspaceEvent(event: KeyboardEvent): void {\r\n    if (!this._searchText && !this._composing && this._isMultiple) {\r\n      event.preventDefault();\r\n      const lastOption = Array.from(this._selectedOptions).pop();\r\n      this.unSelectMultipleOption(lastOption);\r\n    }\r\n  }\r\n\r\n  handleKeyDownEvent($event: MouseEvent): void {\r\n    if (this._isOpen) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n      this._activeFilterOption = this.nextOption(\r\n        this._activeFilterOption,\r\n        this._filterOptions.filter(w => !w.Disabled)\r\n      );\r\n      this.scrollToActive();\r\n    }\r\n  }\r\n\r\n  handleKeyUpEvent($event: MouseEvent): void {\r\n    if (this._isOpen) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n      this._activeFilterOption = this.preOption(\r\n        this._activeFilterOption,\r\n        this._filterOptions.filter(w => !w.Disabled)\r\n      );\r\n      this.scrollToActive();\r\n    }\r\n  }\r\n\r\n  preOption(\r\n    option: MefDevOptionComponent,\r\n    options: MefDevOptionComponent[]\r\n  ): MefDevOptionComponent {\r\n    return options[options.indexOf(option) - 1] || options[options.length - 1];\r\n  }\r\n\r\n  nextOption(\r\n    option: MefDevOptionComponent,\r\n    options: MefDevOptionComponent[]\r\n  ): MefDevOptionComponent {\r\n    return options[options.indexOf(option) + 1] || options[0];\r\n  }\r\n\r\n  clearSearchText(): void {\r\n    this._searchText = \"\";\r\n    this.updateFilterOption();\r\n  }\r\n\r\n  updateFilterOption(updateActiveFilter: boolean = true): void {\r\n    if (this.Filter) {\r\n      this._filterOptions = new OptionPipe().transform(this._options, {\r\n        searchText: this._searchText,\r\n        tags: this._isTags,\r\n        notFoundContent: this._isTags\r\n          ? this._searchText\r\n          : this._notFoundContent,\r\n        disabled: !this._isTags,\r\n        value: this._isTags ? this._searchText : \"disabled\"\r\n      });\r\n    } else {\r\n      this._filterOptions = this._options;\r\n    }\r\n\r\n    /** TODO: cause pre & next key selection not work */\r\n    if (updateActiveFilter && !this._selectedOption) {\r\n      this._activeFilterOption = this._filterOptions[0];\r\n    }\r\n  }\r\n\r\n  onSearchChange(searchValue: string): void {\r\n    this.SearchChange.emit(searchValue);\r\n  }\r\n\r\n  @HostListener(\"click\", [\"$event\"])\r\n  onClick(e: MouseEvent): void {\r\n    e.preventDefault();\r\n    if (!this._disabled) {\r\n      this.Open = !this.Open;\r\n      if (this.ShowSearch) {\r\n        /** wait for search display */ // @ts-ignore\r\n        setTimeout(_ => {\r\n          this.searchInputElementRef.nativeElement.focus();\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  @HostListener(\"keydown\", [\"$event\"])\r\n  onKeyDown(e: KeyboardEvent): void {\r\n    const keyCode = e.keyCode;\r\n    if (keyCode === TAB && this.Open) {\r\n      this.Open = false;\r\n      return;\r\n    }\r\n    if ((keyCode !== DOWN_ARROW && keyCode !== ENTER) || this.Open) {\r\n      return;\r\n    }\r\n    e.preventDefault();\r\n    if (!this._disabled) {\r\n      this.Open = true;\r\n      if (this.ShowSearch) {\r\n        /** wait for search display */ // @ts-ignore\r\n        setTimeout(_ => {\r\n          this.searchInputElementRef.nativeElement.focus();\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  closeDropDown(): void {\r\n    if (!this.Open) {\r\n      return;\r\n    }\r\n    this.onTouched();\r\n    if (this.Multiple) {\r\n      this._renderer.removeStyle(\r\n        this.searchInputElementRef.nativeElement,\r\n        \"width\"\r\n      );\r\n    }\r\n    this.clearSearchText();\r\n    this.Open = false;\r\n  }\r\n\r\n  setClassMap(): void {\r\n    this._classList.forEach(_className => {\r\n      this._renderer.removeClass(this._el, _className);\r\n    }); // @ts-ignore\r\n    this._classList = [\r\n      this._prefixCls,\r\n      this._mode === \"combobox\" && `${this._prefixCls}-combobox`,\r\n      !this._disabled && `${this._prefixCls}-enabled`,\r\n      this._disabled && `${this._prefixCls}-disabled`,\r\n      this._isOpen && `${this._prefixCls}-open`,\r\n      this._showSearch && `${this._prefixCls}-show-search`,\r\n      this._size && `${this._prefixCls}-${this._size}`\r\n    ].filter(item => {\r\n      return !!item;\r\n    });\r\n    this._classList.forEach(_className => {\r\n      this._renderer.addClass(this._el, _className);\r\n    });\r\n    this._selectionClassMap = {\r\n      [this._selectionPrefixCls]: true,\r\n      [`${this._selectionPrefixCls}--single`]: !this.Multiple,\r\n      [`${this._selectionPrefixCls}--multiple`]: this.Multiple\r\n    };\r\n  }\r\n\r\n  setDropDownClassMap(): void {\r\n    this._dropDownClassMap = {\r\n      [this._dropDownPrefixCls]: true,\r\n      [\"component-select\"]: this._mode === \"combobox\",\r\n      [`${this._dropDownPrefixCls}--single`]: !this.Multiple,\r\n      [`${this._dropDownPrefixCls}--multiple`]: this.Multiple,\r\n      [`${this._dropDownPrefixCls}-placement-bottomLeft`]:\r\n        this._dropDownPosition === \"bottom\",\r\n      [`${this._dropDownPrefixCls}-placement-topLeft`]:\r\n        this._dropDownPosition === \"top\"\r\n    };\r\n  }\r\n\r\n  scrollToActive(): void {\r\n    /** wait for dropdown display */ // @ts-ignore\r\n    setTimeout(_ => {\r\n      if (this._activeFilterOption && this._activeFilterOption.Value) {\r\n        const index = this._filterOptions.findIndex(\r\n          option => option.Value === this._activeFilterOption.Value\r\n        );\r\n        try {\r\n          const scrollPane = this.dropdownUl.nativeElement.children[\r\n            index\r\n          ] as HTMLLIElement;\r\n          // TODO: scrollIntoViewIfNeeded is not a standard API, why doing so?\r\n          /* tslint:disable-next-line:no-any */\r\n          (scrollPane as any).scrollIntoViewIfNeeded(false);\r\n        } catch (e) {}\r\n      }\r\n    });\r\n  }\r\n\r\n  flushComponentState(): void {\r\n    this.updateFilterOption();\r\n    if (!this.Multiple) {\r\n      this.updateSelectedOption(this._value);\r\n    } else {\r\n      if (this._value) {\r\n        this.updateSelectedOption(this._value);\r\n      }\r\n    }\r\n  }\r\n\r\n  _setTriggerWidth(): void {\r\n    this._triggerWidth = this._getTriggerRect().width;\r\n    /** should remove after after https://github.com/angular/material2/pull/8765 merged **/\r\n    if (this._cdkOverlay && this._cdkOverlay.overlayRef) {\r\n      this._cdkOverlay.overlayRef.updateSize({\r\n        width: this._triggerWidth\r\n      });\r\n    }\r\n  }\r\n\r\n  _getTriggerRect(): ClientRect {\r\n    return this.trigger.nativeElement.getBoundingClientRect();\r\n  }\r\n\r\n  writeValue(value: string | string[]): void {\r\n    this._updateValue(value, false);\r\n  }\r\n\r\n  registerOnChange(fn: (value: string | string[]) => void): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: () => void): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.Disabled = isDisabled;\r\n  }\r\n\r\n  dropDownScroll(ul: HTMLUListElement): void {\r\n    if (ul && ul.scrollHeight - ul.scrollTop === ul.clientHeight) {\r\n      this.ScrollToBottom.emit(true);\r\n    }\r\n  }\r\n\r\n  checkDropDownScroll(): void {\r\n    if (\r\n      this.dropdownUl &&\r\n      this.dropdownUl.nativeElement.scrollHeight ===\r\n        this.dropdownUl.nativeElement.clientHeight\r\n    ) {\r\n      this.ScrollToBottom.emit(true);\r\n    }\r\n  }\r\n\r\n  constructor(\r\n    private _elementRef: ElementRef,\r\n    private _renderer: Renderer2,\r\n    private cDRef: ChangeDetectorRef\r\n  ) {\r\n    this._el = this._elementRef.nativeElement;\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    if (this._value != null) {\r\n      this.flushComponentState();\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.updateFilterOption();\r\n    this.setClassMap();\r\n    this.setDropDownClassMap();\r\n  }\r\n\r\n  ngAfterContentChecked(): void {\r\n    if (this._cacheOptions !== this._options) {\r\n      /** update filter option after every content check cycle */\r\n      this.updateFilterOption();\r\n      this._cacheOptions = this._options;\r\n    } else {\r\n      this.updateFilterOption(false);\r\n    }\r\n\r\n    if (this.FirstDefault) {\r\n      if (!this._value && this._options) {\r\n        if (this._options[0] !== undefined && this._options[0].Value) {\r\n          this.chooseOption(this._options[0], false);\r\n          setTimeout(() => {\r\n            this.onChange(this._options[0].Value);\r\n          });\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  private _updateValue(\r\n    value: string[] | string,\r\n    emitChange: boolean = true\r\n  ): void {\r\n    if (this._value === value) {\r\n      return;\r\n    }\r\n    if (value == null && this.Multiple) {\r\n      this._value = [];\r\n    } else {\r\n      this._value = value;\r\n    }\r\n    if (!this.Multiple) {\r\n      if (value == null) { // @ts-ignore\r\n        this._selectedOption = null;\r\n      } else {\r\n        this.updateSelectedOption(value);\r\n      }\r\n    } else {\r\n      if (value) {\r\n        if (value.length === 0) {\r\n          this.clearAllSelectedOption(emitChange);\r\n        } else {\r\n          this.updateSelectedOption(value, true);\r\n        }\r\n      } else if (value == null) {\r\n        this.clearAllSelectedOption(emitChange);\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div tabindex=\"0\" #trigger cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" [ngClass]=\"_selectionClassMap\"\r\n  (keydown.Enter)=\"handleKeyEnterEvent($event)\" (keydown.Backspace)=\"handleKeyBackspaceEvent($event)\"\r\n  (keydown.ArrowUp)=\"handleKeyUpEvent($event)\" (keydown.ArrowDown)=\"handleKeyDownEvent($event)\">\r\n\r\n    <!-- Увесь селект-->\r\n  <div class=\"pg-select-selection__rendered\" *ngIf=\"!ShowSearch\">\r\n    <div class=\"pg-select-selection__placeholder\">\r\n      <ng-template [ngIf]=\"!_selectedOption\">\r\n        {{ PlaceHolder }}\r\n      </ng-template>\r\n    </div>\r\n    <div class=\"pg-select-selection-selected-value\">\r\n      {{ _selectedOption?.Label }}\r\n    </div>\r\n  </div>\r\n  <!--Cписок options-->\r\n  <div class=\"pg-select-selection__rendered\" *ngIf=\"ShowSearch\">\r\n    <div [hidden]=\"_searchText||(!Open&&_selectedOption)||_selectedOptions.size\"\r\n      class=\"pg-select-selection__placeholder\">\r\n      <ng-template [ngIf]=\"(!_composing)&&_selectedOption\">\r\n        {{ _selectedOption.Label }}\r\n      </ng-template>\r\n      <ng-template [ngIf]=\"(!_composing)&&(!_selectedOption)\">\r\n        {{ PlaceHolder }}\r\n      </ng-template>\r\n    </div>\r\n\r\n\r\n    <!--Мультиселект-->\r\n    <ul *ngIf=\"Multiple\"> \r\n      <li *ngFor=\"let option of _selectedOptions\" [@tagAnimation] [attr.title]=\"option?.Label || option?.Value\"\r\n        class=\"pg-select-selection__choice\" style=\"-webkit-user-select: none;\">\r\n        <span class=\"pg-select-selection__choice__remove\" (click)=\"unSelectMultipleOption(option,$event)\"></span>\r\n        <div class=\"pg-select-selection__choice__content\">{{ option?.Label }}</div>\r\n      </li>\r\n      <li class=\"pg-select-search pg-select-search--inline\">\r\n        <div class=\"pg-select-search__field__wrap\">\r\n          <input class=\"pg-select-search__field\" (compositionstart)=\"compositionStart()\"\r\n            (compositionend)=\"compositionEnd();updateWidth(searchInput,_searchText);\" [(ngModel)]=\"_searchText\"\r\n            (ngModelChange)=\"updateFilterOption();onSearchChange($event);\"\r\n            (keydown)=\"updateWidth(searchInput,_searchText)\" (input)=\"updateWidth(searchInput,_searchText)\"\r\n            (blur)=\"onTouched()\" #searchInput>\r\n          <span class=\"pg-select-search__field__mirror\"></span></div>\r\n      </li>\r\n    </ul>\r\n    <div *ngIf=\"!Multiple\" class=\"pg-select-selection-selected-value\" [hidden]=\"!(_selectedOption?.Label)||Open\">\r\n      {{ _selectedOption?.Label }}\r\n    </div>\r\n    <div *ngIf=\"!Multiple\" [hidden]=\"!Open\" class=\"pg-select-search pg-select-search--inline\">\r\n      <div class=\"pg-select-search__field__wrap\">\r\n        <input class=\"pg-select-search__field\" (blur)=\"onTouched()\" (compositionstart)=\"compositionStart()\"\r\n          (compositionend)=\"compositionEnd()\" [(ngModel)]=\"_searchText\"\r\n          (ngModelChange)=\"updateFilterOption();onSearchChange($event);\" #searchInput>\r\n        <span class=\"pg-select-search__field__mirror\"></span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <span (click)=\"onTouched();clearSelect($event)\" class=\"pg-select-selection__clear\" style=\"-webkit-user-select: none;\"\r\n    *ngIf=\"_selectedOption?.Label&&AllowClear&&!Multiple\">\r\n  </span>\r\n  <span class=\"pg-select-arrow\"><b></b></span>\r\n</div>\r\n<ng-template cdkConnectedOverlay cdkConnectedOverlayHasBackdrop [cdkConnectedOverlayOrigin]=\"origin\" cdkConnectedOverlayBackdropClass=\"backdrop\"\r\n  (backdropClick)=\"closeDropDown()\" (detach)=\"closeDropDown();\" (positionChange)=\"onPositionChange($event)\"\r\n  [cdkConnectedOverlayWidth]=\"_triggerWidth\" [cdkConnectedOverlayOpen]=\"_isOpen\">\r\n  <div [ngClass]=\"_dropDownClassMap\" [@dropDownAnimation]=\"_dropDownPosition\">\r\n    <div style=\"overflow: auto;\">\r\n      <ul class=\"pg-select-dropdown-menu pg-select-dropdown-menu-vertical pg-select-dropdown-menu-root\" #dropdownUl\r\n        (scroll)=\"dropDownScroll(dropdownUl)\">\r\n        <li *ngFor=\"let option of _filterOptions\" [class.pg-select-dropdown-menu-item-disabled]=\"option.Disabled\"\r\n          [class.pg-select-dropdown-menu-item-active]=\"option.Value == _activeFilterOption?.Value\"\r\n          [class.pg-select-dropdown-menu-item-selected]=\"(option.Value==(_selectedOption?.Value))||(isInSet(_selectedOptions,option))\"\r\n          class=\"pg-select-dropdown-menu-item\" (click)=\"clickOption(option,$event)\">\r\n          <ng-template *ngIf=\"option.OptionTemplate\" [ngTemplateOutlet]=\"option.OptionTemplate\">\r\n          </ng-template>\r\n          <ng-template [ngIf]=\"!option.OptionTemplate\">\r\n            {{ option.Label }}\r\n          </ng-template>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</ng-template>","import {\r\n\tComponent,\r\n\tContentChild,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tViewEncapsulation\r\n} from \"@angular/core\";\r\n\r\n//import { toBoolean } from \"@shared/utils/convert\";\r\nimport { MefDevSelectComponent } from \"./select.component\";\r\nimport { toBoolean } from \"./../util/convert\";\r\n\r\n\r\n/**\r\n * @skipTemplateDoc true\r\n * Component for representing an option in a dropdown list.\r\n *\r\n *```\r\n * <mefdev-select>\r\n * <mefdev-option Value=\"1\" Label=\"Option 1\"></mefdev-option>\r\n * <mefdev-option Value=\"2\" Label=\"Option 2\"></mefdev-option>\r\n * <mefdev-option Value=\"3\" Label=\"Option 3\"></mefdev-option>\r\n * </mefdev-select>\r\n *```\r\n *\r\n */\r\n@Component({\r\n    selector: \"mefdev-option\",\r\n    encapsulation: ViewEncapsulation.None,\r\n    templateUrl: \"./option.component.html\",\r\n    styleUrls: [],\r\n    standalone: false\r\n})\r\nexport class MefDevOptionComponent implements OnDestroy, OnInit {\r\n\tprivate _disabled = false;\r\n\r\n\t_value: string;\r\n\t_label: string;\r\n\r\n\t/**\r\n   \t* Template for the content of the option.\r\n   \t*/\r\n\t@ContentChild(\"OptionTemplate\") OptionTemplate: any;\r\n\r\n\t  /**\r\n   * The value of the option.\r\n   */\r\n\t@Input()\r\n\tset Value(value: string) {\r\n\t\tif (this._value === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._value = value;\r\n\t}\r\n\r\n\tget Value(): string {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\t/**\r\n   * The label of the option.\r\n   */\r\n\t@Input()\r\n\tset Label(value: string) {\r\n\t\tif (this._label === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._label = value;\r\n\t}\r\n\r\n\tget Label(): string {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n   * Indicates whether the option is disabled.\r\n   */\r\n\t@Input()\r\n\tset Disabled(value: boolean) {\r\n\t\tthis._disabled = toBoolean(value);\r\n\t}\r\n\r\n\tget Disabled(): boolean {\r\n\t\treturn this._disabled;\r\n\t}\r\n\r\n\tconstructor(private _Select: MefDevSelectComponent) {}\r\n\r\n\t/**\r\n   * Initialization lifecycle hook.\r\n   * Adds the option to the dropdown list.\r\n   */\r\n\tngOnInit(): void {\r\n\t\tthis._Select.addOption(this);\r\n\t}\r\n\r\n\t/**\r\n   * Destruction lifecycle hook.\r\n   * Removes the option from the dropdown list.\r\n   */\r\n\tngOnDestroy(): void {\r\n\t\tthis._Select.removeOption(this);\r\n\t}\r\n}\r\n","<ng-content></ng-content>","import { OverlayModule } from \"@angular/cdk/overlay\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MefDevOptionComponent } from \"./option.component\";\r\nimport { OptionPipe } from \"./option.pipe\";\r\nimport { MefDevSelectComponent } from \"./select.component\";\r\n\r\n@NgModule({\r\n  imports: [CommonModule, FormsModule, OverlayModule],\r\n  declarations: [OptionPipe, MefDevOptionComponent, MefDevSelectComponent],\r\n  exports: [OptionPipe, MefDevOptionComponent, MefDevSelectComponent]\r\n})\r\nexport class MefDevSelectModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MefDevSelectModule } from '../../pg-components/select/select.module';\r\nimport { MefDevCollapseModule } from '../collapse/collapse.module';\r\nimport { CardSimpleComponent } from './card-simple/card-simple.component';\r\n\r\nexport const mefDevCardComponents = [CardSimpleComponent];\r\n@NgModule({\r\n  declarations: mefDevCardComponents,\r\n  exports: mefDevCardComponents,\r\n  imports: [\r\n    CommonModule,\r\n    MefDevCollapseModule,\r\n\t\tMefDevSelectModule,\r\n  ]\r\n})\r\nexport class MefDevCardModule { }\r\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CommonModule } from \"@angular/common\"; // add for static analizer bug fix\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n\r\n/**\r\n  * Fill Component for a modal window.\r\n  *\r\n  * Example of usage:\r\n  * ```\r\n  * <mefdev-fill-modal #pin_modal>\r\n  *   <!-- Modal header content -->\r\n  *   <ng-template #modal_header>\r\n  *     <!-- Header content goes here -->\r\n  *   </ng-template>\r\n  *\r\n  *   <!-- Modal footer content -->\r\n  *   <ng-template #modal_footer>\r\n  *     <!-- Footer content goes here -->\r\n  *   </ng-template>\r\n  * </mefdev-fill-modal>\r\n  * ```\r\n  *\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/modals/fill</example-url>\r\n  */\r\n@Component({\r\n    selector: 'mefdev-fill-modal',\r\n    templateUrl: './fill.component.html',\r\n    styleUrls: ['./fill.component.scss'],\r\n    animations: [\r\n        trigger('dialog', [\r\n            transition('void => *', [\r\n                style({ transform: 'scale3d(.3, .3, .3)' }),\r\n                animate(100)\r\n            ]),\r\n            transition('* => void', [\r\n                animate(100, style({ transform: 'scale3d(.0, .0, .0)' }))\r\n            ])\r\n        ])\r\n    ],\r\n    standalone: false\r\n})\r\nexport class FillComponent implements OnInit {\r\n  protected visible: boolean = false;\r\n\r\n  @ViewChild('dialog', { static: false }) protected dialog?: ElementRef;\r\n\r\n\r\n  /**\r\n  * The header template of the modal window.\r\n  * ```\r\n  * <mefdev-fill-modal #pin_modal>\r\n   *   <ng-template #modal_header>\r\n   *     <!-- Header content goes here -->\r\n   *   </ng-template>\r\n   * </mefdev-fill-modal>\r\n  * ```\r\n  */\r\n  @ContentChild(\"modal_header\") modal_header: TemplateRef<void>;\r\n\r\n  /**\r\n  * The footer template of the modal window.\r\n  * ```\r\n  * <mefdev-fill-modal #pin_modal>\r\n   *   <ng-template #modal_footer>\r\n   *     <!-- Footer content goes here -->\r\n   *   </ng-template>\r\n   * </mefdev-fill-modal>\r\n  * ```\r\n  */\r\n  @ContentChild(\"modal_footer\") modal_footer: TemplateRef<void>;\r\n\r\n  /**\r\n   * Input parameter that determines whether to show the modal window.\r\n   */\r\n  @Input() set show(val: boolean){\r\n    if(val){\r\n      this.showModal();\r\n    }\r\n    else{\r\n      this.hideModal();\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Event emitted when the modal is change state.\r\n   * Emits a boolean value indicating if the modal is closed(false), or open(true).\r\n   * Example:\r\n   * ```\r\n   * <mefdev-fill-modal (visibleChange)=\"onModalClosed($event)\"></mefdev-fill-modal>\r\n   * ```\r\n   */\r\n  @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  /**\r\n   * Shows the modal state.\r\n   * Return a boolean value indicating if the modal is closed(false), or open(true)\r\n   */\r\n  getModalState(): boolean{\r\n    return this.visible;\r\n  }\r\n\r\n  /**\r\n   * Shows the modal.\r\n   * Call this method to open the modal window.\r\n   */\r\n  public showModal(){\r\n    this.visible = true;\r\n    this.visibleChange.emit(this.visible);\r\n  }\r\n\r\n  /**\r\n   * Hides the modal.\r\n   * Call this method to close the modal window.\r\n   */\r\n  public hideModal(){\r\n    this.visible = false;\r\n    this.visibleChange.emit(this.visible);\r\n  }\r\n}\r\n","<button *ngIf=\"visible\" (click)=\"hideModal()\" aria-label=\"Close\" class=\"dialog__close-btn\">X</button>\r\n<div [@dialog] *ngIf=\"visible\" class=\"dialog\" #dialog>\r\n\t<div class=\"modal-content\">\r\n    <div class=\"modal-header clearfix text-left\">\r\n          <ng-template [ngTemplateOutlet]=\"modal_header\"></ng-template>\r\n      </div>\r\n      <div class=\"modal-body\">\r\n          <ng-content></ng-content>\r\n      </div>\r\n      <div class=\"modal-footer\">\r\n          <ng-template [ngTemplateOutlet]=\"modal_footer\"></ng-template>\r\n      </div>\r\n  </div>\r\n</div>\r\n<div *ngIf=\"visible\" class=\"overlay\" (click)=\"hideModal()\"></div>\r\n","import { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ModalSize } from '../modal-size.enum';\r\nimport { CommonModule } from \"@angular/common\"; // add for static analizer bug fix\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n  /**\r\n  * A component representing a slide-up modal window.\r\n  *\r\n  * Example of usage:\r\n  *\r\n  * ```\r\n  * <mefdev-slide-up-modal [show]=\"showModal\">\r\n  *   <ng-template #modal_header>\r\n  *     <h4>Modal Header</h4>\r\n  *   </ng-template>\r\n  *   <ng-template #modal_footer>\r\n  *     <button (click)=\"closeModal()\">Close</button>\r\n  *   </ng-template>\r\n  *   <div class=\"modal-body\">\r\n  *     Content goes here...\r\n  *   </div>\r\n  * </mefdev-slide-up-modal>\r\n  * ```\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/modals/slide_up</example-url>\r\n  */\r\n@Component({\r\n    selector: 'mefdev-slide-up-modal',\r\n    templateUrl: './slide-up.component.html',\r\n    styleUrls: ['./slide-up.component.scss'],\r\n    animations: [\r\n        trigger('dialog', [\r\n            transition('void => *', [\r\n                style({ transform: 'scale3d(.3, .3, .3)' }),\r\n                animate(100)\r\n            ]),\r\n            transition('* => void', [\r\n                animate(100, style({ transform: 'scale3d(.0, .0, .0)' }))\r\n            ])\r\n        ])\r\n    ],\r\n    standalone: false\r\n})\r\nexport class SlideUpComponent implements OnInit {\r\n  protected visible: boolean = false;\r\n  /**\r\n   * Reference to the template for the modal header.\r\n   * Use this template to customize the header of the modal.\r\n   */\r\n  @ContentChild(\"modal_header\") modal_header: TemplateRef<void>;\r\n\r\n  /**\r\n   * Reference to the template for the modal footer.\r\n   * Use this template to customize the footer of the modal.\r\n   */\r\n  @ContentChild(\"modal_footer\") modal_footer: TemplateRef<void>;\r\n  /**\r\n   * Flag indicating whether the modal should be shown or hidden.\r\n   * Set it to `true` to show the modal and `false` to hide it.\r\n   */\r\n  @Input() set show(val: boolean){\r\n    if(val){\r\n      this.showModal();\r\n    }\r\n    else{\r\n      this.hideModal();\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Event emitted when the modal is change state.\r\n   * Emits a boolean value indicating if the modal is closed(false), or open(true).\r\n   */\r\n  @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  /**\r\n   * Shows the modal state.\r\n   * Return a boolean value indicating if the modal is closed(false), or open(true)\r\n   */\r\n  getModalState(): boolean{\r\n    return this.visible;\r\n  }\r\n\r\n  /**\r\n   * Shows the modal.\r\n   * Call this method to open the modal window.\r\n   */\r\n  public showModal(){\r\n    this.visible = true;\r\n    this.visibleChange.emit(this.visible);\r\n  }\r\n\r\n  /**\r\n   * Hides the modal.\r\n   * Call this method to close the modal window.\r\n   */\r\n  public hideModal(){\r\n    this.visible = false;\r\n    this.visibleChange.emit(this.visible);\r\n  }\r\n}\r\n","<div [@dialog] *ngIf=\"visible\" class=\"dialog\">\r\n\t<button (click)=\"hideModal()\" aria-label=\"Close\" class=\"dialog__close-btn\">X</button>\r\n\t<div class=\"modal-content\">\r\n    <div class=\"modal-header clearfix text-left\">\r\n          <ng-template [ngTemplateOutlet]=\"modal_header\"></ng-template>\r\n      </div>\r\n      <div class=\"modal-body\">\r\n          <ng-content></ng-content>\r\n      </div>\r\n      <div class=\"modal-footer\">\r\n          <ng-template [ngTemplateOutlet]=\"modal_footer\"></ng-template>\r\n      </div>\r\n  </div>\r\n</div>\r\n<div *ngIf=\"visible\" class=\"overlay\" (click)=\"hideModal()\"></div>\r\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ModalSize } from '../modal-size.enum';\r\nimport { CommonModule } from \"@angular/common\"; // add for static analizer bug fix\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n\r\n/**\r\n   * A component representing a slide-right modal window.\r\n  *\r\n  * Example of usage:\r\n  *\r\n  * ```\r\n  * <mefdev-slide-right-modal [size]=\"ModalSize.lg\" [show]=\"showModal\">\r\n  *   <ng-template #modal_header>\r\n  *     <h4>Modal Header</h4>\r\n  *   </ng-template>\r\n  *   <ng-template #modal_footer>\r\n  *     <button (click)=\"closeModal()\">Close</button>\r\n  *   </ng-template>\r\n  *   <div class=\"modal-body\">\r\n  *     Content goes here...\r\n  *   </div>\r\n  * </mefdev-slide-right-modal>\r\n  * ```\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/modals/slide_right</example-url>\r\n  */\r\n@Component({\r\n    selector: 'mefdev-slide-right-modal',\r\n    templateUrl: './slide-right.component.html',\r\n    styleUrls: ['./slide-right.component.scss'],\r\n    animations: [\r\n        trigger('dialog', [\r\n            transition('void => *', [\r\n                style({ transform: 'translate3d(100%,0,0)' }),\r\n                animate(100)\r\n            ]),\r\n            transition('* => void', [\r\n                animate(100, style({ transform: 'translate3d(100%, 0, 0)' }))\r\n            ])\r\n        ])\r\n    ],\r\n    standalone: false\r\n})\r\nexport class SlideRightComponent implements OnInit {\r\n  protected visible: boolean = false;\r\n\r\n  @ViewChild('dialog') protected dialog: ElementRef;\r\n\r\n  /**\r\n   * Reference to the template for the modal header.\r\n   * Use this template to customize the header of the modal.\r\n   */\r\n  @ContentChild(\"modal_header\") modal_header: TemplateRef<void>;\r\n\r\n  /**\r\n   * Reference to the template for the modal footer.\r\n   * Use this template to customize the footer of the modal.\r\n   */\r\n  @ContentChild(\"modal_footer\") modal_footer: TemplateRef<void>;\r\n\r\n  /**\r\n   * Size of the modal.\r\n   * Defaults to `ModalSize.md`.\r\n   * Possible values: `ModalSize.sm`, `ModalSize.md`, `ModalSize.lg`, `ModalSize.xl`.\r\n   */\r\n  @Input() size:ModalSize = ModalSize.md;\r\n\r\n  /**\r\n   * Flag indicating whether the modal should be shown or hidden.\r\n   * Set it to `true` to show the modal and `false` to hide it.\r\n   */\r\n  @Input() set show(val: boolean){\r\n    if(val){\r\n      this.showModal();\r\n    }\r\n    else{\r\n      this.hideModal();\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Event emitted when the modal is change state.\r\n   * Emits a boolean value indicating if the modal is closed(false), or open(true).\r\n   * Example:\r\n   * ```\r\n   * <mefdev-fill-modal (visibleChange)=\"onModalClosed($event)\"></mefdev-fill-modal>\r\n   * ```\r\n   */\r\n  @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  /**\r\n   * Shows the modal state.\r\n   * Return a boolean value indicating if the modal is closed(false), or open(true)\r\n   */\r\n  getModalState(): boolean{\r\n    return this.visible;\r\n  }\r\n\r\n  /**\r\n   * Shows the modal.\r\n   * Call this method to open the modal window.\r\n   */\r\n  public showModal(){\r\n    this.visible = true;\r\n    this.visibleChange.emit(this.visible);\r\n  }\r\n\r\n  /**\r\n   * Hides the modal.\r\n   * Call this method to close the modal window.\r\n   */\r\n  public hideModal(){\r\n    this.visible = false;\r\n    this.visibleChange.emit(this.visible);\r\n  }\r\n}\r\n","<div [@dialog] *ngIf=\"visible\" class=\"dialog\" #dialog>\r\n\r\n  <div *ngIf=\"modal_header\" class=\"header\">\r\n      <ng-template [ngTemplateOutlet]=\"modal_header\"></ng-template>\r\n  </div>\r\n  <div class=\"body\">\r\n      <ng-content></ng-content>\r\n  </div>\r\n  <div *ngIf=\"modal_footer\" class=\"footer\">\r\n      <ng-template [ngTemplateOutlet]=\"modal_footer\"></ng-template>\r\n  </div>\r\n</div>\r\n\r\n<div *ngIf=\"visible\" class=\"overlay\" (click)=\"hideModal()\"></div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FilteredFieldService } from '../../utils/filtered-field/filtered-field.service';\r\n\r\n\r\n/**\r\n * Component representing the right filter.\r\n */\r\n@Component({\r\n    selector: 'mefdev-right-filter',\r\n    templateUrl: './right-filter.component.html',\r\n    styleUrls: ['./right-filter.component.scss'],\r\n    standalone: false\r\n})\r\nexport class RightFilterComponent implements OnInit {\r\n\r\n  /**\r\n   * Flag indicating whether the right filter is open or closed.\r\n   */\r\n  isOpen: boolean = false;\r\n  \r\n  @Input() showStandartOpenButton: boolean = true;\r\n\r\n  constructor(\r\n    private filteredFieldService: FilteredFieldService,) { }\r\n\r\n  ngOnInit(): void {\r\n    // Subscribe to the open filter event from the FilteredFieldService\r\n    // and update the isOpen flag accordingly.\r\n    this.filteredFieldService.getOpenFilter().subscribe(() => {\r\n      this.isOpen = true;\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Opens or closes the right filter modal.\r\n   */\r\n  openModal(){\r\n    this.isOpen = !this.isOpen;\r\n  }\r\n\r\n  /**\r\n   * Event handler for when the modal is closed.\r\n   * Sets the isOpen flag to false.\r\n   */\r\n  modalIsCloused(){\r\n    this.isOpen = false;\r\n  }\r\n  \r\n}\r\n","<div \r\n*ngIf=\"showStandartOpenButton\"\r\nclass=\"filter-btn\" \r\n(click)=\"openModal()\"\r\n>\r\n    <i class=\"fa fa-filter\" aria-hidden=\"true\"></i>\r\n</div>\r\n\r\n<mefdev-slide-right-modal [show]=\"isOpen\" (isClouse)=\"modalIsCloused()\">\r\n    <ng-content></ng-content>\r\n</mefdev-slide-right-modal>","import { NgModule } from \"@angular/core\";\r\nimport { FillComponent } from './fill/fill.component';\r\nimport { SlideUpComponent } from './slide-up/slide-up.component';\r\nimport { SlideRightComponent } from './slide-right/slide-right.component';\r\n\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { RightFilterComponent } from \"./right-filter/right-filter.component\";\r\nimport { MefDevSelectModule } from '../../pg-components/select/select.module';\r\n\r\n\r\nlet mefDevModalModuleComponents = [\r\n  FillComponent,\r\n  SlideUpComponent,\r\n  SlideRightComponent,\r\n  RightFilterComponent\r\n];\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    MefDevSelectModule\r\n  ],\r\n  exports: mefDevModalModuleComponents,\r\n  declarations: mefDevModalModuleComponents\r\n})\r\nexport class MefDevModalModule {}\r\n","import { AfterViewChecked, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\n\r\n/**\r\n  * A component representing a central page layout.\r\n  *\r\n  * Example of usage:\r\n  *\r\n  * ```\r\n  * <mefdev-central-page [width]=\"'80%'\">\r\n  *   Content goes here...\r\n  * </mefdev-central-page>\r\n  * ```\r\n  *\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/central_page</example-url>\r\n  */\r\n@Component({\r\n    selector: 'mefdev-central-page',\r\n    templateUrl: './central-page.component.html',\r\n    styleUrls: ['./central-page.component.scss'],\r\n    standalone: false\r\n})\r\nexport class CentralPageComponent implements OnInit, OnDestroy, AfterViewChecked {\r\n\r\n  constructor(\r\n  ) {\r\n  }\r\n\r\n  /**\r\n   * The width of the central page.\r\n   * Defaults to '100%'.\r\n   * You can specify the width using CSS units (e.g., '80%', '500px').\r\n   */\r\n  @Input() width: string = '100%';\r\n\r\n  /**\r\n   * Lifecycle hook called just before the component is destroyed.\r\n   * Removes the height style from the main content element.\r\n   */\r\n  ngOnDestroy(): void {\r\n    try{\r\n      document.getElementById('dataMainContent')!.style.height = '';\r\n    }catch(ex){};\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n   /**\r\n   * Lifecycle hook called after the component's view has been checked.\r\n   * Sets the height of the main content element to '100%'.\r\n   */\r\n  ngAfterViewChecked(): void {\r\n    try{\r\n      document.getElementById('dataMainContent')!.style.height = '100%'\r\n    }catch(ex){};\r\n  }\r\n\r\n}\r\n","<div class=\"central-page-container\" [ngStyle]=\"{'width': width}\">\r\n    <div class=\"central-page-content\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>\r\n  ","import { Component, OnInit } from '@angular/core';\r\n\r\n\r\n/**\r\n * A component representing a central page layout.\r\n *\r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-central-page>\r\n *   <mefdev-central-page-row>\r\n *     Content goes here...\r\n *   </mefdev-central-page-row>\r\n * </mefdev-central-page>\r\n * ```\r\n*/\r\n@Component({\r\n    selector: 'mefdev-central-page-row',\r\n    templateUrl: './central-page-row.component.html',\r\n    styleUrls: ['./central-page-row.component.scss'],\r\n    standalone: false\r\n})\r\nexport class CentralPageRowComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<div class=\"central-page-row-container\">\r\n    <ng-content></ng-content>\r\n</div>","import { Component, ContentChild, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n  /**\r\n  * A component representing a table page layout.\r\n  *\r\n  * Example of usage:\r\n  * \r\n  * ```\r\n  * <mefdev-table-page>\r\n  *   <ng-template #filter_colum>\r\n  *     <!-- Content for the filter column -->\r\n  *   </ng-template>\r\n  * </mefdev-table-page>\r\n  * ```\r\n  *  \r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/table_page</example-url>\r\n  */\r\n@Component({\r\n    selector: 'mefdev-table-page',\r\n    templateUrl: './table-page.component.html',\r\n    styleUrls: ['./table-page.component.scss'],\r\n    standalone: false\r\n})\r\nexport class TablePageComponent implements OnInit {\r\n\r\n  /**\r\n    * The template reference to the content of the filter column.\r\n    * ```\r\n    *   <ng-template #filter_colum>\r\n    *     <!-- Content for the filter column -->\r\n    *   </ng-template>\r\n    * ```\r\n  */\r\n  @ContentChild(\"filter_colum\") filter_colum: TemplateRef<void>;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<div class=\"row g-0\">\r\n    <div class=\"col-12 filter-colum\">\r\n        <ng-template [ngTemplateOutlet]=\"filter_colum\"></ng-template> \r\n    </div>\r\n</div>\r\n\r\n<div class=\"table-responsive\" >\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n  /**\r\n  * A component representing a manage page layout.\r\n  *\r\n  * Example of usage:\r\n  * \r\n  * ```\r\n  * <mefdev-manage-page [startTabInd]=\"0\">\r\n  *   <ng-template #card_title>\r\n  *     Title of the card\r\n  *   </ng-template>\r\n  *   <ng-template #tabs_block>\r\n  *     Content of the tabs block\r\n  *   </ng-template>\r\n  * </mefdev-manage-page>\r\n  * ```\r\n  *\r\n  * Example of usage:\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/manage_page</example-url>\r\n  */\r\n@Component({\r\n    selector: 'mefdev-manage-page',\r\n    templateUrl: './manage-page.component.html',\r\n    styleUrls: ['./manage-page.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ManagePageComponent implements OnInit {\r\n\r\n  /**\r\n   * The template reference to the card title.\r\n   * ```\r\n   * <mefdev-manage-page>\r\n   *   <ng-template #card_title>\r\n   *     Title of the card\r\n   *   </ng-template>\r\n   * </mefdev-manage-page>\r\n   * ```\r\n   */\r\n  @ContentChild(\"card_title\") card_title: TemplateRef<void>;\r\n\r\n  /**\r\n   * The template reference to the tabs block.\r\n   * ```\r\n   * <mefdev-manage-page>\r\n   *   <ng-template #tabs_block>\r\n   *     Content of the tabs block\r\n   *   </ng-template>\r\n   * </mefdev-manage-page>\r\n   * ```\r\n   */\r\n  @ContentChild(\"tabs_block\") tabs_block: TemplateRef<void>;\r\n\r\n  /**\r\n   * The index of the starting tab.\r\n   * ```\r\n   * <mefdev-manage-page [startTabInd]=\"0\">\r\n   *      Content goes here...\r\n   * </mefdev-manage-page>\r\n   * ```\r\n   */\r\n  @Input() startTabInd = 0;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<div class=\"mp-tabs\">\r\n    <div class=\"mp-tabs-header\" *ngIf=\"card_title\">\r\n        <div class=\"mp-tabs-title\">\r\n            <ng-template [ngTemplateOutlet]=\"card_title\"></ng-template>\r\n        </div>\r\n    </div>\r\n    <div class=\"profile-page-tabs mp-tabs-content\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CentralPageComponent } from './central-page/central-page.component';\r\nimport { CentralPageRowComponent } from './central-page-row/central-page-row.component';\r\nimport { TablePageComponent } from './table-page/table-page.component';\r\nimport { ManagePageComponent } from './manage-page/manage-page.component';\r\n\r\nlet mefDevPageLayoutsModuleComponents = [\r\n  CentralPageComponent,\r\n  CentralPageRowComponent,\r\n  TablePageComponent,\r\n  ManagePageComponent\r\n];\r\n\r\n@NgModule({\r\n  declarations: mefDevPageLayoutsModuleComponents,\r\n  exports: mefDevPageLayoutsModuleComponents,\r\n  imports: [\r\n    CommonModule,\r\n  ],\r\n})\r\nexport class MefDevPageLayoutsModule { }\r\n","import { Component, Input } from '@angular/core';\r\n\r\n/**\r\n * @ignore\r\n */\r\n\r\n@Component({\r\n    selector: 'mefdev-stage',\r\n    templateUrl: './stage.component.html',\r\n    styleUrls: ['./stage.component.scss'],\r\n    standalone: false\r\n})\r\n\r\nexport class StageComponent {\r\n\r\n  @Input() currentExecutorStep: number;\r\n  @Input() isRightModal: boolean;\r\n  @Input() isCompleted: boolean;\r\n  @Input() title: string;\r\n\r\n}\r\n","<div class=\"step\">\r\n    <ng-container *ngIf=\"!isCompleted else done\">\r\n        <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" [ngStyle]=\"isRightModal ? { 'fill': '#FFFFFF' } : { 'fill': '#F3F3F3' }\">\r\n            <rect width=\"36\" height=\"36\" rx=\"18\" />\r\n            <text class=\"body-3\" x=\"50%\" y=\"50%\" dominant-baseline=\"middle\" text-anchor=\"middle\" font-size=\"16\" fill=\"black\">\r\n                {{ currentExecutorStep }}\r\n            </text>\r\n        </svg>\r\n        <div class=\"body-6 descriptionStepText\" *ngIf=\"!isRightModal\">\r\n            {{ title }}\r\n        </div>\r\n    </ng-container>\r\n</div>\r\n<ng-template #done>\r\n    <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n        <rect x=\"0.5\" y=\"0.5\" width=\"35\" height=\"35\" rx=\"17.5\" stroke=\"#929292\"/>\r\n        <path d=\"M24.7373 10L14.5466 20.3769L11.2415 17.0114L8 20.3122L11.3051 23.6777L14.5678 27L17.8093 23.6992L28 13.3224L24.7373 10Z\"\r\n              fill=\"#28B446\"/>\r\n    </svg>\r\n    <span class=\"body-6 descriptionStepText\" *ngIf=\"!isRightModal\">\r\n        {{ title }}\r\n    </span>\r\n</ng-template>\r\n","import {\r\n  AfterViewInit, ChangeDetectorRef, Component,\r\n  ContentChild, ElementRef, EventEmitter,\r\n  Input, Output, Renderer2,\r\n  TemplateRef, ViewChild\r\n} from '@angular/core';\r\nimport { MefdevExecutorPageComponent } from '../mefdev-executor-page/mefdev-executor-page.component';\r\n\r\n/**\r\n * Wrapper component that represents a specific encapsulated executor.\r\n *\r\n * Example of usage:\r\n *```\r\n * <mefdev-step-executor #mainExecutor [view]=\"'regular'\">\r\n *\r\n *  <ng-template #title>\r\n *    <!-- Content for the executor title -->\r\n *  </ng-template>\r\n *  <ng-template #description>\r\n *    <!-- Content for the executor description -->\r\n *  </ng-template>\r\n *\r\n *  <mefdev-executor-page\r\n *     [title]=\"'Description of situation 1'\"\r\n *     [isActive]=\"mainExecutor.activePageInd === 0\"\r\n *     [isCompleted]=\"mainExecutor.activePageInd >= 0\">\r\n *      <!-- Content of the first executor step -->\r\n *  </mefdev-executor-page>\r\n *  <mefdev-executor-page\r\n *    [title]=\"'Description of situation 2'\"\r\n *    [isActive]=\"mainExecutor.activePageInd === 1\"\r\n *    [isCompleted]=\"mainExecutor.activePageInd >= 1\">\r\n *     <!-- Content of the second executor step -->\r\n *  </mefdev-executor-page>\r\n *  <mefdev-executor-page\r\n *    [title]=\"'Description of situation 3'\"\r\n *    [isActive]=\"mainExecutor.activePageInd === 2\"\r\n *    [isCompleted]=\"mainExecutor.activePageInd >= 2\">\r\n *      <!-- Content of the third executor step -->\r\n *  </mefdev-executor-page>\r\n *\r\n *  <ng-template #footer>\r\n *    <!-- Content for the executor footer -->\r\n *  <ng-template>\r\n *\r\n * </mefdev-step-executor>\r\n *\r\n *```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/main_executor</example-url>\r\n */\r\n\r\n@Component({\r\n    selector: 'mefdev-step-executor',\r\n    templateUrl: './step-executor.component.html',\r\n    styleUrls: ['./step-executor.component.scss'],\r\n    standalone: false\r\n})\r\n\r\nexport class StepExecutorComponent implements AfterViewInit {\r\n\r\n    /**\r\n     * Mandatory input parameter that specifies the type of the step-by-step wizard.\r\n     * It can have three options: regular, modal, right.\r\n     *\r\n     * @usageNotes\r\n     * ```\r\n     *  <mefdev-step-executor #mainExecutor [view]=\"'regular'\"></mefdev-step-executor>\r\n     * ```\r\n     */\r\n    @Input({required: true}) view: string;\r\n\r\n\r\n    /**\r\n     * An optional input parameter that specifies whether to show your executor.\r\n     * Usually used when you have a slideup or right executor view\r\n     *\r\n     * @usageNotes\r\n     * ```\r\n     *  <mefdev-step-executor [show]=\"true\" [view]=\"'right'\" #mainExecutor></mefdev-step-executor>\r\n     * ```\r\n     */\r\n    @Input() show: boolean;\r\n\r\n\r\n    /**\r\n     * ViewChild reference to the host executor content.\r\n     */\r\n    @ViewChild('container') container: ElementRef<HTMLElement>;\r\n\r\n    /**\r\n     * Template for displaying the content of the executor title.\r\n     *\r\n     * @usageNotes\r\n     * ```\r\n     * <ng-template #title>\r\n     *   <!-- Content for the executor title -->\r\n     * </ng-template>\r\n     * ```\r\n     */\r\n    @ContentChild('title') title: TemplateRef<void>;\r\n\r\n    /**\r\n     * Template for displaying the content of the executor description.\r\n     *\r\n     * @usageNotes\r\n     * ```\r\n     * <ng-template #description>\r\n     *  <!-- Content for the executor description -->\r\n     * </ng-template>\r\n     * ```\r\n     */\r\n    @ContentChild('description') description: TemplateRef<void>;\r\n\r\n    /**\r\n     * Template for displaying the content of the executor footer.\r\n     *\r\n     * @usageNotes\r\n     * ```\r\n     * <ng-template #footer>\r\n     *    <!-- Content for the executor footer -->\r\n     * </ng-template>\r\n     * ```\r\n     */\r\n    @ContentChild('footer') footer: TemplateRef<void>;\r\n\r\n    /**\r\n     * The output parameter that emits the class of the active page - active step.\r\n     *\r\n     * @usageNotes\r\n     * ```\r\n     *  <mefdev-step-executor #mainExecutor (onActivePageChange)=\"getActiveStep($event)\"></mefdev-step-executor>\r\n     * ```\r\n     */\r\n    @Output() onActivePageChange: EventEmitter<MefdevExecutorPageComponent> = new EventEmitter<MefdevExecutorPageComponent>();\r\n\r\n    /**\r\n     * An output parameter that conveys the current state of the stepper in modal view\r\n     *\r\n     * @usageNotes\r\n     * ```\r\n     * <mefdev-step-executor [view]=\"'modal'\" (modalStepExecutorStateChange)=\"getModalExecutorStateValue($event)\" #modalExecutor></mefdev-step-executor>\r\n     * ```\r\n     */\r\n    @Output() modalStepExecutorStateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n    /**\r\n     * An output parameter that conveys the current state of the stepper in right view\r\n     *\r\n     * @usageNotes\r\n     * ```\r\n     * <mefdev-step-executor [view]=\"'right'\" (modalStepExecutorStateChange)=\"getModalExecutorStateValue($event)\" #rightExecutor></mefdev-step-executor>\r\n     * ```\r\n     */\r\n    @Output() rightStepExecutorStateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n    public _activePageInd: number = 0;\r\n    public pages: MefdevExecutorPageComponent[] = [];\r\n\r\n    constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n    public set activePageInd(activePageNumber: number) {\r\n        this._activePageInd = activePageNumber;\r\n        if (activePageNumber >= 0 && this.container) {\r\n            if (this.container.nativeElement.innerHTML != '') {\r\n                this.container.nativeElement.innerHTML = '';\r\n            }\r\n            this.renderer.appendChild(this.container.nativeElement, this.activePage?.elRef.nativeElement);\r\n            this.onActivePageChange.emit(this.pages.find((el: MefdevExecutorPageComponent) => el.isActive));\r\n        }\r\n    }\r\n\r\n    public get activePageInd(): number {\r\n        return this._activePageInd;\r\n    }\r\n\r\n    get activePage(): MefdevExecutorPageComponent | null {\r\n        return this.activePageInd == -1 ? null : this.pages[this.activePageInd];\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this.renderer?.appendChild(this.container.nativeElement, this.activePage?.elRef.nativeElement);\r\n        this.onActivePageChange.emit(this.pages.find((el: MefdevExecutorPageComponent) => el.isActive));\r\n    }\r\n\r\n    /**\r\n     * A function that is allows to track the status of your executor in the modal view\r\n     */\r\n    modalStepExecutorVisibleChange(value: boolean) {\r\n        if (this.view === 'modal') {\r\n          this.show = value;\r\n          this.modalStepExecutorStateChange.emit(value);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * A function that is allows to track the status of your executor in the right view\r\n     */\r\n    rightStepExecutorVisibleChange(value: boolean) {\r\n      if (this.view === 'right') {\r\n        this.show = value;\r\n        this.rightStepExecutorStateChange.emit(value);\r\n      }\r\n    }\r\n\r\n    /**\r\n     * A function that allows you to close your executor\r\n     */\r\n    closeExecutor() {\r\n      this.show = false;\r\n      this.changeDetectorRef.detectChanges();\r\n    }\r\n\r\n    /**\r\n     * Check whether there is a next step of the executor. If we are at the last step - disable the 'next' button\r\n     */\r\n    nextBtnIsDisabled(): boolean {\r\n        return this._activePageInd === this.pages.length - 1;\r\n    }\r\n\r\n    /**\r\n     * Check whether there is a next step of the executor. If we are at the last step - disable the 'next' button\r\n     */\r\n    prev(): void {\r\n        const newPageInd = this.activePageInd - 1;\r\n        if (newPageInd >= 0) {\r\n            this.activePageInd = newPageInd;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Go back to the previous step\r\n     */\r\n    cancel(): void {\r\n        this.activePageInd = 0;\r\n        const newPageInd = this.activePageInd - 1;\r\n        if (newPageInd >= 0) {\r\n            this.activePageInd = newPageInd;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Go to the next step\r\n     */\r\n    next(): void {\r\n        const newPageInd = this.activePageInd + 1;\r\n        if (newPageInd < this.pages.length) {\r\n            this.activePageInd = newPageInd;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Set a specific active page\r\n     */\r\n    setActivePage(pageNumber: number): void {\r\n        pageNumber -= 1;\r\n        if (pageNumber < this.pages.length && pageNumber >= 0) {\r\n            this.activePageInd = pageNumber;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Add new page\r\n     */\r\n    addPage(page: MefdevExecutorPageComponent): void {\r\n        this.pages.push(page);\r\n    }\r\n\r\n    /**\r\n     * Delete a specific page\r\n     */\r\n    removeSpecificPage(page: MefdevExecutorPageComponent): void {\r\n        const index: number = this.pages.indexOf(page);\r\n        if (index !== -1) {\r\n            this.pages.splice(index, 1);\r\n            if (index === this.activePageInd) {\r\n                this.prev();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Delete a page by its index\r\n     */\r\n    removePageByIndex(index: number): void {\r\n        if (index >= 0 && index < this.pages.length) {\r\n            this.pages.splice(index, 1);\r\n            if (index === this.activePageInd) {\r\n                this.prev();\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n}\r\n","<!--view == regular-->\r\n\r\n<div class=\"stepExecutorBlock\" *ngIf=\"view === 'regular'\">\r\n  <header class=\"stepExecutorHeader\">\r\n    <div class=\"stepExecutorHeaderText\">\r\n      <h1 class=\"title\">\r\n        <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\r\n      </h1>\r\n      <p class=\"body-5\">\r\n        <ng-container [ngTemplateOutlet]=\"description\"></ng-container>\r\n      </p>\r\n    </div>\r\n    <div class=\"steps\">\r\n      <mefdev-stage *ngFor=\"let page of pages; let pageIndex = index\"\r\n                    [isRightModal]=\"false\"\r\n                    [title]=\"page.title\"\r\n                    [currentExecutorStep]=\"pageIndex + 1\"\r\n                    [isCompleted]=\"page.isCompleted\">\r\n      </mefdev-stage>\r\n    </div>\r\n  </header>\r\n\r\n  <div *ngIf=\"activePage\" class=\"executorChangeContent\">\r\n    <div #container></div>\r\n  </div>\r\n\r\n  <div class=\"footerButtons\">\r\n    <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\r\n  </div>\r\n</div>\r\n\r\n\r\n<!--view == modal-->\r\n\r\n<mefdev-slide-up-modal [show]=\"show\" (visibleChange)=\"modalStepExecutorVisibleChange($event)\" *ngIf=\"view === 'modal'\">\r\n  <div class=\"modalStepExecutor\">\r\n\r\n    <header class=\"modalHeader\">\r\n      <div class=\"headerModalText\">\r\n        <div class=\"textAndCloseButton\">\r\n          <h1 class=\"title\">\r\n            <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\r\n          </h1>\r\n          <p class=\"body-5\">\r\n            <ng-container [ngTemplateOutlet]=\"description\"></ng-container>\r\n          </p>\r\n        </div>\r\n        <article class=\"closeBtn\" (click)=\"closeExecutor()\">\r\n          <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                  d=\"M6.26735 7.68135L0.610352 2.02435L2.02435 0.610352L7.68135 6.26735L13.3384 0.610352L14.7524 2.02435L9.09535 7.68135L14.7524 13.3384L13.3384 14.7524L7.68135 9.09535L2.02435 14.7524L0.610352 13.3384L6.26735 7.68135Z\"\r\n                  fill=\"#4D4D4D\"/>\r\n          </svg>\r\n        </article>\r\n      </div>\r\n      <div class=\"modalSteps\">\r\n        <mefdev-stage *ngFor=\"let page of pages; let pageIndex = index\"\r\n                      [isRightModal]=\"false\"\r\n                      [title]=\"page.title\"\r\n                      [currentExecutorStep]=\"pageIndex + 1\"\r\n                      [isCompleted]=\"page.isCompleted\">\r\n        </mefdev-stage>\r\n      </div>\r\n    </header>\r\n\r\n    <main *ngIf=\"activePage\" class=\"modalExecutorMainContent\">\r\n      <div #container></div>\r\n    </main>\r\n\r\n    <footer class=\"modalFooter\">\r\n      <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\r\n    </footer>\r\n\r\n  </div>\r\n</mefdev-slide-up-modal>\r\n\r\n<!--view == right-->\r\n\r\n<mefdev-slide-right-modal [show]=\"show\" (visibleChange)=\"rightStepExecutorVisibleChange($event)\" *ngIf=\"view === 'right'\">\r\n  <div class=\"rightExecutorBlock\">\r\n\r\n    <header class=\"rightExecutorHeader\">\r\n      <div class=\"rightExecutorTextAndCloseButton\">\r\n      <span class=\"body-1\">\r\n        <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\r\n      </span>\r\n        <p class=\"body-5\">\r\n          <ng-container [ngTemplateOutlet]=\"description\"></ng-container>\r\n        </p>\r\n      </div>\r\n      <div class=\"closeButton\" (click)=\"closeExecutor()\">\r\n        <svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                d=\"M16.0566 1.59971L14.6566 0.199707L8.05664 6.79971L1.45664 0.199707L0.0566406 1.59971L6.65664 8.19971L0.0566406 14.7997L1.45664 16.1997L8.05664 9.59971L14.6566 16.1997L16.0566 14.7997L9.45664 8.19971L16.0566 1.59971Z\"\r\n                fill=\"#525252\"/>\r\n        </svg>\r\n      </div>\r\n    </header>\r\n\r\n    <div class=\"line\">\r\n      <svg width=\"100%\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\">\r\n        <rect width=\"100%\" height=\"1\" fill=\"#4D4D4D\"></rect>\r\n      </svg>\r\n    </div>\r\n\r\n    <div class=\"contentExecutor\">\r\n      <div class=\"rightChangeContent\">\r\n        <div *ngIf=\"activePage\" class=\"executorChangeContent\">\r\n          <div #container></div>\r\n        </div>\r\n        <div class=\"rightSteps\">\r\n          <mefdev-stage *ngFor=\"let page of pages; let pageIndex = index\"\r\n                        [isRightModal]=\"true\"\r\n                        [title]=\"page.title\"\r\n                        [currentExecutorStep]=\"pageIndex + 1\"\r\n                        [isCompleted]=\"page.isCompleted\">\r\n          </mefdev-stage>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <footer class=\"rightFooter\">\r\n      <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\r\n    </footer>\r\n\r\n  </div>\r\n</mefdev-slide-right-modal>\r\n","import {\r\n  Component, ElementRef, EventEmitter, Host,\r\n  Input, OnChanges, Output, SimpleChanges\r\n} from '@angular/core';\r\nimport { StepExecutorComponent } from '../step-executor/step-executor.component';\r\n\r\n/**\r\n * A component that allows us to create a content page - a step in our executor.\r\n * Each individual step can have different styles, content and settings.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n *  <mefdev-executor-page\r\n *     [title]=\"'Executor title 1'\"\r\n *     [isActive]=\"mainExecutor.activePageInd === 0\"\r\n *     [isCompleted]=\"mainExecutor.activePageInd >= 0\"\r\n *     class=\"yourClass\">\r\n *      <!-- Content of the first executor step -->\r\n *  </mefdev-executor-page>\r\n *  <mefdev-executor-page\r\n *     [title]=\"'Executor title 2'\"\r\n *     [isActive]=\"mainExecutor.activePageInd === 1\"\r\n *     [isCompleted]=\"mainExecutor.activePageInd >= 1\"\r\n *     class=\"yourClass\">\r\n *      <!-- Content of the second executor step -->\r\n *  </mefdev-executor-page>\r\n *  <mefdev-executor-page\r\n *     [title]=\"'Executor title 3'\"\r\n *     [isActive]=\"mainExecutor.activePageInd === 2\"\r\n *     [isCompleted]=\"mainExecutor.activePageInd >= 2\"\r\n *     class=\"yourClass\">\r\n *      <!-- Content of the third executor step -->\r\n *  </mefdev-executor-page>\r\n * ```\r\n *\r\n  */\r\n\r\n@Component({\r\n    selector: 'mefdev-executor-page',\r\n    template: '<ng-content></ng-content>',\r\n    standalone: false\r\n})\r\n\r\nexport class MefdevExecutorPageComponent implements OnChanges {\r\n\r\n  /**\r\n   * The title of the step\r\n   * @usageNotes\r\n   * ```\r\n   *  <mefdev-executor-page [title]=\"'Description of situation 1'\"></mefdev-executor-page>\r\n   * ```\r\n   */\r\n  @Input() title: string;\r\n\r\n  /**\r\n   * The input parameter that corresponds to whether the current step matches the respective page.\r\n   * The value of the active page is passed by reference from the specific component StepExecutorComponent.\r\n   *\r\n   * @usageNotes\r\n   * ```\r\n   *  <mefdev-step-executor #mainExecutor>\r\n   *    <mefdev-executor-page [isActive]=\"mainExecutor.activePageInd === 0\">\r\n   *    <mefdev-executor-page [isActive]=\"mainExecutor.activePageInd === 1\">\r\n   *    <mefdev-executor-page [isActive]=\"mainExecutor.activePageInd === 2\">\r\n   *  </<mefdev-step-executor>\r\n   *\r\n   * ```\r\n   */\r\n  @Input() isActive: boolean = false;\r\n\r\n\r\n  /**\r\n   * The input parameter that checks whether the step is completed.\r\n   *\r\n   * @usageNotes\r\n   * ```\r\n   *  <mefdev-executor-page [isCompleted]=\"mainExecutor.activePageInd >= 0\"></mefdev-executor-page>\r\n   * ```\r\n   */\r\n  @Input() isCompleted: boolean = false;\r\n\r\n  /**\r\n   * The output parameter that emits a boolean value indicating whether our completed step has changed.\r\n   *\r\n   * @usageNotes\r\n   * ```\r\n   *  <mefdev-executor-page (isCompletedChange)=\"onStepChanged($event)\"></mefdev-executor-page>\r\n   * ```\r\n   */\r\n  @Output() isCompletedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  public elRef: ElementRef;\r\n\r\n  constructor(\r\n      @Host() private _mainExecutor: StepExecutorComponent,\r\n      private _elementRef: ElementRef\r\n  ) {\r\n    this.elRef = _elementRef;\r\n    _mainExecutor.pages.push(this);\r\n    if (_mainExecutor.activePageInd == -1) {\r\n      _mainExecutor.activePageInd = 0;\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    this.isCompletedChange.emit(changes['isCompleted']?.currentValue);\r\n  }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StepExecutorComponent } from './step-executor/step-executor.component';\r\nimport { StageComponent } from './stage/stage.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MefdevExecutorPageComponent } from './mefdev-executor-page/mefdev-executor-page.component';\r\nimport { MefDevModalModule } from '../modals';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        StepExecutorComponent,\r\n        MefdevExecutorPageComponent,\r\n        StageComponent\r\n    ],\r\n    exports: [\r\n        StepExecutorComponent,\r\n        MefdevExecutorPageComponent,\r\n        StageComponent,\r\n    ],\r\n    imports: [\r\n        MefDevModalModule,\r\n        CommonModule,\r\n        FormsModule,\r\n    ]\r\n})\r\n\r\nexport class MefDevStepExecutorModule { }\r\n","import { Component, ContentChild, ElementRef, TemplateRef } from '@angular/core';\r\n/*\r\n  example\r\n   <mefdev-dropdown-menu>\r\n    <ng-template #label>\r\n        <i class=\"fa fa-ellipsis-v\"></i>\r\n    </ng-template>\r\n\r\n    <a class=\"dropdown-item\" (click)=\"openModalAction('update', row)\">\r\n        <span> {{ 'Update' | translate }} </span>\r\n    </a>\r\n\r\n    <a class=\"dropdown-item\" (click)=\"openModalAction('delete', row)\">\r\n        <span> {{ 'Delete' | translate }} </span>\r\n    </a>\r\n  </mefdev-dropdown-menu>\r\n*/\r\n@Component({\r\n    selector: 'mefdev-dropdown-menu',\r\n    templateUrl: './mefdev-dropdown-menu.component.html',\r\n    styleUrls: ['./mefdev-dropdown-menu.component.scss'],\r\n    host: {\r\n        '(document:click)': 'onClick($event)',\r\n    },\r\n    standalone: false\r\n})\r\nexport class MefdevDropdownMenuComponent {\r\n  \r\n  @ContentChild(\"label\") label: TemplateRef<void>;\r\n\r\n  protected isOpen:boolean = false;\r\n\r\n  constructor(\r\n    private _eref: ElementRef\r\n    ) \r\n  { }\r\n\r\n  onClick($event: any){\r\n    const isClickInDdl = this._eref.nativeElement.contains($event.target)\r\n    if(isClickInDdl || (this.isOpen && !isClickInDdl)){\r\n      this.isOpen = !this.isOpen;\r\n    }\r\n  }\r\n}\r\n","<div class=\"label-container\">\r\n    <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n</div>\r\n\r\n<div *ngIf=\"isOpen\" class=\"_dropdown\">\r\n    <div class=\"_menu\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MefdevDropdownMenuComponent } from './mefdev-dropdown-menu/mefdev-dropdown-menu.component';\r\n\r\n@NgModule({\r\n  exports: [\r\n    MefdevDropdownMenuComponent\r\n  ],\r\n  declarations: [\r\n    MefdevDropdownMenuComponent\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ]\r\n})\r\nexport class MefDevDropDownMenuModule { }\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\n/**\r\n * Component representing a progress bar.\r\n * \r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-progress type=\"linear\" color=\"blue\" [thick]=\"true\"></mefdev-progress>\r\n * <mefdev-progress type=\"circle\" color=\"red\" [indeterminate]=\"true\"></mefdev-progress>\r\n * ```\r\n */\r\n@Component({\r\n    selector: \"mefdev-progress\",\r\n    templateUrl: \"./progress.component.html\",\r\n    standalone: false\r\n})\r\nexport class MefDevProgressComponent {\r\n  _value: number;\r\n  _value2: any;\r\n\r\n  /**\r\n   * The type of progress bar.\r\n   * Possible values: \"linear\" | \"circle\".\r\n   * Default value: \"linear\".\r\n   */\r\n  @Input() type: string;\r\n\r\n  /**\r\n   * The color of the progress bar.\r\n   * Possible values: any valid CSS color value.\r\n   * Default value: none.\r\n   */\r\n\r\n  @Input() color: string;\r\n\r\n  /**\r\n   * Determines whether the progress bar is thick.\r\n   * Default value: false.\r\n   */\r\n  @Input() thick: boolean;\r\n\r\n  /**\r\n   * Determines whether the progress bar is indeterminate.\r\n   * Default value: false.\r\n   */\r\n  @Input() indeterminate: boolean;\r\n\r\n\r\n  /**\r\n   * The value of the progress bar.\r\n   * For the \"circle\" type, it should be a number between 0 and 100.\r\n   */\r\n  @Input() set value(value: number) {\r\n    if (this.type == \"circle\") {\r\n      this._value = (value / 100) * 360;\r\n      if (this.value >= 50) {\r\n        this._value2 = true;\r\n      }\r\n    } else this._value = value;\r\n  }\r\n  get value() {\r\n    return this._value;\r\n  }\r\n\r\n  /**\r\n   * Additional value property.\r\n   */\r\n  get value2() {\r\n    return this._value2;\r\n  }\r\n  constructor() {}\r\n}\r\n","<div *ngIf=\"type === 'bar'; else circleBlock\">\r\n  <div *ngIf=\"indeterminate; else determineBarBlock\">\r\n    <div class=\"progress\" [class.progress-small]=\"!thick\">\r\n      <div class=\"progress-bar-{{ color }}\" [class.progress-bar-indeterminate]=\"indeterminate\"></div>\r\n    </div>\r\n  </div>\r\n  <ng-template #determineBarBlock>\r\n    <div class=\"progress\" [class.progress-small]=\"!thick\">\r\n      <div class=\"progress-bar progress-bar-{{ color }}\" [ngStyle]=\"{ width: value + '%' }\"></div>\r\n    </div>\r\n  </ng-template>\r\n</div>\r\n<ng-template #circleBlock>\r\n  <div class=\"progress-circle-{{ color }}\" [class.progress-circle-indeterminate]=\"indeterminate\"\r\n    [class.progress-circle]=\"!indeterminate\" [class.progress-circle-thick]=\"thick\">\r\n    <div *ngIf=\"indeterminate; else determineBlock\"></div>\r\n    <ng-template #determineBlock>\r\n      <div class=\"pie\" [ngStyle]=\"_value2 && { clip: 'rect(auto, auto, auto, auto)' }\">\r\n        <div class=\"left-side half-circle\" [ngStyle]=\"_value2 && { transform: 'rotate(' + value + 'deg)' }\"></div>\r\n        <div class=\"right-side half-circle\" [ngStyle]=\"{\r\n            transform:\r\n              _value2 === true ? 'rotate(180deg)' : 'rotate(' + value + 'deg)'\r\n          }\"></div>\r\n      </div>\r\n      <div class=\"shadow\"></div>\r\n    </ng-template>\r\n  </div>\r\n</ng-template>","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class ProgressConfig {\r\n  color = \"primary\";\r\n  thickness = 1;\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\r\n\r\nimport { MefDevProgressComponent } from \"./progress.component\";\r\nimport { ProgressConfig } from \"./progress.config\";\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [MefDevProgressComponent],\r\n  exports: [MefDevProgressComponent]\r\n})\r\nexport class MefDevProgressModule {\r\n  static forRoot(): ModuleWithProviders<MefDevProgressModule> {\r\n    return { ngModule: MefDevProgressModule, providers: [ProgressConfig] };\r\n  }\r\n}\r\n","import {\r\n\tforwardRef,\r\n\tComponent,\r\n\tHostListener,\r\n\tInput,\r\n\tOnInit,\r\n\tViewEncapsulation,\r\n\tOutput\r\n} from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { toBoolean } from \"../util/convert\";\r\n\r\n\r\n/**\r\n  * @component\r\n  * @skipTemplateDoc: true\r\n  * Example of usage:\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/controls/switch</example-url>\r\n*/\r\n@Component({\r\n    selector: \"mefdev-switch\",\r\n    encapsulation: ViewEncapsulation.None,\r\n    templateUrl: \"./switch.component.html\",\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MefDevSwitchComponent),\r\n            multi: true\r\n        }\r\n    ],\r\n    standalone: false\r\n})\r\nexport class MefDevSwitchComponent implements OnInit, ControlValueAccessor {\r\n\t  // Private variables\r\n\tprivate _disabled = false;\r\n\t_prefixCls = \"toggle-switch\";\r\n\t_color = \"primary\";\r\n\t_innerPrefixCls = `${this._prefixCls}-inner `;\r\n\t_classMap:any;\r\n\t_size: string;\r\n\t_checked = false;\r\n\r\n\t// ngModel Access\r\n\t// Output event triggered when the switch value changes\r\n\t@Output()\r\n\t/**\r\n   * Event emitted when the value of the switch changes.\r\n   * \r\n   * @output\r\n   * @param value The new value of the switch.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * <mefdev-switch (onChange)=\"handleSwitchChange($event)\"></mefdev-switch>\r\n   * ```\r\n   */\r\n\tonChange: (value: boolean) => void = () => null;\r\n\tonTouched: () => void = () => null;\r\n\r\n\t// Input properties\r\n\r\n\t/**\r\n   * Sets the value of the switch.\r\n   * \r\n   * @input\r\n   * @param value The value of the switch.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * <mefdev-switch [Value]=\"true\"></mefdev-switch>\r\n   * ```\r\n   */\r\n  @Input()\r\n\tset Value(value: boolean) {\r\n\t\tthis.updateValue(value);\r\n\t}\r\n\r\n\t/**\r\n   * Sets the size of the switch.\r\n   * \r\n   * @input\r\n   * @param value The size of the switch (e.g., \"small\", \"large\").\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * <mefdev-switch [Size]=\"'small'\"></mefdev-switch>\r\n   * ```\r\n   */\r\n\t@Input()\r\n\tset Size(value: string) {\r\n\t\tthis._size = value;\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t/**\r\n   * Sets the color of the switch.\r\n   * \r\n   * @input\r\n   * @param value The color of the switch (e.g., \"primary\", \"secondary\").\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * <mefdev-switch [Color]=\"'primary'\"></mefdev-switch>\r\n   * ```\r\n   */\r\n\t@Input()\r\n\tset Color(value: string) {\r\n\t\tthis._color = value;\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t/**\r\n   * Gets the current size of the switch.\r\n   * \r\n   * @input\r\n   * @returns The size of the switch.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * const size = mySwitchComponent.Size;\r\n   * ```\r\n   */\r\n\tget Size(): string {\r\n\t\treturn this._size;\r\n\t}\r\n\r\n\t/**\r\n   * Sets the disabled state of the switch.\r\n   * \r\n   * @input\r\n   * @param value The disabled state of the switch.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * <mefdev-switch [Disabled]=\"true\"></mefdev-switch>\r\n   * ```\r\n   */\r\n\t@Input()\r\n\tset Disabled(value: boolean) {\r\n\t\tthis._disabled = toBoolean(value);\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t  /**\r\n   * Gets the current disabled state of the switch.\r\n   * \r\n   * @input\r\n   * @returns The disabled state of the switch.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * const disabled = mySwitchComponent.Disabled;\r\n   * ```\r\n   */\r\n\tget Disabled(): boolean {\r\n\t\treturn this._disabled;\r\n\t}\r\n\r\n\t  // Host listener for click event\r\n\t@HostListener(\"click\", [\"$event\"])\r\n\r\n\t/**\r\n   * Handles the click event of the switch.\r\n   * \r\n   * @param e The click event object.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * <mefdev-switch (click)=\"handleSwitchClick($event)\"></mefdev-switch>\r\n   * ```\r\n   */\r\n\tonClick(e: MouseEvent): void {\r\n\t\te.preventDefault();\r\n\t\tif (!this._disabled) {\r\n\t\t\tthis.updateValue(!this._checked);\r\n\t\t\tthis.onChange(this._checked);\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\t// Helper functions\r\n\r\n  /**\r\n   * Updates the value of the switch.\r\n   * \r\n   * @param value The new value of the switch.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * this.updateValue(true);\r\n   * ```\r\n   */\r\n\tupdateValue(value: boolean): void {\r\n\t\tif (this._checked === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._checked = value;\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t/**\r\n   * Sets the class map for the switch.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * this.setClassMap();\r\n   * ```\r\n   */\r\n\tsetClassMap(): void {\r\n\t\tthis._classMap = {\r\n\t\t\t[this._prefixCls]: true,\r\n\t\t\t[`${this._prefixCls}-checked`]: this._checked,\r\n\t\t\t[`${this._prefixCls}-disabled`]: this._disabled,\r\n\t\t\t[`${this._prefixCls}-small`]: this._size === \"small\",\r\n\t\t\t[this._color]: this._color\r\n\t\t};\r\n\t}\r\n\r\n\t\r\n\t// ControlValueAccessor interface implementation\r\n\r\n  /**\r\n   * Writes a new value to the switch.\r\n   * \r\n   * @param value The new value of the switch.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * this.writeValue(true);\r\n   * ```\r\n   */\r\n\tpublic writeValue(value: boolean): void {\r\n\t\tthis.updateValue(value);\r\n\t}\r\n\r\n\t/**\r\n   * Registers a callback function to be executed when the switch value changes.\r\n   * \r\n   * @param fn The callback function.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * this.registerOnChange(value => {\r\n   *   // Do something with the new value\r\n   * });\r\n   * ```\r\n   */\r\n\tregisterOnChange(fn: (_: boolean) => void): void {\r\n\t\tthis.onChange = fn;\r\n\t}\r\n\r\n\t/**\r\n   * Registers a callback function to be executed when the switch is touched.\r\n   * \r\n   * @param fn The callback function.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * this.registerOnTouched(() => {\r\n   *   // Do something when the switch is touched\r\n   * });\r\n   * ```\r\n   */\r\n\tregisterOnTouched(fn: () => void): void {\r\n\t\tthis.onTouched = fn;\r\n\t}\r\n\r\n\t/**\r\n   * Sets the disabled state of the switch.\r\n   * \r\n   * @param isDisabled The disabled state of the switch.\r\n   * \r\n   * Usage example:\r\n   * ```\r\n   * this.setDisabledState(true);\r\n   * ```\r\n   */\r\n\tsetDisabledState(isDisabled: boolean): void {\r\n\t\tthis.Disabled = isDisabled;\r\n\t}\r\n\r\n\t  // OnInit lifecycle hook\r\n\tngOnInit(): void {\r\n\t\tthis.setClassMap();\r\n\t}\r\n}\r\n","<span [ngClass]=\"_classMap\" tabindex=\"0\">\r\n    <span [ngClass]=\"_innerPrefixCls\">\r\n        <ng-template [ngIf]=\"_checked\">\r\n            <ng-content select=\"[checked]\"></ng-content>\r\n        </ng-template>\r\n        <ng-template [ngIf]=\"!_checked\">\r\n            <ng-content select=\"[unchecked]\"></ng-content>\r\n        </ng-template>\r\n    </span>\r\n</span>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MefDevSwitchComponent } from './switch.component';\r\n\r\n@NgModule({\r\n  exports     : [ MefDevSwitchComponent ],\r\n  declarations: [ MefDevSwitchComponent ],\r\n  imports     : [ CommonModule ]\r\n})\r\nexport class MefDevSwitchModule {\r\n}\r\n","import { Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Component representing the body of a tab, which displays the tab's content.\r\n */\r\n@Component({\r\n    selector: 'mefdev-tab-body',\r\n    encapsulation: ViewEncapsulation.None,\r\n    templateUrl: \"./tab-body.component.html\",\r\n    standalone: false\r\n})\r\nexport class MefDevTabBodyComponent {\r\n    /**\r\n   * The content of the tab, which can be passed as a template.\r\n   */\r\n  @Input() content: TemplateRef<void>;\r\n}\r\n","<ng-template [ngTemplateOutlet]=\"content\"></ng-template>","import { Directive, ElementRef, HostBinding, Input } from '@angular/core';\r\nimport { toBoolean } from '../util/convert';\r\n\r\n@Directive({\r\n    selector: '[mefdev-tab-label]',\r\n    host: {\r\n        '[class.nav-item]': 'true'\r\n    },\r\n    standalone: false\r\n})\r\nexport class MefDevTabLabelDirective {\r\n  private _disabled = false;\r\n\r\n  @Input()\r\n  @HostBinding('class.nav-item-disabled')\r\n  set disabled(value: boolean) {\r\n    this._disabled = toBoolean(value);\r\n  }\r\n\r\n  get disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n\r\n  constructor(public elementRef: ElementRef) {}\r\n\r\n  getOffsetLeft(): number {\r\n    return this.elementRef.nativeElement.offsetLeft;\r\n  }\r\n\r\n  getOffsetWidth(): number {\r\n    return this.elementRef.nativeElement.offsetWidth;\r\n  }\r\n\r\n  getOffsetTop(): number {\r\n    return this.elementRef.nativeElement.offsetTop;\r\n  }\r\n\r\n  getOffsetHeight(): number {\r\n    return this.elementRef.nativeElement.offsetHeight;\r\n  }\r\n}\r\n","\r\nconst availablePrefixs = ['moz', 'ms', 'webkit'];\r\n\r\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\r\n  let lastTime = 0;\r\n  return function (callback: FrameRequestCallback): number {\r\n    const currTime = new Date().getTime();\r\n    const timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n    const id = window.setTimeout(() => { callback(currTime + timeToCall); }, timeToCall);\r\n    lastTime = currTime + timeToCall;\r\n    return id;\r\n  };\r\n}\r\n\r\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\r\n  if (typeof window === 'undefined') {\r\n    //@ts-ignore\r\n    return () => null;\r\n  }\r\n  if (window.requestAnimationFrame) {\r\n    return window.requestAnimationFrame.bind(window);\r\n  }\r\n\r\n  const prefix = availablePrefixs.filter(key => `${key}RequestAnimationFrame` in window)[0];\r\n\r\n  return prefix\r\n    ? (window as any)[`${prefix}RequestAnimationFrame`]\r\n    : requestAnimationFramePolyfill();\r\n}\r\n\r\nexport const reqAnimFrame = getRequestAnimationFrame();\r\n","import { Directive, ElementRef, HostBinding, Input, NgZone, Renderer2 } from '@angular/core';\r\nimport { reqAnimFrame } from '../util/request-animation';\r\nimport { toBoolean } from '../util/convert';\r\n\r\nexport type TabPositionMode = 'horizontal' | 'vertical';\r\n\r\n@Directive({\r\n    selector: '[mefdev-tabs-ink-bar]',\r\n    host: {\r\n        '[class.nav-item]': 'true'\r\n    },\r\n    standalone: false\r\n})\r\nexport class MefDevTabsInkBarDirective {\r\n  private _animated = false;\r\n\r\n  @Input()\r\n  @HostBinding('class.nav-item-animated')\r\n  set Animated(value: boolean) {\r\n    this._animated = toBoolean(value);\r\n  }\r\n\r\n  get Animated(): boolean {\r\n    return this._animated;\r\n  }\r\n\r\n  @Input() PositionMode: TabPositionMode = 'horizontal';\r\n\r\n  constructor(private _renderer: Renderer2, private _elementRef: ElementRef, private _ngZone: NgZone) {}\r\n\r\n  alignToElement(element: HTMLElement): void {\r\n    this.show();\r\n\r\n    this._ngZone.runOutsideAngular(() => {\r\n      reqAnimFrame(() => {\r\n        /** when horizontal remove height style and add transfrom left **/\r\n        if (this.PositionMode === 'horizontal') {\r\n          this._renderer.removeStyle(this._elementRef.nativeElement, 'height');\r\n          this._renderer.setStyle(this._elementRef.nativeElement, 'transform', `translate3d(${this._getLeftPosition(element)}, 0px, 0px)`);\r\n          this._renderer.setStyle(this._elementRef.nativeElement, 'width', this._getElementWidth(element));\r\n        } else {\r\n          /** when vertical remove width style and add transfrom top **/\r\n          this._renderer.removeStyle(this._elementRef.nativeElement, 'width');\r\n          this._renderer.setStyle(this._elementRef.nativeElement, 'transform', `translate3d(0px, ${this._getTopPosition(element)}, 0px)`);\r\n          this._renderer.setStyle(this._elementRef.nativeElement, 'height', this._getElementHeight(element));\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  show(): void {\r\n    this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'visible');\r\n  }\r\n\r\n  setDisplay(value: string): void {\r\n    this._renderer.setStyle(this._elementRef.nativeElement, 'display', value);\r\n  }\r\n\r\n  hide(): void {\r\n    this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'hidden');\r\n  }\r\n\r\n  _getLeftPosition(element: HTMLElement): string {\r\n    return element ? element.offsetLeft + 'px' : '0';\r\n  }\r\n\r\n  _getElementWidth(element: HTMLElement): string {\r\n    return element ? element.offsetWidth + 'px' : '0';\r\n  }\r\n\r\n  _getTopPosition(element: HTMLElement): string {\r\n    return element ? element.offsetTop + 'px' : '0';\r\n  }\r\n\r\n  _getElementHeight(element: HTMLElement): string {\r\n    return element ? element.offsetHeight + 'px' : '0';\r\n  }\r\n}\r\n","/** code from https://github.com/angular/material2 */\r\nimport { Direction, Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n  AfterContentChecked,\r\n  AfterContentInit,\r\n  Component,\r\n  ContentChild,\r\n  ContentChildren,\r\n  ElementRef,\r\n  HostBinding,\r\n  Input,\r\n  NgZone,\r\n  Optional,\r\n  QueryList,\r\n  Renderer2,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription, fromEvent, merge, of as observableOf } from 'rxjs';\r\nimport { auditTime, startWith } from 'rxjs/operators';\r\nimport { toBoolean } from '../util/convert';\r\nimport { MefDevTabLabelDirective } from './tab-label.directive';\r\nimport { MefDevTabsInkBarDirective } from './tabs-ink-bar.directive';\r\n\r\nconst EXAGGERATED_OVERSCROLL = 64;\r\nexport type ScrollDirection = 'after' | 'before';\r\n\r\n/** duplicated defined https://github.com/angular/angular-cli/issues/2034 **/\r\nexport type TabPositionMode = 'horizontal' | 'vertical';\r\n\r\n@Component({\r\n    selector: 'mefdev-tabs-nav',\r\n    encapsulation: ViewEncapsulation.None,\r\n    templateUrl: \"./tabs-nav.component.html\",\r\n    standalone: false\r\n})\r\nexport class MefDevTabsNavComponent implements AfterContentChecked, AfterContentInit {\r\n  private _animated = true;\r\n  private _hideBar = false;\r\n  private _showPagination = true;\r\n\r\n  _showPaginationControls = false;\r\n  _disableScrollAfter = true;\r\n  _disableScrollBefore = true;\r\n  _scrollDistance = 0;\r\n  _selectedIndexChanged = false;\r\n  _realignInkBar: Subscription | null = null;\r\n  _tabLabelCount: number;\r\n  _scrollDistanceChanged: boolean;\r\n  _selectedIndex = 0;\r\n  _tabPositionMode: TabPositionMode = 'horizontal';\r\n  _tabPosition = 'top';\r\n  @Input() Size = 'default';\r\n  _type = 'line';\r\n\r\n  @Input()\r\n  set Animated(value: boolean) {\r\n    this._animated = toBoolean(value);\r\n  }\r\n\r\n  get Animated(): boolean {\r\n    return this._animated;\r\n  }\r\n\r\n  @Input()\r\n  set Position(value: string) {\r\n    this._tabPosition = value;\r\n  }\r\n\r\n  get Position(): string {\r\n    return this._tabPosition;\r\n  }\r\n\r\n  @Input()\r\n  set HideBar(value: boolean) {\r\n    this._hideBar = toBoolean(value);\r\n  }\r\n\r\n  get HideBar(): boolean {\r\n    return this._hideBar;\r\n  }\r\n\r\n  @Input()\r\n  set Type(value: string) {\r\n    this._type = value;\r\n  }\r\n\r\n  get Type(): string {\r\n    return this._type;\r\n  }\r\n\r\n  @ContentChild('tabBarExtraContent', { static: true }) _tabBarExtraContent: TemplateRef<void>;\r\n  @ContentChildren(MefDevTabLabelDirective) _labelWrappers: QueryList<MefDevTabLabelDirective>;\r\n  @ViewChild(MefDevTabsInkBarDirective, { static: true }) _inkBar: MefDevTabsInkBarDirective;\r\n  @ViewChild('tabListContainer', { static: true }) _tabListContainer: ElementRef;\r\n  @ViewChild('tabList', { static: true }) _tabList: ElementRef;\r\n\r\n  @Input()\r\n  set ShowPagination(value: boolean) {\r\n    this._showPagination = toBoolean(value);\r\n  }\r\n\r\n  get ShowPagination(): boolean {\r\n    return this._showPagination;\r\n  }\r\n\r\n  @Input()\r\n  set PositionMode(value: TabPositionMode) {\r\n    this._tabPositionMode = value;\r\n    this._alignInkBarToSelectedTab();\r\n    if (this.ShowPagination) {\r\n      this._updatePagination();\r\n    }\r\n  }\r\n\r\n  get PositionMode(): TabPositionMode {\r\n    return this._tabPositionMode;\r\n  }\r\n\r\n  @Input()\r\n  set selectedIndex(value: number) {\r\n    this._selectedIndexChanged = this._selectedIndex !== value;\r\n\r\n    this._selectedIndex = value;\r\n  }\r\n\r\n  get selectedIndex(): number {\r\n    return this._selectedIndex;\r\n  }\r\n\r\n  constructor(\r\n    public _elementRef: ElementRef,\r\n    private _ngZone: NgZone,\r\n    private _renderer: Renderer2,\r\n    @Optional() private _dir: Directionality\r\n  ) {}\r\n\r\n  _onContentChanges(): void {\r\n    if (this.ShowPagination) {\r\n      this._updatePagination();\r\n    }\r\n    this._alignInkBarToSelectedTab();\r\n  }\r\n\r\n  _scrollHeader(scrollDir: ScrollDirection): void {\r\n    // Move the scroll distance one-third the length of the tab list's viewport.\r\n    this.scrollDistance += ((scrollDir === 'before' ? -1 : 1) * this.viewWidthHeightPix) / 3;\r\n  }\r\n\r\n  ngAfterContentChecked(): void {\r\n    if (this._tabLabelCount !== this._labelWrappers.length) {\r\n      if (this.ShowPagination) {\r\n        this._updatePagination();\r\n      }\r\n      this._tabLabelCount = this._labelWrappers.length;\r\n    }\r\n    if (this._selectedIndexChanged) {\r\n      this._scrollToLabel(this._selectedIndex);\r\n      if (this.ShowPagination) {\r\n        this._checkScrollingControls();\r\n      }\r\n      this._alignInkBarToSelectedTab();\r\n      this._selectedIndexChanged = false;\r\n    }\r\n    if (this._scrollDistanceChanged) {\r\n      if (this.ShowPagination) {\r\n        this._updateTabScrollPosition();\r\n      }\r\n      this._scrollDistanceChanged = false;\r\n    }\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    this._realignInkBar = this._ngZone.runOutsideAngular(() => {\r\n      const dirChange = this._dir ? this._dir.change : observableOf(null);\r\n      const resize = typeof window !== 'undefined' ? fromEvent(window, 'resize').pipe(auditTime(10)) : observableOf(null);\r\n      //@ts-ignore\r\n      return merge(dirChange, resize)\r\n        .pipe(startWith(null))\r\n        .subscribe(() => {\r\n          if (this.ShowPagination) {\r\n            this._updatePagination();\r\n          }\r\n          this._alignInkBarToSelectedTab();\r\n        });\r\n    });\r\n  }\r\n\r\n  _updateTabScrollPosition(): void {\r\n    const scrollDistance = this.scrollDistance;\r\n    if (this.PositionMode === 'horizontal') {\r\n      const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\r\n      this._renderer.setStyle(this._tabList.nativeElement, 'transform', `translate3d(${translateX}px, 0, 0)`);\r\n    } else {\r\n      this._renderer.setStyle(this._tabList.nativeElement, 'transform', `translate3d(0,${-scrollDistance}px, 0)`);\r\n    }\r\n  }\r\n\r\n  _updatePagination(): void {\r\n    this._checkPaginationEnabled();\r\n    this._checkScrollingControls();\r\n    this._updateTabScrollPosition();\r\n  }\r\n\r\n  _checkPaginationEnabled(): void {\r\n    this._showPaginationControls = this.tabListScrollWidthHeightPix > this.elementRefOffSetWidthHeight;\r\n\r\n    if (!this._showPaginationControls) {\r\n      this.scrollDistance = 0;\r\n    }\r\n  }\r\n\r\n  _scrollToLabel(labelIndex: number): void {\r\n    const selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;\r\n\r\n    if (!selectedLabel) {\r\n      return;\r\n    }\r\n\r\n    // The view length is the visible width of the tab labels.\r\n\r\n    let labelBeforePos: number;\r\n    let labelAfterPos: number;\r\n    if (this.PositionMode === 'horizontal') {\r\n      if (this._getLayoutDirection() === 'ltr') {\r\n        labelBeforePos = selectedLabel.getOffsetLeft();\r\n        labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\r\n      } else {\r\n        labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();\r\n        labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();\r\n      }\r\n    } else {\r\n      labelBeforePos = selectedLabel.getOffsetTop();\r\n      labelAfterPos = labelBeforePos + selectedLabel.getOffsetHeight();\r\n    }\r\n    const beforeVisiblePos = this.scrollDistance;\r\n    const afterVisiblePos = this.scrollDistance + this.viewWidthHeightPix;\r\n\r\n    if (labelBeforePos < beforeVisiblePos) {\r\n      // Scroll header to move label to the before direction\r\n      this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\r\n    } else if (labelAfterPos > afterVisiblePos) {\r\n      // Scroll header to move label to the after direction\r\n      this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\r\n    }\r\n  }\r\n\r\n  _checkScrollingControls(): void {\r\n    // Check if the pagination arrows should be activated.\r\n    this._disableScrollBefore = this.scrollDistance === 0;\r\n    this._disableScrollAfter = this.scrollDistance === this._getMaxScrollDistance();\r\n  }\r\n\r\n  /**\r\n   * Determines what is the maximum length in pixels that can be set for the scroll distance. This\r\n   * is equal to the difference in width between the tab list container and tab header container.\r\n   *\r\n   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\r\n   * should be called sparingly.\r\n   */\r\n  _getMaxScrollDistance(): number {\r\n    return this.tabListScrollWidthHeightPix - this.viewWidthHeightPix || 0;\r\n  }\r\n\r\n  /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\r\n  set scrollDistance(v: number) {\r\n    this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\r\n\r\n    // Mark that the scroll distance has changed so that after the view is checked, the CSS\r\n    // transformation can move the header.\r\n    this._scrollDistanceChanged = true;\r\n\r\n    this._checkScrollingControls();\r\n  }\r\n\r\n  get scrollDistance(): number {\r\n    return this._scrollDistance;\r\n  }\r\n\r\n  get viewWidthHeightPix(): number {\r\n    let PAGINATION_PIX = 0;\r\n    if (this._showPaginationControls) {\r\n      PAGINATION_PIX = 64;\r\n    }\r\n    if (this.PositionMode === 'horizontal') {\r\n      return this._tabListContainer.nativeElement.offsetWidth - PAGINATION_PIX;\r\n    } else {\r\n      return this._tabListContainer.nativeElement.offsetHeight - PAGINATION_PIX;\r\n    }\r\n  }\r\n\r\n  get tabListScrollWidthHeightPix(): number {\r\n    if (this.PositionMode === 'horizontal') {\r\n      return this._tabList.nativeElement.scrollWidth;\r\n    } else {\r\n      return this._tabList.nativeElement.scrollHeight;\r\n    }\r\n  }\r\n\r\n  get elementRefOffSetWidthHeight(): number {\r\n    if (this.PositionMode === 'horizontal') {\r\n      return this._elementRef.nativeElement.offsetWidth;\r\n    } else {\r\n      return this._elementRef.nativeElement.offsetHeight;\r\n    }\r\n  }\r\n\r\n  _getLayoutDirection(): Direction {\r\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\r\n  }\r\n\r\n  _alignInkBarToSelectedTab(): void {\r\n    if (this.Type !== 'fillup') {\r\n      const selectedLabelWrapper =\r\n        this._labelWrappers && this._labelWrappers.length\r\n          ? this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement\r\n          : null;\r\n      if (this._inkBar) {\r\n        this._inkBar.alignToElement(selectedLabelWrapper);\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div class=\"nav-tabs-wrapper\" [class.scrolling]=\"_showPaginationControls\" #tabListContainer>\r\n    <div class=\"nav-wrap\">\r\n      <ul\r\n        class=\"nav nav-tabs nav-tabs-{{ _type }} nav-tabs-{{ _tabPosition }}\"\r\n        [class.tabs-nav-animated]=\"Animated\"\r\n        #tabList\r\n        (cdkObserveContent)=\"_onContentChanges()\"\r\n      >\r\n        <div\r\n          class=\"active-bar\"\r\n          mefdev-tabs-ink-bar\r\n          [hidden]=\"HideBar\"\r\n          [Animated]=\"Animated\"\r\n          [PositionMode]=\"PositionMode\"\r\n          style=\"display: block;\"\r\n        ></div>\r\n        <ng-content></ng-content>\r\n      </ul>\r\n    </div>\r\n  </div>","/** code from https://github.com/angular/material2 */\r\n\r\nimport {\r\n  AfterContentChecked,\r\n  AfterViewInit,\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { MefDevTabComponent } from './tab.component';\r\nimport { MefDevTabsNavComponent } from './tabs-nav.component';\r\n\r\nexport interface AnimatedInterface {\r\n  inkBar: boolean;\r\n  tabPane: boolean;\r\n}\r\n\r\nexport class TabChangeEvent {\r\n  index: number;\r\n  tab: MefDevTabComponent;\r\n}\r\n\r\nexport type TabPosition = 'top' | 'bottom' | 'left' | 'right';\r\nexport type TabPositionMode = 'horizontal' | 'vertical';\r\nexport type TabType = 'line' | 'fillup' | 'linetriangle';\r\n\r\n\r\n/**\r\n  * Represents a tab set or tab group component.\r\n  * @example\r\n  * <mefdev-tabset TabPosition=\"top\" Animated=\"true\" ShowPagination=\"true\">\r\n  *   <mefdev-tab label=\"Tab 1\">Tab 1 content</mefdev-tab>\r\n  *   <mefdev-tab label=\"Tab 2\">Tab 2 content</mefdev-tab>\r\n  * </mefdev-tabset>\r\n  *\r\n  * Example of usage:\r\n  * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/tabset</example-url>\r\n  */\r\n@Component({\r\n    selector: 'mefdev-tabset',\r\n    encapsulation: ViewEncapsulation.None,\r\n    templateUrl: \"./tabset.component.html\",\r\n    standalone: false\r\n})\r\nexport class MefDevTabSetComponent implements AfterContentChecked, OnInit, AfterViewInit {\r\n  _el:any;\r\n  _classMap:any;\r\n  _prefixCls = 'nav-tabs';\r\n  _width:any;\r\n  _tabPosition: TabPosition = 'top';\r\n  _tabPositionMode: TabPositionMode = 'horizontal';\r\n  _indexToSelect: number | null = 0;\r\n  _selectedIndex: number | null = null;\r\n  _isViewInit = false;\r\n  _tabs: MefDevTabComponent[] = [];\r\n  _tabAnimation = '';\r\n  _extra_tab_class = '';\r\n  _extra_tabcontent_class = '';\r\n\r\n  /**\r\n   * Template reference for additional content to be displayed in the tab bar.\r\n   */\r\n  @Input() TabBarExtraTemplate: TemplateRef<void>;\r\n  @ContentChild('TabBarExtraContent', { static: true }) TabBarExtraContent: TemplateRef<void>;\r\n  @ViewChild('tabNav', { static: true }) _tabNav: MefDevTabsNavComponent;\r\n  @ViewChild('tabContent', { static: true }) _tabContent: ElementRef;\r\n  @ViewChild('hostContent', { static: true }) _hostContent: ElementRef;\r\n\r\n  /**\r\n   * Whether the tab set is animated. Can be a boolean or an object of type AnimatedInterface.\r\n   * @example\r\n   * - true (enables animation for both ink bar and tab pane)\r\n   * - { inkBar: true, tabPane: false } (enables animation for ink bar only)\r\n   * Default: true\r\n   */\r\n\r\n  @Input() Animated: AnimatedInterface | boolean = true;\r\n\r\n  /**\r\n   * Whether to show pagination controls for scrolling tabs.\r\n   * @example true\r\n   * Default: true\r\n   */\r\n  @Input() ShowPagination = true;\r\n\r\n  /**\r\n   * Whether the tab set is hidden.\r\n   * @example true\r\n   * Default: false\r\n   */\r\n  @Input() Hide = false;\r\n\r\n  /**\r\n   * The index of the selected tab.\r\n   */\r\n  @Input()\r\n  set SelectedIndex(value: number | null) {\r\n    this._indexToSelect = value;\r\n  }\r\n\r\n  get SelectedIndex(): number | null {\r\n    return this._selectedIndex;\r\n  }\r\n\r\n  /**\r\n   * Event emitted when the selected tab index changes.\r\n   * @returns An Observable emitting the index of the selected tab.\r\n   */\r\n  @Output()\r\n  get SelectedIndexChange(): Observable<number> {\r\n    //@ts-ignore\r\n    return this.SelectChange.pipe(map((event:any) => event.index));\r\n  }\r\n\r\n  /**\r\n   * Event emitted when a tab is selected.\r\n   * @example\r\n   * <mefdev-tabset (SelectChange)=\"onTabSelect($event)\"></mefdev-tabset>\r\n   */\r\n  @Output() SelectChange: EventEmitter<TabChangeEvent> = new EventEmitter<TabChangeEvent>(true);\r\n\r\n  /**\r\n   * Size of the tab set. Can be 'default', 'small', or 'large'.\r\n   * @example 'large'\r\n   * Default: 'default'\r\n   */\r\n  @Input() Size = 'default';\r\n  _type: TabType = 'line';\r\n  tabs: MefDevTabComponent[] = [];\r\n\r\n  /**\r\n   * Position of the tab set. Can be 'top', 'bottom', 'left', or 'right'.\r\n   */\r\n  @Input()\r\n  set TabPosition(value: TabPosition) {\r\n    this._tabPosition = value;\r\n    this._tabPositionMode = (value === 'top' || value === 'bottom') ? 'horizontal' : 'vertical';\r\n  }\r\n  get TabPosition(): TabPosition {\r\n    return this._tabPosition;\r\n  }\r\n\r\n  /**\r\n   * Additional CSS class for the tabs.\r\n   */\r\n  @Input()\r\n  set extraTabClass(value: string) {\r\n    this._extra_tab_class = value;\r\n  }\r\n\r\n  /**\r\n   * Additional CSS class for the tab content.\r\n   */\r\n  @Input()\r\n  set extraTabContentClass(value: string) {\r\n    this._extra_tabcontent_class = value;\r\n  }\r\n\r\n  /**\r\n   * Type of the tab set. Can be 'line', 'fillup', or 'linetriangle'.\r\n   */\r\n  @Input()\r\n  set Type(value: TabType) {\r\n    if (this._type === value) {\r\n      return;\r\n    }\r\n    this._type = value;\r\n    this._setClassMap();\r\n  }\r\n\r\n  /**\r\n   * Animation to apply to the tabs. Accepts CSS animation name.\r\n   */\r\n  @Input()\r\n  set tabAnimation(value: string) {\r\n    this._tabAnimation = value;\r\n  }\r\n\r\n  get Type(): TabType {\r\n    return this._type;\r\n  }\r\n\r\n  _setPosition(value: TabPosition): void {}\r\n\r\n  _setClassMap(): void {}\r\n\r\n  // Other properties, methods, and lifecycle hooks...\r\n\r\n  /**\r\n   * Selects the tab at the specified index.\r\n   * @param index The index of the tab to select.\r\n   * ```\r\n   * <button (click)=\"clickLabel(0)\">Select Tab 1</button>\r\n   *```\r\n   */\r\n  clickLabel(index: number): void {\r\n    if (this._tabs[index].Disabled) {\r\n    } else {\r\n      this.SelectedIndex = index;\r\n      this._tabs[index].pgClick.emit();\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._setClassMap();\r\n  }\r\n\r\n  ngAfterContentChecked(): void {\r\n    // Clamp the next selected index to the bounds of 0 and the tabs length. Note the `|| 0`, which\r\n    // ensures that values like NaN can't get through and which would otherwise throw the\r\n    // component into an infinite loop (since Math.max(NaN, 0) === NaN).\r\n    const indexToSelect = (this._indexToSelect = Math.min(this._tabs.length - 1, Math.max(this._indexToSelect || 0, 0)));\r\n\r\n    // If there is a change in selected index, emit a change event. Should not trigger if\r\n    // the selected index has not yet been initialized.\r\n    if (this._selectedIndex !== indexToSelect && this._selectedIndex != null) {\r\n      this.SelectChange.emit(this._createChangeEvent(indexToSelect));\r\n    }\r\n\r\n    // Setup the position for each tab and optionally setup an origin on the next selected tab.\r\n    this._tabs.forEach((tab: MefDevTabComponent, index: number) => {\r\n      tab.position = index - indexToSelect;\r\n      // If there is already a selected tab, then set up an origin for the next selected tab\r\n      // if it doesn't have one already.\r\n      if (this._selectedIndex != null && tab.position === 0 && !tab.origin) {\r\n        tab.origin = indexToSelect - this._selectedIndex;\r\n      }\r\n    });\r\n    this._selectedIndex = indexToSelect;\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this._isViewInit = true;\r\n  }\r\n\r\n  private _createChangeEvent(index: number): TabChangeEvent {\r\n    const event = new TabChangeEvent();\r\n    event.index = index;\r\n    if (this._tabs && this._tabs.length) {\r\n      event.tab = this._tabs[index];\r\n      this._tabs.forEach((item, i) => {\r\n        if (i !== index) {\r\n          item.pgDeselect.emit();\r\n        }\r\n      });\r\n      event.tab.pgSelect.emit();\r\n    }\r\n    return event;\r\n  }\r\n\r\n  get inkBarAnimated(): boolean {\r\n    return this.Animated === true || (this.Animated as AnimatedInterface).inkBar === true;\r\n  }\r\n\r\n  get tabPaneAnimated(): boolean {\r\n    return this.Animated === true || (this.Animated as AnimatedInterface).tabPane === true;\r\n  }\r\n\r\n  constructor(private _renderer: Renderer2) {}\r\n}\r\n","<div class=\"tab-wrapper tab-{{ _tabPositionMode }} {{ _tabPosition }} {{ _type }} {{ _extra_tab_class }}\" #hostContent>\r\n    <mefdev-tabs-nav\r\n      #tabNav\r\n      [Size]=\"Size\"\r\n      [Type]=\"Type\"\r\n      [ShowPagination]=\"ShowPagination\"\r\n      [PositionMode]=\"_tabPositionMode\"\r\n      [Position]=\"_tabPosition\"\r\n      [Animated]=\"inkBarAnimated\"\r\n      [HideBar]=\"Hide\"\r\n      [selectedIndex]=\"SelectedIndex\"\r\n    >\r\n      <ng-template #tabBarExtraContent>\r\n        <ng-template [ngTemplateOutlet]=\"TabBarExtraTemplate || TabBarExtraContent\"></ng-template>\r\n      </ng-template>\r\n      <li mefdev-tab-label [disabled]=\"tab.disabled\" (click)=\"clickLabel(i)\" *ngFor=\"let tab of _tabs; let i = index\">\r\n        <a href=\"javascript:void(0);\" class=\"\" [class.active]=\"SelectedIndex == i && !Hide\">\r\n          <ng-template [ngTemplateOutlet]=\"tab._tabHeading\"></ng-template>\r\n        </a>\r\n      </mefdev-tabs-nav>\r\n    <div class=\"tab-content-wrapper {{ _extra_tabcontent_class }}\">\r\n      <div\r\n        class=\"tab-content {{ _tabAnimation }}\"\r\n        #tabContent\r\n        [class.animated]=\"tabPaneAnimated\"\r\n        [class.not-animated]=\"!tabPaneAnimated\"\r\n        [style.margin-left.%]=\"tabPaneAnimated && -(SelectedIndex ?? -1) * 100\"\r\n      >\r\n        <mefdev-tab-body\r\n          class=\"tab-pane\"\r\n          [class.active]=\"SelectedIndex == i && !Hide\"\r\n          [class.inactive]=\"SelectedIndex != i || Hide\"\r\n          [content]=\"tab.content\"\r\n          *ngFor=\"let tab of _tabs; let i = index\"\r\n        >\r\n        </mefdev-tab-body>\r\n      </div>\r\n    </div>\r\n  </div>","import {\r\n  Component,\r\n  ContentChild,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { toBoolean } from '../util/convert';\r\nimport { MefDevTabSetComponent } from './tabset.component';\r\n\r\n@Component({\r\n    selector: 'mefdev-tab',\r\n    templateUrl: \"./tab.component.html\",\r\n    styles: [],\r\n    host: {\r\n        '[class.ant-tabs-tabpane]': 'true'\r\n    },\r\n    standalone: false\r\n})\r\nexport class MefDevTabComponent implements OnDestroy, OnInit {\r\n  private disabled = false;\r\n\r\n  position: number | null = null;\r\n  origin: number | null = null;\r\n\r\n  /**\r\n   * Sets the disabled state of the tab.\r\n   *```html\r\n   * <mefdev-tab [Disabled]=\"true\"></mefdev-tab>\r\n   * ```\r\n   */\r\n  @Input()\r\n  set Disabled(value: boolean) {\r\n    this.disabled = toBoolean(value);\r\n  }\r\n\r\n   /**\r\n   * Gets the disabled state of the tab.\r\n   */\r\n  get Disabled(): boolean {\r\n    return this.disabled;\r\n  }\r\n\r\n  /**\r\n   * Event emitted when the tab is selected.\r\n   *```html\r\n   * <mefdev-tab (pgSelect)=\"onTabSelect()\"></mefdev-tab>\r\n   * ```\r\n   */\r\n  @Output() pgSelect = new EventEmitter();\r\n\r\n  /**\r\n   * Event emitted when the tab is clicked.\r\n   *```html\r\n   * <mefdev-tab (pgClick)=\"onTabClick()\"></mefdev-tab>\r\n   * ```\r\n   */\r\n  @Output() pgClick = new EventEmitter();\r\n\r\n  /**\r\n   * Event emitted when the tab is deselected.\r\n   *```html\r\n   * <mefdev-tab (pgDeselect)=\"onTabDeselect()\"></mefdev-tab>\r\n   *```\r\n   */\r\n  @Output() pgDeselect = new EventEmitter();\r\n\r\n  /**\r\n   * Reference to the template for the tab heading.\r\n   */\r\n  @ContentChild('TabHeading', { static: true }) _tabHeading: TemplateRef<void>;\r\n\r\n  /**\r\n   * Reference to the template for the tab content.\r\n   */\r\n  @ViewChild(TemplateRef, { static: true }) _content: TemplateRef<void>;\r\n\r\n  /**\r\n   * Gets the template for the tab content.\r\n   *```html\r\n   * <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n   *```\r\n   */\r\n  get content(): TemplateRef<void> | null {\r\n    return this._content;\r\n  }\r\n\r\n  constructor(private MefDevTabSetComponent: MefDevTabSetComponent) {}\r\n\r\n  /**\r\n   * Initializes the tab component.\r\n   */\r\n  ngOnInit(): void {\r\n    this.MefDevTabSetComponent._tabs.push(this);\r\n  }\r\n\r\n  /**\r\n   * Cleans up resources when the tab component is destroyed.\r\n   */\r\n  ngOnDestroy(): void {\r\n    // Remove the tab from the parent tabset component when destroyed\r\n    this.MefDevTabSetComponent._tabs.splice(this.MefDevTabSetComponent._tabs.indexOf(this), 1);\r\n  }\r\n}\r\n","<ng-template>\r\n    <ng-content></ng-content>\r\n  </ng-template>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MefDevTabBodyComponent } from './tab-body.component';\r\nimport { MefDevTabLabelDirective } from './tab-label.directive';\r\nimport { MefDevTabComponent } from './tab.component';\r\nimport { MefDevTabsInkBarDirective } from './tabs-ink-bar.directive';\r\nimport { MefDevTabsNavComponent } from './tabs-nav.component';\r\nimport { MefDevTabSetComponent } from './tabset.component';\r\n\r\n@NgModule({\r\n  declarations: [MefDevTabComponent, MefDevTabSetComponent, MefDevTabsNavComponent, MefDevTabLabelDirective, MefDevTabsInkBarDirective, MefDevTabBodyComponent],\r\n  exports: [MefDevTabComponent, MefDevTabSetComponent, MefDevTabsNavComponent, MefDevTabLabelDirective, MefDevTabsInkBarDirective, MefDevTabBodyComponent],\r\n  imports: [CommonModule]\r\n})\r\nexport class MefDevTabsModule {}\r\n","import {InjectionToken} from '@angular/core';\r\nimport {CdkAccordion} from '@angular/cdk/accordion';\r\n\r\nexport type AccordionDisplayMode = 'default' | 'flat';\r\n\r\nexport type AccordionTogglePosition = 'before' | 'after';\r\n\r\nexport interface AccordionBase extends CdkAccordion {\r\n  hideToggle: boolean;\r\n\r\n  displayMode: AccordionDisplayMode;\r\n\r\n  togglePosition: AccordionTogglePosition;\r\n\r\n  _handleHeaderKeydown: (event: KeyboardEvent) => void;\r\n\r\n  _handleHeaderFocus: (header: any) => void;\r\n}\r\n\r\nexport const ACCORDION = new InjectionToken<AccordionBase>('ACCORDION');","import {InjectionToken} from '@angular/core';\r\nimport {CdkAccordionItem} from '@angular/cdk/accordion';\r\n\r\n\r\nexport interface ExpansionPanelBase extends CdkAccordionItem {\r\n  hideToggle: boolean;\r\n}\r\n\r\n\r\nexport const MD_EXPANSION_PANEL = new InjectionToken<ExpansionPanelBase>('MD_EXPANSION_PANEL');","import {Directive, TemplateRef, inject} from '@angular/core';\r\nimport {MD_EXPANSION_PANEL, ExpansionPanelBase} from './expansion-panel-base';\r\n\r\n@Directive({\r\n  selector: 'ng-template[mdExpansionPanelContent]',\r\n})\r\nexport class MDExpansionPanelContent {\r\n  _template = inject<TemplateRef<any>>(TemplateRef);\r\n  _expansionPanel = inject<ExpansionPanelBase>(MD_EXPANSION_PANEL, {optional: true});\r\n\r\n  constructor() {}\r\n}","import {CdkAccordionItem} from '@angular/cdk/accordion';\r\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\r\nimport {CdkPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\r\n\r\nimport {\r\n  AfterContentInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChild,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  InjectionToken,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  SimpleChanges,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  inject,\r\n  NgZone,\r\n  Renderer2,\r\n  DOCUMENT,\r\n} from '@angular/core';\r\nimport {_IdGenerator} from '@angular/cdk/a11y';\r\nimport {Subject} from 'rxjs';\r\nimport {filter, startWith, take} from 'rxjs/operators';\r\nimport {AccordionBase, AccordionTogglePosition, ACCORDION} from './accordion-base';\r\nimport {MD_EXPANSION_PANEL} from './expansion-panel-base';\r\nimport {MDExpansionPanelContent} from './expansion-panel-content';;\r\n\r\n/** Visual state of the panel used by host bindings/classes. */\r\nexport type ExpansionPanelState = 'expanded' | 'collapsed';\r\n\r\n/** Optional DI defaults for panel behavior and look. */\r\nexport interface ExpansionPanelDefaultOptions {\r\n  expandedHeight: string;\r\n  collapsedHeight: string;\r\n  hideToggle: boolean;\r\n}\r\n\r\n/** Injection token for providing default expansion-panel options. */\r\nexport const EXPANSION_PANEL_DEFAULT_OPTIONS =\r\n  new InjectionToken<ExpansionPanelDefaultOptions>('EXPANSION_PANEL_DEFAULT_OPTIONS');\r\n\r\n@Component({\r\n  styleUrl: 'expansion-panel.scss',\r\n  selector: 'md-expansion-panel',\r\n  exportAs: 'expansionPanel',\r\n  templateUrl: 'expansion-panel.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    // Provide a standalone accordion context when used outside a parent accordion.\r\n    {provide: ACCORDION, useValue: undefined},\r\n    // Expose this concrete implementation under the base token.\r\n    {provide: MD_EXPANSION_PANEL, useExisting: MDExpansionPanel},\r\n  ],\r\n  host: {\r\n    class: 'expansion-panel',\r\n    '[class.expanded]': 'expanded'\r\n  },\r\n  imports: [CdkPortalOutlet],\r\n})\r\nexport class MDExpansionPanel\r\n  extends CdkAccordionItem\r\n  implements AfterContentInit, OnChanges, OnDestroy\r\n{\r\n  /** View container for lazily attaching projected content via portals. */\r\n  private _viewContainerRef = inject(ViewContainerRef);\r\n\r\n  /** Global animation toggle for this component instance. */\r\n  private readonly _animationsDisabled = false;\r\n\r\n  /** Document reference for focus containment checks. */\r\n  private _document = inject(DOCUMENT);\r\n\r\n  /** NgZone to run listeners outside Angular and re-enter only on emit. */\r\n  private _ngZone = inject(NgZone);\r\n\r\n  /** Host element ref for event binding and CSS class toggles. */\r\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n  /** Renderer used to register `transitionend` listeners. */\r\n  private _renderer = inject(Renderer2);\r\n\r\n  /** Cleanup function returned by Renderer2.listen; called on destroy. */\r\n  private _cleanupTransitionEnd: (() => void) | undefined;\r\n\r\n  /** Whether the toggle indicator should be hidden (local or inherited). */\r\n  @Input({transform: booleanAttribute})\r\n  get hideToggle(): boolean {\r\n    return this._hideToggle || (this.accordion && this.accordion.hideToggle);\r\n  }\r\n  set hideToggle(value: boolean) {\r\n    this._hideToggle = value;\r\n  }\r\n  private _hideToggle = false;\r\n\r\n  /** Toggle position relative to header content (local or inherited). */\r\n  @Input()\r\n  get togglePosition(): AccordionTogglePosition {\r\n    return this._togglePosition || (this.accordion && this.accordion.togglePosition);\r\n  }\r\n  set togglePosition(value: AccordionTogglePosition) {\r\n    this._togglePosition = value;\r\n  }\r\n  private _togglePosition: AccordionTogglePosition;\r\n\r\n  /** Fires after the expand transition completes. */\r\n  @Output() readonly afterExpand = new EventEmitter<void>();\r\n  /** Fires after the collapse transition completes. */\r\n  @Output() readonly afterCollapse = new EventEmitter<void>();\r\n\r\n  /** Emits whenever any @Input changes (for consumers to react). */\r\n  readonly _inputChanges = new Subject<SimpleChanges>();\r\n\r\n  /** Optional parent accordion context (if inside an accordion). */\r\n  override accordion = inject<AccordionBase>(ACCORDION, {optional: true, skipSelf: true})!;\r\n\r\n  /** Lazily-projected body content (<ng-template mdExpansionPanelContent>). */\r\n  @ContentChild(MDExpansionPanelContent) _lazyContent: MDExpansionPanelContent;\r\n\r\n  /** Body host element (focus containment & transition target). */\r\n  @ViewChild('body') _body: ElementRef<HTMLElement>;\r\n\r\n  /** Wrapper element that handles the grid/height transition. */\r\n  @ViewChild('bodyWrapper')\r\n  protected _bodyWrapper: ElementRef<HTMLElement> | undefined;\r\n\r\n  /** Portal wrapping the lazy content; created on first open. */\r\n  _portal: TemplatePortal;\r\n\r\n  /** Header id for aria-controls/label association. */\r\n  _headerId: string = inject(_IdGenerator).getId('expansion-panel-header-');\r\n\r\n  constructor() {\r\n    super();\r\n\r\n    // Read defaults from DI if provided.\r\n    const defaultOptions = inject<ExpansionPanelDefaultOptions>(\r\n      EXPANSION_PANEL_DEFAULT_OPTIONS,\r\n      {optional: true},\r\n    );\r\n\r\n    // Use UniqueSelectionDispatcher from CDKAccordionItem base (ensures single expand if configured).\r\n    this._expansionDispatcher = inject(UniqueSelectionDispatcher);\r\n\r\n    if (defaultOptions) {\r\n      this.hideToggle = defaultOptions.hideToggle;\r\n    }\r\n  }\r\n\r\n  /** Host CSS helper: spacing only in default display mode when expanded. */\r\n  _hasSpacing(): boolean {\r\n    if (this.accordion) {\r\n      return this.expanded && this.accordion.displayMode === 'default';\r\n    }\r\n    return false;\r\n  }\r\n\r\n  /** Map boolean expanded flag to the public state union. */\r\n  _getExpandedState(): ExpansionPanelState {\r\n    return this.expanded ? 'expanded' : 'collapsed';\r\n  }\r\n\r\n  /** Programmatic toggle (overrides base to flip expanded flag). */\r\n  override toggle(): void {\r\n    this.expanded = !this.expanded;\r\n  }\r\n\r\n  /** Programmatic close. */\r\n  override close(): void {\r\n    this.expanded = false;\r\n  }\r\n\r\n  /** Programmatic open. */\r\n  override open(): void {\r\n    this.expanded = true;\r\n  }\r\n\r\n  /** Set up lazy content portal and animation listeners once content is ready. */\r\n  ngAfterContentInit() {\r\n    // Lazily attach content the first time the panel opens.\r\n    if (this._lazyContent && this._lazyContent._expansionPanel === this) {\r\n      this.opened\r\n        .pipe(\r\n          startWith(null),\r\n          filter(() => this.expanded && !this._portal),\r\n          take(1),\r\n        )\r\n        .subscribe(() => {\r\n          this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\r\n        });\r\n    }\r\n\r\n    this._setupAnimationEvents();\r\n  }\r\n\r\n  /** Forward raw input changes to a Subject for external observers. */\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    this._inputChanges.next(changes);\r\n  }\r\n\r\n  /** Cleanup listeners and subjects. */\r\n  override ngOnDestroy() {\r\n    super.ngOnDestroy();\r\n    this._cleanupTransitionEnd?.();\r\n    this._inputChanges.complete();\r\n  }\r\n\r\n  /** Whether the current document focus is inside the panel body. */\r\n  _containsFocus(): boolean {\r\n    if (this._body) {\r\n      const focusedElement = (this._document as any).activeElement;\r\n      const bodyElement = this._body.nativeElement!;\r\n      return focusedElement === bodyElement || bodyElement.contains(focusedElement);\r\n    }\r\n    return false;\r\n  }\r\n\r\n  /**\r\n   * Transitionend handler:\r\n   * - Ensures we react only to the body wrapper's grid-height transition.\r\n   * - Emits the appropriate afterExpand/afterCollapse event inside Angular.\r\n   */\r\n  private _transitionEndListener = ({target, propertyName}: TransitionEvent) => {\r\n    if (target === this._bodyWrapper?.nativeElement && propertyName === 'grid-template-rows') {\r\n      this._ngZone.run(() => {\r\n        if (this.expanded) {\r\n          this.afterExpand.emit();\r\n        } else {\r\n          this.afterCollapse.emit();\r\n        }\r\n      });\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Registers animation listeners:\r\n   * - In no-animation mode, emit completion events immediately on state streams.\r\n   * - Otherwise, add a `transitionend` listener and a CSS class to enable transitions,\r\n   *   after a short timeout so the initial render settles.\r\n   */\r\n  protected _setupAnimationEvents() {\r\n    this._ngZone.runOutsideAngular(() => {\r\n      if (this._animationsDisabled) {\r\n        this.opened.subscribe(() => this._ngZone.run(() => this.afterExpand.emit()));\r\n        this.closed.subscribe(() => this._ngZone.run(() => this.afterCollapse.emit()));\r\n      } else {\r\n        setTimeout(() => {\r\n          const element = this._elementRef.nativeElement;\r\n          this._cleanupTransitionEnd = this._renderer.listen(\r\n            element,\r\n            'transitionend',\r\n            this._transitionEndListener,\r\n          );\r\n          element.classList.add('expansion-panel-animations-enabled');\r\n        }, 200);\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\n/**\r\n * Simple action-row wrapper for projected buttons/links inside the panel body.\r\n * Provides a stable class hook for styling.\r\n */\r\n@Directive({\r\n  selector: 'action-row',\r\n  host: {\r\n    class: 'action-row',\r\n  },\r\n})\r\nexport class ExpansionPanelActionRow {}\r\n","<ng-content select=\"md-expansion-panel-header\"></ng-content>\r\n<div class=\"expansion-panel-content-wrapper\" [attr.inert]=\"expanded ? null : ''\" #bodyWrapper>\r\n  <div class=\"expansion-panel-content\"\r\n       role=\"region\"\r\n       [attr.aria-labelledby]=\"_headerId\"\r\n       [id]=\"id\"\r\n       #body>\r\n    <div class=\"expansion-panel-body\">\r\n      <ng-content></ng-content>\r\n      <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\r\n    </div>\r\n    <ng-content select=\"action-row\"></ng-content>\r\n  </div>\r\n</div>","import {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\r\nimport {ENTER, hasModifierKey, SPACE} from '@angular/cdk/keycodes';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Directive,\r\n  ElementRef,\r\n  Input,\r\n  numberAttribute,\r\n  OnDestroy,\r\n  ViewEncapsulation,\r\n  inject,\r\n  HostAttributeToken,\r\n} from '@angular/core';\r\nimport {EMPTY, merge, Subscription} from 'rxjs';\r\nimport {filter} from 'rxjs/operators';\r\nimport {AccordionTogglePosition} from './accordion-base';\r\nimport {\r\n  MDExpansionPanel,\r\n  ExpansionPanelDefaultOptions,\r\n  EXPANSION_PANEL_DEFAULT_OPTIONS,\r\n} from './expansion-panel';\r\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\r\n\r\n/**\r\n * Header component for an expansion panel.\r\n * - Acts as the interactive control (button role) that toggles the panel.\r\n * - Manages aria attributes and keyboard interaction.\r\n * - Syncs with parent accordion/panel inputs and emits change detection marks.\r\n */\r\n@Component({\r\n  selector: 'md-expansion-panel-header',\r\n  styleUrl: 'expansion-panel-header.scss',\r\n  templateUrl: 'expansion-panel-header.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    // Semantic and a11y\r\n    'class': 'expansion-panel-header focus-indicator',\r\n    'role': 'button',\r\n    '[attr.id]': 'panel._headerId',\r\n    '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n    '[attr.aria-controls]': '_getPanelId()',\r\n    '[attr.aria-expanded]': '_isExpanded()',\r\n    '[attr.aria-disabled]': 'panel.disabled',\r\n\r\n    // Visual state\r\n    '[class.expanded]': '_isExpanded()',\r\n    '[class.expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,\r\n    '[class.expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,\r\n    '[style.height]': '_getHeaderHeight()',\r\n\r\n    // Interaction\r\n    '(click)': '_toggle()',\r\n    '(keydown)': '_keydown($event)',\r\n  },\r\n})\r\nexport class MDExpansionPanelHeader implements AfterViewInit, OnDestroy, FocusableOption {\r\n  /** Owning panel (injected from host). */\r\n  panel = inject(MDExpansionPanel, {host: true});\r\n  /** Host element reference (focus & DOM ops). */\r\n  private _element = inject(ElementRef);\r\n  /** FocusMonitor for origin-aware focus management. */\r\n  private _focusMonitor = inject(FocusMonitor);\r\n  /** Marks for check on state changes (OnPush). */\r\n  private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n  /** Subscriptions to panel/accordion streams. */\r\n  private _parentChangeSubscription = Subscription.EMPTY;\r\n\r\n  constructor() {\r\n    const panel = this.panel;\r\n\r\n    // Optional defaults for header heights.\r\n    const defaultOptions = inject<ExpansionPanelDefaultOptions>(\r\n      EXPANSION_PANEL_DEFAULT_OPTIONS,\r\n      {optional: true},\r\n    );\r\n\r\n    // Allow host to set tabindex; default to 0.\r\n    const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\r\n    this.tabIndex = parseInt(tabIndex || '') || 0;\r\n\r\n    // Re-render when panel opens/closes or when inherited inputs change.\r\n    const accordionHideToggleChange = panel.accordion\r\n      ? panel.accordion._stateChanges.pipe(\r\n          filter(changes => !!(changes['hideToggle'] || changes['togglePosition'])),\r\n        )\r\n      : EMPTY;\r\n\r\n    this._parentChangeSubscription = merge(\r\n      panel.opened,\r\n      panel.closed,\r\n      accordionHideToggleChange,\r\n      panel._inputChanges.pipe(\r\n        filter(changes => {\r\n          return !!(changes['hideToggle'] || changes['disabled'] || changes['togglePosition']);\r\n        }),\r\n      ),\r\n    ).subscribe(() => this._changeDetectorRef.markForCheck());\r\n\r\n    // If focus is inside the body when the panel closes, return focus to header.\r\n    panel.closed\r\n      .pipe(filter(() => panel._containsFocus()))\r\n      .subscribe(() => this._focusMonitor.focusVia(this._element, 'program'));\r\n\r\n    // Apply defaults for expanded/collapsed heights, if provided.\r\n    if (defaultOptions) {\r\n      this.expandedHeight = defaultOptions.expandedHeight;\r\n      this.collapsedHeight = defaultOptions.collapsedHeight;\r\n    }\r\n  }\r\n\r\n  /** Custom height when the panel is expanded (CSS length). */\r\n  @Input() expandedHeight: string;\r\n  /** Custom height when the panel is collapsed (CSS length). */\r\n  @Input() collapsedHeight: string;\r\n\r\n  /**\r\n   * Keyboard tab stop order for the header.\r\n   * Normalized via numberAttribute; defaults to 0 if null/undefined.\r\n   */\r\n  @Input({\r\n    transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\r\n  })\r\n  tabIndex: number = 0;\r\n\r\n  /** Whether the header is effectively disabled (delegates to panel). */\r\n  get disabled(): boolean {\r\n    return this.panel.disabled;\r\n  }\r\n\r\n  /** Click/keyboard toggle handler. */\r\n  _toggle(): void {\r\n    if (!this.disabled) {\r\n      this.panel.toggle();\r\n    }\r\n  }\r\n\r\n  /** Current expanded state as boolean. */\r\n  _isExpanded(): boolean {\r\n    return this.panel.expanded;\r\n  }\r\n\r\n  /** Expanded state string used by templates/host bindings. */\r\n  _getExpandedState(): string {\r\n    return this.panel._getExpandedState();\r\n  }\r\n\r\n  /** ID of the associated panel body (for aria-controls). */\r\n  _getPanelId(): string {\r\n    return this.panel.id;\r\n  }\r\n\r\n  /** Toggle indicator placement relative to header content. */\r\n  _getTogglePosition(): AccordionTogglePosition {\r\n    return this.panel.togglePosition;\r\n  }\r\n\r\n  /** Whether to show the toggle indicator (inherits hideToggle/disabled). */\r\n  _showToggle(): boolean {\r\n    return !this.panel.hideToggle && !this.panel.disabled;\r\n  }\r\n\r\n  /** Compute header height based on state and provided inputs. */\r\n  _getHeaderHeight(): string | null {\r\n    const isExpanded = this._isExpanded();\r\n    if (isExpanded && this.expandedHeight) {\r\n      return this.expandedHeight;\r\n    } else if (!isExpanded && this.collapsedHeight) {\r\n      return this.collapsedHeight;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /** Keydown handler: Space/Enter toggles; delegate others to accordion. */\r\n  _keydown(event: KeyboardEvent) {\r\n    switch (event.keyCode) {\r\n      case SPACE:\r\n      case ENTER:\r\n        if (!hasModifierKey(event)) {\r\n          event.preventDefault();\r\n          this._toggle();\r\n        }\r\n        break;\r\n      default:\r\n        if (this.panel.accordion) {\r\n          this.panel.accordion._handleHeaderKeydown(event);\r\n        }\r\n        return;\r\n    }\r\n  }\r\n\r\n  /** FocusableOption implementation with origin-aware focus. */\r\n  focus(origin?: FocusOrigin, options?: FocusOptions) {\r\n    if (origin) {\r\n      this._focusMonitor.focusVia(this._element, origin, options);\r\n    } else {\r\n      this._element.nativeElement.focus(options);\r\n    }\r\n  }\r\n\r\n  /** Start monitoring focus and notify accordion when header gains focus. */\r\n  ngAfterViewInit() {\r\n    this._focusMonitor.monitor(this._element).subscribe(origin => {\r\n      if (origin && this.panel.accordion) {\r\n        this.panel.accordion._handleHeaderFocus(this);\r\n      }\r\n    });\r\n  }\r\n\r\n  /** Cleanup subscriptions and focus monitoring. */\r\n  ngOnDestroy() {\r\n    this._parentChangeSubscription.unsubscribe();\r\n    this._focusMonitor.stopMonitoring(this._element);\r\n  }\r\n}\r\n\r\n/** Projected description container inside the header (styling hook). */\r\n@Directive({\r\n  selector: 'md-panel-description',\r\n  host: {\r\n    class: 'expansion-panel-header-description',\r\n  },\r\n})\r\nexport class ExpansionPanelDescription {}\r\n\r\n/** Projected title container inside the header (styling hook). */\r\n@Directive({\r\n  selector: 'md-panel-title',\r\n  host: {\r\n    class: 'expansion-panel-header-title',\r\n  },\r\n})\r\nexport class ExpansionPanelTitle {}\r\n","<span class=\"content\" [class.content-hide-toggle]=\"!_showToggle()\">\r\n  <ng-content select=\"md-panel-title\"></ng-content>\r\n  <ng-content select=\"md-panel-description\"></ng-content>\r\n  <ng-content></ng-content>\r\n</span>\r\n\r\n@if (_showToggle()) {\r\n  <span class=\"expansion-indicator\">\r\n    <svg\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      viewBox=\"0 -960 960 960\"\r\n      aria-hidden=\"true\"\r\n      focusable=\"false\">\r\n      <path d=\"M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z\"/>\r\n    </svg>\r\n  </span>\r\n}","import {\r\n  Directive,\r\n  Input,\r\n  ContentChildren,\r\n  QueryList,\r\n  AfterContentInit,\r\n  OnDestroy,\r\n  booleanAttribute,\r\n} from '@angular/core';\r\nimport { CdkAccordion } from '@angular/cdk/accordion';\r\nimport { FocusKeyManager } from '@angular/cdk/a11y';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { ACCORDION, AccordionBase, AccordionDisplayMode, AccordionTogglePosition } from './accordion-base';\r\nimport { MDExpansionPanelHeader } from './expansion-panel-header';\r\n\r\n/**\r\n * Accordion container that coordinates multiple expansion panels.\r\n * - Provides the ACCORDION token for children to read common settings.\r\n * - Manages roving focus across panel headers with FocusKeyManager.\r\n * - Filters projected headers so only this accordion’s own headers are managed.\r\n */\r\n@Directive({\r\n  selector: 'md-accordion',\r\n  exportAs: 'mdAccordion',\r\n  providers: [\r\n    {\r\n      provide: ACCORDION,\r\n      useExisting: MDAccordion,\r\n    },\r\n  ],\r\n  host: {\r\n    class: 'accordion',\r\n    // Visual hint when multi-selection is enabled (inherited from CdkAccordion).\r\n    '[class.accordion-multi]': 'this.multi',\r\n  },\r\n})\r\nexport class MDAccordion extends CdkAccordion implements AccordionBase, AfterContentInit, OnDestroy {\r\n  /** Keyboard manager for roving focus (Home/End/Arrow navigation). */\r\n  private _keyManager: FocusKeyManager<MDExpansionPanelHeader>;\r\n\r\n  /**\r\n   * Local QueryList containing only headers owned by this accordion.\r\n   * We derive it from `_headers` because projected content could include\r\n   * nested accordions or headers belonging to another parent.\r\n   */\r\n  private _ownHeaders = new QueryList<MDExpansionPanelHeader>();\r\n\r\n  /** All descendant headers from projected content (may include foreign ones). */\r\n  @ContentChildren(MDExpansionPanelHeader, { descendants: true })\r\n  _headers: QueryList<MDExpansionPanelHeader>;\r\n\r\n  /** Hides the toggle arrow/indicator on all child panels. */\r\n  @Input({ transform: booleanAttribute })\r\n  hideToggle: boolean = false;\r\n\r\n  /** Display mode that affects spacing/styling of panels. */\r\n  @Input() displayMode: AccordionDisplayMode = 'default';\r\n\r\n  /** Placement of the toggle indicator relative to header content. */\r\n  @Input() togglePosition: AccordionTogglePosition = 'after';\r\n\r\n  /** After content init, filter and wire focus management. */\r\n  ngAfterContentInit() {\r\n    // Keep `_ownHeaders` in sync with only the headers whose `panel.accordion === this`.\r\n    this._headers.changes\r\n      .pipe(startWith(this._headers))\r\n      .subscribe((headers: QueryList<MDExpansionPanelHeader>) => {\r\n        this._ownHeaders.reset(headers.filter(header => header.panel.accordion === this));\r\n        this._ownHeaders.notifyOnChanges();\r\n      });\r\n\r\n    // Enable wrap-around and Home/End navigation across owned headers.\r\n    this._keyManager = new FocusKeyManager(this._ownHeaders).withWrap().withHomeAndEnd();\r\n  }\r\n\r\n  /** Delegate keydown from a header to the key manager (arrow/home/end handling). */\r\n  _handleHeaderKeydown(event: KeyboardEvent) {\r\n    this._keyManager.onKeydown(event);\r\n  }\r\n\r\n  /** Update the active item when a particular header gains focus. */\r\n  _handleHeaderFocus(header: MDExpansionPanelHeader) {\r\n    this._keyManager.updateActiveItem(header);\r\n  }\r\n\r\n  /** Tear down key manager and QueryList on destroy; call base cleanup too. */\r\n  override ngOnDestroy() {\r\n    super.ngOnDestroy();\r\n    this._keyManager?.destroy();\r\n    this._ownHeaders.destroy();\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MDAccordion } from './accordion';\r\nimport { MDExpansionPanel, ExpansionPanelActionRow } from './expansion-panel';\r\nimport { ExpansionPanelDescription, MDExpansionPanelHeader, ExpansionPanelTitle } from './expansion-panel-header';\r\nimport { MDExpansionPanelContent } from './expansion-panel-content';\r\n\r\nexport const components = [\r\n    MDAccordion,\r\n    MDExpansionPanel,\r\n    ExpansionPanelActionRow,\r\n    MDExpansionPanelHeader,\r\n    ExpansionPanelTitle,\r\n    ExpansionPanelDescription,\r\n    MDExpansionPanelContent,\r\n];\r\n\r\n@NgModule({\r\n    exports: [...components],\r\n    imports: [CommonModule, ...components],\r\n})\r\nexport class MDCollapseModule {}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  Directive,\r\n  InjectionToken,\r\n  Input,\r\n  ViewEncapsulation,\r\n  inject,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Public API type that controls the overall visual style of the card.\r\n * - `'outlined'` — draws an outline around the card.\r\n * - `'raised'`   — default look with elevation (shadow).\r\n * - `'filled'`   — filled background emphasis.\r\n */\r\nexport type CardAppearance = 'outlined' | 'raised' | 'filled';\r\n\r\n/**\r\n * Optional DI-provided configuration for MDCard defaults.\r\n * Allows setting application-wide defaults without touching each instance.\r\n */\r\nexport interface CardConfig {\r\n  /** Default appearance applied to all cards unless overridden per instance. */\r\n  appearance?: CardAppearance;\r\n}\r\n\r\n/**\r\n * Injection token for providing a global {@link CardConfig}.\r\n *\r\n * @example App-wide default\r\n * ```ts\r\n * providers: [{ provide: CARD_CONFIG, useValue: { appearance: 'filled' } as CardConfig }]\r\n * ```\r\n */\r\nexport const CARD_CONFIG = new InjectionToken<CardConfig>('CARD_CONFIG');\r\n\r\n/**\r\n * Root Card component.\r\n *\r\n * @remarks\r\n * - Renders a Material Design–like card container.\r\n * - Applies host CSS classes based on the {@link appearance} input.\r\n * - Reads optional defaults from DI via {@link CARD_CONFIG}.\r\n *\r\n * Template & styles:\r\n * - `templateUrl: 'card.html'` — defines the card structure/slots.\r\n * - `styleUrl: 'card.scss'`    — variants and section styling.\r\n *\r\n * Performance:\r\n * - `ChangeDetectionStrategy.OnPush` to minimize change detection work.\r\n *\r\n * Export:\r\n * - `exportAs: 'mdCard'` — allows `#card=\"mdCard\"` in templates.\r\n */\r\n@Component({\r\n  selector: 'md-card',\r\n  templateUrl: 'card.html',\r\n  styleUrl: 'card.scss',\r\n  host: {\r\n    class: 'mdc-card mdc-card',\r\n    '[class.mdc-card-outlined]': 'appearance === \"outlined\"',\r\n    '[class.mdc-card--outlined]': 'appearance === \"outlined\"',\r\n    '[class.mdc-card-filled]': 'appearance === \"filled\"',\r\n    '[class.mdc-card--filled]': 'appearance === \"filled\"',\r\n  },\r\n  exportAs: 'mdCard',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MDCard {\r\n  /**\r\n   * Controls the visual style of the card.\r\n   *\r\n   * @default 'outlined' (or {@link CARD_CONFIG}.appearance if provided)\r\n   * @ignore\r\n   */\r\n  @Input() appearance: CardAppearance;\r\n\r\n  constructor() {\r\n    const config = inject<CardConfig>(CARD_CONFIG, { optional: true });\r\n    this.appearance = config?.appearance || 'outlined';\r\n  }\r\n}\r\n\r\n/**\r\n * Title directive.\r\n *\r\n * @example\r\n * ```html\r\n * <md-card-title>Title</md-card-title>\r\n * <div md-card-title>Title</div>\r\n * <div [mdCardTitle]>Title</div>\r\n * ```\r\n *\r\n * Adds a semantic class for styling the title area.\r\n */\r\n@Directive({\r\n  selector: `md-card-title, [md-card-title], [mdCardTitle]`,\r\n  host: { class: 'mdc-card-title' },\r\n})\r\nexport class MDCardTitle {}\r\n\r\n/**\r\n * Title group component.\r\n * Encapsulates grouped title-related content (e.g., title + subtitle + avatar).\r\n * Template is defined in `card-title-group.html`.\r\n */\r\n@Component({\r\n  selector: 'md-card-title-group',\r\n  templateUrl: 'card-title-group.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: { class: 'mdc-card-title-group' },\r\n})\r\nexport class MDCardTitleGroup {}\r\n\r\n/**\r\n * Content directive for the main textual/body area of the card.\r\n *\r\n * @example\r\n * ```html\r\n * <md-card-content>...</md-card-content>\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'md-card-content',\r\n  host: { class: 'mdc-card-content' },\r\n})\r\nexport class MDCardContent {}\r\n\r\n/**\r\n * Subtitle directive.\r\n *\r\n * @example\r\n * ```html\r\n * <md-card-subtitle>Subtitle</md-card-subtitle>\r\n * <div md-card-subtitle>Subtitle</div>\r\n * <div [mdCardSubtitle]>Subtitle</div>\r\n * ```\r\n *\r\n * Adds a semantic class for styling the subtitle text.\r\n */\r\n@Directive({\r\n  selector: `md-card-subtitle, [md-card-subtitle], [mdCardSubtitle]`,\r\n  host: { class: 'mdc-card-subtitle' },\r\n})\r\nexport class MDCardSubtitle {}\r\n\r\n/**\r\n * Actions directive.\r\n * Represents the action row (e.g., buttons) at the bottom or top of a card.\r\n *\r\n * Host classes:\r\n * - Base: `'mdc-card-actions mdc-card__actions'`\r\n * - If `align === 'end'`, also applies `'mdc-card-actions-align-end'`.\r\n */\r\n@Directive({\r\n  selector: 'md-card-actions',\r\n  exportAs: 'mdCardActions',\r\n  host: {\r\n    class: 'mdc-card-actions mdc-card__actions',\r\n    '[class.mdc-card-actions-align-end]': 'align === \"end\"',\r\n  },\r\n})\r\nexport class MDCardActions {\r\n  /**\r\n   * Controls horizontal alignment of actions.\r\n   * - `'start'` — actions align to the start edge\r\n   * - `'end'`   — actions align to the end edge\r\n   *\r\n   * @default 'start'\r\n   *\r\n   * @example\r\n   * ```html\r\n   * <md-card-actions align=\"end\">\r\n   *   <button md-button>Save</button>\r\n   * </md-card-actions>\r\n   * ```\r\n   */\r\n  @Input() align: 'start' | 'end' = 'start';\r\n}\r\n\r\n/**\r\n * Header component.\r\n * A dedicated container for card header content (e.g., avatar, title/subtitle group).\r\n * Template is defined in `card-header.html`.\r\n */\r\n@Component({\r\n  selector: 'md-card-header',\r\n  templateUrl: 'card-header.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: { class: 'mdc-card-header' },\r\n})\r\nexport class MDCardHeader {}\r\n\r\n/**\r\n * Footer directive.\r\n * A semantic area for card footers—secondary info, meta, or supplementary actions.\r\n */\r\n@Directive({\r\n  selector: 'md-card-footer',\r\n  host: { class: 'mdc-card-footer' },\r\n})\r\nexport class MDCardFooter {}\r\n\r\n/**\r\n * Image directive (default size).\r\n * Applies media-related classes to display a cover/media area inside the card.\r\n *\r\n * @example\r\n * ```html\r\n * <div md-card-image style=\"background-image:url(...)\"></div>\r\n * <div [mdCardImage]></div>\r\n * ```\r\n *\r\n * Note: Actual sizing (height/ratio) should be defined in `card.scss`.\r\n */\r\n@Directive({\r\n  selector: '[md-card-image], [mdCardImage]',\r\n  host: { class: 'mdc-card-image mdc-card__media' },\r\n})\r\nexport class MDCardImage {}\r\n\r\n/**\r\n * Small image directive.\r\n * Adds the same base media classes; size differences should be implemented in CSS.\r\n */\r\n@Directive({\r\n  selector: '[md-card-sm-image], [mdCardImageSmall]',\r\n  host: { class: 'mdc-card-sm-image mdc-card__media' },\r\n})\r\nexport class MDCardSmImage {}\r\n\r\n/**\r\n * Medium image directive.\r\n * Adds the same base media classes; size differences should be implemented in CSS.\r\n */\r\n@Directive({\r\n  selector: '[md-card-md-image], [mdCardImageMedium]',\r\n  host: { class: 'mdc-card-md-image mdc-card__media' },\r\n})\r\nexport class MDCardMdImage {}\r\n\r\n/**\r\n * Large image directive.\r\n * Adds the same base media classes; size differences should be implemented in CSS.\r\n */\r\n@Directive({\r\n  selector: '[md-card-lg-image], [mdCardImageLarge]',\r\n  host: { class: 'mdc-card-lg-image mdc-card__media' },\r\n})\r\nexport class MDCardLgImage {}\r\n\r\n/**\r\n * Extra-large image directive.\r\n * Adds the same base media classes; size differences should be implemented in CSS.\r\n */\r\n@Directive({\r\n  selector: '[md-card-xl-image], [mdCardImageXLarge]',\r\n  host: { class: 'mdc-card-xl-image mdc-card__media' },\r\n})\r\nexport class MDCardXlImage {}\r\n\r\n/**\r\n * Avatar directive.\r\n * Intended for small, typically circular images near the title/header area.\r\n * The concrete size/shape should be controlled via CSS (e.g., width/height/border-radius).\r\n */\r\n@Directive({\r\n  selector: '[md-card-avatar], [mdCardAvatar]',\r\n  host: { class: 'mdc-card-avatar' },\r\n})\r\nexport class MDCardAvatar {}\r\n","<ng-content></ng-content>","<div>\r\n    <ng-content\r\n        select=\"md-card-title, md-card-subtitle,\r\n      [md-card-title], [md-card-subtitle],\r\n      [mdCardTitle], [mdCardSubtitle]\"\r\n    ></ng-content>\r\n</div>\r\n<ng-content\r\n    select=\"[card-image], [cardImage],\r\n                    [card-sm-image], [cardImageSmall],\r\n                    [card-md-image], [cardImageMedium],\r\n                    [card-lg-image], [cardImageLarge],\r\n                    [card-xl-image], [cardImageXLarge]\"\r\n></ng-content>\r\n<ng-content></ng-content>\r\n","<ng-content select=\"[md-card-avatar], [mdCardAvatar]\"></ng-content>\r\n<div class=\"mdc-card-header-text\">\r\n    <ng-content\r\n        select=\"md-card-title, md-card-subtitle,\r\n      [md-card-title], [md-card-subtitle],\r\n      [mdCardTitle], [mdCardSubtitle]\"\r\n    ></ng-content>\r\n</div>\r\n<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport {\r\n    MDCard,\r\n    MDCardActions,\r\n    MDCardAvatar,\r\n    MDCardContent,\r\n    MDCardFooter,\r\n    MDCardHeader,\r\n    MDCardImage,\r\n    MDCardLgImage,\r\n    MDCardMdImage,\r\n    MDCardSmImage,\r\n    MDCardSubtitle,\r\n    MDCardTitle,\r\n    MDCardTitleGroup,\r\n    MDCardXlImage,\r\n} from './card';\r\n\r\nconst CARD_DIRECTIVES = [\r\n    MDCard,\r\n    MDCardActions,\r\n    MDCardAvatar,\r\n    MDCardContent,\r\n    MDCardFooter,\r\n    MDCardHeader,\r\n    MDCardImage,\r\n    MDCardLgImage,\r\n    MDCardMdImage,\r\n    MDCardSmImage,\r\n    MDCardSubtitle,\r\n    MDCardTitle,\r\n    MDCardTitleGroup,\r\n    MDCardXlImage,\r\n];\r\n\r\n@NgModule({\r\n    imports: CARD_DIRECTIVES,\r\n    exports: CARD_DIRECTIVES,\r\n})\r\nexport class MDCardModule {}\r\n","import {ViewContainerRef, Injector} from '@angular/core';\r\nimport {Direction} from '@angular/cdk/bidi';\r\nimport {ScrollStrategy} from '@angular/cdk/overlay';\r\nimport {DialogConfig} from '@angular/cdk/dialog';\r\n\r\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\r\n\r\nexport type DialogRole = 'dialog' | 'alertdialog';\r\n\r\nexport interface DialogPosition {\r\n  top?: string;\r\n  bottom?: string;\r\n  left?: string;\r\n  right?: string;\r\n}\r\n\r\nexport class MefDevDialogConfig<D = any> {\r\n  viewContainerRef?: ViewContainerRef;\r\n  injector?: Injector;\r\n  id?: string;\r\n  role?: DialogRole = 'dialog';\r\n  panelClass?: string | string[] = '';\r\n  hasBackdrop?: boolean = true;\r\n  backdropClass?: string | string[] = '';\r\n  disableClose?: boolean = false;\r\n  closePredicate?: <\r\n    Result = unknown,\r\n    Component = unknown,\r\n    Config extends DialogConfig = MefDevDialogConfig,\r\n  >(\r\n    result: Result | undefined,\r\n    config: Config,\r\n    componentInstance: Component | null,\r\n  ) => boolean;\r\n  width?: string = '';\r\n  height?: string = '';\r\n  minWidth?: number | string;\r\n  minHeight?: number | string;\r\n  maxWidth?: number | string;\r\n  maxHeight?: number | string;\r\n  position?: DialogPosition;\r\n  data?: D | null = null;\r\n  direction?: Direction;\r\n  ariaDescribedBy?: string | null = null;\r\n  ariaLabelledBy?: string | null = null;\r\n  ariaLabel?: string | null = null;\r\n  ariaModal?: boolean = false;\r\n  autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';\r\n  restoreFocus?: boolean = true;\r\n  delayFocusTrap?: boolean = true;\r\n  scrollStrategy?: ScrollStrategy;\r\n  closeOnNavigation?: boolean = true;\r\n  enterAnimationDuration?: string | number;\r\n  exitAnimationDuration?: string | number;\r\n  animationPosition?: 'top' | 'right' | 'bottom' | 'left';\r\n}\r\n","import {FocusOrigin} from '@angular/cdk/a11y';\r\nimport {merge, Observable, Subject} from 'rxjs';\r\nimport {DialogRef} from '@angular/cdk/dialog';\r\nimport {DialogPosition, MefDevDialogConfig} from './dialog-config';\r\nimport {MDDialogContainer} from './dialog-container';\r\nimport {filter, take} from 'rxjs/operators';\r\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\r\nimport {GlobalPositionStrategy} from '@angular/cdk/overlay';\r\nimport {ComponentRef} from '@angular/core';\r\n\r\n/**\r\n * Internal finite state for a dialog's lifecycle.\r\n * - OPEN:    visible and interactive\r\n * - CLOSING: exit animation playing or teardown in progress\r\n * - CLOSED:  fully closed and resources released\r\n */\r\nexport enum DialogState {\r\n  OPEN,\r\n  CLOSING,\r\n  CLOSED,\r\n}\r\n\r\n/**\r\n * Strongly-typed wrapper around CDK's DialogRef with MEF/MD container integration.\r\n *\r\n * Responsibilities:\r\n * - Expose open/close lifecycle streams (afterOpened, beforeClosed, afterClosed).\r\n * - Respect `disableClose`, ESC and backdrop click behavior.\r\n * - Start/await container animations and provide a fallback close timeout.\r\n * - Bridge size/position/panel class updates to the underlying CDK dialog.\r\n * - Track the interaction type (mouse/keyboard) that triggered close for focus restoration.\r\n */\r\nexport class MefDevDialogRef<T, R = any> {\r\n  /** Instance of the component hosted inside the dialog (if opened via component). */\r\n  componentInstance: T;\r\n\r\n  /** Low-level componentRef for advanced users (null for TemplateRef opens). */\r\n  readonly componentRef: ComponentRef<T> | null;\r\n\r\n  /** When true, ESC and backdrop click won't close the dialog. */\r\n  disableClose: boolean | undefined;\r\n\r\n  /** Dialog id (auto-generated unless provided in config). */\r\n  id: string;\r\n\r\n  /** Emits once when the dialog has finished its enter animation. */\r\n  private readonly _afterOpened = new Subject<void>();\r\n\r\n  /** Emits right before the dialog starts closing (with the result). */\r\n  private readonly _beforeClosed = new Subject<R | undefined>();\r\n\r\n  /** Cached result passed to `close(result)`; emitted via afterClosed. */\r\n  private _result: R | undefined;\r\n\r\n  /** Fallback timer that triggers `_finishDialogClose` if animation events don't arrive. */\r\n  private _closeFallbackTimeout: ReturnType<typeof setTimeout>;\r\n\r\n  /** Current lifecycle state of the dialog. */\r\n  private _state = DialogState.OPEN;\r\n\r\n  /** Input modality that caused the close (used for focus origin on restore). */\r\n  private _closeInteractionType: FocusOrigin | undefined;\r\n\r\n  constructor(\r\n    /** Underlying CDK dialog ref. */\r\n    private _ref: DialogRef<R, T>,\r\n    /** Immutable configuration used to open this dialog. */\r\n    private _config: MefDevDialogConfig,\r\n    /** Reference to the container component that hosts animations and structure. */\r\n    public _containerInstance: MDDialogContainer,\r\n  ) {\r\n    this.disableClose = _config.disableClose;\r\n    this.id = _ref.id;\r\n\r\n    // Apply a base host class for theming/layout.\r\n    _ref.addPanelClass('mdc-dialog-panel');\r\n\r\n    // When container reports it's fully opened, emit and complete `afterOpened`.\r\n    _containerInstance._animationStateChanged\r\n      .pipe(filter(event => event.state === 'opened'), take(1))\r\n      .subscribe(() => {\r\n        this._afterOpened.next();\r\n        this._afterOpened.complete();\r\n      });\r\n\r\n    // When container reports it's fully closed, cancel fallback and finalize close.\r\n    _containerInstance._animationStateChanged\r\n      .pipe(filter(event => event.state === 'closed'), take(1))\r\n      .subscribe(() => {\r\n        clearTimeout(this._closeFallbackTimeout);\r\n        this._finishDialogClose();\r\n      });\r\n\r\n    // If the overlay detaches (e.g., parent destroyed), finalize close immediately.\r\n    _ref.overlayRef.detachments().subscribe(() => {\r\n      this._beforeClosed.next(this._result);\r\n      this._beforeClosed.complete();\r\n      this._finishDialogClose();\r\n    });\r\n\r\n    // Default close interactions: backdrop click and ESC (unless disabled).\r\n    merge(\r\n      this.backdropClick(),\r\n      this.keydownEvents().pipe(\r\n        filter(event => event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)),\r\n      ),\r\n    ).subscribe(event => {\r\n      if (!this.disableClose) {\r\n        event.preventDefault();\r\n        _closeDialogVia(this, event.type === 'keydown' ? 'keyboard' : 'mouse');\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Programmatically close the dialog with an optional result.\r\n   * Respects an optional `closePredicate` to veto the close.\r\n   */\r\n  close(dialogResult?: R): void {\r\n    const closePredicate = this._config.closePredicate;\r\n\r\n    // Allow the caller to veto closing based on the result, config, or component state.\r\n    if (closePredicate && !closePredicate(dialogResult, this._config, this.componentInstance)) {\r\n      return;\r\n    }\r\n\r\n    this._result = dialogResult;\r\n\r\n    // When container transitions to \"closing\", emit beforeClosed and start fallback timer.\r\n    this._containerInstance._animationStateChanged\r\n      .pipe(filter(event => event.state === 'closing'), take(1))\r\n      .subscribe(event => {\r\n        this._beforeClosed.next(dialogResult);\r\n        this._beforeClosed.complete();\r\n\r\n        // Remove the backdrop immediately to hint that closing has started.\r\n        this._ref.overlayRef.detachBackdrop();\r\n\r\n        // Fallback to ensure `_finishDialogClose` runs even if `closed` event doesn't fire.\r\n        this._closeFallbackTimeout = setTimeout(\r\n          () => this._finishDialogClose(),\r\n          event.totalTime + 100,\r\n        );\r\n      });\r\n\r\n    // Move into the CLOSING state and kick off exit animation on the container.\r\n    this._state = DialogState.CLOSING;\r\n    this._containerInstance._startExitAnimation();\r\n  }\r\n\r\n  /** Stream that emits once the dialog is fully opened (after enter animation). */\r\n  afterOpened(): Observable<void> {\r\n    return this._afterOpened;\r\n  }\r\n\r\n  /** Stream that emits the result after the dialog is fully closed and disposed. */\r\n  afterClosed(): Observable<R | undefined> {\r\n    return this._ref.closed;\r\n  }\r\n\r\n  /** Stream that emits right before the dialog starts closing with the result (if any). */\r\n  beforeClosed(): Observable<R | undefined> {\r\n    return this._beforeClosed;\r\n  }\r\n\r\n  /** Backdrop click stream (useful for custom close logic / analytics). */\r\n  backdropClick(): Observable<MouseEvent> {\r\n    return this._ref.backdropClick;\r\n  }\r\n\r\n  /** Keydown stream scoped to the dialog overlay (e.g., listen for ESC). */\r\n  keydownEvents(): Observable<KeyboardEvent> {\r\n    return this._ref.keydownEvents;\r\n  }\r\n\r\n  /**\r\n   * Updates the dialog position. If top/bottom or left/right are not provided,\r\n   * the dialog will be centered on that axis.\r\n   */\r\n  updatePosition(position?: DialogPosition): this {\r\n    let strategy = this._ref.config.positionStrategy as GlobalPositionStrategy;\r\n\r\n    if (position && (position.left || position.right)) {\r\n      position.left ? strategy.left(position.left) : strategy.right(position.right);\r\n    } else {\r\n      strategy.centerHorizontally();\r\n    }\r\n\r\n    if (position && (position.top || position.bottom)) {\r\n      position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\r\n    } else {\r\n      strategy.centerVertically();\r\n    }\r\n\r\n    this._ref.updatePosition();\r\n    return this;\r\n  }\r\n\r\n  /** Updates dialog width/height (CSS length values, e.g. '600px', '80vh'). */\r\n  updateSize(width: string = '', height: string = ''): this {\r\n    this._ref.updateSize(width, height);\r\n    return this;\r\n  }\r\n\r\n  /** Adds one or more CSS classes to the overlay panel. */\r\n  addPanelClass(classes: string | string[]): this {\r\n    this._ref.addPanelClass(classes);\r\n    return this;\r\n  }\r\n\r\n  /** Removes one or more CSS classes from the overlay panel. */\r\n  removePanelClass(classes: string | string[]): this {\r\n    this._ref.removePanelClass(classes);\r\n    return this;\r\n  }\r\n\r\n  /** Returns the current lifecycle state of the dialog. */\r\n  getState(): DialogState {\r\n    return this._state;\r\n  }\r\n\r\n  /**\r\n   * Finalizes the closing sequence:\r\n   * - Sets state to CLOSED\r\n   * - Closes underlying CDK ref (emits afterClosed with the result)\r\n   * - Clears strong reference to the component instance\r\n   */\r\n  private _finishDialogClose() {\r\n    this._state = DialogState.CLOSED;\r\n    this._ref.close(this._result, {focusOrigin: this._closeInteractionType});\r\n    this.componentInstance = null!;\r\n  }\r\n}\r\n\r\n/**\r\n * Helper to close a dialog and tag the close with the interaction origin.\r\n * Used by default ESC/backdrop handlers to restore focus appropriately.\r\n */\r\nexport function _closeDialogVia<R>(ref: MefDevDialogRef<R>, interactionType: FocusOrigin, result?: R) {\r\n  (ref as unknown as {_closeInteractionType: FocusOrigin})._closeInteractionType = interactionType;\r\n  return ref.close(result);\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ComponentRef,\r\n  EventEmitter,\r\n  OnDestroy,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MefDevDialogConfig } from './dialog-config';\r\nimport { CdkDialogContainer } from '@angular/cdk/dialog';\r\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\r\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\r\n\r\n/** Legacy-style animation event payload used by the dialog service/ref. */\r\ninterface LegacyDialogAnimationEvent {\r\n  state: 'opened' | 'opening' | 'closing' | 'closed';\r\n  totalTime: number;\r\n}\r\n\r\n/** BEM-style classes toggled during open/close sequences. */\r\nconst OPEN_CLASS = 'mdc-dialog--open';\r\nconst OPENING_CLASS = 'mdc-dialog--opening';\r\nconst CLOSING_CLASS = 'mdc-dialog--closing';\r\n\r\n/** Default animation durations (ms) if not overridden by config. */\r\nexport const OPEN_ANIMATION_DURATION = 150;\r\nexport const CLOSE_ANIMATION_DURATION = 75;\r\n\r\n@Component({\r\n  selector: 'md-dialog-container',\r\n  templateUrl: 'dialog-container.html',\r\n  styleUrl: 'dialog.scss',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.Default,\r\n  imports: [CdkPortalOutlet],\r\n  host: {\r\n    class: 'mdc-dialog-container mdc-dialog',\r\n    tabindex: '-1',\r\n    '[attr.aria-modal]': '_config.ariaModal',\r\n    '[id]': '_config.id',\r\n    '[attr.role]': '_config.role',\r\n    // If an explicit ariaLabel is provided, don't set aria-labelledby.\r\n    '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledByQueue[0]',\r\n    '[attr.aria-label]': '_config.ariaLabel',\r\n    '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\r\n    '[class.animation-noopable]': '!_animationsEnabled',\r\n    '[class.mdc-dialog-container-with-actions]': '_actionSectionCount > 0',\r\n  },\r\n})\r\nexport class MDDialogContainer extends CdkDialogContainer<MefDevDialogConfig> implements OnDestroy {\r\n  /** Emits animation lifecycle states understood by the dialog ref. */\r\n  _animationStateChanged = new EventEmitter<LegacyDialogAnimationEvent>();\r\n\r\n  /** Master flag to enable/disable animations for this container instance. */\r\n  _animationsEnabled = true;\r\n\r\n  /** Count of projected action sections (affects layout class). */\r\n  protected _actionSectionCount = 0;\r\n\r\n  /** Cached host element for class and style mutations. */\r\n  private _hostElement: HTMLElement = this._elementRef.nativeElement;\r\n\r\n  /** Effective enter animation duration derived from config (or defaults). */\r\n  private _enterAnimationDuration = this._animationsEnabled\r\n    ? parseCssTime(this._config.enterAnimationDuration) ?? OPEN_ANIMATION_DURATION\r\n    : 0;\r\n\r\n  /** Effective exit animation duration derived from config (or defaults). */\r\n  private _exitAnimationDuration = this._animationsEnabled\r\n    ? parseCssTime(this._config.exitAnimationDuration) ?? CLOSE_ANIMATION_DURATION\r\n    : 0;\r\n\r\n  /** Timer id for open/close fallback completion. */\r\n  private _animationTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n  /** After content is attached, kick off the open animation. */\r\n  protected override _contentAttached(): void {\r\n    super._contentAttached();\r\n    this._startOpenAnimation();\r\n  }\r\n\r\n  /** Optional position modifier class for origin-based animations. */\r\n  private ANIMATION_POSITION_CLASS = this._config.animationPosition\r\n    ? `mdc-animation-position-${this._config.animationPosition}`\r\n    : null;\r\n\r\n  /** Starts the open animation sequence and emits \"opening\". */\r\n  private _startOpenAnimation() {\r\n    this._animationStateChanged.emit({ state: 'opening', totalTime: this._enterAnimationDuration });\r\n\r\n    if (this._animationsEnabled) {\r\n      // Expose duration to CSS via a custom property if styles rely on it.\r\n      this._hostElement.style.setProperty(TRANSITION_DURATION_PROPERTY, `${this._enterAnimationDuration}ms`);\r\n\r\n      // Defer class application to the next frame to ensure transitions kick in.\r\n      this._requestAnimationFrame(() => {\r\n        this._hostElement.classList.add(OPENING_CLASS, OPEN_CLASS);\r\n        if (this.ANIMATION_POSITION_CLASS) {\r\n          this._hostElement.classList.add(this.ANIMATION_POSITION_CLASS);\r\n        }\r\n      });\r\n\r\n      // Provide a JS fallback in case transition events aren't delivered.\r\n      this._waitForAnimationToComplete(this._enterAnimationDuration, this._finishDialogOpen);\r\n    } else {\r\n      // No animations: immediately mark as open and finish sequence in a microtask.\r\n      this._hostElement.classList.add(OPEN_CLASS);\r\n      Promise.resolve().then(() => this._finishDialogOpen());\r\n    }\r\n  }\r\n\r\n  /** Public entrypoint called by the ref to start the close sequence. */\r\n  _startExitAnimation(): void {\r\n    this._animationStateChanged.emit({ state: 'closing', totalTime: this._exitAnimationDuration });\r\n    this._hostElement.classList.remove(OPEN_CLASS);\r\n\r\n    if (this._animationsEnabled) {\r\n      this._hostElement.style.setProperty(TRANSITION_DURATION_PROPERTY, `${this._exitAnimationDuration}ms`);\r\n\r\n      this._requestAnimationFrame(() => {\r\n        this._hostElement.classList.add(CLOSING_CLASS);\r\n        if (this.ANIMATION_POSITION_CLASS) {\r\n          this._hostElement.classList.add(this.ANIMATION_POSITION_CLASS);\r\n        }\r\n      });\r\n\r\n      // JS fallback for the exit sequence as well.\r\n      this._waitForAnimationToComplete(this._exitAnimationDuration, this._finishDialogClose);\r\n    } else {\r\n      Promise.resolve().then(() => this._finishDialogClose());\r\n    }\r\n  }\r\n\r\n  /** Tracks action sections; used to toggle a host layout class. */\r\n  _updateActionSectionCount(delta: number) {\r\n    this._actionSectionCount += delta;\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  /** Finishes open sequence: clear classes and emit \"opened\". */\r\n  private _finishDialogOpen = () => {\r\n    this._clearAnimationClasses();\r\n    this._openAnimationDone(this._enterAnimationDuration);\r\n  };\r\n\r\n  /** Finishes close sequence: clear classes and emit \"closed\". */\r\n  private _finishDialogClose = () => {\r\n    this._clearAnimationClasses();\r\n    this._animationStateChanged.emit({ state: 'closed', totalTime: this._exitAnimationDuration });\r\n  };\r\n\r\n  /** Removes transient animation classes (and optional position class). */\r\n  private _clearAnimationClasses() {\r\n    this._hostElement.classList.remove(OPENING_CLASS, CLOSING_CLASS);\r\n    if (this.ANIMATION_POSITION_CLASS) {\r\n      this._hostElement.classList.remove(this.ANIMATION_POSITION_CLASS);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Sets/refreshes a timeout to complete the animation sequence. This acts as a\r\n   * fallback when relying on CSS transitions without guaranteed end events.\r\n   */\r\n  private _waitForAnimationToComplete(duration: number, callback: () => void) {\r\n    if (this._animationTimer !== null) {\r\n      clearTimeout(this._animationTimer);\r\n    }\r\n    this._animationTimer = setTimeout(callback, duration);\r\n  }\r\n\r\n  /**\r\n   * Schedules a callback on the next animation frame, outside Angular,\r\n   * to ensure CSS transitions are applied predictably.\r\n   */\r\n  private _requestAnimationFrame(callback: () => void) {\r\n    this._ngZone.runOutsideAngular(() => {\r\n      if (typeof requestAnimationFrame === 'function') {\r\n        requestAnimationFrame(callback);\r\n      } else {\r\n        callback();\r\n      }\r\n    });\r\n  }\r\n\r\n  /** Focus handling after content attachment depending on `delayFocusTrap` config. */\r\n  protected override _captureInitialFocus(): void {\r\n    if (!this._config.delayFocusTrap) {\r\n      this._trapFocus();\r\n    }\r\n  }\r\n\r\n  /** Called when open animation completes to emit \"opened\" and (optionally) trap focus. */\r\n  protected _openAnimationDone(totalTime: number) {\r\n    if (this._config.delayFocusTrap) {\r\n      this._trapFocus();\r\n    }\r\n    this._animationStateChanged.next({ state: 'opened', totalTime });\r\n  }\r\n\r\n  /** Cleanup any pending timers on destroy. */\r\n  override ngOnDestroy() {\r\n    super.ngOnDestroy();\r\n    if (this._animationTimer !== null) {\r\n      clearTimeout(this._animationTimer);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Decorates the root component host element with a class so that card/panel\r\n   * styles can target it specifically when used inside a dialog.\r\n   */\r\n  override attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\r\n    const ref = super.attachComponentPortal(portal);\r\n    ref.location.nativeElement.classList.add('mdc-dialog-component-host');\r\n    return ref;\r\n  }\r\n}\r\n\r\n/** CSS custom property used by styles to read the transition duration. */\r\nconst TRANSITION_DURATION_PROPERTY = '--dialog-transition-duration';\r\n\r\n/**\r\n * Parses a CSS time value (e.g., '150ms', '0.15s', '0') into milliseconds.\r\n * Returns null when the input is undefined or cannot be parsed.\r\n */\r\nfunction parseCssTime(time: string | number | undefined): number | null {\r\n  if (time == null) {\r\n    return null;\r\n  }\r\n  if (typeof time === 'number') {\r\n    return time;\r\n  }\r\n  if (time.endsWith('ms')) {\r\n    return coerceNumberProperty(time.substring(0, time.length - 2));\r\n  }\r\n  if (time.endsWith('s')) {\r\n    return coerceNumberProperty(time.substring(0, time.length - 1)) * 1000;\r\n  }\r\n  if (time === '0') {\r\n    return 0;\r\n  }\r\n  return null;\r\n}\r\n","<div class=\"mdc-dialog-inner-container mdc-dialog__container\">\r\n  <div class=\"mdc-dialog-surface mdc-dialog__surface\">\r\n    <ng-template cdkPortalOutlet />\r\n  </div>\r\n</div>","import {\r\n  ComponentType,\r\n  createBlockScrollStrategy,\r\n  createGlobalPositionStrategy,\r\n  ScrollStrategy,\r\n} from '@angular/cdk/overlay';\r\nimport {\r\n  ComponentRef,\r\n  Injectable,\r\n  InjectionToken,\r\n  Injector,\r\n  OnDestroy,\r\n  TemplateRef,\r\n  Type,\r\n  inject,\r\n} from '@angular/core';\r\n\r\nimport {defer, Observable, Subject} from 'rxjs';\r\nimport {Dialog, DialogConfig} from '@angular/cdk/dialog';\r\nimport {startWith} from 'rxjs/operators';\r\nimport {_IdGenerator} from '@angular/cdk/a11y';\r\nimport { MefDevDialogConfig } from './dialog-config';\r\nimport { MefDevDialogRef } from './dialog-ref';\r\nimport { MDDialogContainer } from './dialog-container';\r\n\r\n/** Injection token used to pass arbitrary data into a dialog instance. */\r\nexport const DIALOG_DATA = new InjectionToken<any>('MdcDialogData');\r\n\r\n/** Token for providing global/default dialog configuration. */\r\nexport const DIALOG_DEFAULT_OPTIONS = new InjectionToken<MefDevDialogConfig>(\r\n  'mdc-dialog-default-options',\r\n);\r\n\r\n/**\r\n * Token that provides a factory for the scroll strategy used by dialogs.\r\n * Defaults to `createBlockScrollStrategy` which prevents body scrolling while a dialog is open.\r\n */\r\nexport const DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\r\n  'mdc-dialog-scroll-strategy',\r\n  {\r\n    providedIn: 'root',\r\n    factory: () => {\r\n      const injector = inject(Injector);\r\n      return () => createBlockScrollStrategy(injector);\r\n    },\r\n  },\r\n);\r\n\r\n/**\r\n * High-level dialog service wrapping CDK Dialog with MDC/MEF-specific defaults.\r\n *\r\n * Features:\r\n * - Merges provided config with app-level defaults.\r\n * - Creates a global centered position strategy by default.\r\n * - Emits streams for \"after opened\" and \"after all closed\".\r\n * - Keeps a stack of open dialogs and coordinates teardown.\r\n * - Bridges to a custom `MDDialogContainer` and `MefDevDialogRef`.\r\n */\r\n@Injectable({providedIn: 'root'})\r\nexport class MDDialog implements OnDestroy {\r\n  /** Optional application-wide defaults injected via `DIALOG_DEFAULT_OPTIONS`. */\r\n  private _defaultOptions = inject<MefDevDialogConfig>(DIALOG_DEFAULT_OPTIONS, {optional: true});\r\n  /** Factory for the body scroll strategy while a dialog is open. */\r\n  private _scrollStrategy = inject(DIALOG_SCROLL_STRATEGY);\r\n  /** Optional parent dialog service (supports hierarchical injectors / lazy modules). */\r\n  private _parentDialog = inject(MDDialog, {optional: true, skipSelf: true});\r\n  /** Id generator for dialog instances. */\r\n  private _idGenerator = inject(_IdGenerator);\r\n  /** Root injector needed for CDK helpers (position strategy, etc.). */\r\n  private _injector = inject(Injector);\r\n  /** Underlying CDK Dialog service. */\r\n  protected _dialog = inject(Dialog);\r\n  /** Global flag to disable dialog enter/exit animations. */\r\n  private _animationsDisabled = false;\r\n\r\n  /** Stack of open dialogs at the current injector level. */\r\n  private readonly _openDialogsAtThisLevel: MefDevDialogRef<any>[] = [];\r\n  /** Completes after the last dialog at this level has been closed. */\r\n  private readonly _afterAllClosedAtThisLevel = new Subject<void>();\r\n  /** Emits each time a dialog is opened at this level. */\r\n  private readonly _afterOpenedAtThisLevel = new Subject<MefDevDialogRef<any>>();\r\n  /** Class reference used for providing config to the container. */\r\n  protected dialogConfigClass = MefDevDialogConfig;\r\n\r\n  /** Concrete types used to construct dialog refs/containers and provide DIALOG_DATA. */\r\n  private readonly _dialogRefConstructor: Type<MefDevDialogRef<any>>;\r\n  private readonly _dialogContainerType: Type<MDDialogContainer>;\r\n  private readonly _dialogDataToken: InjectionToken<any>;\r\n\r\n  /** Public list of open dialogs (delegates to parent if present). */\r\n  get openDialogs(): MefDevDialogRef<any>[] {\r\n    return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\r\n  }\r\n\r\n  /** Stream that emits after each dialog is opened (delegates to parent if present). */\r\n  get afterOpened(): Subject<MefDevDialogRef<any>> {\r\n    return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\r\n  }\r\n\r\n  /** Internal accessor for the \"after all closed\" subject (handles parent delegation). */\r\n  private _getAfterAllClosed(): Subject<void> {\r\n    const parent = this._parentDialog;\r\n    return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\r\n  }\r\n\r\n  /**\r\n   * Emits when all dialogs (in this hierarchy) are closed.\r\n   * If there are no open dialogs at subscription time, it emits once immediately.\r\n   */\r\n  readonly afterAllClosed: Observable<void> = defer(() =>\r\n    this.openDialogs.length\r\n      ? this._getAfterAllClosed()\r\n      : this._getAfterAllClosed().pipe(startWith(undefined)),\r\n  ) as Observable<any>;\r\n\r\n  constructor() {\r\n    // Bind concrete implementations used when opening dialogs.\r\n    this._dialogRefConstructor = MefDevDialogRef;\r\n    this._dialogContainerType = MDDialogContainer;\r\n    this._dialogDataToken = DIALOG_DATA;\r\n  }\r\n\r\n  /** Overload signatures for component vs template dialogs. */\r\n  open<T, D = any, R = any>(\r\n    component: ComponentType<T>,\r\n    config?: MefDevDialogConfig<D>,\r\n  ): MefDevDialogRef<T, R>;\r\n  open<T, D = any, R = any>(\r\n    template: TemplateRef<T>,\r\n    config?: MefDevDialogConfig<D>,\r\n  ): MefDevDialogRef<T, R>;\r\n  open<T, D = any, R = any>(\r\n    template: ComponentType<T> | TemplateRef<T>,\r\n    config?: MefDevDialogConfig<D>,\r\n  ): MefDevDialogRef<T, R>;\r\n\r\n  /**\r\n   * Opens a new dialog for either a Component or a TemplateRef.\r\n   * - Merges provided config with defaults.\r\n   * - Creates and returns a `MefDevDialogRef` for control and observability.\r\n   */\r\n  open<T, D = any, R = any>(\r\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\r\n    config: MefDevDialogConfig<D> = {},\r\n  ): MefDevDialogRef<T, R> {\r\n    let dialogRef: MefDevDialogRef<T, R>;\r\n\r\n    // Merge caller config with global defaults; ensure id/scrollStrategy are set.\r\n    config = {...(this._defaultOptions || new MefDevDialogConfig()), ...config};\r\n    config.id = config.id || this._idGenerator.getId('mdc-dialog-');\r\n    config.scrollStrategy = config.scrollStrategy || this._scrollStrategy();\r\n\r\n    // Delegate creation to CDK Dialog with our container/ref wiring and MDC-ish defaults.\r\n    const cdkRef = this._dialog.open<R, D, T>(componentOrTemplateRef, {\r\n      ...config,\r\n      // Center the dialog horizontally and vertically by default.\r\n      positionStrategy: createGlobalPositionStrategy(this._injector)\r\n        .centerHorizontally()\r\n        .centerVertically(),\r\n      // The service manages close conditions; turning off CDK's default \"click outside to close\".\r\n      disableClose: true,\r\n      closePredicate: undefined,\r\n      closeOnDestroy: false,\r\n      closeOnOverlayDetachments: false,\r\n      // Compute whether animations should be disabled (global flag or 0 duration).\r\n      disableAnimations:\r\n        this._animationsDisabled ||\r\n        config.enterAnimationDuration?.toLocaleString() === '0' ||\r\n        config.exitAnimationDuration?.toString() === '0',\r\n      // Use a custom container component and provide both our and CDK config into it.\r\n      container: {\r\n        type: this._dialogContainerType,\r\n        providers: () => [\r\n          {provide: this.dialogConfigClass, useValue: config},\r\n          {provide: DialogConfig, useValue: config},\r\n        ],\r\n      },\r\n      // Expose the dialogRef as template context when opening from a TemplateRef.\r\n      templateContext: () => ({dialogRef}),\r\n      // Provide dialogRef, container and data to the component instance.\r\n      providers: (ref, cdkConfig, dialogContainer) => {\r\n        dialogRef = new this._dialogRefConstructor(ref, config, dialogContainer);\r\n        dialogRef.updatePosition(config?.position);\r\n\r\n        return [\r\n          {provide: this._dialogContainerType, useValue: dialogContainer},\r\n          {provide: this._dialogDataToken, useValue: cdkConfig.data},\r\n          {provide: this._dialogRefConstructor, useValue: dialogRef},\r\n        ];\r\n      },\r\n    });\r\n\r\n    // Bridge CDK ref to our custom ref for convenience.\r\n    (dialogRef! as {componentRef: ComponentRef<T>}).componentRef = cdkRef.componentRef!;\r\n    dialogRef!.componentInstance = cdkRef.componentInstance!;\r\n\r\n    // Track in the open stack and emit \"after opened\".\r\n    this.openDialogs.push(dialogRef!);\r\n    this.afterOpened.next(dialogRef!);\r\n\r\n    // When closed, remove from stack and emit \"after all closed\" if it was the last one.\r\n    dialogRef!.afterClosed().subscribe(() => {\r\n      const index = this.openDialogs.indexOf(dialogRef);\r\n      if (index > -1) {\r\n        this.openDialogs.splice(index, 1);\r\n        if (!this.openDialogs.length) {\r\n          this._getAfterAllClosed().next();\r\n        }\r\n      }\r\n    });\r\n\r\n    return dialogRef!;\r\n  }\r\n\r\n  /** Closes all currently open dialogs (in stack order). */\r\n  closeAll(): void {\r\n    this._closeDialogs(this.openDialogs);\r\n  }\r\n\r\n  /** Finds an open dialog by id (if any). */\r\n  getDialogById(id: string): MefDevDialogRef<any> | undefined {\r\n    return this.openDialogs.find(dialog => dialog.id === id);\r\n  }\r\n\r\n  /** On service destroy, close dialogs owned at this injector level and complete streams. */\r\n  ngOnDestroy() {\r\n    this._closeDialogs(this._openDialogsAtThisLevel);\r\n    this._afterAllClosedAtThisLevel.complete();\r\n    this._afterOpenedAtThisLevel.complete();\r\n  }\r\n\r\n  /** Helper that iterates and closes dialogs without changing array identity. */\r\n  private _closeDialogs(dialogs: MefDevDialogRef<any>[]) {\r\n    let i = dialogs.length;\r\n    while (i--) {\r\n      dialogs[i].close();\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  SimpleChanges,\r\n  inject,\r\n} from '@angular/core';\r\nimport {_IdGenerator} from '@angular/cdk/a11y';\r\nimport {CdkScrollable} from '@angular/cdk/scrolling';\r\n\r\nimport {MDDialog} from './dialog';\r\nimport {_closeDialogVia, MefDevDialogRef} from './dialog-ref';\r\n\r\n/**\r\n * Button-like directive that closes the nearest dialog when clicked.\r\n *\r\n * Usage:\r\n *   <button md-dialog-close>Close</button>\r\n *   <button mdDialogClose=\"resultValue\">Save</button>\r\n *\r\n * - It tries to inject the current MefDevDialogRef; if not available,\r\n *   it finds the nearest dialog container in the DOM and resolves the ref from MDDialog.openDialogs.\r\n * - On click, it calls `_closeDialogVia` with an interaction origin ('mouse' or 'keyboard')\r\n *   so the focus can be restored appropriately.\r\n */\r\n@Directive({\r\n  selector: '[md-dialog-close], [mdDialogClose]',\r\n  exportAs: 'mdDialogClose',\r\n  host: {\r\n    '(click)': '_onButtonClick($event)',\r\n    '[attr.aria-label]': 'ariaLabel || null',\r\n    '[attr.type]': 'type',\r\n  },\r\n})\r\nexport class MDDialogClose implements OnInit, OnChanges {\r\n  /** Injected dialog ref when available (undefined if used outside projected dialog content). */\r\n  dialogRef = inject<MefDevDialogRef<any>>(MefDevDialogRef, {optional: true})!;\r\n  /** Host element reference (used for DOM traversal when ref is not injected). */\r\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  /** Dialog service used to access `openDialogs` for fallback lookup. */\r\n  private _dialog = inject(MDDialog);\r\n\r\n  /** Optional aria-label for the closing button. */\r\n  @Input('aria-label') ariaLabel: string;\r\n  /** Native button type; defaults to \"button\" to avoid accidental form submit. */\r\n  @Input() type: 'submit' | 'button' | 'reset' = 'button';\r\n  /** Preferred input for a close result (dash-cased attribute). */\r\n  @Input('md-dialog-close') dialogResult: any;\r\n  /** CamelCased alias of the same input (kept for API parity & template style). */\r\n  @Input('mdDialogClose') dialogClose: any;\r\n\r\n  constructor() {}\r\n\r\n  /** Resolve dialogRef if it wasn't injected (e.g., directive used in a nested view). */\r\n  ngOnInit() {\r\n    if (!this.dialogRef) {\r\n      this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\r\n    }\r\n  }\r\n\r\n  /** Mirror `dialogClose` into `dialogResult` when either input changes. */\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    const proxiedChange = changes['dialogClose'] || changes['dialogCloseResult'];\r\n    if (proxiedChange) {\r\n      this.dialogResult = proxiedChange.currentValue;\r\n    }\r\n  }\r\n\r\n  /** Click handler: close the dialog and tag the interaction origin for focus restoration. */\r\n  _onButtonClick(event: MouseEvent) {\r\n    _closeDialogVia(\r\n      this.dialogRef,\r\n      // Heuristic: 0/0 screen coords generally indicate keyboard activation (e.g., Space/Enter).\r\n      event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse',\r\n      this.dialogResult,\r\n    );\r\n  }\r\n}\r\n\r\n/**\r\n * Base class for directives that represent structural sections within a dialog\r\n * (e.g., title area, actions area). It:\r\n * - Resolves the dialog ref by injection or DOM traversal.\r\n * - Calls `_onAdd()` when attached to the DOM (after microtask) so the container\r\n *   can update ARIA attributes or layout counts.\r\n * - Calls `_onRemove()` when destroyed so the container can revert those changes.\r\n */\r\n@Directive()\r\nexport abstract class DialogLayoutSection implements OnInit, OnDestroy {\r\n  /** Reference to the owning dialog (if any). */\r\n  protected _dialogRef = inject<MefDevDialogRef<any>>(MefDevDialogRef, {optional: true})!;\r\n  /** Host element reference for DOM traversal fallback. */\r\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  /** Dialog service used for fallback dialog lookup. */\r\n  private _dialog = inject(MDDialog);\r\n\r\n  // Overload kept for symmetry with other directives.\r\n  constructor(...args: unknown[]);\r\n  constructor() {}\r\n\r\n  /** Hook for subclasses to add themselves to the container (e.g., ARIA wiring, layout counters). */\r\n  protected abstract _onAdd(): void;\r\n  /** Hook for subclasses to remove themselves from the container. */\r\n  protected abstract _onRemove(): void;\r\n\r\n  ngOnInit() {\r\n    if (!this._dialogRef) {\r\n      this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\r\n    }\r\n    if (this._dialogRef) {\r\n      // Defer to next microtask so container/DOM are fully ready.\r\n      Promise.resolve().then(() => {\r\n        this._onAdd();\r\n      });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    const instance = this._dialogRef?._containerInstance;\r\n    if (instance) {\r\n      // Defer to keep symmetry with _onAdd timing and avoid mid-change CD issues.\r\n      Promise.resolve().then(() => {\r\n        this._onRemove();\r\n      });\r\n    }\r\n  }\r\n}\r\n\r\n/**\r\n * Dialog title directive.\r\n *\r\n * - Adds semantic/title classes to the host.\r\n * - Generates a unique id that is used to label the dialog via `aria-labelledby`.\r\n * - Notifies the container to add/remove this id from its aria-labelledby list.\r\n */\r\n@Directive({\r\n  selector: '[md-dialog-title], [mdDialogTitle]',\r\n  exportAs: 'mdDialogTitle',\r\n  host: {\r\n    'class': 'mdc-dialog-title mdc-dialog__title',\r\n    '[id]': 'id',\r\n  },\r\n})\r\nexport class MDDialogTitle extends DialogLayoutSection {\r\n  /** Unique id used by the container for aria-labelledby. */\r\n  @Input() id: string = inject(_IdGenerator).getId('mdc-dialog-title-');\r\n\r\n  /** Register this title id with the container for a11y. */\r\n  protected _onAdd() {\r\n    this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id);\r\n  }\r\n\r\n  /** Unregister this title id on destroy. */\r\n  protected override _onRemove(): void {\r\n    this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id);\r\n  }\r\n}\r\n\r\n/**\r\n * Scrollable content section of the dialog.\r\n * - Applies MDC content classes.\r\n * - Attaches `CdkScrollable` so consumers/tools can query/observe scroll.\r\n */\r\n@Directive({\r\n  selector: `[md-dialog-content], md-dialog-content, [mdDialogContent]`,\r\n  host: {'class': 'mdc-dialog-content mdc-dialog__content'},\r\n  hostDirectives: [CdkScrollable],\r\n})\r\nexport class MDDialogContent {}\r\n\r\n/**\r\n * Action row of the dialog (typically hosts buttons).\r\n * - Applies alignment classes based on `align` input.\r\n * - Notifies the container about the presence of an actions section so it can\r\n *   adjust layout (e.g., paddings, separators).\r\n */\r\n@Directive({\r\n  selector: `[md-dialog-actions], md-dialog-actions, [mdDialogActions]`,\r\n  host: {\r\n    'class': 'mdc-dialog-actions mdc-dialog__actions',\r\n    '[class.mdc-dialog-actions-align-start]': 'align === \"start\"',\r\n    '[class.mdc-dialog-actions-align-center]': 'align === \"center\"',\r\n    '[class.mdc-dialog-actions-align-end]': 'align === \"end\"',\r\n  },\r\n})\r\nexport class MDDialogActions extends DialogLayoutSection {\r\n  /** Horizontal alignment for the action buttons. */\r\n  @Input() align?: 'start' | 'center' | 'end';\r\n\r\n  /** Tell the container an actions section was added. */\r\n  protected _onAdd() {\r\n    this._dialogRef._containerInstance?._updateActionSectionCount?.(1);\r\n  }\r\n\r\n  /** Tell the container an actions section was removed. */\r\n  protected override _onRemove(): void {\r\n    this._dialogRef._containerInstance?._updateActionSectionCount?.(-1);\r\n  }\r\n}\r\n\r\n/**\r\n * Finds the closest MD dialog container element in the ancestors of `element`\r\n * and returns its corresponding MefDevDialogRef from the `openDialogs` stack.\r\n *\r\n * This is a fallback for cases where directives are used outside of the primary\r\n * injection context but still live inside the dialog DOM subtree.\r\n */\r\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MefDevDialogRef<any>[]) {\r\n  let parent: HTMLElement | null = element.nativeElement.parentElement;\r\n  while (parent && !parent.classList.contains('mdc-dialog-container')) {\r\n    parent = parent.parentElement;\r\n  }\r\n  return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MDDialogContainer } from './dialog-container';\r\nimport { MDDialogActions, MDDialogClose, MDDialogContent, MDDialogTitle } from './dialog-content-directives';\r\nimport { DialogModule } from '@angular/cdk/dialog';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { MDDialog } from './dialog';\r\n\r\n\r\nconst DIRECTIVES = [\r\n  MDDialogContainer,\r\n  MDDialogClose,\r\n  MDDialogTitle,\r\n  MDDialogActions,\r\n  MDDialogContent,\r\n];\r\n\r\n@NgModule({\r\n    imports: [DialogModule, OverlayModule, PortalModule, ...DIRECTIVES],\r\n    exports: [...DIRECTIVES],\r\n    providers: [MDDialog],\r\n})\r\nexport class MDModalModule {}\r\n","import { Directive } from '@angular/core';\r\nimport { CdkStepLabel } from '@angular/cdk/stepper';\r\n\r\n/**\r\n * Marks an embedded template as the label for a step.\r\n *\r\n * Usage:\r\n *   <ng-template mdStepLabel>Custom label</ng-template>\r\n *\r\n * Extends Angular CDK's CdkStepLabel so the stepper can project\r\n * and render this template in the step header area.\r\n */\r\n@Directive({\r\n  selector: '[mdStepLabel]',\r\n})\r\nexport class MDStepLabel extends CdkStepLabel {}\r\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n/**\r\n * Intl/i18n service for the stepper.\r\n * Holds user-facing strings and exposes a `changes` stream so components\r\n * can re-render when labels are updated at runtime.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class StepperIntl {\r\n  /** Emits whenever any of the labels change. Consumers should mark for check on emission. */\r\n  readonly changes: Subject<void> = new Subject<void>();\r\n\r\n  /** Label shown next to steps that are marked as optional. */\r\n  optionalLabel: string = 'Optional';\r\n\r\n  /** Label used to announce or describe completed steps. */\r\n  completedLabel: string = 'Completed';\r\n\r\n  /** Label indicating that a step is editable. */\r\n  editableLabel: string = 'Editable';\r\n}\r\n\r\n/**\r\n * Factory that returns the closest parent StepperIntl if available,\r\n * otherwise creates a new instance.\r\n *\r\n * This allows apps/libraries to provide a single shared StepperIntl\r\n * higher in the injector tree and have all steppers reuse it.\r\n */\r\nexport function STEPPER_INTL_PROVIDER_FACTORY(parentIntl: StepperIntl) {\r\n  return parentIntl || new StepperIntl();\r\n}\r\n\r\n/**\r\n * Provider that prefers an ancestor StepperIntl, falling back to a fresh one\r\n * created via the factory above when none is found.\r\n *\r\n * Usage in a module or component:\r\n *   providers: [STEPPER_INTL_PROVIDER]\r\n */\r\nexport const STEPPER_INTL_PROVIDER = {\r\n  provide: StepperIntl,\r\n  deps: [[new Optional(), new SkipSelf(), StepperIntl]],\r\n  useFactory: STEPPER_INTL_PROVIDER_FACTORY,\r\n};\r\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Input,\r\n  OnDestroy,\r\n  ViewEncapsulation,\r\n  TemplateRef,\r\n  AfterViewInit,\r\n  inject,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { MDStepLabel } from './step-label';\r\nimport { StepperIntl } from './stepper-intl';\r\nimport { StepperIconContext } from './stepper-icon';\r\nimport { CdkStepHeader, StepState } from '@angular/cdk/stepper';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { _VisuallyHiddenLoader } from '@angular/cdk/private';\r\n\r\n/**\r\n * Header (tab) for a step in the stepper.\r\n * Responsibilities:\r\n * - Renders label, state icon/text, and optional/error hints.\r\n * - Manages focus (including origin-aware focus for a11y styling).\r\n * - Reacts to i18n changes from StepperIntl and marks for check.\r\n */\r\n@Component({\r\n  selector: 'md-step-header',\r\n  templateUrl: 'step-header.html',\r\n  styleUrl: 'step-header.scss',\r\n  host: {\r\n    class: 'step-header',\r\n    '[class.md-step-header-empty-label]': '_hasEmptyLabel()',\r\n    role: 'tab',\r\n  },\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [NgTemplateOutlet],\r\n})\r\nexport class MDStepHeader extends CdkStepHeader implements AfterViewInit, OnDestroy {\r\n  /** Stepper i18n service (emits when labels change). */\r\n  _intl = inject(StepperIntl);\r\n  /** Focus monitor to track focus origin on the host element. */\r\n  private _focusMonitor = inject(FocusMonitor);\r\n\r\n  /** Subscription to StepperIntl changes for OnPush CD. */\r\n  private _intlSubscription: Subscription;\r\n\r\n  /** Visual/logical state of this step (e.g., 'number' | 'done' | 'error' | 'edit'). */\r\n  @Input() state: StepState;\r\n  /** Label can be a template (MDStepLabel) or plain string. */\r\n  @Input() label: MDStepLabel | string;\r\n  /** Error message displayed when state === 'error'. */\r\n  @Input() errorMessage: string;\r\n  /** Optional templates to override the default icons by state. */\r\n  @Input() iconOverrides: { [key: string]: TemplateRef<StepperIconContext> };\r\n  /** 0-based index of the step within the stepper. */\r\n  @Input() index: number;\r\n  /** Whether this step is selected (active tab). */\r\n  @Input() selected: boolean;\r\n  /** Whether this step is currently active (focused/engaged). */\r\n  @Input() active: boolean;\r\n  /** Marks the step as optional (affects label rendering). */\r\n  @Input() optional: boolean;\r\n\r\n  constructor() {\r\n    super();\r\n\r\n    const changeDetectorRef = inject(ChangeDetectorRef);\r\n    // Re-render when i18n strings change.\r\n    this._intlSubscription = this._intl.changes.subscribe(() => changeDetectorRef.markForCheck());\r\n  }\r\n\r\n  /** Begin monitoring focus on the header to apply origin-aware styles. */\r\n  ngAfterViewInit() {\r\n    this._focusMonitor.monitor(this._elementRef, true);\r\n  }\r\n\r\n  /** Cleanup subscriptions and focus monitoring. */\r\n  ngOnDestroy() {\r\n    this._intlSubscription.unsubscribe();\r\n    this._focusMonitor.stopMonitoring(this._elementRef);\r\n  }\r\n\r\n  /**\r\n   * Programmatic focus with optional origin (mouse/keyboard/touch/program).\r\n   * Falls back to direct focus if no origin is provided.\r\n   */\r\n  override focus(origin?: FocusOrigin, options?: FocusOptions) {\r\n    if (origin) {\r\n      this._focusMonitor.focusVia(this._elementRef, origin, options);\r\n    } else {\r\n      this._elementRef.nativeElement.focus(options);\r\n    }\r\n  }\r\n\r\n  /** Returns string label if provided directly, otherwise null. */\r\n  _stringLabel(): string | null {\r\n    return this.label instanceof MDStepLabel ? null : this.label;\r\n  }\r\n\r\n  /** Returns template label if provided, otherwise null. */\r\n  _templateLabel(): MDStepLabel | null {\r\n    return this.label instanceof MDStepLabel ? this.label : null;\r\n  }\r\n\r\n  /** Host element getter used by base classes/templates. */\r\n  _getHostElement() {\r\n    return this._elementRef.nativeElement;\r\n  }\r\n\r\n  /**\r\n   * Default text for built-in states when an icon template isn’t provided.\r\n   * - 'number' → (index + 1) as text\r\n   * - 'edit'   → 'create'\r\n   * - 'error'  → 'warning'\r\n   * - otherwise returns the state string itself\r\n   */\r\n  _getDefaultTextForState(state: StepState): string {\r\n    if (state == 'number') {\r\n      return `${this.index + 1}`;\r\n    }\r\n    if (state == 'edit') {\r\n      return 'create';\r\n    }\r\n    if (state == 'error') {\r\n      return 'warning';\r\n    }\r\n    return state;\r\n  }\r\n\r\n  /** True if no label, no optional/error labels — used for styling empty headers. */\r\n  protected _hasEmptyLabel() {\r\n    return !this._stringLabel() && !this._templateLabel() && !this._hasOptionalLabel() && !this._hasErrorLabel();\r\n  }\r\n\r\n  /** True if the step is optional and not in error state. */\r\n  protected _hasOptionalLabel() {\r\n    return this.optional && this.state !== 'error';\r\n  }\r\n\r\n  /** True if the current state is 'error'. */\r\n  protected _hasErrorLabel() {\r\n    return this.state === 'error';\r\n  }\r\n}\r\n","<div class=\"step-icon-state-{{state}} step-icon\" [class.step-icon-selected]=\"selected\">\r\n    <div class=\"step-icon-content\">\r\n        @if (iconOverrides && iconOverrides[state]) {\r\n        <ng-container\r\n            [ngTemplateOutlet]=\"iconOverrides[state]\"\r\n            [ngTemplateOutletContext]=\"{index, active, optional}\"\r\n        ></ng-container>\r\n        } @else if (!active) {\r\n        <span aria-hidden=\"true\">{{index + 1}}</span>\r\n        } @else { @switch (state) { @case ('number') {\r\n        <span aria-hidden=\"true\">{{_getDefaultTextForState(state)}}</span>\r\n        } @default {\r\n        <div class=\"icon-wrapper\">\r\n            <svg\r\n                width=\"36\"\r\n                height=\"36\"\r\n                viewBox=\"0 0 36 36\"\r\n                fill=\"none\"\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n                class=\"ng-star-inserted\"\r\n            >\r\n                <rect x=\"0.5\" y=\"0.5\" width=\"35\" height=\"35\" rx=\"17.5\" stroke=\"#929292\"></rect>\r\n                <path\r\n                    d=\"M24.7373 10L14.5466 20.3769L11.2415 17.0114L8 20.3122L11.3051 23.6777L14.5678 27L17.8093 23.6992L28 13.3224L24.7373 10Z\"\r\n                    fill=\"#28B446\"\r\n                ></path>\r\n            </svg>\r\n        </div>\r\n        } } }\r\n    </div>\r\n</div>\r\n<div\r\n    class=\"step-label\"\r\n    [class.step-label-active]=\"active\"\r\n    [class.step-label-selected]=\"selected\"\r\n    [class.step-label-error]=\"state == 'error'\"\r\n>\r\n    @if (_templateLabel(); as templateLabel) {\r\n    <div class=\"step-text-label\">\r\n        <ng-container [ngTemplateOutlet]=\"templateLabel.template\"></ng-container>\r\n    </div>\r\n    } @else if (_stringLabel()) {\r\n    <div class=\"step-text-label\">{{label}}</div>\r\n    } @if (_hasOptionalLabel()) {\r\n    <div class=\"step-optional\">{{_intl.optionalLabel}}</div>\r\n    } @if (_hasErrorLabel()) {\r\n    <div class=\"step-sub-label-error\">{{errorMessage}}</div>\r\n    }\r\n</div>\r\n","import { Directive, Input, TemplateRef, inject } from '@angular/core';\r\nimport { StepState } from '@angular/cdk/stepper';\r\n\r\n/**\r\n * Context passed into a custom stepper icon template.\r\n * Consumers can use these values inside the template to\r\n * render state-aware icons (e.g., different glyphs/colors).\r\n */\r\nexport interface StepperIconContext {\r\n  /** 0-based index of the step. */\r\n  index: number;\r\n  /** True if this step is currently active/selected. */\r\n  active: boolean;\r\n  /** True if this step is marked as optional. */\r\n  optional: boolean;\r\n}\r\n\r\n/**\r\n * Marks an <ng-template> as a custom icon for a particular step state.\r\n *\r\n * Usage:\r\n *   <ng-template mdStepperIcon=\"done\" let-ctx>\r\n *     <!-- ctx: StepperIconContext -->\r\n *     <my-done-icon [highlight]=\"ctx.active\"></my-done-icon>\r\n *   </ng-template>\r\n *\r\n * Bind the `stepperIcon` input to one of the StepState values\r\n * (e.g., 'number' | 'edit' | 'done' | 'error'), and the stepper\r\n * will project this template when the step is in that state.\r\n */\r\n@Directive({\r\n  selector: 'ng-template[mdStepperIcon]',\r\n})\r\nexport class MDStepperIcon {\r\n  /** Reference to the provided template, instantiated by the stepper as needed. */\r\n  templateRef = inject<TemplateRef<StepperIconContext>>(TemplateRef);\r\n\r\n  /** Step state that this icon template should represent. */\r\n  @Input('stepperIcon') name: StepState;\r\n\r\n  constructor() {}\r\n}\r\n","import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n/**\r\n * Marks an <ng-template> as the content for a step.\r\n * Usage:\r\n *   <ng-template mdStepContent> ... </ng-template>\r\n *\r\n * The directive exposes the underlying TemplateRef so parent\r\n * components (e.g., a stepper) can instantiate it on demand.\r\n */\r\n@Directive({\r\n  selector: 'ng-template[mdStepContent]',\r\n})\r\nexport class MDStepContent {\r\n  /** Reference to the template to be rendered for this step. */\r\n  _template = inject<TemplateRef<any>>(TemplateRef);\r\n\r\n  constructor() {}\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n  selector: '[mdStepFooter]',\r\n})\r\nexport class MDStepFooter {}\r\n","import { CdkStep, CdkStepper } from '@angular/cdk/stepper';\r\nimport {\r\n    AfterContentInit,\r\n    AfterViewChecked,\r\n    AfterViewInit,\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChild,\r\n    ContentChildren,\r\n    ElementRef,\r\n    EventEmitter,\r\n    inject,\r\n    Input,\r\n    NgZone,\r\n    numberAttribute,\r\n    OnDestroy,\r\n    Output,\r\n    QueryList,\r\n    Renderer2,\r\n    signal,\r\n    TemplateRef,\r\n    ViewChild,\r\n    ViewChildren,\r\n    ViewContainerRef,\r\n    ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\r\nimport { EMPTY, merge, Observable, Observer, Subject, Subscription, timer } from 'rxjs';\r\nimport { takeUntil, map, startWith, switchMap, debounceTime, take, filter, skip } from 'rxjs/operators';\r\n\r\nimport { MDStepHeader } from './step-header';\r\nimport { MDStepLabel } from './step-label';\r\nimport { MDStepperIcon, StepperIconContext } from './stepper-icon';\r\nimport { MDStepContent } from './step-content';\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroupDirective, AbstractControl, NgForm } from '@angular/forms';\r\nimport { MDStepFooter } from './step-footer';\r\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\r\nimport { FocusableOption } from '@angular/cdk/a11y';\r\nimport { ScrollDirection } from '../../pg-components/tabs/tabs-nav.component';\r\n\r\nconst HEADER_SCROLL_DELAY = 650;\r\nconst HEADER_SCROLL_INTERVAL = 100;\r\n\r\nconst passiveEventListenerOptions = {\r\n    passive: true,\r\n};\r\n\r\nexport type MDPaginatedStepHeaderItem = FocusableOption & { elementRef: ElementRef };\r\n/**\r\n * ErrorStateMatcher that shows errors only once a control is dirty\r\n * (or when the parent form was submitted). Useful for “show on edit”.\r\n */\r\n@Injectable()\r\nexport class ShowOnDirtyErrorStateMatcher implements StepperErrorStateMatcher {\r\n    isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n        return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\r\n    }\r\n}\r\n\r\n/**\r\n * Default StepperErrorStateMatcher used across the stepper.\r\n * Marks error when a control is invalid and touched, or the form is submitted.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class StepperErrorStateMatcher {\r\n    isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n        return !!(control && control.invalid && (control.touched || (form && form.submitted)));\r\n    }\r\n}\r\n\r\n/**\r\n * Single step inside the stepper.\r\n * - Extends CdkStep and plugs in lazy content via <ng-template mdStepContent>.\r\n * - Provides StepperErrorStateMatcher so the step can decide its own error state.\r\n */\r\n@Component({\r\n    selector: 'md-step',\r\n    templateUrl: 'step.html',\r\n    providers: [\r\n        // Provide the step instance wherever StepperErrorStateMatcher or CdkStep is requested.\r\n        { provide: StepperErrorStateMatcher, useExisting: MDStep },\r\n        { provide: CdkStep, useExisting: MDStep },\r\n    ],\r\n    encapsulation: ViewEncapsulation.None,\r\n    exportAs: 'mdStep',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [CdkPortalOutlet],\r\n    host: {\r\n        // Keep steps hidden by default; container controls visibility.\r\n        hidden: '',\r\n    },\r\n})\r\nexport class MDStep extends CdkStep implements StepperErrorStateMatcher, AfterContentInit, OnDestroy {\r\n    /** Parent-provided matcher used as a baseline in isErrorState. */\r\n    private _errorStateMatcher = inject(StepperErrorStateMatcher, { skipSelf: true });\r\n    /** View container used to create a portal for lazy content. */\r\n    private _viewContainerRef = inject(ViewContainerRef);\r\n    /** Subscription to selected-state changes (to attach lazy content). */\r\n    private _isSelected = Subscription.EMPTY;\r\n\r\n    /** Optional projected label for the step header. */\r\n    @ContentChild(MDStepLabel) override stepLabel: MDStepLabel = undefined!;\r\n\r\n    /** Optional lazy body content template: <ng-template mdStepContent>…</ng-template> */\r\n    @ContentChild(MDStepContent, { static: false }) _lazyContent: MDStepContent;\r\n\r\n    /** Portal instance created when the step first becomes selected. */\r\n    _portal: TemplatePortal;\r\n\r\n    /** Attach lazy content when this step becomes selected for the first time. */\r\n    ngAfterContentInit() {\r\n        this._isSelected = this._stepper.steps.changes\r\n            .pipe(\r\n                switchMap(() => {\r\n                    return this._stepper.selectionChange.pipe(\r\n                        map((event) => event.selectedStep === this),\r\n                        startWith(this._stepper.selected === this)\r\n                    );\r\n                })\r\n            )\r\n            .subscribe((isSelected) => {\r\n                if (isSelected && this._lazyContent && !this._portal) {\r\n                    this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef!);\r\n                }\r\n            });\r\n    }\r\n\r\n    /** Cleanup subscription on destroy. */\r\n    ngOnDestroy() {\r\n        this._isSelected.unsubscribe();\r\n    }\r\n\r\n    /**\r\n     * StepperErrorStateMatcher implementation for this step.\r\n     * Combines the injected default matcher with “interacted” state so that\r\n     * a step can show errors after the user interacted with the step controls.\r\n     */\r\n    isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n        const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\r\n        const customErrorState = !!(control && control.invalid && this.interacted);\r\n        return originalErrorState || customErrorState;\r\n    }\r\n}\r\n\r\n/**\r\n * The stepper container that manages a sequence of md-step children.\r\n * - Handles orientation, header/label positioning, and animations.\r\n * - Tracks and emits animation lifecycle.\r\n * - Supports custom icon overrides via <ng-template mdStepperIcon name=\"...\">.\r\n */\r\n@Component({\r\n    selector: 'md-stepper, md-vertical-stepper, md-horizontal-stepper, [mdStepper]',\r\n    exportAs: 'mdStepper, mdVerticalStepper, mdHorizontalStepper',\r\n    templateUrl: 'stepper.html',\r\n    styleUrl: 'stepper.scss',\r\n    host: {\r\n        // Orientation & layout classes.\r\n        '[class.stepper-horizontal]': 'orientation === \"horizontal\"',\r\n        '[class.stepper-vertical]': 'orientation === \"vertical\"',\r\n        '[class.stepper-label-position-end]': 'orientation === \"horizontal\" && labelPosition == \"end\"',\r\n        '[class.stepper-label-position-bottom]': 'orientation === \"horizontal\" && labelPosition == \"bottom\"',\r\n        '[class.stepper-header-position-bottom]': 'headerPosition === \"bottom\"',\r\n        '[class.mdc-step-header-pagination-controls-enabled]': '_showPaginationControls',\r\n\r\n        // Animation state + duration CSS variable.\r\n        '[class.stepper-animating]': '_isAnimating()',\r\n        '[style.stepper-animation-duration]': '_getAnimationDuration()',\r\n\r\n        // ARIA role for a list of tabs.\r\n        '[attr.aria-orientation]': 'orientation',\r\n        role: 'tablist',\r\n    },\r\n    providers: [{ provide: CdkStepper, useExisting: MDStepper }],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgTemplateOutlet, MDStepHeader],\r\n})\r\nexport class MDStepper extends CdkStepper implements AfterViewInit, AfterContentInit, AfterViewChecked, OnDestroy {\r\n    /** Run transition listeners outside Angular for perf. */\r\n    private _ngZone = inject(NgZone);\r\n    /** Used to set up/tear down transitionend listeners. */\r\n    private _renderer = inject(Renderer2);\r\n    /** Disable animations flag (useful for testing or SSR). */\r\n    private _animationsDisabled = true;\r\n    /** Cleanup handle for the transitionend listener. */\r\n    private _cleanupTransition: (() => void) | undefined;\r\n    /** Reactive animating flag used by host binding. */\r\n    protected _isAnimating = signal(false);\r\n\r\n    /** Step headers rendered by this component's own template. */\r\n    @ViewChildren(MDStepHeader) private _renderedStepHeaders: QueryList<MDStepHeader> = undefined!;\r\n\r\n    /** Animated containers used to detect when transitions finish. */\r\n    @ViewChildren('animatedContainer') _animatedContainers: QueryList<ElementRef>;\r\n\r\n    /** All descendant steps (supports nested usage; CdkStepper handles scoping). */\r\n    @ContentChildren(MDStep, { descendants: true }) override _steps: QueryList<MDStep> = undefined!;\r\n\r\n    /** Public alias of _steps used by base class. */\r\n    override readonly steps: QueryList<MDStep> = new QueryList<MDStep>();\r\n\r\n    /** Any custom icon templates projected via mdStepperIcon. */\r\n    @ContentChildren(MDStepperIcon, { descendants: true }) _icons: QueryList<MDStepperIcon>;\r\n\r\n    /** Emits when a view transition animation has completed. */\r\n    @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    @ContentChild(MDStepFooter, { read: TemplateRef }) footer: MDStepFooter;\r\n\r\n    /** Horizontal label position (end/bottom when orientation is horizontal). */\r\n    @Input()\r\n    labelPosition: 'bottom' | 'end' = 'end';\r\n\r\n    /** Step header position (top/bottom). */\r\n    @Input()\r\n    headerPosition: 'top' | 'bottom' = 'top';\r\n\r\n    /** Map of step state → custom icon template overrides. */\r\n    _iconOverrides: Record<string, TemplateRef<StepperIconContext>> = {};\r\n\r\n    /** Duration for transitions (e.g. \"500ms\" | \"0ms\"). */\r\n    @Input()\r\n    get animationDuration(): string {\r\n        return this._animationDuration;\r\n    }\r\n    set animationDuration(value: string) {\r\n        // Normalize plain numeric to milliseconds.\r\n        this._animationDuration = /^\\d+$/.test(value) ? value + 'ms' : value;\r\n    }\r\n    private _animationDuration = '';\r\n\r\n    /** SSR guard (avoid DOM APIs when not in browser). */\r\n    protected _isServer: boolean = !inject(Platform).isBrowser;\r\n\r\n    private _sharedResizeObserver = inject(SharedResizeObserver);\r\n\r\n    // Overload kept to match construction signature patterns.\r\n    constructor() {\r\n        super();\r\n\r\n        // Infer orientation from host element name when using alias tags.\r\n        const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n        const nodeName = elementRef.nativeElement.nodeName.toLowerCase();\r\n        this.orientation = nodeName === 'vertical-stepper' ? 'vertical' : 'horizontal';\r\n\r\n        this._eventCleanups = this._ngZone.runOutsideAngular(() => [\r\n            this._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this._stopInterval()),\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * After content init:\r\n     * - Collect custom icon templates.\r\n     * - React to step list changes to recalc state.\r\n     * - Toggle animating flag on selected index changes and prepare CSS listeners.\r\n     */\r\n    override ngAfterContentInit() {\r\n        super.ngAfterContentInit();\r\n\r\n        // Gather mdStepperIcon overrides by name.\r\n        this._icons.forEach(({ name, templateRef }) => (this._iconOverrides[name] = templateRef));\r\n\r\n        // When steps change, notify base to recompute.\r\n        this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => this._stateChanged());\r\n\r\n        // When selection changes, start/stop animating depending on duration.\r\n        this.selectedIndexChange.pipe(takeUntil(this._destroyed)).subscribe(() => {\r\n            const duration = this._getAnimationDuration();\r\n            if (duration === '0ms' || duration === '0s') {\r\n                this._onAnimationDone();\r\n            } else {\r\n                this._isAnimating.set(true);\r\n            }\r\n\r\n            this._scrollSelectedLabelIntoView();\r\n        });\r\n\r\n        // Enable CSS transition listeners a short time after init (avoids first-paint glitches).\r\n        this._ngZone.runOutsideAngular(() => {\r\n            if (!this._animationsDisabled) {\r\n                setTimeout(() => {\r\n                    this._elementRef.nativeElement.classList.add('stepper-animations-enabled');\r\n                    this._cleanupTransition = this._renderer.listen(\r\n                        this._elementRef.nativeElement,\r\n                        'transitionend',\r\n                        this._handleTransitionend\r\n                    );\r\n                }, 200);\r\n            }\r\n        });\r\n\r\n        const resize = this._sharedResizeObserver\r\n            .observe(this._elementRef.nativeElement)\r\n            .pipe(debounceTime(32), takeUntil(this._destroyed));\r\n\r\n        const realign = () => {\r\n            this._scrollToLabel(this.selectedIndex);\r\n            this._updateTabScrollPosition();\r\n            this._checkScrollingControls();\r\n            this.changeDetectorRef.markForCheck();\r\n        };\r\n\r\n        merge(resize, this._stepHeader.changes, this._itemsResized())\r\n            .pipe(\r\n                filter(() => this.orientation === 'horizontal'),\r\n                takeUntil(this._destroyed)\r\n            )\r\n            .subscribe(() => {\r\n                this._ngZone.run(() => {\r\n                    Promise.resolve().then(() => {\r\n                        this._scrollDistance = Math.max(\r\n                            0,\r\n                            Math.min(this._getMaxScrollDistance(), this._scrollDistance)\r\n                        );\r\n                        realign();\r\n                    });\r\n                });\r\n            });\r\n    }\r\n\r\n    ngAfterViewChecked(): void {\r\n        if (this._stepLabelCount != this._renderedStepHeaders.length) {\r\n            this.updatePagination();\r\n            this._stepLabelCount = this._renderedStepHeaders.length;\r\n            this.changeDetectorRef.markForCheck();\r\n        }\r\n\r\n        if (this._scrollDistanceChanged) {\r\n            this._updateTabScrollPosition();\r\n            this._scrollDistanceChanged = false;\r\n            this.changeDetectorRef.markForCheck();\r\n        }\r\n    }\r\n\r\n    private _stopScrolling = new Subject<void>();\r\n    private _eventCleanups: (() => void)[];\r\n\r\n    private _stepLabelCount: number;\r\n    private changeDetectorRef = inject(ChangeDetectorRef);\r\n    private _platform = inject(Platform);\r\n\r\n    @Input() disablePagination = false;\r\n\r\n    @ViewChild('stepHeader') _stepHeaderElRef: ElementRef<HTMLElement>;\r\n    @ViewChild('stepListContainer') _stepListContainer: ElementRef<HTMLElement>;\r\n    @ViewChild('stepList') _stepList: ElementRef<HTMLElement>;\r\n    @ViewChild('stepListInner') _stepListInner: ElementRef<HTMLElement>;\r\n    @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\r\n    @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\r\n\r\n    private _scrollDistanceChanged: boolean;\r\n    private _scrollDistance = 0;\r\n\r\n    _showPaginationControls = false;\r\n\r\n    _disableScrollAfter = true;\r\n\r\n    _disableScrollBefore = true;\r\n\r\n    get scrollDistance(): number {\r\n        return this._scrollDistance;\r\n    }\r\n    set scrollDistance(value: number) {\r\n        this._scrollTo(value);\r\n    }\r\n\r\n    _handlePaginatorClick(direction: ScrollDirection) {\r\n        this._stopInterval();\r\n        this._scrollHeader(direction);\r\n    }\r\n\r\n    _handlePaginatorPress(direction: ScrollDirection, mouseEvent?: MouseEvent) {\r\n        if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\r\n            return;\r\n        }\r\n\r\n        this._stopInterval();\r\n\r\n        timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\r\n            .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\r\n            .subscribe(() => {\r\n                const { maxScrollDistance, distance } = this._scrollHeader(direction);\r\n\r\n                if (distance === 0 || distance >= maxScrollDistance) {\r\n                    this._stopInterval();\r\n                }\r\n            });\r\n    }\r\n\r\n    _scrollHeader(direction: ScrollDirection) {\r\n        const visibleRange = this._getVisibleRange();\r\n        const labelRanges = this._getLabelRanges();\r\n\r\n        const target =\r\n            direction === 'before'\r\n                ? this._findPreviousClippedLabelRange(labelRanges, visibleRange.start)\r\n                : this._findNextClippedLabelRange(labelRanges, visibleRange.start);\r\n\r\n        if (!target) {\r\n            return this._scrollTo(direction === 'before' ? 0 : this._getMaxScrollDistance());\r\n        }\r\n\r\n        return this._scrollTo(this._getScrollPositionForRange(target, direction));\r\n    }\r\n\r\n    _stopInterval() {\r\n        this._stopScrolling.next();\r\n    }\r\n\r\n    private _scrollSelectedLabelIntoView() {\r\n        if (this.orientation !== 'horizontal') {\r\n            return;\r\n        }\r\n\r\n        Promise.resolve().then(() => {\r\n            this._scrollToLabel(this.selectedIndex);\r\n            this._updateTabScrollPosition();\r\n            this._checkScrollingControls();\r\n            this.changeDetectorRef.markForCheck();\r\n        });\r\n    }\r\n\r\n    _scrollToLabel(labelIndex: number) {\r\n        if (this.disablePagination) {\r\n            return;\r\n        }\r\n\r\n        const selectedRange = this._getLabelRanges()[labelIndex];\r\n\r\n        if (!selectedRange) {\r\n            return;\r\n        }\r\n\r\n        this.scrollDistance = this._getScrollPositionForRange(selectedRange);\r\n    }\r\n\r\n    private _getScrollPositionForRange(\r\n        labelRange: { start: number; end: number; width: number },\r\n        direction?: ScrollDirection\r\n    ): number {\r\n        const visibleRange = this._getVisibleRange();\r\n        const visibleSize = visibleRange.end - visibleRange.start;\r\n\r\n        return labelRange.start;\r\n    }\r\n\r\n    private _findPreviousClippedLabelRange(\r\n        ranges: { start: number; end: number; width: number }[],\r\n        visibleStart: number\r\n    ): { start: number; end: number; width: number } | null {\r\n        for (let i = ranges.length - 1; i >= 0; i--) {\r\n            if (ranges[i].start < visibleStart - 1) {\r\n                return ranges[i];\r\n            }\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    private _findNextClippedLabelRange(\r\n        ranges: { start: number; end: number; width: number }[],\r\n        visibleEnd: number\r\n    ): { start: number; end: number; width: number } | null {\r\n        for (let i = 0; i < ranges.length; i++) {\r\n            if (ranges[i].start === visibleEnd) {\r\n                return ranges[i + 1];\r\n            }\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    private _getVisibleRange(): { start: number; end: number } {\r\n        const start = this._scrollDistance;\r\n\r\n        return {\r\n            start,\r\n            end: start + this._stepListContainer.nativeElement.offsetWidth,\r\n        };\r\n    }\r\n\r\n    private _getLabelRanges(): { index: number; start: number; end: number; width: number }[] {\r\n        return (this._renderedStepHeaders?.toArray() ?? []).map((label, index) => {\r\n            const element = label._elementRef.nativeElement as HTMLElement;\r\n            const start = element.offsetLeft;\r\n            const width = element.offsetWidth;\r\n\r\n            return {\r\n                index,\r\n                start,\r\n                end: start + width,\r\n                width,\r\n            };\r\n        });\r\n    }\r\n\r\n    private _itemsResized(): Observable<ResizeObserverEntry[]> {\r\n        if (typeof ResizeObserver !== 'function') {\r\n            return EMPTY;\r\n        }\r\n\r\n        return this._stepHeader.changes.pipe(\r\n            startWith(this._stepHeader),\r\n            switchMap(\r\n                (tabItems: QueryList<MDPaginatedStepHeaderItem>) =>\r\n                    new Observable((observer: Observer<ResizeObserverEntry[]>) =>\r\n                        this._ngZone.runOutsideAngular(() => {\r\n                            const resizeObserver = new ResizeObserver((entries) => observer.next(entries));\r\n                            tabItems.forEach((item) => resizeObserver.observe(item.elementRef.nativeElement));\r\n                            return () => {\r\n                                resizeObserver.disconnect();\r\n                            };\r\n                        })\r\n                    )\r\n            ),\r\n            skip(1),\r\n            filter((entries) => entries.some((e) => e.contentRect.width > 0 && e.contentRect.height > 0))\r\n        );\r\n    }\r\n\r\n    private _scrollTo(position: number) {\r\n        if (this.disablePagination) {\r\n            return { maxScrollDistance: 0, distance: 0 };\r\n        }\r\n\r\n        const maxScrollDistance = this._getMaxScrollDistance();\r\n        this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\r\n\r\n        this._scrollDistanceChanged = true;\r\n        this._checkScrollingControls();\r\n\r\n        return { maxScrollDistance, distance: this._scrollDistance };\r\n    }\r\n\r\n    _checkScrollingControls() {\r\n        if (this.disablePagination) {\r\n            this._disableScrollAfter = this._disableScrollBefore = true;\r\n        } else {\r\n            const maxScrollDistance = this._getMaxScrollDistance();\r\n            this._disableScrollBefore = this.scrollDistance <= 1;\r\n            this._disableScrollAfter = this.scrollDistance >= maxScrollDistance - 1;\r\n            this.changeDetectorRef.markForCheck();\r\n        }\r\n    }\r\n\r\n    _getMaxScrollDistance(): number {\r\n        const lengthOfTabList = this._stepListInner.nativeElement.scrollWidth;\r\n        const viewLength = this._stepListContainer.nativeElement.offsetWidth;\r\n        return Math.max(0, lengthOfTabList - viewLength);\r\n    }\r\n\r\n    _updateTabScrollPosition() {\r\n        if (this.disablePagination) {\r\n            return;\r\n        }\r\n        const scrollDistance = this.scrollDistance;\r\n        const translateX = -scrollDistance;\r\n        this._stepList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\r\n\r\n        this._stepListContainer.nativeElement.scrollLeft = 0;\r\n    }\r\n\r\n    updatePagination() {\r\n        if (this.orientation === 'vertical') return;\r\n\r\n        this._checkPaginationEnabled();\r\n        this._checkScrollingControls();\r\n        this._updateTabScrollPosition();\r\n    }\r\n\r\n    _checkPaginationEnabled() {\r\n        if (this.disablePagination) {\r\n            this._showPaginationControls = false;\r\n            this.changeDetectorRef.markForCheck();\r\n        } else {\r\n            const scrollWidth = this._stepListInner.nativeElement.scrollWidth;\r\n            const containerWidth = this._elementRef.nativeElement.offsetWidth;\r\n\r\n            const isEnabled = scrollWidth - containerWidth >= 5;\r\n\r\n            if (!isEnabled) {\r\n                this.scrollDistance = 0;\r\n            }\r\n\r\n            if (isEnabled !== this._showPaginationControls) {\r\n                this._showPaginationControls = isEnabled;\r\n                this.changeDetectorRef.markForCheck();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * After view init:\r\n     * - Emit initial animationDone once containers are rendered.\r\n     * - Recompute alignment/layout on container list changes.\r\n     */\r\n    override ngAfterViewInit(): void {\r\n        super.ngAfterViewInit();\r\n\r\n        this._renderedStepHeaders.changes.subscribe(() => {\r\n            Promise.resolve().then(() => {\r\n                this._scrollToLabel(this.selectedIndex);\r\n                this._updateTabScrollPosition();\r\n                this._checkScrollingControls();\r\n                this.changeDetectorRef.markForCheck();\r\n            });\r\n        });\r\n\r\n        if (typeof queueMicrotask === 'function') {\r\n            let hasEmittedInitial = false;\r\n\r\n            this._animatedContainers.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() =>\r\n                queueMicrotask(() => {\r\n                    // Fire once after the very first render so consumers can react.\r\n                    if (!hasEmittedInitial) {\r\n                        hasEmittedInitial = true;\r\n                        this.animationDone.emit();\r\n                    }\r\n                    this._stateChanged();\r\n                })\r\n            );\r\n        }\r\n\r\n        if (this.orientation === 'vertical') return;\r\n\r\n        this._eventCleanups.push(\r\n            this._renderer.listen(\r\n                this._previousPaginator.nativeElement,\r\n                'touchstart',\r\n                () => this._handlePaginatorPress('before'),\r\n                passiveEventListenerOptions\r\n            ),\r\n            this._renderer.listen(\r\n                this._nextPaginator.nativeElement,\r\n                'touchstart',\r\n                () => this._handlePaginatorPress('after'),\r\n                passiveEventListenerOptions\r\n            )\r\n        );\r\n    }\r\n\r\n    /** Tear down transition listener on destroy. */\r\n    override ngOnDestroy(): void {\r\n        super.ngOnDestroy();\r\n        this._cleanupTransition?.();\r\n\r\n        this._eventCleanups.forEach((cleanup) => cleanup());\r\n        this._destroyed.next();\r\n        this._destroyed.complete();\r\n        this._stopScrolling.complete();\r\n    }\r\n\r\n    /** Resolve the effective animation duration string applied to CSS. */\r\n    _getAnimationDuration() {\r\n        if (this._animationsDisabled) {\r\n            return '0ms';\r\n        }\r\n        if (this.animationDuration) {\r\n            return this.animationDuration;\r\n        }\r\n        // Defaults: match Material timings (horizontal slower than vertical).\r\n        return this.orientation === 'horizontal' ? '500ms' : '225ms';\r\n    }\r\n\r\n    /**\r\n     * Global transitionend handler:\r\n     * - Detects the active animated container based on orientation and CSS properties.\r\n     * - Calls _onAnimationDone when the relevant transition completes.\r\n     */\r\n    private _handleTransitionend = (event: TransitionEvent) => {\r\n        const target = event.target as HTMLElement | null;\r\n        if (!target) {\r\n            return;\r\n        }\r\n\r\n        // Horizontal stepper finishes when the \"current\" content transform ends.\r\n        const isHorizontalActiveElement =\r\n            this.orientation === 'horizontal' &&\r\n            event.propertyName === 'transform' &&\r\n            target.classList.contains('horizontal-stepper-content-current');\r\n\r\n        // Vertical stepper finishes when the active container grid-rows change ends.\r\n        const isVerticalActiveElement =\r\n            this.orientation === 'vertical' &&\r\n            event.propertyName === 'grid-template-rows' &&\r\n            target.classList.contains('vertical-content-container-active');\r\n\r\n        // Ensure the event target is one of our tracked containers.\r\n        const shouldEmit =\r\n            (isHorizontalActiveElement || isVerticalActiveElement) &&\r\n            this._animatedContainers.find((ref) => ref.nativeElement === target);\r\n\r\n        if (shouldEmit) {\r\n            this._onAnimationDone();\r\n        }\r\n    };\r\n\r\n    /** Clear the animating flag and emit animationDone to consumers. */\r\n    private _onAnimationDone() {\r\n        this._isAnimating.set(false);\r\n        this.animationDone.emit();\r\n    }\r\n}\r\n","<ng-template>\r\n  <ng-content></ng-content>\r\n  <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\r\n</ng-template>","@if (_isServer) {\r\n  <ng-content/>\r\n}\r\n\r\n@switch (orientation) {\r\n  @case ('horizontal') {\r\n    <div class=\"horizontal-stepper-wrapper\">\r\n      \r\n      <div class=\"mdc-step-header\" #stepHeader>\r\n        <div class=\"mdc-step-header-pagination mdc-step-header-pagination-before\"\r\n            #previousPaginator\r\n            [class.mdc-step-header-pagination-disabled]=\"_disableScrollBefore\"\r\n            (click)=\"_handlePaginatorClick('before')\"\r\n            (mousedown)=\"_handlePaginatorPress('before', $event)\"\r\n            (touchend)=\"_stopInterval()\">\r\n          <div class=\"mdc-step-header-pagination-chevron\"></div>\r\n        </div>\r\n\r\n        <div class=\"mdc-step-label-container\" #stepListContainer>\r\n          <div class=\"mdc-step-list\" #stepList>\r\n            <div class=\"horizontal-stepper-header-container\" #stepListInner>\r\n              @for (step of steps; track $index) {\r\n                <ng-container\r\n                  [ngTemplateOutlet]=\"stepTemplate\"\r\n                  [ngTemplateOutletContext]=\"{step}\"/>\r\n                @if (!$last) {\r\n                  <div class=\"stepper-horizontal-line\"></div>\r\n                }\r\n              }\r\n            </div>          \r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"mdc-step-header-pagination mdc-step-header-pagination-after\"\r\n            #nextPaginator\r\n            [class.mdc-step-header-pagination-disabled]=\"_disableScrollAfter\"\r\n            (mousedown)=\"_handlePaginatorPress('after', $event)\"\r\n            (click)=\"_handlePaginatorClick('after')\"\r\n            (touchend)=\"_stopInterval()\">\r\n          <div class=\"mdc-step-header-pagination-chevron\"></div>\r\n        </div>        \r\n      </div>\r\n      \r\n\r\n      <div class=\"horizontal-content-container\">\r\n        @for (step of steps; track step) {\r\n          <div\r\n            #animatedContainer\r\n            class=\"horizontal-stepper-content\"\r\n            role=\"tabpanel\"\r\n            [id]=\"_getStepContentId($index)\"\r\n            [attr.aria-labelledby]=\"_getStepLabelId($index)\"\r\n            [class]=\"'horizontal-stepper-content-' + _getAnimationDirection($index)\"\r\n            [attr.inert]=\"selectedIndex === $index ? null : ''\">\r\n            <ng-container [ngTemplateOutlet]=\"step.content\"/>\r\n          </div>\r\n        }\r\n      </div>\r\n    </div>\r\n    \r\n  }\r\n\r\n  @case ('vertical') {\r\n    @for (step of steps; track step) {\r\n      <div class=\"step\">\r\n        <ng-container\r\n          [ngTemplateOutlet]=\"stepTemplate\"\r\n          [ngTemplateOutletContext]=\"{step}\"/>\r\n        <div\r\n          #animatedContainer\r\n          class=\"vertical-content-container\"\r\n          [class.stepper-vertical-line]=\"!$last\"\r\n          [class.vertical-content-container-active]=\"selectedIndex === $index\"\r\n          [attr.inert]=\"selectedIndex === $index ? null : ''\">\r\n          <div class=\"vertical-stepper-content\"\r\n            role=\"tabpanel\"\r\n            [id]=\"_getStepContentId($index)\"\r\n            [attr.aria-labelledby]=\"_getStepLabelId($index)\">\r\n            <div class=\"vertical-content\">\r\n              <ng-container [ngTemplateOutlet]=\"step.content\"/>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    }\r\n  }\r\n}\r\n\r\n<ng-template let-step=\"step\" #stepTemplate>\r\n  <md-step-header\r\n    [class.horizontal-stepper-header]=\"orientation === 'horizontal'\"\r\n    [class.vertical-stepper-header]=\"orientation === 'vertical'\"\r\n    (click)=\"step.select()\"\r\n    (keydown)=\"_onKeydown($event)\"\r\n    [tabIndex]=\"_getFocusIndex() === step.index() ? 0 : -1\"\r\n    [id]=\"_getStepLabelId(step.index())\"\r\n    [attr.aria-posinset]=\"step.index() + 1\"\r\n    [attr.aria-setsize]=\"steps.length\"\r\n    [attr.aria-controls]=\"_getStepContentId(step.index())\"\r\n    [attr.aria-selected]=\"step.isSelected()\"\r\n    [attr.aria-label]=\"step.ariaLabel || null\"\r\n    [attr.aria-labelledby]=\"(!step.ariaLabel && step.ariaLabelledby) ? step.ariaLabelledby : null\"\r\n    [attr.aria-disabled]=\"step.isNavigable() ? null : true\"\r\n    [index]=\"step.index()\"\r\n    [state]=\"step.indicatorType()\"\r\n    [label]=\"step.stepLabel || step.label\"\r\n    [selected]=\"step.isSelected()\"\r\n    [active]=\"step.isNavigable()\"\r\n    [optional]=\"step.optional\"\r\n    [errorMessage]=\"step.errorMessage\"\r\n    [iconOverrides]=\"_iconOverrides\"\r\n    [disableRipple]=\"disableRipple || !step.isNavigable()\"\r\n    [color]=\"step.color || color\"/>\r\n</ng-template>\r\n\r\n\r\n<ng-container [ngTemplateOutlet]=\"footer\"></ng-container>","import { CdkStepperNext, CdkStepperPrevious } from '@angular/cdk/stepper';\r\nimport { Directive } from '@angular/core';\r\n\r\n/**\r\n * Button directive that advances the stepper to the next step.\r\n *\r\n * Usage:\r\n *   <button mdStepperNext>Next</button>\r\n *\r\n * Extends CDK's CdkStepperNext; this wrapper only provides\r\n * a semantic selector and host classes/attrs for styling.\r\n */\r\n@Directive({\r\n  selector: 'button[mdStepperNext]',\r\n  host: {\r\n    class: 'stepper-next',\r\n    // Preserve the native button type (bound by CdkStepperNext).\r\n    '[type]': 'type',\r\n  },\r\n})\r\nexport class MDStepperNext extends CdkStepperNext {}\r\n\r\n/**\r\n * Button directive that moves the stepper to the previous step.\r\n *\r\n * Usage:\r\n *   <button mdStepperPrevious>Back</button>\r\n *\r\n * Extends CDK's CdkStepperPrevious; this wrapper only provides\r\n * a semantic selector and host classes/attrs for styling.\r\n */\r\n@Directive({\r\n  selector: 'button[mdStepperPrevious]',\r\n  host: {\r\n    class: 'stepper-previous',\r\n    // Preserve the native button type (bound by CdkStepperPrevious).\r\n    '[type]': 'type',\r\n  },\r\n})\r\nexport class MDStepperPrevious extends CdkStepperPrevious {}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { CdkStepperModule } from '@angular/cdk/stepper';\r\nimport { MDStep, MDStepper } from './stepper';\r\nimport { MDStepLabel } from './step-label';\r\nimport { MDStepperNext, MDStepperPrevious } from './stepper-button';\r\nimport { MDStepHeader } from './step-header';\r\nimport { MDStepperIcon } from './stepper-icon';\r\nimport { MDStepContent } from './step-content';\r\nimport { MDStepFooter } from './step-footer';\r\n\r\n@NgModule({\r\n    declarations: [],\r\n    exports: [\r\n        CommonModule,\r\n        MDStep,\r\n        MDStepLabel,\r\n        MDStepper,\r\n        MDStepperNext,\r\n        MDStepperPrevious,\r\n        MDStepHeader,\r\n        MDStepperIcon,\r\n        MDStepContent,\r\n        MDStepFooter\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        PortalModule,\r\n        CdkStepperModule,\r\n        MDStep,\r\n        MDStepLabel,\r\n        MDStepper,\r\n        MDStepperNext,\r\n        MDStepperPrevious,\r\n        MDStepHeader,\r\n        MDStepperIcon,\r\n        MDStepContent,\r\n        MDStepFooter\r\n    ],\r\n})\r\nexport class MDStepExecutorModule {}\r\n","import {EventEmitter, TemplateRef, InjectionToken} from '@angular/core';\r\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\r\nimport {Direction} from '@angular/cdk/bidi';\r\nimport {FocusOrigin} from '@angular/cdk/a11y';\r\nimport { MDMenuContent } from './menu-content';\r\n\r\n\r\nexport const MD_MENU_PANEL = new InjectionToken<MDMenuPanel>('MD_MENU_PANEL');\r\n\r\nexport interface MDMenuPanel<T = any> {\r\n  xPosition: MenuPositionX;\r\n  yPosition: MenuPositionY;\r\n  overlapTrigger: boolean;\r\n  animationsDisabled: boolean;\r\n  templateRef: TemplateRef<any>;\r\n  readonly close: EventEmitter<void | 'click' | 'keydown' | 'tab'>;\r\n  parentMenu?: MDMenuPanel | undefined;\r\n  direction?: Direction;\r\n  focusFirstItem: (origin?: FocusOrigin) => void;\r\n  resetActiveItem: () => void;\r\n  setPositionClasses?: (x: MenuPositionX, y: MenuPositionY) => void;\r\n  setElevation?(depth: number): void;\r\n  lazyContent?: MDMenuContent;\r\n  backdropClass?: string;\r\n  overlayPanelClass?: string | string[];\r\n  hasBackdrop?: boolean;\r\n  readonly panelId?: string;\r\n  addItem?: (item: T) => void;\r\n  removeItem?: (item: T) => void;\r\n}","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  OnDestroy,\r\n  ViewEncapsulation,\r\n  Input,\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  booleanAttribute,\r\n  inject,\r\n  DOCUMENT,\r\n} from '@angular/core';\r\nimport {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\r\nimport {Subject} from 'rxjs';\r\nimport {MDMenuPanel, MD_MENU_PANEL} from './menu-panel';\r\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\r\n\r\n@Component({\r\n  selector: '[md-menu-item]',\r\n  exportAs: 'mdMenuItem',\r\n  host: {\r\n    '[attr.role]': 'role',\r\n    'class': 'md-mdc-menu-item md-focus-indicator',\r\n    '[class.md-mdc-menu-item-highlighted]': '_highlighted',\r\n    '[class.md-mdc-menu-item-submenu-trigger]': '_triggersSubmenu',\r\n    '[attr.tabindex]': '_getTabIndex()',\r\n    '[attr.aria-disabled]': 'disabled',\r\n    '[attr.disabled]': 'disabled || null',\r\n    '(click)': '_checkDisabled($event)',\r\n    '(mouseenter)': '_handleMouseEnter()',\r\n  },\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  templateUrl: 'menu-item.html'\r\n})\r\nexport class MDMenuItem implements FocusableOption, AfterViewInit, OnDestroy {\r\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  private _document = inject(DOCUMENT);\r\n  private _focusMonitor = inject(FocusMonitor);\r\n  _parentMenu? = inject<MDMenuPanel<MDMenuItem>>(MD_MENU_PANEL, {optional: true});\r\n  private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n  @Input() role: 'menuitem' | 'menuitemradio' | 'menuitemcheckbox' = 'menuitem';\r\n  @Input({transform: booleanAttribute}) disabled: boolean = false;\r\n  @Input({transform: booleanAttribute}) disableRipple: boolean = false;\r\n\r\n  readonly _hovered: Subject<MDMenuItem> = new Subject<MDMenuItem>();\r\n  readonly _focused = new Subject<MDMenuItem>();\r\n\r\n  _highlighted: boolean = false;\r\n  _triggersSubmenu: boolean = false;\r\n\r\n  constructor() {\r\n    this._parentMenu?.addItem?.(this);\r\n  }\r\n\r\n  focus(origin?: FocusOrigin, options?: FocusOptions): void {\r\n    if (this._focusMonitor && origin) {\r\n      this._focusMonitor.focusVia(this._getHostElement(), origin, options);\r\n    } else {\r\n      this._getHostElement().focus(options);\r\n    }\r\n    this._focused.next(this);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this._focusMonitor) {\r\n      this._focusMonitor.monitor(this._elementRef, false);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this._focusMonitor) {\r\n      this._focusMonitor.stopMonitoring(this._elementRef);\r\n    }\r\n    if (this._parentMenu && this._parentMenu.removeItem) {\r\n      this._parentMenu.removeItem(this);\r\n    }\r\n    this._hovered.complete();\r\n    this._focused.complete();\r\n  }\r\n\r\n  _getTabIndex(): string {\r\n    return this.disabled ? '-1' : '0';\r\n  }\r\n\r\n  _getHostElement(): HTMLElement {\r\n    return this._elementRef.nativeElement;\r\n  }\r\n\r\n  _checkDisabled(event: Event): void {\r\n    if (this.disabled) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n    }\r\n  }\r\n\r\n  _handleMouseEnter() {\r\n    this._hovered.next(this);\r\n  }\r\n\r\n  getLabel(): string {\r\n    const clone = this._elementRef.nativeElement.cloneNode(true) as HTMLElement;\r\n    return clone.textContent?.trim() || '';\r\n  }\r\n\r\n  _setHighlighted(isHighlighted: boolean) {\r\n    this._highlighted = isHighlighted;\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  _setTriggersSubmenu(triggersSubmenu: boolean) {\r\n    this._triggersSubmenu = triggersSubmenu;\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  _hasFocus(): boolean {\r\n    return this._document && this._document.activeElement === this._getHostElement();\r\n  }\r\n}\r\n","<span class=\"md-mdc-menu-item-text\"><ng-content></ng-content></span>\r\n\r\n@if (_triggersSubmenu) {\r\n     <svg\r\n       class=\"md-mdc-menu-submenu-icon\"\r\n       viewBox=\"0 0 5 10\"\r\n       focusable=\"false\"\r\n       aria-hidden=\"true\"><polygon points=\"0,0 5,5 0,10\"/></svg>\r\n}","export function throwMDMenuInvalidPositionX() {\r\n  throw Error(`xPosition value must be either 'before' or after'.\r\n      Example: <md-menu xPosition=\"before\" #menu=\"mdMenu\"></md-menu>`);\r\n}\r\n\r\nexport function throwMDMenuInvalidPositionY() {\r\n  throw Error(`yPosition value must be either 'above' or below'.\r\n      Example: <md-menu yPosition=\"above\" #menu=\"mdMenu\"></md-menu>`);\r\n}\r\n\r\nexport function throwMDMenuRecursiveError() {\r\n  throw Error(\r\n    `mdMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is ` +\r\n      `not a parent of the trigger or move the trigger outside of the menu.`,\r\n  );\r\n}","import {DomPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\r\n\r\nimport {\r\n  ApplicationRef,\r\n  ChangeDetectorRef,\r\n  Directive,\r\n  InjectionToken,\r\n  Injector,\r\n  OnDestroy,\r\n  TemplateRef,\r\n  ViewContainerRef,\r\n  inject,\r\n  DOCUMENT,\r\n} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\n\r\nexport const MD_MENU_CONTENT = new InjectionToken<MDMenuContent>('MDMenuContent');\r\n\r\n@Directive({\r\n  selector: 'ng-template[mdMenuContent]',\r\n  providers: [{provide: MD_MENU_CONTENT, useExisting: MDMenuContent}],\r\n})\r\nexport class MDMenuContent implements OnDestroy {\r\n  private _template = inject<TemplateRef<any>>(TemplateRef);\r\n  private _appRef = inject(ApplicationRef);\r\n  private _injector = inject(Injector);\r\n  private _viewContainerRef = inject(ViewContainerRef);\r\n  private _document = inject(DOCUMENT);\r\n  private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n  private _portal: TemplatePortal<any> | undefined;\r\n  private _outlet: DomPortalOutlet | undefined;\r\n\r\n  readonly _attached = new Subject<void>();\r\n\r\n  constructor() {}\r\n\r\n  attach(context: any = {}) {\r\n    if (!this._portal) {\r\n      this._portal = new TemplatePortal(this._template, this._viewContainerRef);\r\n    }\r\n\r\n    this.detach();\r\n\r\n    if (!this._outlet) {\r\n      this._outlet = new DomPortalOutlet(\r\n        this._document.createElement('div'),\r\n        this._appRef,\r\n        this._injector,\r\n      );\r\n    }\r\n\r\n    const element: HTMLElement = this._template.elementRef.nativeElement;\r\n\r\n    element.parentNode!.insertBefore(this._outlet.outletElement, element);\r\n\r\n    this._changeDetectorRef.markForCheck();\r\n    this._portal.attach(this._outlet, context);\r\n    this._attached.next();\r\n  }\r\n\r\n  detach() {\r\n    if (this._portal?.isAttached) {\r\n      this._portal.detach();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.detach();\r\n    this._outlet?.dispose();\r\n  }\r\n}","import {\r\n  AfterContentInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChild,\r\n  ContentChildren,\r\n  ElementRef,\r\n  EventEmitter,\r\n  InjectionToken,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  TemplateRef,\r\n  QueryList,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  OnInit,\r\n  ChangeDetectorRef,\r\n  booleanAttribute,\r\n  afterNextRender,\r\n  AfterRenderRef,\r\n  inject,\r\n  Injector,\r\n  signal,\r\n} from '@angular/core';\r\nimport {_IdGenerator, FocusKeyManager, FocusOrigin} from '@angular/cdk/a11y';\r\nimport {Direction} from '@angular/cdk/bidi';\r\nimport {\r\n  ESCAPE,\r\n  LEFT_ARROW,\r\n  RIGHT_ARROW,\r\n  DOWN_ARROW,\r\n  UP_ARROW,\r\n  hasModifierKey,\r\n} from '@angular/cdk/keycodes';\r\nimport {merge, Observable, Subject} from 'rxjs';\r\nimport {startWith, switchMap} from 'rxjs/operators';\r\nimport {MDMenuItem} from './menu-item';\r\nimport {MDMenuPanel, MD_MENU_PANEL} from './menu-panel';\r\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\r\nimport {throwMDMenuInvalidPositionX, throwMDMenuInvalidPositionY} from './menu-errors';\r\nimport {MDMenuContent, MD_MENU_CONTENT} from './menu-content';\r\n\r\nexport type MenuCloseReason = void | 'click' | 'keydown' | 'tab';\r\n\r\nexport interface MDMenuDefaultOptions {\r\n  xPosition: MenuPositionX;\r\n  yPosition: MenuPositionY;\r\n  overlapTrigger: boolean;\r\n  backdropClass: string;\r\n  overlayPanelClass?: string | string[];\r\n  hasBackdrop?: boolean;\r\n}\r\n\r\nexport const MD_MENU_DEFAULT_OPTIONS = new InjectionToken<MDMenuDefaultOptions>(\r\n  'md-menu-default-options',\r\n  {\r\n    providedIn: 'root',\r\n    factory: () => ({\r\n      overlapTrigger: false,\r\n      xPosition: 'after',\r\n      yPosition: 'below',\r\n      backdropClass: 'cdk-overlay-transparent-backdrop',\r\n    }),\r\n  },\r\n);\r\n\r\nconst ENTER_ANIMATION = '_md-menu-enter';\r\nconst EXIT_ANIMATION = '_md-menu-exit';\r\n\r\n@Component({\r\n  selector: 'md-menu',\r\n  templateUrl: 'menu.html',\r\n  styleUrl: 'menu.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  exportAs: 'mdMenu',\r\n  host: {\r\n    '[attr.aria-label]': 'null',\r\n    '[attr.aria-labelledby]': 'null',\r\n    '[attr.aria-describedby]': 'null',\r\n  },\r\n  providers: [{provide: MD_MENU_PANEL, useExisting: MDMenu}],\r\n})\r\nexport class MDMenu implements AfterContentInit, MDMenuPanel<MDMenuItem>, OnInit, OnDestroy {\r\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  private _changeDetectorRef = inject(ChangeDetectorRef);\r\n  private _injector = inject(Injector);\r\n\r\n  private _keyManager: FocusKeyManager<MDMenuItem>;\r\n  private _xPosition: MenuPositionX;\r\n  private _yPosition: MenuPositionY;\r\n  private _firstItemFocusRef?: AfterRenderRef;\r\n  private _exitFallbackTimeout: ReturnType<typeof setTimeout> | undefined;\r\n\r\n  @ContentChildren(MDMenuItem, {descendants: true}) _allItems: QueryList<MDMenuItem>;\r\n  _directDescendantItems = new QueryList<MDMenuItem>();\r\n\r\n  _classList: {[key: string]: boolean} = {};\r\n  _panelAnimationState: 'void' | 'enter' = 'void';\r\n  readonly _animationDone = new Subject<'void' | 'enter'>();\r\n  _isAnimating = signal(false);\r\n\r\n  parentMenu: MDMenuPanel | undefined;\r\n  direction: Direction;\r\n  overlayPanelClass: string | string[];\r\n\r\n  @Input() animationsDisabled: boolean = false;\r\n  @Input() backdropClass: string;\r\n  @Input('aria-label') ariaLabel: string;\r\n  @Input('aria-labelledby') ariaLabelledby: string;\r\n  @Input('aria-describedby') ariaDescribedby: string;\r\n\r\n  @Input()\r\n  get xPosition(): MenuPositionX {\r\n    return this._xPosition;\r\n  }\r\n  set xPosition(value: MenuPositionX) {\r\n    if (value !== 'before' && value !== 'after' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\r\n      throwMDMenuInvalidPositionX();\r\n    }\r\n    this._xPosition = value;\r\n    this.setPositionClasses();\r\n  }\r\n\r\n  @Input()\r\n  get yPosition(): MenuPositionY {\r\n    return this._yPosition;\r\n  }\r\n  set yPosition(value: MenuPositionY) {\r\n    if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\r\n      throwMDMenuInvalidPositionY();\r\n    }\r\n    this._yPosition = value;\r\n    this.setPositionClasses();\r\n  }\r\n\r\n  @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\r\n  @ContentChildren(MDMenuItem, {descendants: false}) items: QueryList<MDMenuItem>;\r\n  @ContentChild(MD_MENU_CONTENT) lazyContent: MDMenuContent;\r\n\r\n  @Input({transform: booleanAttribute}) overlapTrigger: boolean;\r\n  @Input({transform: (value: any) => (value == null ? null : booleanAttribute(value))})\r\n  hasBackdrop?: boolean;\r\n\r\n  @Input('class')\r\n  set panelClass(classes: string) {\r\n    const previousPanelClass = this._previousPanelClass;\r\n    const newClassList = {...this._classList};\r\n\r\n    if (previousPanelClass && previousPanelClass.length) {\r\n      previousPanelClass.split(' ').forEach((className: string) => {\r\n        newClassList[className] = false;\r\n      });\r\n    }\r\n\r\n    this._previousPanelClass = classes;\r\n\r\n    if (classes && classes.length) {\r\n      classes.split(' ').forEach((className: string) => {\r\n        newClassList[className] = true;\r\n      });\r\n\r\n      this._elementRef.nativeElement.className = '';\r\n    }\r\n\r\n    this._classList = newClassList;\r\n  }\r\n  private _previousPanelClass: string;\r\n\r\n  @Input()\r\n  get classList(): string {\r\n    return this.panelClass;\r\n  }\r\n  set classList(classes: string) {\r\n    this.panelClass = classes;\r\n  }\r\n\r\n  @Output() readonly closed: EventEmitter<MenuCloseReason> = new EventEmitter<MenuCloseReason>();\r\n  @Output() readonly close: EventEmitter<MenuCloseReason> = this.closed;\r\n\r\n  readonly panelId: string = inject(_IdGenerator).getId('md-menu-panel-');\r\n\r\n  constructor() {\r\n    const defaultOptions = inject<MDMenuDefaultOptions>(MD_MENU_DEFAULT_OPTIONS);\r\n    this.overlayPanelClass = defaultOptions.overlayPanelClass || '';\r\n    this._xPosition = defaultOptions.xPosition;\r\n    this._yPosition = defaultOptions.yPosition;\r\n    this.backdropClass = defaultOptions.backdropClass;\r\n    this.overlapTrigger = defaultOptions.overlapTrigger;\r\n    this.hasBackdrop = defaultOptions.hasBackdrop;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.setPositionClasses();\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    this._updateDirectDescendants();\r\n    this._keyManager = new FocusKeyManager(this._directDescendantItems)\r\n      .withWrap()\r\n      .withTypeAhead()\r\n      .withHomeAndEnd();\r\n\r\n    this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\r\n\r\n    this._directDescendantItems.changes\r\n      .pipe(\r\n        startWith(this._directDescendantItems),\r\n        switchMap(items => merge(...items.map((item: MDMenuItem) => item._focused))),\r\n      )\r\n      .subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem as MDMenuItem));\r\n\r\n    this._directDescendantItems.changes.subscribe((itemsList: QueryList<MDMenuItem>) => {\r\n      const manager = this._keyManager;\r\n\r\n      if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) {\r\n        const items = itemsList.toArray();\r\n        const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));\r\n\r\n        if (items[index] && !items[index].disabled) {\r\n          manager.setActiveItem(index);\r\n        } else {\r\n          manager.setNextItemActive();\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._keyManager?.destroy();\r\n    this._directDescendantItems.destroy();\r\n    this.closed.complete();\r\n    this._firstItemFocusRef?.destroy();\r\n    clearTimeout(this._exitFallbackTimeout);\r\n  }\r\n\r\n  _hovered(): Observable<MDMenuItem> {\r\n    const itemChanges = this._directDescendantItems.changes as Observable<QueryList<MDMenuItem>>;\r\n    return itemChanges.pipe(\r\n      startWith(this._directDescendantItems),\r\n      switchMap(items => merge(...items.map((item: MDMenuItem) => item._hovered))),\r\n    ) as Observable<MDMenuItem>;\r\n  }\r\n\r\n  addItem(_item: MDMenuItem) {}\r\n  removeItem(_item: MDMenuItem) {}\r\n\r\n  _handleKeydown(event: KeyboardEvent) {\r\n    const keyCode = event.keyCode;\r\n    const manager = this._keyManager;\r\n\r\n    switch (keyCode) {\r\n      case ESCAPE:\r\n        if (!hasModifierKey(event)) {\r\n          event.preventDefault();\r\n          this.closed.emit('keydown');\r\n        }\r\n        break;\r\n      case LEFT_ARROW:\r\n        if (this.parentMenu && this.direction === 'ltr') {\r\n          this.closed.emit('keydown');\r\n        }\r\n        break;\r\n      case RIGHT_ARROW:\r\n        if (this.parentMenu && this.direction === 'rtl') {\r\n          this.closed.emit('keydown');\r\n        }\r\n        break;\r\n      default:\r\n        if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\r\n          manager.setFocusOrigin('keyboard');\r\n        }\r\n        manager.onKeydown(event);\r\n        return;\r\n    }\r\n  }\r\n\r\n  focusFirstItem(origin: FocusOrigin = 'program'): void {\r\n    this._firstItemFocusRef?.destroy();\r\n    this._firstItemFocusRef = afterNextRender(\r\n      () => {\r\n        const menuPanel = this._resolvePanel();\r\n\r\n        if (!menuPanel || !menuPanel.contains(document.activeElement)) {\r\n          const manager = this._keyManager;\r\n          manager.setFocusOrigin(origin).setFirstItemActive();\r\n\r\n          if (!manager.activeItem && menuPanel) {\r\n            menuPanel.focus();\r\n          }\r\n        }\r\n      },\r\n      {injector: this._injector},\r\n    );\r\n  }\r\n\r\n  resetActiveItem() {\r\n    this._keyManager.setActiveItem(-1);\r\n  }\r\n\r\n  setElevation(_depth: number): void {}\r\n\r\n  setPositionClasses(posX: MenuPositionX = this.xPosition, posY: MenuPositionY = this.yPosition) {\r\n    this._classList = {\r\n      ...this._classList,\r\n      ['md-menu-before']: posX === 'before',\r\n      ['md-menu-after']: posX === 'after',\r\n      ['md-menu-above']: posY === 'above',\r\n      ['md-menu-below']: posY === 'below',\r\n    };\r\n\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  protected _onAnimationDone(state: string) {\r\n    const isExit = state === EXIT_ANIMATION;\r\n\r\n    if (isExit || state === ENTER_ANIMATION) {\r\n      if (isExit) {\r\n        clearTimeout(this._exitFallbackTimeout);\r\n        this._exitFallbackTimeout = undefined;\r\n      }\r\n      this._animationDone.next(isExit ? 'void' : 'enter');\r\n      this._isAnimating.set(false);\r\n    }\r\n  }\r\n\r\n  protected _onAnimationStart(state: string) {\r\n    if (state === ENTER_ANIMATION || state === EXIT_ANIMATION) {\r\n      this._isAnimating.set(true);\r\n    }\r\n  }\r\n\r\n  _setIsOpen(isOpen: boolean) {\r\n    this._panelAnimationState = isOpen ? 'enter' : 'void';\r\n\r\n    if (isOpen) {\r\n      if (this._keyManager.activeItemIndex === 0) {\r\n        const menuPanel = this._resolvePanel();\r\n        if (menuPanel) {\r\n          menuPanel.scrollTop = 0;\r\n        }\r\n      }\r\n    } else if (!this.animationsDisabled) {\r\n      this._exitFallbackTimeout = setTimeout(() => this._onAnimationDone(EXIT_ANIMATION), 200);\r\n    }\r\n\r\n    if (this.animationsDisabled) {\r\n      setTimeout(() => {\r\n        this._onAnimationDone(isOpen ? ENTER_ANIMATION : EXIT_ANIMATION);\r\n      });\r\n    }\r\n\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  private _updateDirectDescendants() {\r\n    this._allItems.changes\r\n      .pipe(startWith(this._allItems))\r\n      .subscribe((items: QueryList<MDMenuItem>) => {\r\n        this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\r\n        this._directDescendantItems.notifyOnChanges();\r\n      });\r\n  }\r\n\r\n  private _resolvePanel(): HTMLElement | null {\r\n    let menuPanel: HTMLElement | null = null;\r\n\r\n    if (this._directDescendantItems.length) {\r\n      menuPanel = this._directDescendantItems.first!._getHostElement().closest('[role=\"menu\"]');\r\n    }\r\n\r\n    return menuPanel;\r\n  }\r\n}\r\n","<ng-template>\r\n  <div\r\n    class=\"md-mdc-menu-panel\"\r\n    [id]=\"panelId\"\r\n    [class]=\"_classList\"\r\n    [class.md-menu-panel-animations-disabled]=\"_animationsDisabled\"\r\n    [class.md-menu-panel-exit-animation]=\"_panelAnimationState === 'void'\"\r\n    [class.md-menu-panel-animating]=\"_isAnimating()\"\r\n    (click)=\"closed.emit('click')\"\r\n    tabindex=\"-1\"\r\n    role=\"menu\"\r\n    (animationstart)=\"_onAnimationStart($event.animationName)\"\r\n    (animationend)=\"_onAnimationDone($event.animationName)\"\r\n    (animationcancel)=\"_onAnimationDone($event.animationName)\"\r\n    [attr.aria-label]=\"ariaLabel || null\"\r\n    [attr.aria-labelledby]=\"ariaLabelledby || null\"\r\n    [attr.aria-describedby]=\"ariaDescribedby || null\">\r\n    <div class=\"md-mdc-menu-content\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n  </div>\r\n</ng-template>","import {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\r\nimport {Direction, Directionality} from '@angular/cdk/bidi';\r\nimport {\r\n  createFlexibleConnectedPositionStrategy,\r\n  createOverlayRef,\r\n  createRepositionScrollStrategy,\r\n  FlexibleConnectedPositionStrategy,\r\n  FlexibleConnectedPositionStrategyOrigin,\r\n  HorizontalConnectionPos,\r\n  OverlayConfig,\r\n  OverlayRef,\r\n  ScrollStrategy,\r\n  VerticalConnectionPos,\r\n} from '@angular/cdk/overlay';\r\nimport {TemplatePortal} from '@angular/cdk/portal';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  inject,\r\n  InjectionToken,\r\n  Injector,\r\n  NgZone,\r\n  OnDestroy,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport {merge, Observable, of as observableOf, Subscription} from 'rxjs';\r\nimport {filter, take, takeUntil} from 'rxjs/operators';\r\nimport {MDMenu, MenuCloseReason} from './menu';\r\nimport {throwMDMenuRecursiveError} from './menu-errors';\r\nimport {MDMenuItem} from './menu-item';\r\nimport {MD_MENU_PANEL, MDMenuPanel} from './menu-panel';\r\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\r\n\r\nexport const MD_MENU_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\r\n  'md-menu-scroll-strategy',\r\n  {\r\n    providedIn: 'root',\r\n    factory: () => {\r\n      const injector = inject(Injector);\r\n      return () => createRepositionScrollStrategy(injector);\r\n    },\r\n  },\r\n);\r\n\r\nexport const MENU_PANEL_TOP_PADDING = 8;\r\n\r\nconst PANELS_TO_TRIGGERS = new WeakMap<MDMenuPanel, MDMenuTriggerBase>();\r\n\r\n@Directive()\r\nexport abstract class MDMenuTriggerBase implements OnDestroy {\r\n  protected _element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  private _viewContainerRef = inject(ViewContainerRef);\r\n  protected _menuItemInstance = inject(MDMenuItem, {optional: true, self: true})!;\r\n  private _dir = inject(Directionality, {optional: true});\r\n  private _focusMonitor = inject(FocusMonitor);\r\n  private _ngZone = inject(NgZone);\r\n  private _injector = inject(Injector);\r\n  private _scrollStrategy = inject(MD_MENU_SCROLL_STRATEGY);\r\n  private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n  private _portal: TemplatePortal;\r\n  protected _overlayRef: OverlayRef | null = null;\r\n  private _menuOpen: boolean = false;\r\n  private _closingActionsSubscription = Subscription.EMPTY;\r\n  private _menuCloseSubscription = Subscription.EMPTY;\r\n  private _pendingRemoval: Subscription | undefined;\r\n\r\n  protected _parentMenu: MDMenu | undefined;\r\n  protected _openedBy: Exclude<FocusOrigin, 'program' | null> | undefined = undefined;\r\n\r\n  abstract menuData: any;\r\n  abstract restoreFocus: boolean;\r\n\r\n  protected get _menu(): MDMenuPanel | null {\r\n    return this._menuInternal;\r\n  }\r\n\r\n  protected set _menu(menu: MDMenuPanel | null) {\r\n    if (menu === this._menuInternal) return;\r\n\r\n    this._menuInternal = menu;\r\n    this._menuCloseSubscription.unsubscribe();\r\n\r\n    if (menu) {\r\n      if (menu === this._parentMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\r\n        throwMDMenuRecursiveError();\r\n      }\r\n\r\n      this._menuCloseSubscription = menu.close.subscribe((reason: MenuCloseReason) => {\r\n        this._destroyMenu(reason);\r\n        if ((reason === 'click' || reason === 'tab') && this._parentMenu) {\r\n          this._parentMenu.closed.emit(reason);\r\n        }\r\n      });\r\n    }\r\n\r\n    this._menuItemInstance?._setTriggersSubmenu(this._triggersSubmenu());\r\n  }\r\n  private _menuInternal: MDMenuPanel | null;\r\n\r\n  abstract menuOpened: EventEmitter<void>;\r\n  abstract menuClosed: EventEmitter<void>;\r\n\r\n  protected abstract _getOverlayOrigin(): FlexibleConnectedPositionStrategyOrigin;\r\n  protected abstract _getOutsideClickStream(overlayRef: OverlayRef): Observable<unknown>;\r\n\r\n  constructor(private readonly _canHaveBackdrop: boolean) {\r\n    const parentMenu = inject<MDMenuPanel>(MD_MENU_PANEL, {optional: true});\r\n    this._parentMenu = parentMenu instanceof MDMenu ? parentMenu : undefined;\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this._menu && this._ownsMenu(this._menu)) {\r\n      PANELS_TO_TRIGGERS.delete(this._menu);\r\n    }\r\n\r\n    this._pendingRemoval?.unsubscribe();\r\n    this._menuCloseSubscription.unsubscribe();\r\n    this._closingActionsSubscription.unsubscribe();\r\n\r\n    if (this._overlayRef) {\r\n      this._overlayRef.dispose();\r\n      this._overlayRef = null;\r\n    }\r\n  }\r\n\r\n  get menuOpen(): boolean {\r\n    return this._menuOpen;\r\n  }\r\n\r\n  get dir(): Direction {\r\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\r\n  }\r\n\r\n  protected _triggersSubmenu(): boolean {\r\n    return !!(this._menuItemInstance && this._parentMenu && this._menu);\r\n  }\r\n\r\n  protected _closeMenu() {\r\n    this._menu?.close.emit();\r\n  }\r\n\r\n  protected _openMenu(autoFocus: boolean): void {\r\n    const menu = this._menu;\r\n    if (this._menuOpen || !menu) return;\r\n\r\n    this._pendingRemoval?.unsubscribe();\r\n    const previousTrigger = PANELS_TO_TRIGGERS.get(menu);\r\n    PANELS_TO_TRIGGERS.set(menu, this);\r\n\r\n    if (previousTrigger && previousTrigger !== this) {\r\n      previousTrigger._closeMenu();\r\n    }\r\n\r\n    const overlayRef = this._createOverlay(menu);\r\n    const overlayConfig = overlayRef.getConfig();\r\n    const positionStrategy = overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy;\r\n\r\n    this._setPosition(menu, positionStrategy);\r\n\r\n    if (this._canHaveBackdrop) {\r\n      overlayConfig.hasBackdrop =\r\n        menu.hasBackdrop == null ? !this._triggersSubmenu() : menu.hasBackdrop;\r\n    } else {\r\n      overlayConfig.hasBackdrop = false;\r\n    }\r\n\r\n    if (!overlayRef.hasAttached()) {\r\n      overlayRef.attach(this._getPortal(menu));\r\n      menu.lazyContent?.attach(this.menuData);\r\n    }\r\n\r\n    this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this._closeMenu());\r\n    menu.parentMenu = this._triggersSubmenu() ? this._parentMenu : undefined;\r\n    menu.direction = this.dir;\r\n\r\n    if (autoFocus) {\r\n      menu.focusFirstItem(this._openedBy || 'program');\r\n    }\r\n\r\n    this._setIsMenuOpen(true);\r\n\r\n    if (menu instanceof MDMenu) {\r\n      menu._setIsOpen(true);\r\n      menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {\r\n        positionStrategy.withLockedPosition(false).reapplyLastPosition();\r\n        positionStrategy.withLockedPosition(true);\r\n      });\r\n    }\r\n  }\r\n\r\n  focus(origin?: FocusOrigin, options?: FocusOptions) {\r\n    if (this._focusMonitor && origin) {\r\n      this._focusMonitor.focusVia(this._element, origin, options);\r\n    } else {\r\n      this._element.nativeElement.focus(options);\r\n    }\r\n  }\r\n\r\n  protected _destroyMenu(reason: MenuCloseReason) {\r\n    const overlayRef = this._overlayRef;\r\n    const menu = this._menu;\r\n\r\n    if (!overlayRef || !this.menuOpen) return;\r\n\r\n    this._closingActionsSubscription.unsubscribe();\r\n    this._pendingRemoval?.unsubscribe();\r\n\r\n    if (menu instanceof MDMenu && this._ownsMenu(menu)) {\r\n      this._pendingRemoval = menu._animationDone.pipe(take(1)).subscribe(() => {\r\n        overlayRef.detach();\r\n        if (!PANELS_TO_TRIGGERS.has(menu)) {\r\n          menu.lazyContent?.detach();\r\n        }\r\n      });\r\n      menu._setIsOpen(false);\r\n    } else {\r\n      overlayRef.detach();\r\n      menu?.lazyContent?.detach();\r\n    }\r\n\r\n    if (menu && this._ownsMenu(menu)) {\r\n      PANELS_TO_TRIGGERS.delete(menu);\r\n    }\r\n\r\n    if (\r\n      this.restoreFocus &&\r\n      (reason === 'keydown' || !this._openedBy || !this._triggersSubmenu())\r\n    ) {\r\n      this.focus(this._openedBy);\r\n    }\r\n\r\n    this._openedBy = undefined;\r\n    this._setIsMenuOpen(false);\r\n  }\r\n\r\n  private _setIsMenuOpen(isOpen: boolean): void {\r\n    if (isOpen !== this._menuOpen) {\r\n      this._menuOpen = isOpen;\r\n      this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\r\n\r\n      if (this._triggersSubmenu()) {\r\n        this._menuItemInstance._setHighlighted(isOpen);\r\n      }\r\n\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n\r\n  private _createOverlay(menu: MDMenuPanel): OverlayRef {\r\n    if (!this._overlayRef) {\r\n      const config = this._getOverlayConfig(menu);\r\n      this._subscribeToPositions(menu, config.positionStrategy as FlexibleConnectedPositionStrategy);\r\n      this._overlayRef = createOverlayRef(this._injector, config);\r\n      this._overlayRef.keydownEvents().subscribe(event => {\r\n        if (this._menu instanceof MDMenu) {\r\n          this._menu._handleKeydown(event);\r\n        }\r\n      });\r\n    }\r\n\r\n    return this._overlayRef;\r\n  }\r\n\r\n  private _getOverlayConfig(menu: MDMenuPanel): OverlayConfig {\r\n    return new OverlayConfig({\r\n      positionStrategy: createFlexibleConnectedPositionStrategy(\r\n        this._injector,\r\n        this._getOverlayOrigin(),\r\n      )\r\n        .withLockedPosition()\r\n        .withGrowAfterOpen()\r\n        .withTransformOriginOn('.md-menu-panel, .md-mdc-menu-panel'),\r\n      backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop',\r\n      panelClass: menu.overlayPanelClass,\r\n      scrollStrategy: this._scrollStrategy(),\r\n      direction: this._dir || 'ltr',\r\n      disableAnimations: this._menu?.animationsDisabled,\r\n    });\r\n  }\r\n\r\n  private _subscribeToPositions(menu: MDMenuPanel, position: FlexibleConnectedPositionStrategy) {\r\n    if (menu.setPositionClasses) {\r\n      position.positionChanges.subscribe(change => {\r\n        this._ngZone.run(() => {\r\n          const posX: MenuPositionX =\r\n            change.connectionPair.overlayX === 'start' ? 'after' : 'before';\r\n          const posY: MenuPositionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\r\n          menu.setPositionClasses!(posX, posY);\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  private _setPosition(menu: MDMenuPanel, positionStrategy: FlexibleConnectedPositionStrategy) {\r\n    let [originX, originFallbackX]: HorizontalConnectionPos[] =\r\n      menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\r\n\r\n    let [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\r\n      menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\r\n\r\n    let [originY, originFallbackY] = [overlayY, overlayFallbackY];\r\n    let [overlayX, overlayFallbackX] = [originX, originFallbackX];\r\n    let offsetY = 0;\r\n\r\n    if (this._triggersSubmenu()) {\r\n      overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';\r\n      originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\r\n    } else if (!menu.overlapTrigger) {\r\n      originY = overlayY === 'top' ? 'bottom' : 'top';\r\n      originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\r\n    }\r\n\r\n    positionStrategy.withPositions([\r\n      {originX, originY, overlayX, overlayY, offsetY},\r\n      {originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetY},\r\n      {\r\n        originX,\r\n        originY: originFallbackY,\r\n        overlayX,\r\n        overlayY: overlayFallbackY,\r\n        offsetY: -offsetY,\r\n      },\r\n      {\r\n        originX: originFallbackX,\r\n        originY: originFallbackY,\r\n        overlayX: overlayFallbackX,\r\n        overlayY: overlayFallbackY,\r\n        offsetY: -offsetY,\r\n      },\r\n    ]);\r\n  }\r\n\r\n  private _menuClosingActions() {\r\n    const outsideClicks = this._getOutsideClickStream(this._overlayRef!);\r\n    const detachments = this._overlayRef!.detachments();\r\n    const parentClose = this._parentMenu ? this._parentMenu.closed : observableOf();\r\n    const hover = this._parentMenu\r\n      ? this._parentMenu\r\n          ._hovered()\r\n          .pipe(filter(active => this._menuOpen && active !== this._menuItemInstance))\r\n      : observableOf();\r\n\r\n    return merge(outsideClicks, parentClose as Observable<MenuCloseReason>, hover, detachments);\r\n  }\r\n\r\n  private _getPortal(menu: MDMenuPanel): TemplatePortal {\r\n    if (!this._portal || this._portal.templateRef !== menu.templateRef) {\r\n      this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);\r\n    }\r\n\r\n    return this._portal;\r\n  }\r\n\r\n  private _ownsMenu(menu: MDMenuPanel): boolean {\r\n    return PANELS_TO_TRIGGERS.get(menu) === this;\r\n  }\r\n}\r\n","import {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\r\nimport {ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE} from '@angular/cdk/keycodes';\r\nimport {\r\n  AfterContentInit,\r\n  Directive,\r\n  EventEmitter,\r\n  inject,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  Renderer2,\r\n} from '@angular/core';\r\nimport {OverlayRef} from '@angular/cdk/overlay';\r\nimport {Subscription} from 'rxjs';\r\nimport {MDMenuPanel} from './menu-panel';\r\nimport {MDMenuTriggerBase} from './menu-trigger-base';\r\n\r\n@Directive({\r\n  selector: '[md-menu-trigger-for], [mdMenuTriggerFor]',\r\n  host: {\r\n    'class': 'md-mdc-menu-trigger',\r\n    '[attr.aria-haspopup]': 'menu ? \"menu\" : null',\r\n    '[attr.aria-expanded]': 'menuOpen',\r\n    '[attr.aria-controls]': 'menuOpen ? menu?.panelId : null',\r\n    '(click)': '_handleClick($event)',\r\n    '(mousedown)': '_handleMousedown($event)',\r\n    '(keydown)': '_handleKeydown($event)',\r\n  },\r\n  exportAs: 'mdMenuTrigger',\r\n})\r\nexport class MDMenuTrigger extends MDMenuTriggerBase implements AfterContentInit, OnDestroy {\r\n  private _cleanupTouchstart: () => void;\r\n  private _hoverSubscription = Subscription.EMPTY;\r\n\r\n  @Input('md-menu-trigger-for')\r\n  get _deprecatedMDMenuTriggerFor(): MDMenuPanel | null {\r\n    return this.menu;\r\n  }\r\n  set _deprecatedMDMenuTriggerFor(v: MDMenuPanel | null) {\r\n    this.menu = v;\r\n  }\r\n\r\n  @Input('mdMenuTriggerFor')\r\n  get menu(): MDMenuPanel | null {\r\n    return this._menu;\r\n  }\r\n  set menu(menu: MDMenuPanel | null) {\r\n    this._menu = menu;\r\n  }\r\n\r\n  @Input('mdMenuTriggerData')\r\n  override menuData: any;\r\n\r\n  @Input('mdMenuTriggerRestoreFocus')\r\n  override restoreFocus: boolean = true;\r\n\r\n  @Output() readonly menuOpened: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  @Output() readonly onMenuOpen: EventEmitter<void> = this.menuOpened;\r\n\r\n  @Output() readonly menuClosed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  @Output() readonly onMenuClose: EventEmitter<void> = this.menuClosed;\r\n\r\n  constructor() {\r\n    super(true);\r\n\r\n    const renderer = inject(Renderer2);\r\n    this._cleanupTouchstart = renderer.listen(\r\n      this._element.nativeElement,\r\n      'touchstart',\r\n      (event: TouchEvent) => {\r\n        if (!isFakeTouchstartFromScreenReader(event)) {\r\n          this._openedBy = 'touch';\r\n        }\r\n      },\r\n      {passive: true},\r\n    );\r\n  }\r\n\r\n  triggersSubmenu(): boolean {\r\n    return super._triggersSubmenu();\r\n  }\r\n\r\n  toggleMenu(): void {\r\n    return this.menuOpen ? this.closeMenu() : this.openMenu();\r\n  }\r\n\r\n  openMenu(): void {\r\n    this._openMenu(true);\r\n  }\r\n\r\n  closeMenu(): void {\r\n    this._closeMenu();\r\n  }\r\n\r\n  updatePosition(): void {\r\n    this._overlayRef?.updatePosition();\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    this._handleHover();\r\n  }\r\n\r\n  override ngOnDestroy() {\r\n    super.ngOnDestroy();\r\n    this._cleanupTouchstart();\r\n    this._hoverSubscription.unsubscribe();\r\n  }\r\n\r\n  protected override _getOverlayOrigin() {\r\n    return this._element;\r\n  }\r\n\r\n  protected override _getOutsideClickStream(overlayRef: OverlayRef) {\r\n    return overlayRef.backdropClick();\r\n  }\r\n\r\n  _handleMousedown(event: MouseEvent): void {\r\n    if (!isFakeMousedownFromScreenReader(event)) {\r\n      this._openedBy = event.button === 0 ? 'mouse' : undefined;\r\n      if (this.triggersSubmenu()) {\r\n        event.preventDefault();\r\n      }\r\n    }\r\n  }\r\n\r\n  _handleKeydown(event: KeyboardEvent): void {\r\n    const keyCode = event.keyCode;\r\n\r\n    if (keyCode === ENTER || keyCode === SPACE) {\r\n      this._openedBy = 'keyboard';\r\n    }\r\n\r\n    if (\r\n      this.triggersSubmenu() &&\r\n      ((keyCode === RIGHT_ARROW && this.dir === 'ltr') ||\r\n        (keyCode === LEFT_ARROW && this.dir === 'rtl'))\r\n    ) {\r\n      this._openedBy = 'keyboard';\r\n      this.openMenu();\r\n    }\r\n  }\r\n\r\n  _handleClick(event: MouseEvent): void {\r\n    if (this.triggersSubmenu()) {\r\n      event.stopPropagation();\r\n      this.openMenu();\r\n    } else {\r\n      this.toggleMenu();\r\n    }\r\n  }\r\n\r\n  private _handleHover() {\r\n    if (this.triggersSubmenu() && this._parentMenu) {\r\n      this._hoverSubscription = this._parentMenu._hovered().subscribe(active => {\r\n        if (\r\n          active === this._menuItemInstance &&\r\n          !active.disabled &&\r\n          this._parentMenu?._panelAnimationState !== 'void'\r\n        ) {\r\n          this._openedBy = 'mouse';\r\n          this._openMenu(false);\r\n        }\r\n      });\r\n    }\r\n  }\r\n}\r\n","import {\r\n  booleanAttribute,\r\n  Directive,\r\n  DOCUMENT,\r\n  EventEmitter,\r\n  inject,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n} from '@angular/core';\r\nimport {MDMenuTriggerBase} from './menu-trigger-base';\r\nimport {\r\n  FlexibleConnectedPositionStrategy,\r\n  OverlayRef,\r\n  ScrollDispatcher,\r\n  ViewportRuler,\r\n} from '@angular/cdk/overlay';\r\nimport {_getEventTarget, _getShadowRoot} from '@angular/cdk/platform';\r\nimport {Subscription} from 'rxjs';\r\nimport {skipWhile} from 'rxjs/operators';\r\nimport {MDMenuPanel} from './menu-panel';\r\nimport {MenuCloseReason} from './menu';\r\n\r\n@Directive({\r\n  selector: '[mdContextMenuTriggerFor]',\r\n  host: {\r\n    'class': 'md-context-menu-trigger',\r\n    '[class.md-context-menu-trigger-disabled]': 'disabled',\r\n    '[attr.aria-controls]': 'menuOpen ? menu?.panelId : null',\r\n    '(contextmenu)': '_handleContextMenuEvent($event)',\r\n  },\r\n  exportAs: 'mdContextMenuTrigger',\r\n})\r\nexport class MDContextMenuTrigger extends MDMenuTriggerBase implements OnDestroy {\r\n  private _point = {x: 0, y: 0, initialX: 0, initialY: 0, initialScrollX: 0, initialScrollY: 0};\r\n  private _triggerPressedControl = false;\r\n  private _rootNode: DocumentOrShadowRoot | undefined;\r\n  private _document = inject(DOCUMENT);\r\n  private _viewportRuler = inject(ViewportRuler);\r\n  private _scrollDispatcher = inject(ScrollDispatcher);\r\n  private _scrollSubscription: Subscription | undefined;\r\n\r\n  @Input({alias: 'mdContextMenuTriggerFor', required: true})\r\n  get menu(): MDMenuPanel | null {\r\n    return this._menu;\r\n  }\r\n  set menu(menu: MDMenuPanel | null) {\r\n    this._menu = menu;\r\n  }\r\n\r\n  @Input('mdContextMenuTriggerData')\r\n  override menuData: any;\r\n\r\n  @Input('mdContextMenuTriggerRestoreFocus')\r\n  override restoreFocus: boolean = true;\r\n\r\n  @Input({alias: 'mdContextMenuTriggerDisabled', transform: booleanAttribute})\r\n  disabled: boolean = false;\r\n\r\n  @Output()\r\n  readonly menuOpened: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  @Output() readonly menuClosed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  constructor() {\r\n    super(false);\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    this._scrollSubscription?.unsubscribe();\r\n  }\r\n\r\n  protected _handleContextMenuEvent(event: MouseEvent) {\r\n    if (!this.disabled) {\r\n      event.preventDefault();\r\n\r\n      if (this.menuOpen) {\r\n        this._initializePoint(event.clientX, event.clientY);\r\n        this._updatePosition();\r\n      } else {\r\n        this._openContextMenu(event);\r\n      }\r\n    }\r\n  }\r\n\r\n  protected override _destroyMenu(reason: MenuCloseReason): void {\r\n    super._destroyMenu(reason);\r\n    this._scrollSubscription?.unsubscribe();\r\n  }\r\n\r\n  protected override _getOverlayOrigin() {\r\n    return this._point;\r\n  }\r\n\r\n  protected override _getOutsideClickStream(overlayRef: OverlayRef) {\r\n    return overlayRef.outsidePointerEvents().pipe(\r\n      skipWhile((event, index) => {\r\n        if (event.type === 'contextmenu') {\r\n          return this._isWithinMenuOrTrigger(_getEventTarget(event) as Element);\r\n        } else if (event.type === 'auxclick') {\r\n          if (index === 0) {\r\n            return true;\r\n          }\r\n          this._rootNode ??= _getShadowRoot(this._element.nativeElement) || this._document;\r\n          return this._isWithinMenuOrTrigger(\r\n            this._rootNode.elementFromPoint(event.clientX, event.clientY),\r\n          );\r\n        }\r\n\r\n        return this._triggerPressedControl && index === 0 && event.ctrlKey;\r\n      }),\r\n    );\r\n  }\r\n\r\n  private _isWithinMenuOrTrigger(target: Element | null): boolean {\r\n    if (!target) return false;\r\n\r\n    const element = this._element.nativeElement;\r\n    if (target === element || element.contains(target)) return true;\r\n\r\n    const overlay = this._overlayRef?.hostElement;\r\n    return overlay === target || !!overlay?.contains(target);\r\n  }\r\n\r\n  private _openContextMenu(event: MouseEvent) {\r\n    if (event.button === 2) {\r\n      this._openedBy = 'mouse';\r\n    } else {\r\n      this._openedBy = event.button === 0 ? 'keyboard' : undefined;\r\n    }\r\n\r\n    this._initializePoint(event.clientX, event.clientY);\r\n    this._triggerPressedControl = event.ctrlKey;\r\n    super._openMenu(true);\r\n\r\n    this._scrollSubscription?.unsubscribe();\r\n    this._scrollSubscription = this._scrollDispatcher.scrolled(0).subscribe(() => {\r\n      const position = this._viewportRuler.getViewportScrollPosition();\r\n      const point = this._point;\r\n      point.y = point.initialY + (point.initialScrollY - position.top);\r\n      point.x = point.initialX + (point.initialScrollX - position.left);\r\n      this._updatePosition();\r\n    });\r\n  }\r\n\r\n  private _initializePoint(x: number, y: number) {\r\n    const scrollPosition = this._viewportRuler.getViewportScrollPosition();\r\n    const point = this._point;\r\n    point.x = point.initialX = x;\r\n    point.y = point.initialY = y;\r\n    point.initialScrollX = scrollPosition.left;\r\n    point.initialScrollY = scrollPosition.top;\r\n  }\r\n\r\n  private _updatePosition() {\r\n    const overlayRef = this._overlayRef;\r\n\r\n    if (overlayRef) {\r\n      const positionStrategy = overlayRef.getConfig()\r\n        .positionStrategy as FlexibleConnectedPositionStrategy;\r\n      positionStrategy.setOrigin(this._point);\r\n      overlayRef.updatePosition();\r\n    }\r\n  }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {OverlayModule} from '@angular/cdk/overlay';\r\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\r\nimport {BidiModule} from '@angular/cdk/bidi';\r\nimport {MDMenu} from './menu';\r\nimport {MDMenuItem} from './menu-item';\r\nimport {MDMenuContent} from './menu-content';\r\nimport {MDMenuTrigger} from './menu-trigger';\r\nimport {MDContextMenuTrigger} from './context-menu-trigger';\r\n\r\n@NgModule({\r\n  imports: [\r\n    OverlayModule,\r\n    MDMenu,\r\n    MDMenuItem,\r\n    MDMenuContent,\r\n    MDMenuTrigger,\r\n    MDContextMenuTrigger,\r\n  ],\r\n  exports: [\r\n    BidiModule,\r\n    CdkScrollableModule,\r\n    MDMenu,\r\n    MDMenuItem,\r\n    MDMenuContent,\r\n    MDMenuTrigger,\r\n    MDContextMenuTrigger,\r\n  ],\r\n})\r\nexport class MDMenuModule {}","import { Component, ViewEncapsulation, Input, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n/** Visual states for the pseudo checkbox glyph. */\r\nexport type PseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\r\n\r\n@Component({\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'pseudo-checkbox',\r\n  styleUrl: 'pseudo-checkbox.scss',\r\n  template: '',\r\n  host: {\r\n    class: 'pseudo-checkbox',\r\n    '[class.pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\r\n    '[class.pseudo-checkbox-checked]': 'state === \"checked\"',\r\n    '[class.pseudo-checkbox-disabled]': 'disabled',\r\n    '[class.pseudo-checkbox-minimal]': 'appearance === \"minimal\"',\r\n    '[class.pseudo-checkbox-full]': 'appearance === \"full\"',\r\n  },\r\n  standalone: true,\r\n})\r\n/**\r\n * Minimal visual-only checkbox glyph.\r\n *\r\n * @remarks\r\n * - This component renders no interactive behavior by itself; it’s intended as a purely\r\n *   presentational indicator (e.g., inside list options).\r\n * - Host classes reflect the current `state`, `disabled`, and `appearance` values.\r\n */\r\nexport class PseudoCheckbox {\r\n  /**\r\n   * Visual state of the glyph.\r\n   * Affects host classes only; no behavior is implied.\r\n   * @default 'checked'\r\n   */\r\n  @Input() state: PseudoCheckboxState = 'checked';\r\n\r\n  /**\r\n   * Applies a disabled look.\r\n   * Parent/consumer is responsible for actual interactivity.\r\n   * @default false\r\n   */\r\n  @Input() disabled: boolean = false;\r\n\r\n  /**\r\n   * Size/style variant of the glyph.\r\n   * - `'minimal'` — compact indicator\r\n   * - `'full'`    — standard checkbox visuals\r\n   * @default 'full'\r\n   */\r\n  @Input() appearance: 'minimal' | 'full' = 'full';\r\n\r\n  constructor() {\r\n  }\r\n}\r\n","import {\r\n  booleanAttribute,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  inject,\r\n  Input,\r\n  Output,\r\n  QueryList,\r\n  signal,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { _IdGenerator, FocusOrigin } from '@angular/cdk/a11y';\r\nimport { ENTER, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\r\nimport { Subject } from 'rxjs';\r\nimport { MDOptionGroup } from './option-group';\r\nimport { MDSelect } from './select';\r\nimport { PseudoCheckbox } from './pseudo-checkbox';\r\n\r\n/**\r\n * Event payload emitted when an option's selection state changes.\r\n *\r\n * @template T Model value type.\r\n */\r\nexport class MDOptionSelectionChange<T = any> {\r\n  constructor(public source: MDOption<T>, public isUserInput = false) {}\r\n}\r\n\r\n@Component({\r\n  selector: 'md-option',\r\n  encapsulation: ViewEncapsulation.None,\r\n  templateUrl: './option.html',\r\n  styleUrls: ['./option.scss'],\r\n  host: {\r\n    role: 'option',\r\n    '[class.mdc-list-item--selected]': 'selected',\r\n    '[class.mdc-option-multiple]': 'multiple',\r\n    '[class.mdc-option-active]': 'active',\r\n    '[class.mdc-list-item--disabled]': 'disabled',\r\n    '[id]': 'id',\r\n    '[attr.aria-selected]': 'selected',\r\n    '[attr.aria-disabled]': 'disabled.toString()',\r\n    '(click)': '_selectViaInteraction()',\r\n    '(keydown)': '_handleKeydown($event)',\r\n    class: 'mdc-option mdc-list-item',\r\n  },\r\n  standalone: true,\r\n  imports: [PseudoCheckbox],\r\n})\r\n/**\r\n * Single selectable option used inside {@link MDSelect} and similar controls.\r\n *\r\n * @remarks\r\n * - Supports single and multiple selection modes (derived from parent select).\r\n * - Inherits disabled state from the nearest {@link MDOptionGroup}, if present.\r\n * - Emits {@link MDOption.onSelectionChange} on user/programmatic updates.\r\n */\r\nexport class MDOption<T = any> {\r\n  /** Host element reference for focus & DOM access. */\r\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n  /** Change detector for OnPush-friendly manual marks. */\r\n  _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n  /** Optional parent select to derive `multiple` and for coordination. */\r\n  private _parent = inject<MDSelect>(MDSelect, { optional: true });\r\n\r\n  /** Optional parent group to inherit disabled state. */\r\n  group = inject<MDOptionGroup>(MDOptionGroup, { optional: true });\r\n\r\n  /** Internal selection state. */\r\n  private _selected = false;\r\n\r\n  /** Internal active (highlighted) state used by typeahead/keyboard nav. */\r\n  private _active = false;\r\n\r\n  /** Model value associated with this option. */\r\n  @Input() value: T;\r\n\r\n  /** Unique id for the option (used by host/id bindings). */\r\n  @Input() id: string = inject(_IdGenerator).getId('md-option-');\r\n\r\n  /**\r\n   * Disabled state: `true` if the group is disabled OR the individual disabled signal is `true`.\r\n   * Group-level disabled takes precedence and is observed reactively.\r\n   */\r\n  @Input({ transform: booleanAttribute })\r\n  get disabled(): boolean {\r\n    return (this.group && this.group.disabled) || this._disabled();\r\n  }\r\n  set disabled(value: boolean) {\r\n    this._disabled.set(value);\r\n  }\r\n\r\n  /** Internal reactive flag for individual disabled state. */\r\n  private _disabled = signal(false);\r\n\r\n  /** Whether the parent select is in multi-selection mode. */\r\n  get multiple() {\r\n    return this._parent && this._parent.multiple;\r\n  }\r\n\r\n  /** Public read-only selection flag. */\r\n  get selected(): boolean {\r\n    return this._selected;\r\n  }\r\n\r\n  /** Emits whenever selection state changes (user or programmatic). */\r\n  @Output() readonly onSelectionChange = new EventEmitter<MDOptionSelectionChange<T>>();\r\n\r\n  /**\r\n   * Reference to the visible text node inside option.\r\n   * Used to compute {@link viewValue} / {@link getLabel}.\r\n   */\r\n  @ViewChild('text', { static: true }) _text: ElementRef<HTMLElement> | undefined;\r\n\r\n  /** Stream used by parent components to observe state changes. */\r\n  readonly _stateChanges = new Subject<void>();\r\n\r\n  constructor() {}\r\n\r\n  /** Whether this option is currently \"active\" (keyboard highlight). */\r\n  get active(): boolean {\r\n    return this._active;\r\n  }\r\n\r\n  /**\r\n   * Select this option programmatically.\r\n   * @param emitEvent When `true` (default), emits {@link onSelectionChange}.\r\n   */\r\n  select(emitEvent = true): void {\r\n    if (!this._selected) {\r\n      this._selected = true;\r\n      this._changeDetectorRef.markForCheck();\r\n\r\n      if (emitEvent) {\r\n        this._emitSelectionChangeEvent();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Handle keyboard selection: `ENTER`/`SPACE` toggles selection\r\n   * when no modifier keys are pressed.\r\n   */\r\n  _handleKeydown(event: KeyboardEvent): void {\r\n    if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\r\n      this._selectViaInteraction();\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Toggle/select via click or keyboard; respects disabled and multiple modes.\r\n   * Marks for check and emits user-input-flavored selection event.\r\n   */\r\n  _selectViaInteraction(): void {\r\n    if (!this.disabled) {\r\n      this._selected = this.multiple ? !this._selected : true;\r\n      this._changeDetectorRef.markForCheck();\r\n      this._emitSelectionChangeEvent(true);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Deselect this option programmatically.\r\n   * @param emitEvent When `true` (default), emits {@link onSelectionChange}.\r\n   */\r\n  deselect(emitEvent = true): void {\r\n    if (this._selected) {\r\n      this._selected = false;\r\n      this._changeDetectorRef.markForCheck();\r\n\r\n      if (emitEvent) {\r\n        this._emitSelectionChangeEvent();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Move focus to this option's host element.\r\n   * @param _origin Optional {@link FocusOrigin} (not used by default).\r\n   * @param options Standard {@link FocusOptions}.\r\n   */\r\n  focus(_origin?: FocusOrigin, options?: FocusOptions): void {\r\n    const element = this._getHostElement();\r\n    if (typeof element.focus === 'function') {\r\n      element.focus(options);\r\n    }\r\n    // No change detection needed; focus is imperative.\r\n  }\r\n\r\n  /** Visible string representation of the option (trimmed text content). */\r\n  get viewValue(): string {\r\n    return (this._text?.nativeElement.textContent || '').trim();\r\n  }\r\n\r\n  /** Alias for {@link viewValue}; kept for API parity with other option components. */\r\n  getLabel(): string {\r\n    return this.viewValue;\r\n  }\r\n\r\n  /** Apply \"active\" visual styles (used by parent for keyboard navigation). */\r\n  setActiveStyles(): void {\r\n    if (!this._active) {\r\n      this._active = true;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n\r\n  /** Remove \"active\" visual styles. */\r\n  setInactiveStyles(): void {\r\n    if (this._active) {\r\n      this._active = false;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n\r\n  /** Return the underlying host `HTMLElement`. */\r\n  _getHostElement(): HTMLElement {\r\n    return this._element.nativeElement;\r\n  }\r\n\r\n  /**\r\n   * Emit selection change payload; optionally mark as user-driven.\r\n   * @param isUserInput Whether the change originated from user interaction.\r\n   */\r\n  private _emitSelectionChangeEvent(isUserInput = false): void {\r\n    this.onSelectionChange.emit(new MDOptionSelectionChange<T>(this, isUserInput));\r\n  }\r\n}\r\n\r\n/**\r\n * Count how many group labels appear before a given option index.\r\n * Useful for computing aria-posinset / active-descendant offsets when groups are present.\r\n *\r\n * @param optionIndex Index of the target option among all rendered options.\r\n * @param options     `QueryList` of all `MDOption` items (in render order).\r\n * @param optionGroups `QueryList` of `MDOptionGroup` (in render order).\r\n * @returns Number of group headers preceding the option.\r\n */\r\nexport function _countGroupLabelsBeforeOption(\r\n  optionIndex: number,\r\n  options: QueryList<MDOption>,\r\n  optionGroups: QueryList<MDOptionGroup>\r\n): number {\r\n  if (optionGroups.length) {\r\n    let optionsArray = options.toArray();\r\n    let groups = optionGroups.toArray();\r\n    let groupCounter = 0;\r\n\r\n    for (let i = 0; i < optionIndex + 1; i++) {\r\n      if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\r\n        groupCounter++;\r\n      }\r\n    }\r\n    return groupCounter;\r\n  }\r\n  return 0;\r\n}\r\n\r\n/**\r\n * Compute the `scrollTop` needed to bring an option fully into view inside a panel.\r\n *\r\n * @param optionOffset          Distance (px) from top of panel to the top of the option.\r\n * @param optionHeight          Height of the option (px).\r\n * @param currentScrollPosition Current `scrollTop` of the panel.\r\n * @param panelHeight           Visible height of the panel (px).\r\n * @returns Desired `scrollTop` to ensure full visibility (or current if already visible).\r\n */\r\nexport function _getOptionScrollPosition(\r\n  optionOffset: number,\r\n  optionHeight: number,\r\n  currentScrollPosition: number,\r\n  panelHeight: number\r\n): number {\r\n  if (optionOffset < currentScrollPosition) {\r\n    return optionOffset;\r\n  }\r\n\r\n  if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\r\n    return Math.max(0, optionOffset - panelHeight + optionHeight);\r\n  }\r\n\r\n  return currentScrollPosition;\r\n}\r\n","@if (multiple) {\r\n<pseudo-checkbox\r\n    class=\"mdc-option-pseudo-checkbox\"\r\n    [disabled]=\"disabled\"\r\n    [state]=\"selected ? 'checked' : 'unchecked'\"\r\n    aria-hidden=\"true\"\r\n></pseudo-checkbox>\r\n}\r\n\r\n<ng-content select=\"icon\"></ng-content>\r\n\r\n<span class=\"mdc-list-item__primary-text\" #text><ng-content></ng-content></span>\r\n\r\n@if (!multiple && selected) {\r\n<pseudo-checkbox\r\n    class=\"mdc-option-pseudo-checkbox\"\r\n    [disabled]=\"disabled\"\r\n    state=\"checked\"\r\n    aria-hidden=\"true\"\r\n    appearance=\"minimal\"\r\n></pseudo-checkbox>\r\n}","/**\r\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\r\n * after initialization.\r\n * @docs-private\r\n */\r\nexport function getMDSelectDynamicMultipleError(): Error {\r\n  return Error('Cannot change `multiple` mode of select after initialization.');\r\n}\r\n\r\n/**\r\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\r\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\r\n * resetting the value.\r\n * @docs-private\r\n */\r\nexport function getMDSelectNonArrayValueError(): Error {\r\n  return Error('Value must be an array in multiple-selection mode.');\r\n}\r\n\r\n/**\r\n * Returns an exception to be thrown when assigning a non-function value to the comparator\r\n * used to determine if a value corresponds to an option. Note that whether the function\r\n * actually takes two values and returns a boolean is not checked.\r\n */\r\nexport function getMDSelectNonFunctionValueError(): Error {\r\n  return Error('`compareWith` must be a function.');\r\n}","import { SelectionModel } from '@angular/cdk/collections';\r\nimport {\r\n    CdkConnectedOverlay,\r\n    CdkOverlayOrigin,\r\n    ConnectedPosition,\r\n    Overlay,\r\n    ScrollStrategy,\r\n    ViewportRuler,\r\n} from '@angular/cdk/overlay';\r\nimport { NgClass } from '@angular/common';\r\nimport {\r\n    booleanAttribute,\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChild,\r\n    ContentChildren,\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    forwardRef,\r\n    inject,\r\n    InjectionToken,\r\n    Input,\r\n    numberAttribute,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    QueryList,\r\n    Renderer2,\r\n    SimpleChanges,\r\n    ViewChild,\r\n    ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, Validators } from '@angular/forms';\r\nimport { _countGroupLabelsBeforeOption, _getOptionScrollPosition, MDOption, MDOptionSelectionChange } from './option';\r\nimport { MDOptionGroup } from './option-group';\r\nimport { _IdGenerator, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { defer, filter, map, merge, Observable, startWith, Subject, switchMap, take, takeUntil, tap } from 'rxjs';\r\nimport {\r\n    A,\r\n    DOWN_ARROW,\r\n    ENTER,\r\n    ESCAPE,\r\n    hasModifierKey,\r\n    LEFT_ARROW,\r\n    RIGHT_ARROW,\r\n    SPACE,\r\n    UP_ARROW,\r\n} from '@angular/cdk/keycodes';\r\nimport {\r\n    getMDSelectDynamicMultipleError,\r\n    getMDSelectNonArrayValueError,\r\n    getMDSelectNonFunctionValueError,\r\n} from './select-errors';\r\n\r\n/** Event payload emitted when the select's value changes. */\r\nexport class SelectChange<T = any> {\r\n    constructor(public source: MDSelect, public value: T) {}\r\n}\r\n\r\n/** Token for projecting a custom trigger template (optional). */\r\nexport const MD_SELECT_TRIGGER = new InjectionToken<MDSelectTrigger>('MDSelectTrigger');\r\n\r\n@Component({\r\n    selector: 'md-select',\r\n    templateUrl: './select.html',\r\n    styleUrls: ['./select.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        role: 'combobox',\r\n        'aria-haspopup': 'listbox',\r\n        class: 'mdc-select',\r\n        /**'[attr.id]': 'id',*/\r\n        '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n        /**'[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',*/\r\n        '[attr.aria-expanded]': 'panelOpen',\r\n        /**'[attr.aria-label]': 'ariaLabel || null',*/\r\n        '[attr.aria-required]': 'required.toString()',\r\n        '[attr.aria-disabled]': 'disabled.toString()',\r\n        /**'[attr.aria-invalid]': 'errorState',*/\r\n        '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\r\n        '[class.mdc-select-disabled]': 'disabled',\r\n        /** '[class.mdc-select-invalid]': 'errorState',*/\r\n        '[class.mdc-select-required]': 'required',\r\n        '[class.mdc-select-empty]': 'empty',\r\n        '[class.mdc-select-multiple]': 'multiple',\r\n        '(keydown)': '_handleKeydown($event)',\r\n        '(focus)': '_onFocus()',\r\n        '(blur)': '_onBlur()',\r\n        '(click)': 'onContainerClick()',\r\n    },\r\n    standalone: true,\r\n    imports: [CdkOverlayOrigin, CdkConnectedOverlay, NgClass],\r\n})\r\n/**\r\n * Material-like Select component with overlayed panel, single/multiple selection,\r\n * full a11y (combobox + listbox semantics), and CVA integration.\r\n *\r\n * @remarks\r\n * - Uses `ActiveDescendantKeyManager` for keyboard navigation & typeahead.\r\n * - Supports custom value comparison via `compareWith`.\r\n * - Works with {@link MDOption} and {@link MDOptionGroup} descendants.\r\n * - Emits `valueChange`, and structured `selectionChange` ({@link SelectChange}).\r\n */\r\nexport class MDSelect implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n    /** Viewport ruler for resize/orientation tracking to recompute overlay width. */\r\n    protected _viewportRuler = inject(ViewportRuler);\r\n\r\n    /** Change detector for OnPush; used throughout for manual marks. */\r\n    protected _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n    /** Host element reference. */\r\n    readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n\r\n    /** CDK Overlay service. */\r\n    readonly _overlay = inject(Overlay);\r\n\r\n    /** RTL/LTR direction (optional). */\r\n    private _dir = inject(Directionality, { optional: true });\r\n\r\n    /** Emits once content is fully initialized. */\r\n    private _initialized = new Subject<void>();\r\n\r\n    /** Control accessor hookup (if used inside forms). */\r\n    ngControl = inject(NgControl, { self: true, optional: true })!;\r\n\r\n    /** Id generator for trigger/value elements. */\r\n    private _idGenerator = inject(_IdGenerator);\r\n\r\n    /** Cleanup fn for overlay detach (animation end / fallback). */\r\n    private _cleanupDetach: (() => void) | undefined;\r\n\r\n    /** Renderer for low-level DOM ops. */\r\n    private _renderer = inject(Renderer2);\r\n\r\n    /** CSS class(es) applied to the overlay panel container. */\r\n    @Input() panelClass: string | string[] | Set<string> | { [key: string]: any };\r\n\r\n    /** Disabled state for the whole control. */\r\n    @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n    /** Multiple selection toggle. */\r\n    @Input({ transform: booleanAttribute })\r\n    get multiple(): boolean {\r\n        return this._multiple;\r\n    }\r\n    set multiple(value: boolean) {\r\n        if (this._selectionModel && (typeof ngDevMode === 'undefined' || ngDevMode)) {\r\n            throw getMDSelectDynamicMultipleError();\r\n        }\r\n        this._multiple = value;\r\n    }\r\n    private _multiple: boolean = false;\r\n\r\n    /** Current model value (single or array for multiple). */\r\n    @Input()\r\n    get value(): any {\r\n        return this._value;\r\n    }\r\n    set value(newValue: any) {\r\n        const hasAssigned = this._assignValue(newValue);\r\n        if (hasAssigned) {\r\n            this._onChange(newValue);\r\n        }\r\n    }\r\n    private _value: any;\r\n\r\n    /** Host tabindex (applies when not disabled). */\r\n    @Input({\r\n        transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\r\n    })\r\n    tabIndex: number = 0;\r\n\r\n    /**\r\n     * Required flag; auto-derives from `Validators.required` on the bound control\r\n     * if not provided explicitly.\r\n     */\r\n    @Input({ transform: booleanAttribute })\r\n    get required(): boolean {\r\n        return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n    }\r\n    set required(value: boolean) {\r\n        this._required = value;\r\n        this.stateChanges.next();\r\n    }\r\n    private _required: boolean | undefined;\r\n\r\n    /** Custom comparator for complex option values. */\r\n    @Input()\r\n    get compareWith() {\r\n        return this._compareWith;\r\n    }\r\n    set compareWith(fn: (o1: any, o2: any) => boolean) {\r\n        if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\r\n            throw getMDSelectNonFunctionValueError();\r\n        }\r\n        this._compareWith = fn;\r\n        if (this._selectionModel) {\r\n            this._initializeSelection();\r\n        }\r\n    }\r\n    private _compareWith = (o1: any, o2: any) => o1 === o2;\r\n\r\n    /** Placeholder/label when nothing is selected. */\r\n    @Input()\r\n    get placeholder(): string {\r\n        return this._placeholder;\r\n    }\r\n    set placeholder(value: string) {\r\n        this._placeholder = value;\r\n        this.stateChanges.next();\r\n    }\r\n    private _placeholder: string = 'placeholder';\r\n\r\n    /** Allow selecting null/undefined values in single mode. */\r\n    @Input({ transform: booleanAttribute })\r\n    canSelectNullableOptions: boolean = false;\r\n\r\n    /** Optional custom sorting for selected values (multiple mode). */\r\n    @Input() sortComparator: (a: MDOption, b: MDOption, options: MDOption[]) => number;\r\n\r\n    /** Emits raw value whenever internal value changes. */\r\n    @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    /** Emits {@link SelectChange} with source/value when selection changes. */\r\n    @Output() readonly selectionChange = new EventEmitter<SelectChange>();\r\n\r\n    /** Emits `true/false` when panel opens/closes. */\r\n    @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n    /** Convenience stream: fires once on open. */\r\n    @Output('opened') readonly _openedStream: Observable<void> = this.openedChange.pipe(\r\n        filter((o) => o),\r\n        map(() => {})\r\n    );\r\n\r\n    /** Convenience stream: fires once on close. */\r\n    @Output('closed') readonly _closedStream: Observable<void> = this.openedChange.pipe(\r\n        filter((o) => !o),\r\n        map(() => {})\r\n    );\r\n\r\n    /** Trigger element ref (default trigger template). */\r\n    @ViewChild('trigger') trigger: ElementRef;\r\n\r\n    /** Panel container ref. */\r\n    @ViewChild('panel') panel: ElementRef;\r\n\r\n    /** Overlay directive for positioning/attach/detach. */\r\n    @ViewChild(CdkConnectedOverlay) protected _overlayDir: CdkConnectedOverlay;\r\n\r\n    /** Optional projected custom trigger via injection token. */\r\n    @ContentChild(MD_SELECT_TRIGGER) customTrigger: MDSelectTrigger;\r\n\r\n    /** Descendant options in the content. */\r\n    @ContentChildren(MDOption, { descendants: true }) options: QueryList<MDOption>;\r\n\r\n    /** Descendant option groups in the content. */\r\n    @ContentChildren(MDOptionGroup, { descendants: true }) optionGroups: QueryList<MDOptionGroup>;\r\n\r\n    /** Preferred connected positions for overlay. */\r\n    _positions: ConnectedPosition[] = [\r\n        { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n        { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n        { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n        { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\r\n    ];\r\n\r\n    /** True when host is focused or panel is open. */\r\n    get focused(): boolean {\r\n        return this._focused || this._panelOpen;\r\n    }\r\n    private _focused = false;\r\n\r\n    /** Emits when any input that affects layout/state changes. */\r\n    readonly stateChanges = new Subject<void>();\r\n\r\n    /** Destroy notifier for subscriptions. */\r\n    protected readonly _destroy = new Subject<void>();\r\n\r\n    /** Panel visibility flag. */\r\n    private _panelOpen = false;\r\n\r\n    /** Computed overlay width (synced on viewport size changes). */\r\n    _overlayWidth: string | number;\r\n\r\n    /** Scroll strategy for overlay panel. */\r\n    _scrollStrategy: ScrollStrategy = this._overlay.scrollStrategies.reposition();\r\n\r\n    /** Selected options model. */\r\n    _selectionModel: SelectionModel<any>;\r\n\r\n    /** ControlValueAccessor change fn. */\r\n    _onChange: (value: any) => void = () => {};\r\n\r\n    /** ControlValueAccessor touched fn. */\r\n    _onTouched = () => {};\r\n\r\n    /** Keyboard manager for activeDescendant/roving focus/typeahead. */\r\n    _keyManager: ActiveDescendantKeyManager<MDOption>;\r\n\r\n    /** Stream of child option selection events, lazily wired. */\r\n    readonly optionSelectionChanges: Observable<MDOptionSelectionChange> = defer(() => {\r\n        const options = this.options;\r\n        if (options) {\r\n            return options.changes.pipe(\r\n                startWith(options),\r\n                switchMap(() => merge(...options.map((option) => option.onSelectionChange)))\r\n            );\r\n        }\r\n        return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));\r\n    });\r\n\r\n    /** Id for the trigger value region (for aria). */\r\n    _valueId = this._idGenerator.getId('select-value-');\r\n\r\n    /** True when no selection is present. */\r\n    get empty(): boolean {\r\n        return !this._selectionModel || this._selectionModel.isEmpty();\r\n    }\r\n\r\n    constructor() {\r\n        if (this.ngControl) {\r\n            this.ngControl.valueAccessor = this;\r\n        }\r\n    }\r\n\r\n    /** Lifecycle: react to `@Input` changes (reserved for future use). */\r\n    ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n    /** After content init: wire key manager, selection model synchronization. */\r\n    ngAfterContentInit(): void {\r\n        this._initialized.next();\r\n        this._initialized.complete();\r\n        this._initKeyManager();\r\n\r\n        this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe((event) => {\r\n            event.added.forEach((option) => option.select());\r\n            event.removed.forEach((option) => option.deselect());\r\n        });\r\n\r\n        this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {\r\n            this._resetOptions();\r\n            this._initializeSelection();\r\n        });\r\n    }\r\n\r\n    /** Initialize selection model and subscribe to viewport changes. */\r\n    ngOnInit() {\r\n        this._selectionModel = new SelectionModel<MDOption>(this.multiple);\r\n        this.stateChanges.next();\r\n\r\n        this._viewportRuler\r\n            .change()\r\n            .pipe(takeUntil(this._destroy))\r\n            .subscribe(() => {\r\n                if (this.panelOpen) {\r\n                    this._overlayWidth = this._getOverlayWidth();\r\n                    this._changeDetectorRef.detectChanges();\r\n                }\r\n            });\r\n    }\r\n\r\n    /** Cleanup listeners/subscriptions. */\r\n    ngOnDestroy(): void {\r\n        this._keyManager?.destroy();\r\n        this._destroy.next();\r\n        this._destroy.complete();\r\n    }\r\n\r\n    /** Public: whether the panel is currently open. */\r\n    get panelOpen(): boolean {\r\n        return this._panelOpen;\r\n    }\r\n\r\n    /** Public: current selection (single `MDOption` or array for multiple). */\r\n    get selected(): MDOption | MDOption[] {\r\n        return this.multiple ? this._selectionModel?.selected || [] : this._selectionModel?.selected[0];\r\n    }\r\n\r\n    /** Human-readable value for the trigger display. */\r\n    get triggerValue(): string {\r\n        if (this.empty) return '';\r\n        if (this._multiple) {\r\n            const selectedOptions = this._selectionModel.selected.map((option) => option.viewValue);\r\n            if (this._isRtl()) selectedOptions.reverse();\r\n            return selectedOptions.join(', ');\r\n        }\r\n        return this._selectionModel.selected[0].viewValue;\r\n    }\r\n\r\n    // ───────────────────────────── ControlValueAccessor ─────────────────────────────\r\n\r\n    writeValue(value: any): void {\r\n        this._assignValue(value);\r\n    }\r\n\r\n    registerOnChange(fn: (value: any) => void): void {\r\n        this._onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: () => {}): void {\r\n        this._onTouched = fn;\r\n    }\r\n\r\n    /**\r\n     * Disables the select. Part of the ControlValueAccessor interface required\r\n     * to integrate with Angular's core forms API.\r\n     *\r\n     * @param isDisabled Sets whether the component is disabled.\r\n     */\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this.disabled = isDisabled;\r\n        this._changeDetectorRef.markForCheck();\r\n        this.stateChanges.next();\r\n    }\r\n\r\n    // ───────────────────────────── Opening / Closing ─────────────────────────────\r\n\r\n    /** Guard: can we open now (not disabled, have options, overlay ready)? */\r\n    protected _canOpen(): boolean {\r\n        return !this._panelOpen && !this.disabled && this.options?.length > 0 && !!this._overlayDir;\r\n    }\r\n\r\n    /** Open the panel and prepare keyboard/scroll state. */\r\n    open(): void {\r\n        if (!this._canOpen()) return;\r\n\r\n        this._cleanupDetach?.();\r\n        this._overlayWidth = this._getOverlayWidth();\r\n        this._panelOpen = true;\r\n\r\n        this._overlayDir.positionChange.pipe(take(1)).subscribe(() => {\r\n            this._changeDetectorRef.detectChanges();\r\n            this._positioningSettled();\r\n        });\r\n\r\n        this._overlayDir.attachOverlay();\r\n        this._keyManager.withHorizontalOrientation(null);\r\n        this._highlightCorrectOption();\r\n        this._changeDetectorRef.markForCheck();\r\n        this.stateChanges.next();\r\n\r\n        Promise.resolve().then(() => this.openedChange.emit(true));\r\n    }\r\n\r\n    /** Pick initial active item on open (first enabled or selected). */\r\n    private _highlightCorrectOption(): void {\r\n        if (!this._keyManager) return;\r\n\r\n        if (this.empty) {\r\n            let firstEnabledOptionIndex = -1;\r\n            for (let index = 0; index < this.options.length; index++) {\r\n                const option = this.options.get(index)!;\r\n                if (!option.disabled) {\r\n                    firstEnabledOptionIndex = index;\r\n                    break;\r\n                }\r\n            }\r\n            this._keyManager.setActiveItem(firstEnabledOptionIndex);\r\n        } else {\r\n            this._keyManager.setActiveItem(this._selectionModel.selected[0]);\r\n        }\r\n    }\r\n\r\n    /** After attach: ensure active option is scrolled into view. */\r\n    private _positioningSettled() {\r\n        this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\r\n    }\r\n\r\n    /** Close panel, restore orientation, mark touched, and emit. */\r\n    close(): void {\r\n        if (!this._panelOpen) return;\r\n\r\n        this._panelOpen = false;\r\n        this._exitAndDetach();\r\n        this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\r\n        this._changeDetectorRef.markForCheck();\r\n        this._onTouched();\r\n        this.stateChanges.next();\r\n\r\n        Promise.resolve().then(() => this.openedChange.emit(false));\r\n    }\r\n\r\n    /** Play exit animation (if available), then detach overlay. */\r\n    private _exitAndDetach() {\r\n        if (!this.panel) {\r\n            this._detachOverlay();\r\n            return;\r\n        }\r\n\r\n        this._cleanupDetach?.();\r\n        this._cleanupDetach = () => {\r\n            cleanupEvent();\r\n            clearTimeout(exitFallbackTimer);\r\n            this._cleanupDetach = undefined;\r\n        };\r\n\r\n        const panel: HTMLElement = this.panel.nativeElement;\r\n        const cleanupEvent = this._renderer.listen(panel, 'animationend', (event: AnimationEvent) => {\r\n            if (event.animationName === 'select-exit') {\r\n                this._cleanupDetach?.();\r\n                this._detachOverlay();\r\n            }\r\n        });\r\n\r\n        const exitFallbackTimer = setTimeout(() => {\r\n            this._cleanupDetach?.();\r\n            this._detachOverlay();\r\n        }, 200);\r\n\r\n        panel.classList.add('select-panel-exit');\r\n    }\r\n\r\n    /** Detach overlay and request change detection. */\r\n    private _detachOverlay() {\r\n        this._overlayDir.detachOverlay();\r\n        this._changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    // ───────────────────────────── Keyboard handling ─────────────────────────────\r\n\r\n    /** RTL helper. */\r\n    _isRtl(): boolean {\r\n        return this._dir ? this._dir.value === 'rtl' : false;\r\n    }\r\n\r\n    _handleKeydown(event: KeyboardEvent): void {\r\n        if (this.disabled) return;\r\n        this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\r\n    }\r\n\r\n    /** When closed: open with Enter/Space; navigate single selection. */\r\n    private _handleClosedKeydown(event: KeyboardEvent): void {\r\n        const keyCode = event.keyCode;\r\n        const isArrowKey =\r\n            keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\r\n        const isOpenKey = keyCode === ENTER || keyCode === SPACE;\r\n        const manager = this._keyManager;\r\n\r\n        if (\r\n            (!manager.isTyping() && isOpenKey && !hasModifierKey(event)) ||\r\n            ((this.multiple || event.altKey) && isArrowKey)\r\n        ) {\r\n            event.preventDefault();\r\n            this.open();\r\n        } else if (!this.multiple) {\r\n            const previouslySelectedOption = this.selected;\r\n            manager.onKeydown(event);\r\n            const selectedOption = this.selected;\r\n            // Example: announce selection change to screen readers if needed.\r\n        }\r\n    }\r\n\r\n    /** When open: navigate/select, Ctrl+A (multiple), Alt+Arrow closes. */\r\n    private _handleOpenKeydown(event: KeyboardEvent): void {\r\n        const manager = this._keyManager;\r\n        const keyCode = event.keyCode;\r\n        const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\r\n        const isTyping = manager.isTyping();\r\n\r\n        if (isArrowKey && event.altKey) {\r\n            event.preventDefault();\r\n            this.close();\r\n        } else if (\r\n            !isTyping &&\r\n            (keyCode === ENTER || keyCode === SPACE) &&\r\n            manager.activeItem &&\r\n            !hasModifierKey(event)\r\n        ) {\r\n            event.preventDefault();\r\n            manager.activeItem._selectViaInteraction();\r\n        } else if (!isTyping && this._multiple && keyCode === A && event.ctrlKey) {\r\n            event.preventDefault();\r\n            const hasDeselectedOptions = this.options.some((opt) => !opt.disabled && !opt.selected);\r\n            this.options.forEach((option) => {\r\n                if (!option.disabled) hasDeselectedOptions ? option.select() : option.deselect();\r\n            });\r\n        } else {\r\n            const previouslyFocusedIndex = manager.activeItemIndex;\r\n            manager.onKeydown(event);\r\n\r\n            if (\r\n                this._multiple &&\r\n                isArrowKey &&\r\n                event.shiftKey &&\r\n                manager.activeItem &&\r\n                manager.activeItemIndex !== previouslyFocusedIndex\r\n            ) {\r\n                manager.activeItem._selectViaInteraction();\r\n            }\r\n        }\r\n    }\r\n\r\n    /** For overlay container keydown (ESC closes). */\r\n    protected _handleOverlayKeydown(event: KeyboardEvent): void {\r\n        if (event.keyCode === ESCAPE && !hasModifierKey(event)) {\r\n            event.preventDefault();\r\n            this.close();\r\n        }\r\n    }\r\n\r\n    // ───────────────────────────── Selection & value sync ─────────────────────────────\r\n\r\n    /** Assign value and synchronize selection from external model. */\r\n    private _assignValue(newValue: any | any[]): boolean {\r\n        if (newValue !== this._value || (this._multiple && Array.isArray(newValue))) {\r\n            if (this.options) {\r\n                this._setSelectionByValue(newValue);\r\n            }\r\n            this._value = newValue;\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /** Compute overlay width from host bounding box. */\r\n    private _getOverlayWidth(): string | number {\r\n        return this._elementRef.nativeElement.getBoundingClientRect().width;\r\n    }\r\n\r\n    /** Update selection based on a (possibly array) value. */\r\n    private _setSelectionByValue(value: any | any[]): void {\r\n        this.options.forEach((option) => option.setInactiveStyles());\r\n        this._selectionModel.clear();\r\n\r\n        if (this.multiple && value) {\r\n            if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\r\n                throw getMDSelectNonArrayValueError();\r\n            }\r\n            value.forEach((currentValue: any) => this._selectOptionByValue(currentValue));\r\n            this._sortValues();\r\n        } else {\r\n            const correspondingOption = this._selectOptionByValue(value);\r\n            if (correspondingOption) {\r\n                this._keyManager.updateActiveItem(correspondingOption);\r\n            } else if (!this.panelOpen) {\r\n                this._keyManager.updateActiveItem(-1);\r\n            }\r\n        }\r\n\r\n        this._changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    /** Find option that matches value (using compareWith) and select it. */\r\n    private _selectOptionByValue(value: any): MDOption | undefined {\r\n        const correspondingOption = this.options.find((option: MDOption) => {\r\n            if (this._selectionModel.isSelected(option)) return false;\r\n            try {\r\n                return (\r\n                    (option.value != null || this.canSelectNullableOptions) && this._compareWith(option.value, value)\r\n                );\r\n            } catch (error) {\r\n                if (typeof ngDevMode === 'undefined' || ngDevMode) console.warn(error);\r\n                return false;\r\n            }\r\n        });\r\n\r\n        if (correspondingOption) this._selectionModel.select(correspondingOption);\r\n        return correspondingOption;\r\n    }\r\n\r\n    /** Move focus to host (useful after closing). */\r\n    focus(options?: FocusOptions): void {\r\n        this._elementRef.nativeElement.focus(options);\r\n    }\r\n\r\n    /** Default container click behavior: focus + open. */\r\n    onContainerClick() {\r\n        this.focus();\r\n        this.open();\r\n    }\r\n\r\n    /** Initialize selection from bound form control or internal value. */\r\n    private _initializeSelection(): void {\r\n        Promise.resolve().then(() => {\r\n            if (this.ngControl) {\r\n                this._value = this.ngControl.value;\r\n            }\r\n            this._setSelectionByValue(this._value);\r\n            this.stateChanges.next();\r\n        });\r\n    }\r\n\r\n    /** Skip disabled options while panel is closed (for key manager). */\r\n    private _skipPredicate = (option: MDOption) => {\r\n        if (this.panelOpen) return false;\r\n        return option.disabled;\r\n    };\r\n\r\n    /** Ensure a given option index is fully visible inside the panel. */\r\n    _scrollOptionIntoView(index: number): void {\r\n        const option = this.options.toArray()[index];\r\n        if (!option) return;\r\n\r\n        const panel: HTMLElement = this.panel.nativeElement;\r\n        const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\r\n        const element = option._getHostElement();\r\n\r\n        if (index === 0 && labelCount === 1) {\r\n            panel.scrollTop = 0;\r\n        } else {\r\n            panel.scrollTop = _getOptionScrollPosition(\r\n                element.offsetTop,\r\n                element.offsetHeight,\r\n                panel.scrollTop,\r\n                panel.offsetHeight\r\n            );\r\n        }\r\n    }\r\n\r\n    /** Wire option streams and handle user-driven selection/changes. */\r\n    private _resetOptions(): void {\r\n        const changedOrDestroyed = merge(this.options.changes, this._destroy);\r\n\r\n        this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe((event) => {\r\n            this._onSelect(event.source, event.isUserInput);\r\n            if (event.isUserInput && !this.multiple && this._panelOpen) {\r\n                this.close();\r\n                this.focus();\r\n            }\r\n        });\r\n\r\n        merge(...this.options.map((option) => option._stateChanges))\r\n            .pipe(takeUntil(changedOrDestroyed))\r\n            .subscribe(() => {\r\n                this._changeDetectorRef.detectChanges();\r\n                this.stateChanges.next();\r\n            });\r\n    }\r\n\r\n    /** Handle a single option's (de)selection and propagate changes. */\r\n    private _onSelect(option: MDOption, isUserInput: boolean): void {\r\n        const wasSelected = this._selectionModel.isSelected(option);\r\n\r\n        if (option.value == null && !this._multiple) {\r\n            option.deselect();\r\n            this._selectionModel.clear();\r\n\r\n            if (this.value != null) {\r\n                this._propagateChanges(option.value);\r\n            }\r\n        } else {\r\n            if (wasSelected !== option.selected) {\r\n                option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);\r\n            }\r\n\r\n            if (isUserInput) {\r\n                this._keyManager.setActiveItem(option);\r\n            }\r\n\r\n            if (this.multiple) {\r\n                this._sortValues();\r\n                if (isUserInput) this.focus();\r\n            }\r\n        }\r\n\r\n        if (wasSelected !== this._selectionModel.isSelected(option)) {\r\n            this._propagateChanges();\r\n        }\r\n\r\n        this.stateChanges.next();\r\n    }\r\n\r\n    /** Sort selected values using custom comparator or DOM order. */\r\n    private _sortValues() {\r\n        if (!this.multiple) return;\r\n\r\n        const options = this.options.toArray();\r\n        this._selectionModel.sort((a, b) => {\r\n            return this.sortComparator ? this.sortComparator(a, b, options) : options.indexOf(a) - options.indexOf(b);\r\n        });\r\n        this.stateChanges.next();\r\n    }\r\n\r\n    /** Build `SelectChange` payload. */\r\n    private _getChangeEvent(value: any) {\r\n        return new SelectChange(this, value);\r\n    }\r\n\r\n    /** Emit valueChange, call CVA onChange, emit selectionChange, mark for check. */\r\n    private _propagateChanges(fallbackValue?: any): void {\r\n        let valueToEmit: any;\r\n\r\n        if (this.multiple) {\r\n            valueToEmit = (this.selected as MDOption[]).map((option) => option.value);\r\n        } else {\r\n            valueToEmit = this.selected ? (this.selected as MDOption).value : fallbackValue;\r\n        }\r\n\r\n        this._value = valueToEmit;\r\n        this.valueChange.emit(valueToEmit);\r\n        this._onChange(valueToEmit);\r\n        this.selectionChange.emit(this._getChangeEvent(valueToEmit));\r\n        this._changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    /** Initialize keyboard manager for navigation, typeahead, and tabOut. */\r\n    private _initKeyManager() {\r\n        this._keyManager = new ActiveDescendantKeyManager<MDOption>(this.options)\r\n            .withTypeAhead(200)\r\n            .withVerticalOrientation()\r\n            .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\r\n            .withHomeAndEnd()\r\n            .withPageUpDown()\r\n            .withAllowedModifierKeys(['shiftKey'])\r\n            .skipPredicate(this._skipPredicate);\r\n\r\n        this._keyManager.tabOut.subscribe(() => {\r\n            if (this.panelOpen) {\r\n                if (!this.multiple && this._keyManager.activeItem) {\r\n                    this._keyManager.activeItem._selectViaInteraction();\r\n                }\r\n                this.focus();\r\n                this.close();\r\n            }\r\n        });\r\n\r\n        this._keyManager.change.subscribe(() => {\r\n            if (this._panelOpen && this.panel) {\r\n                this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\r\n            } else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\r\n                this._keyManager.activeItem._selectViaInteraction();\r\n            }\r\n        });\r\n    }\r\n\r\n    /** `aria-activedescendant` points to the active option when panel is open. */\r\n    _getAriaActiveDescendant(): string | null {\r\n        if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\r\n            return this._keyManager.activeItem.id;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    /** Focus-in handler: set focused state (unless disabled). */\r\n    _onFocus() {\r\n        if (!this.disabled) {\r\n            this._focused = true;\r\n            this.stateChanges.next();\r\n        }\r\n    }\r\n\r\n    /** Focus-out handler: mark touched when closed; cancel typeahead. */\r\n    _onBlur() {\r\n        this._focused = false;\r\n        this._keyManager?.cancelTypeahead();\r\n\r\n        if (!this.disabled && !this.panelOpen) {\r\n            this._onTouched();\r\n            this._changeDetectorRef.markForCheck();\r\n            this.stateChanges.next();\r\n        }\r\n    }\r\n}\r\n\r\n/** Optional directive to project a custom trigger area for the select. */\r\n@Directive({\r\n    selector: 'md-select-trigger',\r\n    providers: [{ provide: MD_SELECT_TRIGGER, useExisting: MDSelectTrigger }],\r\n    standalone: true,\r\n})\r\nexport class MDSelectTrigger {}\r\n","<div cdk-overlay-origin\r\n     class=\"mdc-select-trigger\"\r\n     (click)=\"open()\"\r\n     #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\r\n     #trigger>\r\n\r\n  <div class=\"mdc-select-value\" [attr.id]=\"_valueId\">\r\n    @if (empty) {\r\n      <span class=\"mdc-select-placeholder mdc-select-min-line\">{{placeholder}}</span>\r\n    } @else {\r\n      <span class=\"mdc-select-value-text\">\r\n        @if (customTrigger) {\r\n          <ng-content select=\"md-select-trigger\"></ng-content>\r\n        } @else {\r\n          <span class=\"mdc-select-min-line\">{{triggerValue}}</span>\r\n        }\r\n      </span>\r\n    }\r\n  </div>\r\n\r\n  <div class=\"mdc-select-arrow-wrapper\">\r\n    <div class=\"mdc-select-arrow\">\r\n      <i class=\"icon-arrow-dropdown\"></i>\r\n    </div>\r\n  </div>\r\n</div>\r\n<ng-template\r\n    cdk-connected-overlay\r\n    cdkConnectedOverlayLockPosition\r\n    cdkConnectedOverlayHasBackdrop\r\n    cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n    [cdkConnectedOverlayDisableClose]=\"true\"\r\n    [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\r\n    [cdkConnectedOverlayOrigin]=\"fallbackOverlayOrigin\"\r\n    [cdkConnectedOverlayPositions]=\"_positions\"\r\n    [cdkConnectedOverlayWidth]=\"_overlayWidth\"\r\n    [cdkConnectedOverlayFlexibleDimensions]=\"true\"\r\n    (detach)=\"close()\"\r\n    (backdropClick)=\"close()\"\r\n    (overlayKeydown)=\"_handleOverlayKeydown($event)\"\r\n>\r\n  <div\r\n    #panel\r\n    role=\"listbox\"\r\n    tabindex=\"-1\"\r\n    class=\"mdc-select-panel mdc-menu-surface select-panel-animations-enabled mdc-menu-surface--open\"\r\n    [attr.id]=\"id + '-panel'\"\r\n    [attr.aria-multiselectable]=\"multiple\"\r\n    [attr.aria-label]=\"ariaLabel || null\"\r\n    [ngClass]=\"panelClass\"\r\n    (keydown)=\"_handleKeydown($event)\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n</ng-template>","import { _IdGenerator } from '@angular/cdk/a11y';\r\nimport {\r\n  booleanAttribute,\r\n  Component,\r\n  inject,\r\n  Input,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MDSelect } from './select';\r\n\r\n@Component({\r\n  selector: 'md-option-group',\r\n  encapsulation: ViewEncapsulation.None,\r\n  templateUrl: './option-group.html',\r\n  styleUrls: ['./option-group.scss'],\r\n  standalone: true,\r\n  host: {\r\n    class: 'mdc-optgroup',\r\n  },\r\n})\r\n/**\r\n * Groups related `<md-option>` items under a labeled header.\r\n *\r\n * @remarks\r\n * - When `disabled` is `true`, the entire group is rendered inert.\r\n * - The generated label id is exposed as {@link _labelId} for a11y wiring.\r\n *\r\n * @example\r\n * ```html\r\n * <md-option-group label=\"Fruits\">\r\n *   <md-option value=\"ap\">Apple</md-option>\r\n *   <md-option value=\"ba\">Banana</md-option>\r\n * </md-option-group>\r\n * ```\r\n */\r\nexport class MDOptionGroup {\r\n  /** Visible group header shown above the contained options. */\r\n  @Input() label: string;\r\n\r\n  /**\r\n   * Disables the entire group (non-interactive/inert rendering).\r\n   * @default false\r\n   */\r\n  @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n  /**\r\n   * Unique id used to associate the rendered label with the grouped options for a11y.\r\n   * Useful as `aria-labelledby` target on the options container.\r\n   */\r\n  _labelId: string = inject(_IdGenerator).getId('optgroup-label-');\r\n\r\n  /**\r\n   * Internal flag for templates to make the group non-interactive without altering ARIA.\r\n   * Can be toggled by the parent template if additional gating is needed.\r\n   * @internal\r\n   */\r\n  _inert: boolean;\r\n\r\n  /**\r\n   * Optional reference to the parent select; useful for contextual checks in the template.\r\n   * Kept for side-effects/context only; not required for basic grouping behavior.\r\n   */\r\n  constructor() {\r\n    const parent = inject<MDSelect>(MDSelect, { optional: true });\r\n  }\r\n}\r\n","<span\r\n  class=\"mdc-optgroup-label\"\r\n  role=\"presentation\"\r\n  [class.mdc-list-item--disabled]=\"disabled\"\r\n  [id]=\"_labelId\">\r\n  <span class=\"mdc-list-item__primary-text\">{{ label }} <ng-content></ng-content></span>\r\n</span>\r\n\r\n<ng-content select=\"md-option, ng-container\"></ng-content>","import {BidiModule} from '@angular/cdk/bidi';\r\nimport {NgModule} from '@angular/core';\r\nimport {PseudoCheckbox} from './pseudo-checkbox';\r\n\r\n@NgModule({\r\n  imports: [PseudoCheckbox],\r\n  exports: [PseudoCheckbox, BidiModule],\r\n})\r\nexport class MDPseudoCheckboxModule {}","import {BidiModule} from '@angular/cdk/bidi';\r\nimport {NgModule} from '@angular/core';\r\nimport {MDOption} from './option';\r\nimport { MDPseudoCheckboxModule } from './pseudo-checkbox-module';\r\nimport { MDOptionGroup } from './option-group';\r\n\r\n@NgModule({\r\n  imports: [MDPseudoCheckboxModule, MDOption, MDOptionGroup],\r\n  exports: [MDOption, MDOptionGroup, BidiModule],\r\n})\r\nexport class MDOptionModule {}","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MDSelect, MDSelectTrigger } from './select';\r\nimport { MDOption } from './option';\r\nimport { MDOptionGroup } from './option-group';\r\nimport { PseudoCheckbox } from './pseudo-checkbox';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, FormsModule, OverlayModule, MDOption, MDOptionGroup, MDSelect, MDSelectTrigger, PseudoCheckbox],\r\n    exports: [MDOption, MDOptionGroup, MDSelect, MDSelectTrigger],\r\n})\r\nexport class MDSelectModule {}\r\n","import {\r\n  booleanAttribute,\r\n  ChangeDetectorRef,\r\n  computed,\r\n  Directive,\r\n  inject,\r\n  input,\r\n  signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\n@Directive({ standalone: true })\r\n/**\r\n * Base class for editable form-like components using Angular Signals and CVA.\r\n *\r\n * @remarks\r\n * - Implements `ControlValueAccessor` so children participate in Angular Forms.\r\n * - Exposes a signal-based `modelValue` and signalized inputs for UI state.\r\n * - Provides helpers for disabled-state handling and change detection.\r\n *\r\n * @example\r\n * ```ts\r\n * @Component({...})\r\n * export class MyToggle extends BaseEditableHolder {\r\n *   // call this.writeModelValue(newValue) on user action\r\n *   // and this.onModelChange(this.modelValue()) to propagate to the form.\r\n * }\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class BaseEditableHolder implements ControlValueAccessor {\r\n  /** Change detector used by children to mark for check after updates. */\r\n  cd = inject(ChangeDetectorRef);\r\n\r\n  /**\r\n   * Reactive internal value for the control (Signal).\r\n   * @default undefined\r\n   */\r\n  modelValue = signal<string | string[] | any | undefined>(undefined);\r\n\r\n  /**\r\n   * Optional \"required\" flag as a signalized input.\r\n   * @remarks Value is transformed via `booleanAttribute`.\r\n   */\r\n  required = input(undefined, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Optional \"invalid\" flag as a signalized input (used for UI state).\r\n   * @remarks Value is transformed via `booleanAttribute`.\r\n   */\r\n  invalid = input(undefined, { transform: booleanAttribute });\r\n\r\n  /**\r\n   * Disabled input as a signal (explicit/external).\r\n   * @remarks Value is transformed via `booleanAttribute`.\r\n   */\r\n  disabled = input(undefined, { transform: booleanAttribute });\r\n\r\n  /** Optional control name (useful for forms & a11y attributes). */\r\n  name = input<string | undefined>();\r\n\r\n  /**\r\n   * Internal disabled state set via CVA's `setDisabledState`.\r\n   * @default false\r\n   * @internal\r\n   */\r\n  _disabled = signal<boolean>(false);\r\n\r\n  /**\r\n   * Effective disabled state:\r\n   * `true` if either the input `disabled()` is truthy OR `setDisabledState(true)` was called.\r\n   */\r\n  $disabled = computed(() => {\r\n    return this.disabled() || this._disabled();\r\n  });\r\n\r\n  /** CVA onChange callback (assigned by Angular Forms). */\r\n  onModelChange: Function = () => {};\r\n\r\n  /** CVA onTouched callback (assigned by Angular Forms). */\r\n  onModelTouched: Function = () => {};\r\n\r\n  /**\r\n   * Programmatically set the internal disabled state (used by `setDisabledState`).\r\n   * @param value New disabled state.\r\n   */\r\n  writeDisabledState(value: boolean) {\r\n    this._disabled.set(value);\r\n  }\r\n\r\n  /**\r\n   * Overridable hook invoked by `writeValue`.\r\n   * Child components can coerce or transform incoming values here.\r\n   * Call `setModelValue(value)` to persist.\r\n   *\r\n   * @param value Incoming value from the external model.\r\n   * @param setModelValue Callback to update the internal `modelValue`.\r\n   * @protected\r\n   */\r\n  protected writeControlValue(value: any, setModelValue?: (value: any) => void) {}\r\n\r\n  /**\r\n   * CVA: writes an external value into the control.\r\n   * Delegates to {@link writeControlValue} so children can customize behavior.\r\n   *\r\n   * @param value Value coming from the Angular Forms model.\r\n   */\r\n  writeValue(value: any) {\r\n    this.writeControlValue(value, this.writeModelValue.bind(this));\r\n  }\r\n\r\n  /**\r\n   * Updates the internal value signal (`modelValue`) from the component itself\r\n   * (e.g., on user input). This does **not** notify the Forms API by itself.\r\n   * Invoke {@link onModelChange} after this to propagate when appropriate.\r\n   *\r\n   * @param value New internal value to set.\r\n   */\r\n  writeModelValue(value: any) {\r\n    this.modelValue.set(value);\r\n  }\r\n\r\n  /**\r\n   * CVA: registers the callback to propagate value changes to Angular Forms.\r\n   * @param fn Callback invoked when the control's value changes.\r\n   */\r\n  registerOnChange(fn: Function) {\r\n    this.onModelChange = fn;\r\n  }\r\n\r\n  /**\r\n   * CVA: registers the callback to mark the control as touched.\r\n   * @param fn Callback invoked when the control is touched.\r\n   */\r\n  registerOnTouched(fn: Function) {\r\n    this.onModelTouched = fn;\r\n  }\r\n\r\n  /**\r\n   * CVA: enables/disables the control from the Forms API.\r\n   * @param val `true` to disable, `false` to enable.\r\n   */\r\n  setDisabledState(val: boolean) {\r\n    this.writeDisabledState(val);\r\n    this.cd.markForCheck();\r\n  }\r\n}\r\n","import {\r\n  forwardRef,\r\n  Component,\r\n  Input,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n  Output,\r\n  OnDestroy,\r\n  inject,\r\n  HostListener,\r\n  booleanAttribute,\r\n  EventEmitter,\r\n  ViewChild,\r\n  ElementRef,\r\n  numberAttribute,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _IdGenerator } from '@angular/cdk/a11y';\r\nimport { BaseEditableHolder } from './base-editor-helper';\r\n\r\n@Component({\r\n  selector: 'md-switch',\r\n  templateUrl: './switch.component.html',\r\n  styleUrls: ['./switch.component.scss'],\r\n  standalone: false,\r\n  encapsulation: ViewEncapsulation.None,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MDSwitch),\r\n      multi: true,\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: MDSwitch,\r\n      multi: true,\r\n    },\r\n  ],\r\n  host: {\r\n    '[class.toggleswitch-checked]': 'checked()',\r\n    '[class.disabled]': '$disabled()',\r\n    '[class.invalid]': 'invalid()',\r\n  },\r\n})\r\n/**\r\n * Toggle switch compatible with Angular Forms.\r\n *\r\n * @remarks\r\n * - Implements `ControlValueAccessor` (works with Reactive Forms and `ngModel`).\r\n * - Emits {@link MDSwitch.onChange | onChange} only for **user-driven** interactions.\r\n *   For programmatic updates, rely on `ngModelChange` or form `valueChanges`.\r\n *\r\n * @example\r\n * ```html\r\n * <md-switch [(ngModel)]=\"enabled\" (onChange)=\"log($event)\"></md-switch>\r\n * ```\r\n *\r\n * @public\r\n * @fires MDSwitch#onChange\r\n */\r\nexport class MDSwitch extends BaseEditableHolder implements OnInit, OnDestroy, ControlValueAccessor {\r\n  /**\r\n   * Backing unique id used as a default for {@link id}.\r\n   * @internal\r\n   */\r\n  private _uniqueId: string;\r\n\r\n  /**\r\n   * Host element id. Can be overridden by the consumer.\r\n   * @default auto-generated value like `\"slide-toggle-...\"`\r\n   */\r\n  @Input() id: string;\r\n\r\n  /**\r\n   * Keyboard tab order for the internal input.\r\n   * @remarks Value is transformed via `numberAttribute`.\r\n   */\r\n  @Input({ transform: numberAttribute }) tabindex: number | undefined;\r\n\r\n  /**\r\n   * Read-only mode: prevents user interaction while still allowing focus.\r\n   * @remarks Value is transformed via `booleanAttribute`.\r\n   */\r\n  @Input({ transform: booleanAttribute }) readonly: boolean | undefined;\r\n\r\n  /**\r\n   * Host click handler.\r\n   *\r\n   * @param event Browser `MouseEvent`.\r\n   * @remarks Delegates to {@link _handleClick}.\r\n   * @internal\r\n   */\r\n  @HostListener('click', ['$event'])\r\n  onHostClick(event: MouseEvent) {\r\n    this._handleClick(event);\r\n  }\r\n\r\n  /**\r\n   * Emits when the user toggles the switch via UI interaction.\r\n   *\r\n   * @example\r\n   * ```html\r\n   * <md-switch (onChange)=\"handleChange($event)\"></md-switch>\r\n   * ```\r\n   */\r\n  @Output() onChange: EventEmitter<ToggleSwitchChangeEvent> = new EventEmitter<ToggleSwitchChangeEvent>();\r\n\r\n  /**\r\n   * Template reference to the internal input element (for focus management).\r\n   * @internal\r\n   */\r\n  @ViewChild('input') input!: ElementRef;\r\n\r\n  /**\r\n   * Focus ring helper for template/styles.\r\n   * @internal\r\n   */\r\n  focused: boolean = false;\r\n\r\n  constructor() {\r\n    super();\r\n    this.id = this._uniqueId = inject(_IdGenerator).getId('slide-toggle-');\r\n  }\r\n\r\n  /** Lifecycle: initialization (reserved for future use). */\r\n  ngOnInit(): void {}\r\n\r\n  /**\r\n   * Synchronous validator hook (provided via `NG_VALIDATORS`).\r\n   * @remarks Currently a stub.\r\n   */\r\n  validate() {}\r\n\r\n  /** Lifecycle: teardown (reserved for future use). */\r\n  ngOnDestroy(): void {}\r\n\r\n  /**\r\n   * ControlValueAccessor: write an external value into the component.\r\n   *\r\n   * @param value Value coming from the form model.\r\n   * @param setModelValue Callback to update the base class model value.\r\n   * @remarks Calls `markForCheck` to ensure change detection runs.\r\n   */\r\n  override writeControlValue(value: any, setModelValue: (value: any) => void): void {\r\n    setModelValue(value);\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  /** Focus-in handler (called from the template). */\r\n  onFocus() {\r\n    this.focused = true;\r\n  }\r\n\r\n  /**\r\n   * Focus-out handler (called from the template).\r\n   * @remarks Triggers `onModelTouched()` for forms.\r\n   */\r\n  onBlur() {\r\n    this.focused = false;\r\n    this.onModelTouched();\r\n  }\r\n\r\n  /**\r\n   * Centralized click logic:\r\n   * - toggles the model via `BaseEditableHolder`;\r\n   * - calls `onModelChange()` for the form;\r\n   * - emits {@link onChange} with details;\r\n   * - returns focus to the input for accessible keyboard flow.\r\n   *\r\n   * @param event Original browser `Event`.\r\n   * @internal\r\n   */\r\n  _handleClick(event: Event) {\r\n    if (!this.$disabled() && !this.readonly) {\r\n      this.writeModelValue(!this.modelValue());\r\n      this.onModelChange(this.modelValue());\r\n      this.onChange.emit({\r\n        originalEvent: event,\r\n        checked: this.modelValue(),\r\n      });\r\n\r\n      this.input.nativeElement.focus();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Convenience getter for host class binding.\r\n   * @returns Current checked state.\r\n   */\r\n  checked() {\r\n    return this.modelValue();\r\n  }\r\n}\r\n\r\n/**\r\n * Event emitted by {@link MDSwitch} on user-initiated change.\r\n */\r\nexport interface ToggleSwitchChangeEvent {\r\n  /** Original browser event. */\r\n  originalEvent: Event;\r\n  /** New checked state. */\r\n  checked: boolean;\r\n}\r\n","<input\r\n    #input\r\n    class=\"toggleswitch-input\"\r\n    [checked]=\"checked()\"\r\n    type=\"checkbox\"\r\n    role=\"switch\"\r\n    [attr.required]=\"required() ? '' : undefined\"\r\n    [attr.disabled]=\"$disabled() ? '' : undefined\"\r\n    [attr.aria-checked]=\"checked()\"\r\n    (focus)=\"onFocus()\"\r\n    (blur)=\"onBlur()\"\r\n/>\r\n<div class=\"toggleswitch-slider\">\r\n    <div class=\"toggleswitch-handle\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MDSwitch } from './switch.component';\r\n\r\n@NgModule({\r\n  exports: [MDSwitch],\r\n  declarations: [MDSwitch],\r\n  imports: [CommonModule],\r\n})\r\nexport class MDSwitchModule {}\r\n","import { FocusKeyManager, FocusableOption } from '@angular/cdk/a11y';\r\nimport { Direction, Directionality } from '@angular/cdk/bidi';\r\nimport { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { ViewportRuler } from '@angular/cdk/scrolling';\r\nimport {\r\n  AfterContentChecked,\r\n  AfterContentInit,\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Injector,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  Output,\r\n  QueryList,\r\n  Renderer2,\r\n  afterNextRender,\r\n  booleanAttribute,\r\n  inject,\r\n  numberAttribute,\r\n} from '@angular/core';\r\nimport { EMPTY, Observable, Observer, Subject, merge, of as observableOf, timer } from 'rxjs';\r\nimport { debounceTime, filter, skip, startWith, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\nconst passiveEventListenerOptions = { passive: true };\r\n\r\n/** Direction to scroll the header when paginating. */\r\nexport type ScrollDirection = 'after' | 'before';\r\n\r\n/** Delay (ms) before auto-scrolling kicks in on press-and-hold. */\r\nconst HEADER_SCROLL_DELAY = 650;\r\n/** Interval (ms) for repeated scrolling while holding the paginator. */\r\nconst HEADER_SCROLL_INTERVAL = 100;\r\n\r\n/**\r\n * Contract for focusable tab header items used by the header.\r\n * Must expose an `elementRef` for measurement/positioning.\r\n */\r\nexport type PaginatedTabHeaderItem = FocusableOption & { elementRef: ElementRef };\r\n\r\n@Directive()\r\n/**\r\n * Base class for a horizontally scrollable (paginated) tab header.\r\n *\r\n * @remarks\r\n * - Manages keyboard navigation via `FocusKeyManager` (arrows/home/end).\r\n * - Handles ink bar alignment and scroll-to-visible for the selected tab.\r\n * - Supports RTL/LTR layouts and responsive resizing.\r\n *\r\n * Subclasses provide concrete template references (tab list elements, paginators, items)\r\n * and implement `_itemSelected` to act on keyboard selection (Enter/Space).\r\n *\r\n * @example Handling keyboard selection in a subclass\r\n * ```ts\r\n * protected _itemSelected(event: KeyboardEvent) {\r\n *   this.selectFocusedIndex.emit(this.focusIndex);\r\n * }\r\n * ```\r\n */\r\nexport abstract class PaginatedTabHeader\r\n  implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy\r\n{\r\n  /** Root host element (the header wrapper). */\r\n  protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  /** For OnPush marking when values change. */\r\n  protected _changeDetectorRef = inject(ChangeDetectorRef);\r\n  /** Viewport ruler for resize/scrollbar metrics. */\r\n  private _viewportRuler = inject(ViewportRuler);\r\n  /** Optional RTL service to flip layout. */\r\n  private _dir = inject(Directionality, { optional: true });\r\n  /** For running timers/listeners outside Angular. */\r\n  private _ngZone = inject(NgZone);\r\n  /** Platform detection (legacy engines). */\r\n  private _platform = inject(Platform);\r\n  /** Efficient ResizeObserver sharing. */\r\n  private _sharedResizeObserver = inject(SharedResizeObserver);\r\n  /** Injector for `afterNextRender` scheduling. */\r\n  private _injector = inject(Injector);\r\n  /** Renderer for native event listeners & styles. */\r\n  private _renderer = inject(Renderer2);\r\n\r\n  /** Cleanup callbacks for host-level listeners. */\r\n  private _eventCleanups: (() => void)[];\r\n\r\n  // ---- Abstract element/item references provided by subclasses ----\r\n\r\n  /** List of focusable items (tab labels). */\r\n  abstract _items: QueryList<PaginatedTabHeaderItem>;\r\n  /** Ink bar API for alignment/hide. */\r\n  abstract _inkBar: { hide: () => void; alignToElement: (element: HTMLElement) => void };\r\n  /** Container that clips the scrollable tab list. */\r\n  abstract _tabListContainer: ElementRef<HTMLElement>;\r\n  /** The horizontally translated list element. */\r\n  abstract _tabList: ElementRef<HTMLElement>;\r\n  /** Inner list wrapper used for measurements. */\r\n  abstract _tabListInner: ElementRef<HTMLElement>;\r\n  /** Next paginator button element. */\r\n  abstract _nextPaginator: ElementRef<HTMLElement>;\r\n  /** Previous paginator button element. */\r\n  abstract _previousPaginator: ElementRef<HTMLElement>;\r\n\r\n  // ---- State ----\r\n\r\n  /** Current horizontal scroll translation in px (LTR positive moves content left). */\r\n  private _scrollDistance = 0;\r\n  /** Flag to know when selectedIndex changed between content checks. */\r\n  private _selectedIndexChanged = false;\r\n  /** Teardown notifier for streams. */\r\n  protected readonly _destroyed = new Subject<void>();\r\n  /** Whether to render/show pagination controls. */\r\n  _showPaginationControls = false;\r\n  /** Disable \"scroll after\" paginator. */\r\n  _disableScrollAfter = true;\r\n  /** Disable \"scroll before\" paginator. */\r\n  _disableScrollBefore = true;\r\n  /** Cached count of tab labels to detect additions/removals. */\r\n  private _tabLabelCount: number;\r\n  /** Marker to apply pending scroll distance change to DOM. */\r\n  private _scrollDistanceChanged: boolean;\r\n  /** Keyboard manager for roving focus. */\r\n  protected _keyManager: FocusKeyManager<PaginatedTabHeaderItem> | undefined;\r\n  /** Used to detect text-content changes affecting layout. */\r\n  private _currentTextContent: string;\r\n  /** Emits when auto-scrolling should stop (mouseleave or end). */\r\n  private _stopScrolling = new Subject<void>();\r\n\r\n  // ---- Inputs/Outputs ----\r\n\r\n  @Input() hideInkBar: boolean;\r\n  /**\r\n   * Disable pagination and force-fit all tabs (no scroll).\r\n   * @default false\r\n   */\r\n  @Input({ transform: booleanAttribute })\r\n  disablePagination: boolean = false;\r\n\r\n  /**\r\n   * Currently selected tab index (drives ink bar & scroll-to-visible).\r\n   */\r\n  @Input({ transform: numberAttribute })\r\n  get selectedIndex(): number {\r\n    return this._selectedIndex;\r\n  }\r\n  set selectedIndex(v: number) {\r\n    const value = isNaN(v) ? 0 : v;\r\n    if (this._selectedIndex != value) {\r\n      this._selectedIndexChanged = true;\r\n      this._selectedIndex = value;\r\n      if (this._keyManager) {\r\n        this._keyManager.updateActiveItem(value);\r\n      }\r\n    }\r\n  }\r\n  private _selectedIndex: number = 0;\r\n\r\n  /**\r\n   * Emits requested selection when user presses Enter/Space on a focused tab.\r\n   * Consumers typically update `selectedIndex` in response.\r\n   */\r\n  @Output() readonly selectFocusedIndex: EventEmitter<number> = new EventEmitter<number>();\r\n  /** Emits when focus moves to a different tab header item. */\r\n  @Output() readonly indexFocused: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  constructor() {\r\n    // Host-level listeners registered outside Angular for performance.\r\n    this._eventCleanups = this._ngZone.runOutsideAngular(() => [\r\n      this._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this._stopInterval()),\r\n    ]);\r\n  }\r\n\r\n  /**\r\n   * Subclass must implement: what happens when user \"selects\"\r\n   * the focused item via keyboard (Enter/Space).\r\n   */\r\n  protected abstract _itemSelected(event: KeyboardEvent): void;\r\n\r\n  /** Lifecycle: attach touch handlers for press-and-hold scrolling. */\r\n  ngAfterViewInit() {\r\n    this._eventCleanups.push(\r\n      this._renderer.listen(\r\n        this._previousPaginator.nativeElement,\r\n        'touchstart',\r\n        () => this._handlePaginatorPress('before'),\r\n        passiveEventListenerOptions\r\n      ),\r\n      this._renderer.listen(\r\n        this._nextPaginator.nativeElement,\r\n        'touchstart',\r\n        () => this._handlePaginatorPress('after'),\r\n        passiveEventListenerOptions\r\n      )\r\n    );\r\n  }\r\n\r\n  /** Lifecycle: set up keyboard manager, observers and initial alignment. */\r\n  ngAfterContentInit() {\r\n    const dirChange = this._dir ? this._dir.change : observableOf('ltr');\r\n    const resize = this._sharedResizeObserver\r\n      .observe(this._elementRef.nativeElement)\r\n      .pipe(debounceTime(32), takeUntil(this._destroyed));\r\n    const realign = (scrollSelectedIntoView = false) => {\r\n      this._checkPaginationEnabled();\r\n\r\n      if (scrollSelectedIntoView) {\r\n        this._scrollToLabel(this.selectedIndex);\r\n      }\r\n\r\n      this._checkScrollingControls();\r\n      this._updateTabScrollPosition();\r\n      this._alignInkBarToSelectedTab();\r\n    };\r\n\r\n    this._keyManager = new FocusKeyManager<PaginatedTabHeaderItem>(this._items)\r\n      .withHorizontalOrientation(this._getLayoutDirection())\r\n      .withHomeAndEnd()\r\n      .withWrap()\r\n      .skipPredicate(() => false);\r\n\r\n    this._keyManager.updateActiveItem(Math.max(this._selectedIndex, 0));\r\n    afterNextRender(() => realign(true), { injector: this._injector });\r\n\r\n    merge(dirChange, resize, this._items.changes, this._itemsResized())\r\n      .pipe(takeUntil(this._destroyed))\r\n      .subscribe(() => {\r\n        this._ngZone.run(() => {\r\n          // Defer to allow DOM to settle (e.g., fonts, labels).\r\n          Promise.resolve().then(() => {\r\n            this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), this._scrollDistance));\r\n            realign(true);\r\n          });\r\n        });\r\n        this._keyManager?.withHorizontalOrientation(this._getLayoutDirection());\r\n      });\r\n\r\n    this._keyManager.change.subscribe((newFocusIndex) => {\r\n      this.indexFocused.emit(newFocusIndex);\r\n      this._setTabFocus(newFocusIndex);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Observe when any header item has (re)measured to a non-zero size.\r\n   * Helps re-evaluate pagination after lazy content/label changes.\r\n   */\r\n  private _itemsResized(): Observable<ResizeObserverEntry[]> {\r\n    if (typeof ResizeObserver !== 'function') {\r\n      return EMPTY;\r\n    }\r\n    return this._items.changes.pipe(\r\n      startWith(this._items),\r\n      switchMap(\r\n        (tabItems: QueryList<PaginatedTabHeaderItem>) =>\r\n          new Observable((observer: Observer<ResizeObserverEntry[]>) =>\r\n            this._ngZone.runOutsideAngular(() => {\r\n              const resizeObserver = new ResizeObserver((entries) => observer.next(entries));\r\n              tabItems.forEach((item) => resizeObserver.observe(item.elementRef.nativeElement));\r\n              return () => resizeObserver.disconnect();\r\n            })\r\n          )\r\n      ),\r\n      // Ignore the initial synchronous fire to avoid redundant realign.\r\n      skip(1),\r\n      filter((entries) => entries.some((e) => e.contentRect.width > 0 && e.contentRect.height > 0))\r\n    );\r\n  }\r\n\r\n  /** Lifecycle: react to item count/selection/scroll changes and flush DOM updates. */\r\n  ngAfterContentChecked(): void {\r\n    if (this._tabLabelCount != this._items.length) {\r\n      this.updatePagination();\r\n      this._tabLabelCount = this._items.length;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n    if (this._selectedIndexChanged) {\r\n      this._scrollToLabel(this._selectedIndex);\r\n      this._checkScrollingControls();\r\n      this._alignInkBarToSelectedTab();\r\n      this._selectedIndexChanged = false;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n    if (this._scrollDistanceChanged) {\r\n      this._updateTabScrollPosition();\r\n      this._scrollDistanceChanged = false;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n\r\n  /** Lifecycle: teardown listeners/streams. */\r\n  ngOnDestroy() {\r\n    this._eventCleanups.forEach((cleanup) => cleanup());\r\n    this._keyManager?.destroy();\r\n    this._destroyed.next();\r\n    this._destroyed.complete();\r\n    this._stopScrolling.complete();\r\n  }\r\n\r\n  /**\r\n   * Handle keydown on the header container.\r\n   * Space/Enter select the focused tab; arrows/home/end are delegated to the key manager.\r\n   */\r\n  _handleKeydown(event: KeyboardEvent) {\r\n    if (hasModifierKey(event)) {\r\n      return;\r\n    }\r\n    switch (event.keyCode) {\r\n      case ENTER:\r\n      case SPACE:\r\n        if (this.focusIndex !== this.selectedIndex) {\r\n          const item = this._items.get(this.focusIndex);\r\n          if (item && !item.disabled) {\r\n            this.selectFocusedIndex.emit(this.focusIndex);\r\n            this._itemSelected(event);\r\n          }\r\n        }\r\n        break;\r\n      default:\r\n        this._keyManager?.onKeydown(event);\r\n    }\r\n  }\r\n\r\n  /** Called when projected content text changes may affect layout/widths. */\r\n  _onContentChanges() {\r\n    const textContent = this._elementRef.nativeElement.textContent;\r\n    if (textContent !== this._currentTextContent) {\r\n      this._currentTextContent = textContent || '';\r\n      this._ngZone.run(() => {\r\n        this.updatePagination();\r\n        this._alignInkBarToSelectedTab();\r\n        this._changeDetectorRef.markForCheck();\r\n      });\r\n    }\r\n  }\r\n\r\n  /** Recompute pagination state and apply current scroll position. */\r\n  updatePagination() {\r\n    this._checkPaginationEnabled();\r\n    this._checkScrollingControls();\r\n    this._updateTabScrollPosition();\r\n  }\r\n\r\n  /** Index of the currently focused item in the key manager. */\r\n  get focusIndex(): number {\r\n    return this._keyManager ? this._keyManager.activeItemIndex! : 0;\r\n  }\r\n  set focusIndex(value: number) {\r\n    if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\r\n      return;\r\n    }\r\n    this._keyManager.setActiveItem(value);\r\n  }\r\n\r\n  /** Returns whether the given index is valid for the items list. */\r\n  _isValidIndex(index: number): boolean {\r\n    return this._items ? !!this._items.toArray()[index] : true;\r\n  }\r\n\r\n  /**\r\n   * Moves focus to a given tab and ensures it is visible within the scroll container.\r\n   * Also snaps container scroll to an edge (LTR/RTL) to avoid native scroll drift.\r\n   */\r\n  _setTabFocus(tabIndex: number) {\r\n    if (this._showPaginationControls) {\r\n      this._scrollToLabel(tabIndex);\r\n    }\r\n    if (this._items && this._items.length) {\r\n      this._items.toArray()[tabIndex].focus();\r\n      const containerEl = this._tabListContainer.nativeElement;\r\n      const dir = this._getLayoutDirection();\r\n      if (dir == 'ltr') {\r\n        containerEl.scrollLeft = 0;\r\n      } else {\r\n        containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\r\n      }\r\n    }\r\n  }\r\n\r\n  /** Current layout direction derived from `Directionality`. */\r\n  _getLayoutDirection(): Direction {\r\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\r\n  }\r\n\r\n  /** Applies the current scroll transform to the tab list element. */\r\n  _updateTabScrollPosition() {\r\n    if (this.disablePagination) {\r\n      return;\r\n    }\r\n    const scrollDistance = this.scrollDistance;\r\n    const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\r\n    this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\r\n    // Legacy engines required to reset container scroll to avoid jitter.\r\n    if (this._platform.TRIDENT || this._platform.EDGE) {\r\n      this._tabListContainer.nativeElement.scrollLeft = 0;\r\n    }\r\n  }\r\n\r\n  /** Current scroll distance (px). Setting it clamps to valid range and flags for DOM update. */\r\n  get scrollDistance(): number {\r\n    return this._scrollDistance;\r\n  }\r\n  set scrollDistance(value: number) {\r\n    this._scrollTo(value);\r\n  }\r\n\r\n  /** Scrolls the header to the start of the next/previous item where possible. */\r\n  _scrollHeader(direction: ScrollDirection) {\r\n    const visibleRange = this._getVisibleRange();\r\n    const itemRanges = this._getItemRanges();\r\n    const target =\r\n      direction === 'before'\r\n        ? this._findPreviousItemRange(itemRanges, visibleRange.start)\r\n        : this._findNextItemRange(itemRanges, visibleRange.start);\r\n\r\n    if (!target) {\r\n      return this._scrollTo(direction === 'before' ? 0 : this._getMaxScrollDistance());\r\n    }\r\n\r\n    return this._scrollTo(target.start);\r\n  }\r\n\r\n  /** Single-click paginator handler. */\r\n  _handlePaginatorClick(direction: ScrollDirection) {\r\n    this._stopInterval();\r\n    this._scrollHeader(direction);\r\n  }\r\n\r\n  /**\r\n   * Ensures the tab at `labelIndex` is fully visible within the scroll range.\r\n   * Adjusts `scrollDistance` as needed based on LTR/RTL calculations.\r\n   */\r\n  _scrollToLabel(labelIndex: number) {\r\n    if (this.disablePagination) {\r\n      return;\r\n    }\r\n    const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;\r\n    if (!selectedLabel) {\r\n      return;\r\n    }\r\n    const selectedRange = this._getItemRanges()[labelIndex];\r\n\r\n    if (selectedRange) {\r\n      this.scrollDistance = selectedRange.start;\r\n    }\r\n  }\r\n\r\n  private _getVisibleRange(): { start: number; end: number } {\r\n    const start = this._scrollDistance;\r\n\r\n    return {\r\n      start,\r\n      end: start + this._tabListContainer.nativeElement.offsetWidth,\r\n    };\r\n  }\r\n\r\n  private _getItemRanges(): { index: number; start: number; end: number; width: number }[] {\r\n    const listWidth = this._tabListInner.nativeElement.offsetWidth;\r\n\r\n    return (this._items?.toArray() ?? []).map((item, index) => {\r\n      const element = item.elementRef.nativeElement;\r\n      const width = element.offsetWidth;\r\n      const start = this._getLayoutDirection() === 'ltr' ? element.offsetLeft : listWidth - element.offsetLeft - width;\r\n\r\n      return {\r\n        index,\r\n        start,\r\n        end: start + width,\r\n        width,\r\n      };\r\n    });\r\n  }\r\n\r\n  private _findPreviousItemRange(\r\n    ranges: { start: number; end: number; width: number }[],\r\n    visibleStart: number\r\n  ): { start: number; end: number; width: number } | null {\r\n    for (let i = ranges.length - 1; i >= 0; i--) {\r\n      if (ranges[i].start < visibleStart - 1) {\r\n        return ranges[i];\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  private _findNextItemRange(\r\n    ranges: { start: number; end: number; width: number }[],\r\n    visibleStart: number\r\n  ): { start: number; end: number; width: number } | null {\r\n    for (let i = 0; i < ranges.length; i++) {\r\n      if (ranges[i].start > visibleStart + 1) {\r\n        return ranges[i];\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  /** Evaluates whether pagination controls should be shown based on content width. */\r\n  _checkPaginationEnabled() {\r\n    if (this.disablePagination) {\r\n      this._showPaginationControls = false;\r\n    } else {\r\n      const scrollWidth = this._tabListInner.nativeElement.scrollWidth;\r\n      const containerWidth = this._elementRef.nativeElement.offsetWidth;\r\n      const isEnabled = scrollWidth - containerWidth >= 5;\r\n      if (!isEnabled) {\r\n        this.scrollDistance = 0;\r\n      }\r\n      if (isEnabled !== this._showPaginationControls) {\r\n        this._showPaginationControls = isEnabled;\r\n        this._changeDetectorRef.markForCheck();\r\n      }\r\n    }\r\n  }\r\n\r\n  /** Enables/disables paginator buttons based on current scroll position. */\r\n  _checkScrollingControls() {\r\n    if (this.disablePagination) {\r\n      this._disableScrollAfter = this._disableScrollBefore = true;\r\n    } else {\r\n      const maxScrollDistance = this._getMaxScrollDistance();\r\n      this._disableScrollBefore = this.scrollDistance <= 1;\r\n      this._disableScrollAfter = this.scrollDistance >= maxScrollDistance - 1;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n\r\n  /** Maximum scrollable distance of the tab list (px). */\r\n  _getMaxScrollDistance(): number {\r\n    const lengthOfTabList = this._tabListInner.nativeElement.scrollWidth;\r\n    const viewLength = this._tabListContainer.nativeElement.offsetWidth;\r\n    return Math.max(0, lengthOfTabList - viewLength);\r\n  }\r\n\r\n  /** Aligns the ink bar to the selected tab or hides it if no selection. */\r\n  _alignInkBarToSelectedTab(): void {\r\n    if(this.hideInkBar) return;\r\n    const selectedItem = this._items && this._items.length ? this._items.toArray()[this.selectedIndex] : null;\r\n    const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;\r\n    if (selectedLabelWrapper) {\r\n      this._inkBar.alignToElement(selectedLabelWrapper);\r\n    } else {\r\n      this._inkBar.hide();\r\n    }\r\n  }\r\n\r\n  /** Stops any ongoing auto-scroll interval. */\r\n  _stopInterval() {\r\n    this._stopScrolling.next();\r\n  }\r\n\r\n  /**\r\n   * Handles press-and-hold on a paginator button for continuous scrolling.\r\n   * Uses a delay before repeating to avoid accidental long-press.\r\n   */\r\n  _handlePaginatorPress(direction: ScrollDirection, mouseEvent?: MouseEvent) {\r\n    if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\r\n      return;\r\n    }\r\n    this._stopInterval();\r\n    timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\r\n      .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\r\n      .subscribe(() => {\r\n        const { maxScrollDistance, distance } = this._scrollHeader(direction);\r\n        if (distance === 0 || distance >= maxScrollDistance) {\r\n          this._stopInterval();\r\n        }\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Clamps and applies a new scroll position.\r\n   * @returns The max scroll distance and the clamped distance for convenience.\r\n   */\r\n  private _scrollTo(position: number) {\r\n    if (this.disablePagination) {\r\n      return { maxScrollDistance: 0, distance: 0 };\r\n    }\r\n    const maxScrollDistance = this._getMaxScrollDistance();\r\n    this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\r\n    this._scrollDistanceChanged = true;\r\n    this._checkScrollingControls();\r\n    return { maxScrollDistance, distance: this._scrollDistance };\r\n  }\r\n}\r\n","import { Direction, Directionality } from '@angular/cdk/bidi';\r\nimport { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\r\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Injector,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  afterNextRender,\r\n  inject,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Directive({ selector: '[mdTabBodyHost]' })\r\n/**\r\n * Portal host that attaches/detaches tab body content at the right times,\r\n * driven by the owning {@link MDTabBody}.\r\n *\r\n * @public\r\n */\r\nexport class TabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestroy {\r\n  /** The owning tab body that drives attach/detach. */\r\n  private _host = inject(MDTabBody);\r\n\r\n  /** Subscription to the \"before centering\" notifier. */\r\n  private _centeringSub = Subscription.EMPTY;\r\n  /** Subscription to the \"after leaving center\" notifier. */\r\n  private _leavingSub = Subscription.EMPTY;\r\n\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n  /** Wires up listeners to mount/unmount the portal at the right lifecycle moments. */\r\n  override ngOnInit(): void {\r\n    super.ngOnInit();\r\n    this._centeringSub = this._host._beforeCentering\r\n      .pipe(startWith(this._host._isCenterPosition()))\r\n      .subscribe((isCentering: boolean) => {\r\n        if (this._host._content && isCentering && !this.hasAttached()) {\r\n          this.attach(this._host._content);\r\n        }\r\n      });\r\n\r\n    this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {\r\n      if (!this._host.preserveContent) {\r\n        this.detach();\r\n      }\r\n    });\r\n  }\r\n\r\n  /** Cleans up subscriptions and outlet resources. */\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    this._centeringSub.unsubscribe();\r\n    this._leavingSub.unsubscribe();\r\n  }\r\n}\r\n\r\n/** Position of a tab body relative to the active (center) body. */\r\nexport type TabBodyPositionState = 'left' | 'center' | 'right';\r\n/** Direction from which the tab body originated (reserved for animations). */\r\nexport type TabBodyOriginState = 'left' | 'right';\r\n\r\n@Component({\r\n  selector: 'md-tab-body',\r\n  templateUrl: 'tab-body.html',\r\n  styleUrl: 'tab-body.scss',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.Default,\r\n  host: {\r\n    class: 'mdc-tab-body',\r\n    '[attr.inert]': '_position === \"center\" ? null : \"\"',\r\n    '[class.mdc-tab-body-bg-white]': 'tabBackgroundColor === \"white\"',\r\n    '[class.mdc-tab-body-bg-grey]': 'tabBackgroundColor === \"grey\"',\r\n    '[style.padding]': 'tabPadding',\r\n  },\r\n  imports: [TabBodyPortal, CdkScrollable],\r\n})\r\n/**\r\n * A single tab body container that animates between left/center/right positions.\r\n * Handles lifecycle of its projected content via {@link TabBodyPortal}.\r\n *\r\n * @remarks\r\n * - Emits sizing and transition lifecycle events to coordinate with parent headers.\r\n * - Supports LTR/RTL via {@link Directionality}.\r\n * - Allows disabling animations by setting {@link animationDuration} to `\"0ms\"`/`\"0s\"`.\r\n *\r\n * @example Attaching content\r\n * ```html\r\n * <md-tab-body [content]=\"portal\" [preserveContent]=\"true\"></md-tab-body>\r\n * <ng-template cdk-portal #portal> ... </ng-template>\r\n * ```\r\n */\r\nexport class MDTabBody implements OnInit, OnDestroy {\r\n  /** Host element reference for class toggles and measurement. */\r\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  /** Optional bidi service to map positions in RTL. */\r\n  private _dir = inject(Directionality, { optional: true });\r\n  /** For scheduling and transition fallback timers. */\r\n  private _ngZone = inject(NgZone);\r\n  /** Injector used by `afterNextRender` callbacks. */\r\n  private _injector = inject(Injector);\r\n  /** Renderer for passive DOM event bindings (transition events). */\r\n  private _renderer = inject(Renderer2);\r\n\r\n  /** Stored cleanup callbacks for event listeners. */\r\n  private _eventCleanups?: (() => void)[];\r\n  /** Whether OnInit finished; used to guard transition fallbacks. */\r\n  private _initialized: boolean;\r\n  /** Fallback timer to simulate transitions if needed. */\r\n  private _fallbackTimer: ReturnType<typeof setTimeout>;\r\n  /** Relative position index provided by parent: -1, 0, +1, ... */\r\n  private _positionIndex: number;\r\n  /** Directionality subscription to recompute when RTL changes. */\r\n  private _dirChangeSubscription = Subscription.EMPTY;\r\n\r\n  /** Current position state ('left' | 'center' | 'right'). */\r\n  _position: TabBodyPositionState;\r\n  /** Previous position state to know if we're entering/leaving center. */\r\n  protected _previousPosition: TabBodyPositionState;\r\n\r\n  /**\r\n   * Emits the tab body's `clientHeight` when starting to center.\r\n   * Useful for parent to resize the container.\r\n   */\r\n  @Output() readonly _onCentering: EventEmitter<number> = new EventEmitter<number>();\r\n  /** Indicates whether we're about to center (`true`) or not (`false`). */\r\n  @Output() readonly _beforeCentering: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n  /** Fires after we've left the center position. */\r\n  readonly _afterLeavingCenter: EventEmitter<void> = new EventEmitter<void>();\r\n  /** Emits when the body has finished centering transition. */\r\n  @Output() readonly _onCentered: EventEmitter<void> = new EventEmitter<void>(true);\r\n\r\n  /** Outlet that actually attaches/detaches the `TemplatePortal`. */\r\n  @ViewChild(TabBodyPortal) _portalHost: TabBodyPortal;\r\n  /** Reference to the element with the transition (the inner content). */\r\n  @ViewChild('content') _contentElement: ElementRef<HTMLElement> | undefined;\r\n\r\n  /** The content portal to render for this tab body. */\r\n  @Input('content') _content: TemplatePortal;\r\n  /** Duration of CSS transitions (e.g., `\"500ms\"`, `\"0ms\"`). */\r\n  @Input() animationDuration: string = '500ms';\r\n  /** Whether to leave the content attached when not centered. */\r\n  @Input() preserveContent: boolean = false;\r\n  /** Background color of the tab body content. */\r\n  @Input() tabBackgroundColor: 'transparent' | 'white' | 'grey' = 'transparent';\r\n  /** Padding of the tab body content. */\r\n  @Input() tabPadding: string = '20px 20px 20px 20px';\r\n\r\n  /**\r\n   * Relative position index set by parent (negative = left, 0 = center, positive = right).\r\n   * This setter maps index → position state considering layout direction (LTR/RTL).\r\n   */\r\n  @Input()\r\n  set position(position: number) {\r\n    this._positionIndex = position;\r\n    this._computePositionAnimationState();\r\n  }\r\n\r\n  constructor() {\r\n    if (this._dir) {\r\n      const changeDetectorRef = inject(ChangeDetectorRef);\r\n      this._dirChangeSubscription = this._dir.change.subscribe((dir: Direction) => {\r\n        this._computePositionAnimationState(dir);\r\n        changeDetectorRef.markForCheck();\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Binds transition listeners and emits initial centering height if already centered.\r\n   * Lifecycle: `OnInit`.\r\n   */\r\n  ngOnInit() {\r\n    this._bindTransitionEvents();\r\n\r\n    if (this._position === 'center') {\r\n      this._setActiveClass(true);\r\n      afterNextRender(() => this._onCentering.emit(this._elementRef.nativeElement.clientHeight), {\r\n        injector: this._injector,\r\n      });\r\n    }\r\n\r\n    this._initialized = true;\r\n  }\r\n\r\n  /** Removes listeners, timers, and subscriptions. */\r\n  ngOnDestroy() {\r\n    clearTimeout(this._fallbackTimer);\r\n    this._eventCleanups?.forEach((cleanup) => cleanup());\r\n    this._dirChangeSubscription.unsubscribe();\r\n  }\r\n\r\n  /**\r\n   * Attaches listeners for CSS transition lifecycle.\r\n   * These run outside Angular to avoid change detection storms.\r\n   */\r\n  private _bindTransitionEvents() {\r\n    this._ngZone.runOutsideAngular(() => {\r\n      const element = this._elementRef.nativeElement;\r\n\r\n      const transitionDone = (event: TransitionEvent) => {\r\n        if (event.target === this._contentElement?.nativeElement) {\r\n          this._elementRef.nativeElement.classList.remove('tab-body-animating');\r\n          if (event.type === 'transitionend') {\r\n            this._transitionDone();\r\n          }\r\n        }\r\n      };\r\n\r\n      this._eventCleanups = [\r\n        this._renderer.listen(element, 'transitionstart', (event: TransitionEvent) => {\r\n          if (event.target === this._contentElement?.nativeElement) {\r\n            this._elementRef.nativeElement.classList.add('tab-body-animating');\r\n            this._transitionStarted();\r\n          }\r\n        }),\r\n        this._renderer.listen(element, 'transitionend', transitionDone),\r\n        this._renderer.listen(element, 'transitioncancel', transitionDone),\r\n      ];\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Called when a transition starts; emits sizing and \"beforeCentering\" status.\r\n   * Triggers `_onCentering` when entering the center position.\r\n   */\r\n  private _transitionStarted() {\r\n    clearTimeout(this._fallbackTimer);\r\n    const isCentering = this._position === 'center';\r\n    this._beforeCentering.emit(isCentering);\r\n    if (isCentering) {\r\n      this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Called when a transition completes; emits `_onCentered` or `_afterLeavingCenter`\r\n   * depending on the current/previous positions.\r\n   */\r\n  private _transitionDone() {\r\n    if (this._position === 'center') {\r\n      this._onCentered.emit();\r\n    } else if (this._previousPosition === 'center') {\r\n      this._afterLeavingCenter.emit();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Toggles the active CSS class for the currently selected tab body.\r\n   * @param isActive Whether this body is currently active (centered).\r\n   */\r\n  _setActiveClass(isActive: boolean) {\r\n    this._elementRef.nativeElement.classList.toggle('mdc-tab-body-active', isActive);\r\n  }\r\n\r\n  /** Resolves current layout direction (LTR/RTL). */\r\n  _getLayoutDirection(): Direction {\r\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\r\n  }\r\n\r\n  /** True when this body is the centered (active) one. */\r\n  _isCenterPosition(): boolean {\r\n    return this._positionIndex === 0;\r\n  }\r\n\r\n  /**\r\n   * Maps the numeric index to a semantic position state and handles fallback simulation\r\n   * in cases where animations are disabled or the transition might not fire.\r\n   *\r\n   * @param dir Optional direction override; defaults to current {@link Directionality}.\r\n   */\r\n  private _computePositionAnimationState(dir: Direction = this._getLayoutDirection()) {\r\n    this._previousPosition = this._position;\r\n\r\n    if (this._positionIndex < 0) {\r\n      this._position = dir == 'ltr' ? 'left' : 'right';\r\n    } else if (this._positionIndex > 0) {\r\n      this._position = dir == 'ltr' ? 'right' : 'left';\r\n    } else {\r\n      this._position = 'center';\r\n    }\r\n\r\n    if (this._animationsDisabled()) {\r\n      this._simulateTransitionEvents();\r\n    } else if (this._initialized && (this._position === 'center' || this._previousPosition === 'center')) {\r\n      clearTimeout(this._fallbackTimer);\r\n      this._fallbackTimer = this._ngZone.runOutsideAngular(() =>\r\n        setTimeout(() => this._simulateTransitionEvents(), 100)\r\n      );\r\n    }\r\n  }\r\n\r\n  /** Fires synthetic transitionstart/transitionend callbacks in sequence. */\r\n  private _simulateTransitionEvents() {\r\n    this._transitionStarted();\r\n    afterNextRender(() => this._transitionDone(), { injector: this._injector });\r\n  }\r\n\r\n  /** Whether animations are effectively disabled by config. */\r\n  private _animationsDisabled() {\r\n    return this.animationDuration === '0ms' || this.animationDuration === '0s';\r\n  }\r\n}\r\n","<div\r\n   class=\"mdc-tab-body-content\"\r\n   #content\r\n   cdkScrollable\r\n   [class.tab-body-content-left]=\"_position === 'left'\"\r\n   [class.tab-body-content-right]=\"_position === 'right'\"\r\n   [class.tab-body-content-can-animate]=\"_position === 'center' || _previousPosition === 'center'\">\r\n  <ng-template mdTabBodyHost></ng-template>\r\n</div>","import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Configuration options for the Tabs module.\r\n *\r\n * @remarks\r\n * Provide this via the {@link TABS_CONFIG} injection token at the app or feature level.\r\n * Each field is optional; omit to use component defaults.\r\n *\r\n * @example Provide defaults app-wide\r\n * ```ts\r\n * bootstrapApplication(AppComponent, {\r\n *   providers: [\r\n *     { provide: TABS_CONFIG, useValue: {\r\n *         animationDuration: '250ms',\r\n *         fitInkBarToContent: true,\r\n *         alignTabs: 'center'\r\n *     } as TabsConfig }\r\n *   ]\r\n * });\r\n * ```\r\n */\r\nexport interface TabsConfig {\r\n  /**\r\n   * Duration of tab header/ink bar animations.\r\n   * @example \"200ms\", \"300ms ease-out\"\r\n   */\r\n  animationDuration?: string;\r\n\r\n  /**\r\n   * Disables header pagination arrows when there are many tabs.\r\n   * If `true`, all tabs must fit without scrolling.\r\n   * @default false\r\n   */\r\n  disablePagination?: boolean;\r\n\r\n  /**\r\n   * If `true`, ink bar width matches the label content rather than the full tab.\r\n   * @default false\r\n   */\r\n  fitInkBarToContent?: boolean;\r\n\r\n  /**\r\n   * Automatically resizes the tab-body container to match the active tab's height.\r\n   * @default false\r\n   */\r\n  dynamicHeight?: boolean;\r\n\r\n  /**\r\n   * `tabindex` applied to the tab body content container for accessibility.\r\n   * @default 0\r\n   */\r\n  contentTabIndex?: number;\r\n\r\n  /**\r\n   * Preserves inactive tab contents in the DOM instead of destroying them.\r\n   * Useful for keeping component state or form controls alive.\r\n   * @default false\r\n   */\r\n  preserveContent?: boolean;\r\n\r\n  /**\r\n   * Stretches tabs to evenly fill the header width.\r\n   * @default false\r\n   */\r\n  stretchTabs?: boolean;\r\n\r\n  /**\r\n   * Horizontal alignment of tab labels in the header.\r\n   * @default 'start'\r\n   */\r\n  alignTabs?: 'start' | 'center' | 'end';\r\n}\r\n\r\n/**\r\n * Injection token for providing {@link TabsConfig} defaults.\r\n *\r\n * @example Feature-level override\r\n * ```ts\r\n * @NgModule({\r\n *   providers: [{ provide: TABS_CONFIG, useValue: { stretchTabs: true } }]\r\n * })\r\n * export class TabsFeatureModule {}\r\n * ```\r\n *\r\n * @example Injecting the config\r\n * ```ts\r\n * @Component({...})\r\n * export class TabsHeaderComponent {\r\n *   constructor(@Inject(TABS_CONFIG) readonly cfg: TabsConfig) {}\r\n * }\r\n * ```\r\n */\r\nexport const TABS_CONFIG = new InjectionToken<TabsConfig>('TABS_CONFIG');\r\n","import { Directive, InjectionToken, TemplateRef, inject } from '@angular/core';\r\n\r\nexport const TAB_CONTENT = new InjectionToken<MDTabContent>('TabContent');\r\n\r\n@Directive({\r\n    selector: '[mdTabContent]',\r\n})\r\nexport class MDTabContent {\r\n    template = inject<TemplateRef<any>>(TemplateRef);\r\n\r\n    constructor() {}\r\n}\r\n","import { Directive, InjectionToken, inject } from '@angular/core';\r\nimport { CdkPortal } from '@angular/cdk/portal';\r\n\r\n/**\r\n * Injection token bound to the current {@link MDTabLabel} instance.\r\n * Useful for querying/injecting the label from descendants.\r\n */\r\nexport const MD_TAB_LABEL = new InjectionToken<MDTabLabel>('MDTabLabel');\r\n\r\n/** Token representing the closest parent Tab instance (provided by the Tab). */\r\nexport const MD_TAB = new InjectionToken<any>('MD_TAB');\r\n\r\n@Directive({\r\n  selector: '[md-tab-label], [mdTabLabel]',\r\n  providers: [{ provide: MD_TAB_LABEL, useExisting: MDTabLabel }],\r\n})\r\n/**\r\n * Structural directive marking a template as a tab label.\r\n * Extends {@link CdkPortal} so the label content can be projected/attached where needed.\r\n *\r\n * @example\r\n * ```html\r\n * <ng-template mdTabLabel>\r\n *   <span>Users</span>\r\n * </ng-template>\r\n * ```\r\n */\r\nexport class MDTabLabel extends CdkPortal {\r\n  /**\r\n   * Reference to the nearest parent tab instance if provided via {@link MD_TAB}.\r\n   * `undefined` when used outside of a tab context.\r\n   */\r\n  _closestTab = inject(MD_TAB, { optional: true });\r\n}\r\n","import {\r\n  booleanAttribute,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChild,\r\n  inject,\r\n  InjectionToken,\r\n  Input,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MDTabContent } from './tab-content';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\r\nimport { Subject } from 'rxjs';\r\nimport { MD_TAB, MDTabLabel } from './tab-label';\r\n\r\n/** Injection token for the closest parent tab-group (provided by the group). */\r\nexport const TAB_GROUP = new InjectionToken<any>('TAB_GROUP');\r\n\r\n@Component({\r\n  selector: 'md-tab',\r\n  templateUrl: './tab.html',\r\n  changeDetection: ChangeDetectionStrategy.Default,\r\n  encapsulation: ViewEncapsulation.None,\r\n  exportAs: 'mdTab',\r\n  standalone: true,\r\n  providers: [{provide: MD_TAB, useExisting: MDTab}],\r\n})\r\n/**\r\n * Single tab container.\r\n *\r\n * @remarks\r\n * - Supports either **implicit content** (component template) or an **explicit content**\r\n *   template via `MDTabContent`.\r\n * - Label can be plain text (`label`) or a projected template (`MDTabLabel`).\r\n * - Coordinates with a parent tab group via {@link TAB_GROUP}.\r\n *\r\n * @example Text label\r\n * ```html\r\n * <md-tab label=\"Users\"> Users content </md-tab>\r\n * ```\r\n *\r\n * @example Template label & explicit content\r\n * ```html\r\n * <md-tab>\r\n *   <ng-template mdTabLabel><span class=\"pill\">Reports</span></ng-template>\r\n *   <ng-template md-tab-content> Reports body </ng-template>\r\n * </md-tab>\r\n * ```\r\n */\r\nexport class MDTab {\r\n  /** View container used as the portal outlet context for tab content. */\r\n  private _viewContainerRef = inject(ViewContainerRef);\r\n\r\n  /** Optional reference to the closest parent tab group (for coordination). */\r\n  _closestTabGroup = inject(TAB_GROUP, { optional: true });\r\n\r\n  /**\r\n   * Disables this tab.\r\n   * Header becomes non-interactive and body is not focusable.\r\n   * @default false\r\n   */\r\n  @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n  /**\r\n   * Explicit tab body provided via `<ng-template md-tab-content>`.\r\n   * If absent, the component's own template (implicit content) is used.\r\n   */\r\n  @ContentChild(MDTabContent, { read: TemplateRef, static: true }) private _explicitContent: TemplateRef<any>;\r\n\r\n  /** Implicit content template captured from the component template. */\r\n  @ViewChild(TemplateRef, { static: true }) _implicitContent: TemplateRef<any>;\r\n\r\n  /** Plain text label for the tab header (alternative to template label). */\r\n  @Input('label') textLabel: string = '';\r\n\r\n  /** Accessible label for the tab header element. */\r\n  @Input('aria-label') ariaLabel: string;\r\n\r\n  /** Id of element that labels the tab header (for a11y). */\r\n  @Input('aria-labelledby') ariaLabelledby: string;\r\n\r\n  /** Additional CSS class(es) applied to the label host. */\r\n  @Input() labelClass: string | string[];\r\n\r\n  /** Additional CSS class(es) applied to the body/content host. */\r\n  @Input() bodyClass: string | string[];\r\n\r\n  /** Optional id for this tab; can be used for linking and testing. */\r\n  @Input() id: string | null = null;\r\n\r\n  /**\r\n   * Custom label template projected via `<ng-template md-tab-label>`.\r\n   * Setter ensures the template belongs to this tab instance.\r\n   */\r\n  @ContentChild(MDTabLabel)\r\n  get templateLabel(): MDTabLabel {\r\n    return this._templateLabel;\r\n  }\r\n  set templateLabel(value: MDTabLabel) {\r\n    this._setTemplateLabelInput(value);\r\n  }\r\n  private _templateLabel: MDTabLabel;\r\n\r\n  /** Lazily-created portal wrapping either explicit or implicit content. */\r\n  private _contentPortal: TemplatePortal | null = null;\r\n\r\n  /** Public getter for the content portal (used by parent tab group). */\r\n  get content(): TemplatePortal | null {\r\n    return this._contentPortal;\r\n  }\r\n\r\n  /** Notifies parent/consumers that an input affecting rendering has changed. */\r\n  readonly _stateChanges = new Subject<void>();\r\n\r\n  /** Position relative to the active tab (used for ink bar/animations). */\r\n  position: number | null = null;\r\n\r\n  /** Index from which this tab originated during a transition. */\r\n  origin: number | null = null;\r\n\r\n  /** Whether this tab is currently the active/selected one. */\r\n  isActive = false;\r\n\r\n  constructor() {}\r\n\r\n  /** Emits `stateChanges` when key inputs mutate. */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\r\n      this._stateChanges.next();\r\n    }\r\n  }\r\n\r\n  /** Completes internal subject to avoid leaks. */\r\n  ngOnDestroy(): void {\r\n    this._stateChanges.complete();\r\n  }\r\n\r\n  /** Initializes the content portal using explicit or implicit template. */\r\n  ngOnInit(): void {\r\n    this._contentPortal = new TemplatePortal(\r\n      this._explicitContent || this._implicitContent,\r\n      this._viewContainerRef\r\n    );\r\n  }\r\n\r\n  /** Accepts a label template only if it belongs to this `MDTab` instance. */\r\n  private _setTemplateLabelInput(value: MDTabLabel | undefined) {\r\n    if (value && value._closestTab === this) {\r\n      this._templateLabel = value;\r\n    }\r\n  }\r\n}\r\n","<ng-template><ng-content></ng-content></ng-template>","import {\r\n  Directive,\r\n  ElementRef,\r\n  InjectionToken,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  QueryList,\r\n  booleanAttribute,\r\n  inject,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Contract that an item must implement to participate in ink-bar activation.\r\n * Typically implemented by tab header items.\r\n */\r\nexport interface InkBarItemContract extends OnInit, OnDestroy {\r\n  /** Reference to the host element used for positioning and class toggles. */\r\n  elementRef: ElementRef<HTMLElement>;\r\n  /**\r\n   * Activates the ink bar on this item, optionally animating from the\r\n   * previous indicator's client rect (for smooth transitions).\r\n   */\r\n  activateInkBar(previousIndicatorClientRect?: DOMRect): void;\r\n  /** Deactivates the ink bar on this item. */\r\n  deactivateInkBar(): void;\r\n  /** Whether the ink bar should fit the label content rather than full width. */\r\n  fitInkBarToContent: boolean;\r\n}\r\n\r\n/** CSS class added when the indicator is active. */\r\nconst ACTIVE_CLASS = 'mdc-tab-indicator--active';\r\n\r\n/** CSS class used to temporarily disable transitions for initial positioning. */\r\nconst NO_TRANSITION_CLASS = 'mdc-tab-indicator--no-transition';\r\n\r\n/**\r\n * Controller for moving the ink bar between a set of items.\r\n * Keeps track of the currently active item and coordinates activation/deactivation.\r\n */\r\nexport class InkBar {\r\n  private _currentItem: InkBarItemContract | undefined;\r\n\r\n  /**\r\n   * @param _items QueryList of items that can host the ink bar.\r\n   */\r\n  constructor(private _items: QueryList<InkBarItemContract>) {}\r\n\r\n  /** Hides the ink bar and clears the current item reference. */\r\n  hide() {\r\n    this._items.forEach((item) => item.deactivateInkBar());\r\n    this._currentItem = undefined;\r\n  }\r\n\r\n  /**\r\n   * Aligns the ink bar to the given element, if there is a corresponding item.\r\n   * Performs a smooth transition from the previously active item when possible.\r\n   *\r\n   * @param element Host element to align the ink bar with.\r\n   */\r\n  alignToElement(element: HTMLElement) {\r\n    const correspondingItem = this._items.find((item) => item.elementRef.nativeElement === element);\r\n    const currentItem = this._currentItem;\r\n\r\n    if (correspondingItem === currentItem) {\r\n      return;\r\n    }\r\n\r\n    currentItem?.deactivateInkBar();\r\n\r\n    if (correspondingItem) {\r\n      // Previous DOM rect used to compute a transform for the entering animation.\r\n      const domRect = currentItem?.elementRef.nativeElement.getBoundingClientRect?.();\r\n\r\n      correspondingItem.activateInkBar(domRect);\r\n      this._currentItem = correspondingItem;\r\n    }\r\n  }\r\n}\r\n\r\n/**\r\n * Abstract base for an element that can host an ink bar.\r\n * Responsible for creating/attaching the indicator DOM and handling transitions.\r\n */\r\n@Directive()\r\nexport abstract class InkBarItem implements OnInit, OnDestroy {\r\n  /** Host element reference. */\r\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  /** Root element of the ink bar indicator. */\r\n  private _inkBarElement: HTMLElement | null;\r\n  /** Inner content element of the ink bar (underline). */\r\n  private _inkBarContentElement: HTMLElement | null;\r\n  /** Whether the ink bar attaches to content width instead of full host width. */\r\n  private _fitToContent = false;\r\n\r\n  /**\r\n   * When `true`, append the ink bar inside `.mdc-tab__content` to fit label width,\r\n   * otherwise append directly to the host for full-width underline.\r\n   */\r\n  @Input({ transform: booleanAttribute })\r\n  get fitInkBarToContent(): boolean {\r\n    return this._fitToContent;\r\n  }\r\n  set fitInkBarToContent(newValue: boolean) {\r\n    if (this._fitToContent !== newValue) {\r\n      this._fitToContent = newValue;\r\n\r\n      if (this._inkBarElement) {\r\n        this._appendInkBarElement();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Activates the ink bar and, if `previousIndicatorClientRect` is provided,\r\n   * animates from the previous position/width for a smooth transition.\r\n   */\r\n  activateInkBar(previousIndicatorClientRect?: DOMRect) {\r\n    const element = this._elementRef.nativeElement;\r\n\r\n    if (!previousIndicatorClientRect || !element.getBoundingClientRect || !this._inkBarContentElement) {\r\n      element.classList.add(ACTIVE_CLASS);\r\n      return;\r\n    }\r\n\r\n    const currentClientRect = element.getBoundingClientRect();\r\n    const widthDelta = previousIndicatorClientRect.width / currentClientRect.width;\r\n    const xPosition = previousIndicatorClientRect.left - currentClientRect.left;\r\n\r\n    element.classList.add(NO_TRANSITION_CLASS);\r\n    this._inkBarContentElement.style.setProperty('transform', `translateX(${xPosition}px) scaleX(${widthDelta})`);\r\n\r\n    // Force style/layout flush so transition applies after class toggle.\r\n    element.getBoundingClientRect();\r\n\r\n    element.classList.remove(NO_TRANSITION_CLASS);\r\n    element.classList.add(ACTIVE_CLASS);\r\n    this._inkBarContentElement.style.setProperty('transform', '');\r\n  }\r\n\r\n  /** Deactivates the ink bar from this host item. */\r\n  deactivateInkBar() {\r\n    this._elementRef.nativeElement.classList.remove(ACTIVE_CLASS);\r\n  }\r\n\r\n  /** Lifecycle: create the indicator DOM on init. */\r\n  ngOnInit() {\r\n    this._createInkBarElement();\r\n  }\r\n\r\n  /** Lifecycle: remove indicator DOM on destroy. */\r\n  ngOnDestroy() {\r\n    this._inkBarElement?.remove();\r\n    this._inkBarElement = this._inkBarContentElement = null!;\r\n  }\r\n\r\n  /** Creates the ink bar root and content elements and appends them. */\r\n  private _createInkBarElement() {\r\n    const documentNode = this._elementRef.nativeElement.ownerDocument || document;\r\n    const inkBarElement = (this._inkBarElement = documentNode.createElement('span'));\r\n    const inkBarContentElement = (this._inkBarContentElement = documentNode.createElement('span'));\r\n\r\n    inkBarElement.className = 'mdc-tab-indicator';\r\n    inkBarContentElement.className = 'mdc-tab-indicator__content mdc-tab-indicator__content--underline';\r\n\r\n    inkBarElement.appendChild(this._inkBarContentElement);\r\n    this._appendInkBarElement();\r\n  }\r\n\r\n  /**\r\n   * Appends the ink bar into the appropriate container depending on\r\n   * {@link fitInkBarToContent} value.\r\n   */\r\n  private _appendInkBarElement() {\r\n    const parentElement = this._fitToContent\r\n      ? this._elementRef.nativeElement.querySelector('.mdc-tab__content')\r\n      : this._elementRef.nativeElement;\r\n\r\n    parentElement!.appendChild(this._inkBarElement!);\r\n  }\r\n}\r\n\r\n/**\r\n * Computes the left/width style values for positioning an ink bar\r\n * under the given element.\r\n */\r\nexport interface _InkBarPositioner {\r\n  /**\r\n   * @param element Host element to measure.\r\n   * @returns CSS `left` and `width` values (in pixels with `px` suffix).\r\n   */\r\n  (element: HTMLElement): { left: string; width: string };\r\n}\r\n\r\n/**\r\n * Factory returning a default ink bar positioner based on `offsetLeft/offsetWidth`.\r\n * Useful as the default strategy; can be overridden via DI.\r\n */\r\nexport function INK_BAR_POSITIONER_FACTORY(): _InkBarPositioner {\r\n  const method = (element: HTMLElement) => ({\r\n    left: element ? (element.offsetLeft || 0) + 'px' : '0',\r\n    width: element ? (element.offsetWidth || 0) + 'px' : '0',\r\n  });\r\n\r\n  return method;\r\n}\r\n\r\n/**\r\n * Injection token for providing an ink bar positioner function.\r\n *\r\n * @example Override in a module\r\n * ```ts\r\n * providers: [\r\n *   { provide: INK_BAR_POSITIONER, useFactory: myCustomPositionerFactory }\r\n * ]\r\n * ```\r\n *\r\n * @example Inject and use\r\n * ```ts\r\n * constructor(@Inject(INK_BAR_POSITIONER) private pos: _InkBarPositioner) {}\r\n * ```\r\n */\r\nexport const INK_BAR_POSITIONER = new InjectionToken<_InkBarPositioner>('InkBarPositioner', {\r\n  providedIn: 'root',\r\n  factory: INK_BAR_POSITIONER_FACTORY,\r\n});\r\n","import { Directive, ElementRef, Input, booleanAttribute, inject } from '@angular/core';\r\nimport { InkBarItem } from './ink-bar';\r\n\r\n@Directive({\r\n  selector: '[mdTabLabelWrapper]',\r\n  host: {\r\n    '[class.mdc-tab-disabled]': 'disabled',\r\n    '[attr.aria-disabled]': '!!disabled',\r\n  },\r\n})\r\n/**\r\n * Wrapper directive for a tab label element.\r\n * Extends {@link InkBarItem} so it can host and animate the ink bar underline.\r\n *\r\n * @remarks\r\n * - Provides focus/measurement APIs consumed by the tab header.\r\n * - Exposes a `disabled` input that affects CSS state and `aria-disabled`.\r\n *\r\n * @example\r\n * ```html\r\n * <div mdTabLabelWrapper [disabled]=\"isDisabled\">Label</div>\r\n * ```\r\n */\r\nexport class MDTabLabelWrapper extends InkBarItem {\r\n  /** Native element reference for focus & measurement. */\r\n  elementRef = inject(ElementRef);\r\n\r\n  /**\r\n   * Disables the tab label (affects CSS and sets `aria-disabled`).\r\n   * @default false\r\n   */\r\n  @Input({ transform: booleanAttribute })\r\n  disabled: boolean = false;\r\n\r\n  /** Programmatically moves focus to the label element. */\r\n  focus(): void {\r\n    this.elementRef.nativeElement.focus();\r\n  }\r\n\r\n  /** Horizontal offset used to position the ink bar. */\r\n  getOffsetLeft(): number {\r\n    return this.elementRef.nativeElement.offsetLeft;\r\n  }\r\n\r\n  /** Element width used to size the ink bar. */\r\n  getOffsetWidth(): number {\r\n    return this.elementRef.nativeElement.offsetWidth;\r\n  }\r\n}\r\n","import {\r\n  AfterContentChecked,\r\n  AfterContentInit,\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  QueryList,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MDTabLabelWrapper } from './tab-label-wrapper';\r\nimport { InkBar } from './ink-bar';\r\nimport { PaginatedTabHeader } from './paginated-tab-header';\r\nimport { CdkObserveContent } from '@angular/cdk/observers';\r\n\r\n@Component({\r\n  selector: 'md-tab-header',\r\n  templateUrl: 'tab-header.html',\r\n  styleUrl: 'tab-header.scss',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.Default,\r\n  host: {\r\n    class: 'mdc-tab-header',\r\n    '[class.mdc-tab-header-pagination-controls-enabled]': '_showPaginationControls',\r\n    '[class.mdc-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\r\n  },\r\n  imports: [CdkObserveContent],\r\n})\r\n/**\r\n * Scrollable (paginated) tab header that renders tab labels and coordinates\r\n * focus/keyboard navigation with {@link PaginatedTabHeader}. Positions the\r\n * active underline via {@link InkBar}.\r\n *\r\n * @remarks\r\n * - Projects {@link MDTabLabelWrapper} items as header labels.\r\n * - Exposes ARIA labeling inputs for accessibility.\r\n * - Pagination controls appear automatically when content overflows.\r\n */\r\nexport class MDTabHeader\r\n  extends PaginatedTabHeader\r\n  implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy\r\n{\r\n  /** All direct tab label wrappers (no deep descendants). */\r\n  @ContentChildren(MDTabLabelWrapper, { descendants: false }) _items: QueryList<MDTabLabelWrapper>;\r\n\r\n  /** Container element around the scrolling tab list (used for clipping/scroll). */\r\n  @ViewChild('tabListContainer', { static: true }) _tabListContainer: ElementRef;\r\n\r\n  /** The scrollable tab list element. */\r\n  @ViewChild('tabList', { static: true }) _tabList: ElementRef;\r\n\r\n  /** Inner wrapper of the tab list (helps with measurements). */\r\n  @ViewChild('tabListInner', { static: true }) _tabListInner: ElementRef;\r\n\r\n  /** Next-page paginator button element (when overflow occurs). */\r\n  @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\r\n\r\n  /** Previous-page paginator button element (when overflow occurs). */\r\n  @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\r\n\r\n  /** Ink bar instance responsible for active-underline positioning. */\r\n  _inkBar: InkBar;\r\n\r\n  /** Accessible name for the tablist region (if no external labelling). */\r\n  @Input('aria-label') ariaLabel: string;\r\n\r\n  /** Id of element that labels this tablist for a11y. */\r\n  @Input('aria-labelledby') ariaLabelledby: string;\r\n\r\n  /**\r\n   * After content is available, initialize the ink bar with current items\r\n   * and let the base header wire scrolling/pagination behaviors.\r\n   */\r\n  override ngAfterContentInit() {\r\n    this._inkBar = new InkBar(this._items);\r\n    super.ngAfterContentInit();\r\n  }\r\n\r\n  /**\r\n   * Keyboard selection handler at the header level.\r\n   * Prevents default browser behavior; actual selection logic is handled\r\n   * by the parent container or the base class.\r\n   */\r\n  protected _itemSelected(event: KeyboardEvent) {\r\n    event.preventDefault();\r\n  }\r\n}\r\n","\r\n<div class=\"mdc-tab-header-pagination mdc-tab-header-pagination-before\"\r\n     #previousPaginator\r\n     [class.mdc-tab-header-pagination-disabled]=\"_disableScrollBefore\"\r\n     (click)=\"_handlePaginatorClick('before')\"\r\n     (mousedown)=\"_handlePaginatorPress('before', $event)\"\r\n     (touchend)=\"_stopInterval()\">\r\n  <div class=\"mdc-tab-header-pagination-chevron\"></div>\r\n</div>\r\n\r\n<div\r\n  class=\"mdc-tab-label-container\"\r\n  #tabListContainer\r\n  (keydown)=\"_handleKeydown($event)\">\r\n  <div\r\n    #tabList\r\n    class=\"mdc-tab-list\"\r\n    role=\"tablist\"\r\n    [attr.aria-label]=\"ariaLabel || null\"\r\n    [attr.aria-labelledby]=\"ariaLabelledby || null\"\r\n    (cdkObserveContent)=\"_onContentChanges()\">\r\n    <div class=\"mdc-tab-labels\" #tabListInner>\r\n      <ng-content></ng-content>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<div class=\"mdc-tab-header-pagination mdc-tab-header-pagination-after\"\r\n     #nextPaginator\r\n     [class.mdc-tab-header-pagination-disabled]=\"_disableScrollAfter\"\r\n     (mousedown)=\"_handlePaginatorPress('after', $event)\"\r\n     (click)=\"_handlePaginatorClick('after')\"\r\n     (touchend)=\"_stopInterval()\">\r\n  <div class=\"mdc-tab-header-pagination-chevron\"></div>\r\n</div>","import {\r\n    AfterContentChecked,\r\n    AfterContentInit,\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChildren,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Input,\r\n    OnDestroy,\r\n    Output,\r\n    QueryList,\r\n    ViewChild,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    inject,\r\n    numberAttribute,\r\n    ViewChildren,\r\n    AfterViewInit,\r\n    NgZone,\r\n} from '@angular/core';\r\nimport { MDTab, TAB_GROUP } from './tab';\r\nimport { MDTabHeader } from './tab-header';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { _IdGenerator, CdkMonitorFocus, FocusOrigin } from '@angular/cdk/a11y';\r\nimport { MDTabBody } from './tab-body';\r\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\r\nimport { MDTabLabelWrapper } from './tab-label-wrapper';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { TABS_CONFIG, TabsConfig } from './config';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport type LegacySize = 'small' | 'medium' | 'large';\r\n/** Interface exposed by tab header implementations used by the group. */\r\nexport interface TabGroupBaseHeader {\r\n    _alignInkBarToSelectedTab(): void;\r\n    updatePagination(): void;\r\n    focusIndex: number;\r\n}\r\n\r\n/** Where to render the tab header relative to the body. */\r\nexport type TabHeaderPosition = 'above' | 'below';\r\n\r\n@Component({\r\n    selector: 'md-tab-group',\r\n    exportAs: 'mdTabGroup',\r\n    templateUrl: 'tab-group.html',\r\n    styleUrl: 'tab-group.scss',\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.Default,\r\n    providers: [\r\n        {\r\n            provide: TAB_GROUP,\r\n            useExisting: MDTabGroup,\r\n        },\r\n    ],\r\n    host: {\r\n        class: 'mdc-tab-group',\r\n        '[class]': ' (color || \"primary\")',\r\n        '[class.mdc-tab-group-dynamic-height]': 'dynamicHeight',\r\n        '[class.mdc-tab-group-inverted-header]': 'headerPosition === \"below\"',\r\n        '[class.mdc-tab-group-stretch-tabs]': 'stretchTabs',\r\n        '[attr.align-tabs]': 'alignTabs',\r\n        '[style.--tab-animation-duration]': 'animationDuration',\r\n    },\r\n    imports: [MDTabHeader, MDTabLabelWrapper, CdkMonitorFocus, CdkPortalOutlet, MDTabBody, CommonModule],\r\n})\r\n/**\r\n * Tab group container coordinating a header of labels and a body of tab contents.\r\n *\r\n * @remarks\r\n * - Manages selection, focus, pagination, ink bar alignment, and body height animations.\r\n * - Works with projected {@link MDTab} children; filters out nested groups.\r\n * - Honors defaults provided via {@link TABS_CONFIG}.\r\n *\r\n * @example Basic usage\r\n * ```html\r\n * <md-tab-group [(selectedIndex)]=\"index\" [dynamicHeight]=\"true\">\r\n *   <md-tab label=\"One\"> One content </md-tab>\r\n *   <md-tab label=\"Two\"> Two content </md-tab>\r\n * </md-tab-group>\r\n * ```\r\n */\r\nexport class MDTabGroup implements AfterViewInit, AfterContentInit, AfterContentChecked, OnDestroy {\r\n    /** Root element ref for size/host-class interactions. */\r\n    readonly _elementRef = inject(ElementRef);\r\n    private _changeDetectorRef = inject(ChangeDetectorRef);\r\n    private _ngZone = inject(NgZone);\r\n\r\n    /** Subscriptions to various tab/label/body change streams. */\r\n    private _tabsSubscription = Subscription.EMPTY;\r\n    private _tabLabelSubscription = Subscription.EMPTY;\r\n    private _tabBodySubscription = Subscription.EMPTY;\r\n\r\n    /** All candidate tabs in content (including nested); filtered to own group below. */\r\n    @ContentChildren(MDTab, { descendants: true }) _allTabs: QueryList<MDTab>;\r\n\r\n    /** Projected tab body components and wrapper/child references. */\r\n    @ViewChildren(MDTabBody) _tabBodies: QueryList<MDTabBody> | undefined;\r\n    @ViewChild('tabBodyWrapper') _tabBodyWrapper: ElementRef;\r\n    @ViewChild('tabHeader') _tabHeader: MDTabHeader;\r\n\r\n    /** Tabs belonging to this group (excludes nested/foreign groups). */\r\n    _tabs: QueryList<MDTab> = new QueryList<MDTab>();\r\n\r\n    // ---- Selection & layout state ----\r\n\r\n    /** Next index requested by inputs/user actions; reconciled each content check. */\r\n    private _indexToSelect: number | null = 0;\r\n    /** Last header-focused tab index (for roving tabindex). */\r\n    private _lastFocusedTabIndex: number | null = null;\r\n    /** Cached wrapper height for dynamicHeight animations. */\r\n    private _tabBodyWrapperHeight: number = 0;\r\n\r\n    // ---- Inputs ----\r\n\r\n    @Input() isLegacyMode: boolean = false;\r\n    @Input() hideInkBar: boolean;\r\n    @Input() legacySize: LegacySize = 'medium';\r\n    @Input() tabBackgroundColor: 'transparent' | 'white' | 'grey' = 'transparent';\r\n    @Input() tabPadding: string = '20px 20px 20px 20px';\r\n\r\n    get legacySizeClass() {\r\n        return `legacy-${this.legacySize}`;\r\n    }\r\n\r\n    c(val: any) {\r\n        console.log(val);\r\n        return val;\r\n    }\r\n\r\n    /**\r\n     * Fit ink bar width to the text content of the label rather than the full tab.\r\n     * @default false\r\n     */\r\n    @Input({ transform: booleanAttribute })\r\n    get fitInkBarToContent(): boolean {\r\n        return this._fitInkBarToContent;\r\n    }\r\n    set fitInkBarToContent(value: boolean) {\r\n        this._fitInkBarToContent = value;\r\n        this._changeDetectorRef.markForCheck();\r\n    }\r\n    private _fitInkBarToContent = false;\r\n\r\n    /**\r\n     * Stretch tabs across the header row (attribute alias).\r\n     * @alias stretch-tabs\r\n     * @default true\r\n     */\r\n    @Input({ alias: 'md-stretch-tabs', transform: booleanAttribute })\r\n    stretchTabs: boolean = true;\r\n\r\n    /**\r\n     * Alignment of tab headers: `'start' | 'center' | 'end'` (attribute alias).\r\n     * @alias align-tabs\r\n     * @default null (use header default)\r\n     */\r\n    @Input({ alias: 'md-align-tabs' })\r\n    alignTabs: string | null = null;\r\n\r\n    /** Animate container height to fit active body. @default false */\r\n    @Input({ transform: booleanAttribute })\r\n    dynamicHeight: boolean = false;\r\n\r\n    /**\r\n     * Two-way bound selected index.\r\n     * @remarks Setter stores a pending request; actual selection happens during checks.\r\n     */\r\n    @Input({ transform: numberAttribute })\r\n    get selectedIndex(): number | null {\r\n        return this._selectedIndex;\r\n    }\r\n    set selectedIndex(value: number) {\r\n        this._indexToSelect = isNaN(value) ? null : value;\r\n    }\r\n    private _selectedIndex: number | null = null;\r\n\r\n    /** Header position relative to body. @default 'above' */\r\n    @Input() headerPosition: TabHeaderPosition = 'above';\r\n\r\n    @Input() animationDisabled = false;\r\n\r\n    /**\r\n     * Duration applied to transitions; accepts `'500ms'` or number (ms).\r\n     * Numbers are normalized to `\"Xms\"`.\r\n     * @default '500ms' (or DI default)\r\n     */\r\n    @Input()\r\n    get animationDuration(): string {\r\n        return this._animationDuration;\r\n    }\r\n    set animationDuration(value: string | number) {\r\n        const stringValue = value + '';\r\n        this._animationDuration = /^\\d+$/.test(stringValue) ? value + 'ms' : stringValue;\r\n    }\r\n    private _animationDuration: string;\r\n\r\n    /**\r\n     * `tabindex` for the active tab content container.\r\n     * @default null (browser default)\r\n     */\r\n    @Input({ transform: numberAttribute })\r\n    get contentTabIndex(): number | null {\r\n        return this._contentTabIndex;\r\n    }\r\n    set contentTabIndex(value: number) {\r\n        this._contentTabIndex = isNaN(value) ? null : value;\r\n    }\r\n    private _contentTabIndex: number | null;\r\n\r\n    /** Disable header pagination controls and related layout. @default false */\r\n    @Input({ transform: booleanAttribute })\r\n    disablePagination: boolean = false;\r\n\r\n    /** Reserved flag for ripple styling/integration. @default false */\r\n    @Input({ transform: booleanAttribute })\r\n    disableRipple: boolean = false;\r\n\r\n    /** Keep inactive tab bodies attached in the DOM. @default false */\r\n    @Input({ transform: booleanAttribute })\r\n    preserveContent: boolean = false;\r\n\r\n    /** A11y labeling for the tablist region. */\r\n    @Input('aria-label') ariaLabel: string;\r\n    @Input('aria-labelledby') ariaLabelledby: string;\r\n\r\n    // ---- Outputs ----\r\n\r\n    /** Emits when selected index changes (two-way binding helper). */\r\n    @Output() readonly selectedIndexChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n    /** Emits when header focus changes between tabs (keyboard nav). */\r\n    @Output() readonly focusChange: EventEmitter<MDTabChangeEvent> = new EventEmitter<MDTabChangeEvent>();\r\n\r\n    /** Emits after content wrapper height animation completes. */\r\n    @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Emits when a new tab is selected (async; not emitted on initial render).\r\n     * @see selectedIndexChange for 2-way binding signal.\r\n     */\r\n    @Output() readonly selectedTabChange: EventEmitter<MDTabChangeEvent> = new EventEmitter<MDTabChangeEvent>(true);\r\n\r\n    /** Group id used for aria-controls/label linking. */\r\n    private _groupId: string;\r\n\r\n    /** SSR guard to avoid DOM operations when not in the browser. */\r\n    protected _isServer: boolean = !inject(Platform).isBrowser;\r\n\r\n    constructor() {\r\n        const defaultConfig = inject<TabsConfig>(TABS_CONFIG, { optional: true });\r\n        this._groupId = inject(_IdGenerator).getId('tab-group-');\r\n\r\n        // Apply DI defaults where provided.\r\n        this.animationDuration =\r\n            defaultConfig && defaultConfig.animationDuration ? defaultConfig.animationDuration : '500ms';\r\n        this.disablePagination =\r\n            defaultConfig && defaultConfig.disablePagination != null ? defaultConfig.disablePagination : false;\r\n        this.dynamicHeight = defaultConfig && defaultConfig.dynamicHeight != null ? defaultConfig.dynamicHeight : false;\r\n\r\n        if (defaultConfig?.contentTabIndex != null) {\r\n            this.contentTabIndex = defaultConfig.contentTabIndex;\r\n        }\r\n        this.preserveContent = !!defaultConfig?.preserveContent;\r\n        this.fitInkBarToContent =\r\n            defaultConfig && defaultConfig.fitInkBarToContent != null ? defaultConfig.fitInkBarToContent : false;\r\n        this.stretchTabs = defaultConfig && defaultConfig.stretchTabs != null ? defaultConfig.stretchTabs : true;\r\n        this.alignTabs = defaultConfig && defaultConfig.alignTabs != null ? defaultConfig.alignTabs : null;\r\n    }\r\n\r\n    // ---- Lifecycle ----\r\n\r\n    /**\r\n     * Reconcile desired index with available tabs; update selection & positions.\r\n     * Emits change events and manages wrapper height for smooth transitions.\r\n     */\r\n    ngAfterContentChecked() {\r\n        const indexToSelect = (this._indexToSelect = this._clampTabIndex(this._indexToSelect));\r\n        if (this._selectedIndex != indexToSelect) {\r\n            const isFirstRun = this._selectedIndex == null;\r\n\r\n            if (!isFirstRun) {\r\n                this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\r\n                const wrapper = this._tabBodyWrapper.nativeElement;\r\n                wrapper.style.minHeight = wrapper.clientHeight + 'px';\r\n            }\r\n\r\n            Promise.resolve().then(() => {\r\n                this._tabs.forEach((tab, index) => (tab.isActive = index === indexToSelect));\r\n                if (!isFirstRun) {\r\n                    this.selectedIndexChange.emit(indexToSelect);\r\n                    this._tabBodyWrapper.nativeElement.style.minHeight = '';\r\n                }\r\n            });\r\n        }\r\n\r\n        // Update relative positions & origin for animations.\r\n        this._tabs.forEach((tab: MDTab, index: number) => {\r\n            tab.position = index - indexToSelect;\r\n            if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\r\n                tab.origin = indexToSelect - this._selectedIndex;\r\n            }\r\n        });\r\n\r\n        if (this._selectedIndex !== indexToSelect) {\r\n            this._selectedIndex = indexToSelect;\r\n            this._lastFocusedTabIndex = null;\r\n            this._changeDetectorRef.markForCheck();\r\n        }\r\n    }\r\n\r\n    /** Wire up tabs list and labels after initial content projection. */\r\n    ngAfterContentInit() {\r\n        this._subscribeToAllTabChanges();\r\n        this._subscribeToTabLabels();\r\n\r\n        this._tabsSubscription = this._tabs.changes.subscribe(() => {\r\n            const indexToSelect = this._clampTabIndex(this._indexToSelect);\r\n\r\n            // If selected index stayed the same, ensure the activated tab is in sync.\r\n            if (indexToSelect === this._selectedIndex) {\r\n                const tabs = this._tabs.toArray();\r\n                let selectedTab: MDTab | undefined;\r\n\r\n                for (let i = 0; i < tabs.length; i++) {\r\n                    if (tabs[i].isActive) {\r\n                        this._indexToSelect = this._selectedIndex = i;\r\n                        this._lastFocusedTabIndex = null;\r\n                        selectedTab = tabs[i];\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                // If no tab is active, activate the target one.\r\n                if (!selectedTab && tabs[indexToSelect]) {\r\n                    Promise.resolve().then(() => {\r\n                        tabs[indexToSelect].isActive = true;\r\n                        this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\r\n                    });\r\n                }\r\n            }\r\n\r\n            this._changeDetectorRef.markForCheck();\r\n        });\r\n    }\r\n\r\n    /** Watch body list to keep active class centered after view init. */\r\n    ngAfterViewInit() {\r\n        this._tabBodySubscription = this._tabBodies!.changes.subscribe(() => this._bodyCentered(true));\r\n    }\r\n\r\n    /** Filter nested tabs and keep only those belonging to this group. */\r\n    private _subscribeToAllTabChanges() {\r\n        this._allTabs.changes.pipe(startWith(this._allTabs)).subscribe((tabs: QueryList<MDTab>) => {\r\n            this._tabs.reset(\r\n                tabs.filter((tab) => {\r\n                    return tab._closestTabGroup === this || !tab._closestTabGroup;\r\n                })\r\n            );\r\n            this._tabs.notifyOnChanges();\r\n        });\r\n    }\r\n\r\n    /** Cleanup resources. */\r\n    ngOnDestroy() {\r\n        this._tabs.destroy();\r\n        this._tabsSubscription.unsubscribe();\r\n        this._tabLabelSubscription.unsubscribe();\r\n        this._tabBodySubscription.unsubscribe();\r\n    }\r\n\r\n    // ---- Public API for header/body coordination ----\r\n\r\n    /** Realign ink bar to the current selected tab. */\r\n    realignInkBar() {\r\n        if (this._tabHeader) {\r\n            this._tabHeader._alignInkBarToSelectedTab();\r\n        }\r\n    }\r\n\r\n    /** Recompute pagination (e.g., after resize). */\r\n    updatePagination() {\r\n        if (this._tabHeader) {\r\n            this._tabHeader.updatePagination();\r\n        }\r\n    }\r\n\r\n    /** Move focus to a specific tab header index. */\r\n    focusTab(index: number) {\r\n        const header = this._tabHeader;\r\n        if (header) {\r\n            header.focusIndex = index;\r\n        }\r\n    }\r\n\r\n    /** Emits `focusChange` when header focus moves. */\r\n    _focusChanged(index: number) {\r\n        this._lastFocusedTabIndex = index;\r\n        this.focusChange.emit(this._createChangeEvent(index));\r\n    }\r\n\r\n    /** Creates a reusable change event object for selection/focus updates. */\r\n    private _createChangeEvent(index: number): MDTabChangeEvent {\r\n        const event = new MDTabChangeEvent();\r\n        event.index = index;\r\n        if (this._tabs && this._tabs.length) {\r\n            event.tab = this._tabs.toArray()[index];\r\n        }\r\n        return event;\r\n    }\r\n\r\n    /** Subscribe to label/template changes to trigger CD when they update. */\r\n    private _subscribeToTabLabels() {\r\n        if (this._tabLabelSubscription) {\r\n            this._tabLabelSubscription.unsubscribe();\r\n        }\r\n        this._tabLabelSubscription = merge(...this._tabs.map((tab) => tab._stateChanges)).subscribe(() =>\r\n            this._changeDetectorRef.markForCheck()\r\n        );\r\n    }\r\n\r\n    /** Ensure the target index is within `[0, tabs.length - 1]`. */\r\n    private _clampTabIndex(index: number | null): number {\r\n        return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\r\n    }\r\n\r\n    /** Build a unique id for each tab label element (aria-labelledby). */\r\n    _getTabLabelId(tab: MDTab, index: number): string {\r\n        return tab.id || `${this._groupId}-label-${index}`;\r\n    }\r\n\r\n    /** Build a unique id for each tab content region (aria-controls). */\r\n    _getTabContentId(index: number): string {\r\n        return `${this._groupId}-content-${index}`;\r\n    }\r\n\r\n    /** Manage body wrapper height during `dynamicHeight` animations. */\r\n    _setTabBodyWrapperHeight(tabHeight: number): void {\r\n        if (!this.dynamicHeight || !this._tabBodyWrapperHeight) {\r\n            this._tabBodyWrapperHeight = tabHeight;\r\n            return;\r\n        }\r\n        const wrapper: HTMLElement = this._tabBodyWrapper.nativeElement;\r\n        wrapper.style.height = this._tabBodyWrapperHeight + 'px';\r\n\r\n        // Only set the new height if the element is rendered; avoids FOUC.\r\n        if (this._tabBodyWrapper.nativeElement.offsetHeight) {\r\n            wrapper.style.height = tabHeight + 'px';\r\n        }\r\n    }\r\n\r\n    /** Clear height lock and emit `animationDone` once the cycle completes. */\r\n    _removeTabBodyWrapperHeight(): void {\r\n        const wrapper = this._tabBodyWrapper.nativeElement;\r\n        this._tabBodyWrapperHeight = wrapper.clientHeight;\r\n        wrapper.style.height = '';\r\n        this._ngZone.run(() => this.animationDone.emit());\r\n    }\r\n\r\n    /** Handle header click: focus header item and (if enabled) select it. */\r\n    _handleClick(tab: MDTab, tabHeader: TabGroupBaseHeader, index: number) {\r\n        tabHeader.focusIndex = index;\r\n        if (!tab.disabled) {\r\n            this.selectedIndex = index;\r\n        }\r\n    }\r\n\r\n    /** Roving tabindex: only selected/last-focused tab is tabbable. */\r\n    _getTabIndex(index: number): number {\r\n        const targetIndex = this._lastFocusedTabIndex ?? this.selectedIndex;\r\n        return index === targetIndex ? 0 : -1;\r\n    }\r\n\r\n    /** When header item receives non-mouse focus, update `focusIndex`. */\r\n    _tabFocusChanged(focusOrigin: FocusOrigin, index: number) {\r\n        if (focusOrigin && focusOrigin !== 'mouse' && focusOrigin !== 'touch') {\r\n            this._tabHeader.focusIndex = index;\r\n        }\r\n    }\r\n\r\n    /** Toggle active class on bodies when centering is enabled. */\r\n    protected _bodyCentered(isCenter: boolean) {\r\n        if (isCenter) {\r\n            this._tabBodies?.forEach((body, i) => body._setActiveClass(i === this._selectedIndex));\r\n        }\r\n    }\r\n\r\n    /** Disable animations when duration is explicitly zero. */\r\n    protected _animationsDisabled(): boolean {\r\n        return this.animationDisabled || this.animationDuration === '0' || this.animationDuration === '0ms';\r\n    }\r\n}\r\n\r\n/** Change event emitted by MDTabGroup for selection/focus updates. */\r\nexport class MDTabChangeEvent {\r\n    /** Index of the tab that changed. */\r\n    index: number;\r\n    /** Reference to the tab instance. */\r\n    tab: MDTab;\r\n}\r\n","<md-tab-header\r\n    #tabHeader\r\n    [ngClass]=\"{\r\n        'tabs-legacy': isLegacyMode\r\n    }\"\r\n    class=\"{{ isLegacyMode ? 'legacy-' + legacySize : '' }}\"\r\n    [class.no-animations]=\"_animationsDisabled()\"\r\n    [hideInkBar]=\"hideInkBar\"\r\n    [selectedIndex]=\"selectedIndex || 0\"\r\n    [disablePagination]=\"disablePagination\"\r\n    [aria-label]=\"ariaLabel\"\r\n    [aria-labelledby]=\"ariaLabelledby\"\r\n    (indexFocused)=\"_focusChanged($event)\"\r\n    (selectFocusedIndex)=\"selectedIndex = $event\"\r\n>\r\n    @for (tab of _tabs; track tab) {\r\n    <div\r\n        class=\"focus-indicator\"\r\n        [ngClass]=\"{\r\n            'mdc-tab': !isLegacyMode,\r\n            'mdc-tab-legacy': isLegacyMode\r\n        }\"\r\n        #tabNode\r\n        role=\"tab\"\r\n        mdTabLabelWrapper\r\n        cdkMonitorElementFocus\r\n        [id]=\"_getTabLabelId(tab, $index)\"\r\n        [attr.tabIndex]=\"_getTabIndex($index)\"\r\n        [attr.aria-posinset]=\"$index + 1\"\r\n        [attr.aria-setsize]=\"_tabs.length\"\r\n        [attr.aria-controls]=\"_getTabContentId($index)\"\r\n        [attr.aria-selected]=\"selectedIndex === $index\"\r\n        [attr.aria-label]=\"tab.ariaLabel || null\"\r\n        [attr.aria-labelledby]=\"(!tab.ariaLabel && tab.ariaLabelledby) ? tab.ariaLabelledby : null\"\r\n        [class.mdc-tab--active]=\"selectedIndex === $index\"\r\n        [class]=\"tab.labelClass\"\r\n        [disabled]=\"tab.disabled\"\r\n        [fitInkBarToContent]=\"fitInkBarToContent\"\r\n        (click)=\"_handleClick(tab, tabHeader, $index)\"\r\n        (cdkFocusChange)=\"_tabFocusChanged($event, $index)\"\r\n    >\r\n        <span class=\"mdc-tab__ripple\"></span>\r\n        <span class=\"mdc-tab__content\">\r\n            <span class=\"mdc-tab__text-label\">\r\n                @if (tab.templateLabel) {\r\n                <ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template>\r\n                } @else {{{tab.textLabel}}}\r\n            </span>\r\n        </span>\r\n    </div>\r\n    }\r\n</md-tab-header>\r\n\r\n@if (_isServer) {\r\n<ng-content />\r\n}\r\n\r\n<div class=\"mdc-tab-body-wrapper\" [class.no-animations]=\"_animationsDisabled()\" #tabBodyWrapper>\r\n    @for (tab of _tabs; track tab;) {\r\n    <md-tab-body\r\n        role=\"tabpanel\"\r\n        [id]=\"_getTabContentId($index)\"\r\n        [attr.tabindex]=\"(contentTabIndex != null && selectedIndex === $index) ? contentTabIndex : null\"\r\n        [attr.aria-labelledby]=\"_getTabLabelId(tab, $index)\"\r\n        [attr.aria-hidden]=\"selectedIndex !== $index\"\r\n        [class]=\"tab.bodyClass\"\r\n        [content]=\"tab.content!\"\r\n        [position]=\"tab.position!\"\r\n        [animationDuration]=\"animationDuration\"\r\n        [preserveContent]=\"preserveContent\"\r\n        [tabBackgroundColor]=\"tabBackgroundColor\"\r\n        [tabPadding]=\"tabPadding\"\r\n        (_onCentered)=\"_removeTabBodyWrapperHeight()\"\r\n        (_onCentering)=\"_setTabBodyWrapperHeight($event)\"\r\n        (_beforeCentering)=\"_bodyCentered($event)\"\r\n    />\r\n    }\r\n</div>\r\n","import { FocusMonitor, FocusableOption, _IdGenerator } from '@angular/cdk/a11y';\r\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\r\nimport { CdkObserveContent } from '@angular/cdk/observers';\r\nimport {\r\n  AfterContentChecked,\r\n  AfterContentInit,\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  QueryList,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  computed,\r\n  forwardRef,\r\n  inject,\r\n  numberAttribute,\r\n  signal,\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { startWith, takeUntil } from 'rxjs/operators';\r\nimport { InkBar, InkBarItem } from './ink-bar';\r\nimport { PaginatedTabHeader } from './paginated-tab-header';\r\nimport type { LegacySize } from './tab-group';\r\n\r\n@Component({\r\n  selector: '[md-tab-nav-bar]',\r\n  exportAs: 'mdTabNavBar, mdTabNav',\r\n  templateUrl: 'tab-nav-bar.html',\r\n  styleUrl: 'tab-nav-bar.scss',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.Default,\r\n  host: {\r\n    '[attr.role]': '_getHostRole()',\r\n    class: 'mdc-tab-nav-bar mdc-tab-header',\r\n    '[class.mdc-tab-header-pagination-controls-enabled]': '_showPaginationControls',\r\n    '[class.mdc-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\r\n    '[class.mdc-tab-nav-bar-stretch-tabs]': 'stretchTabs',\r\n    '[class.tabs-legacy]': 'isLegacyMode',\r\n    '[class.legacy-small]': 'isLegacyMode && legacySize === \"small\"',\r\n    '[class.legacy-medium]': 'isLegacyMode && legacySize === \"medium\"',\r\n    '[class.legacy-large]': 'isLegacyMode && legacySize === \"large\"',\r\n    '[style.--tab-animation-duration]': 'animationDuration',\r\n  },\r\n  imports: [CdkObserveContent],\r\n})\r\nexport class MDTabNav extends PaginatedTabHeader implements AfterContentChecked, AfterContentInit, AfterViewInit {\r\n  _focusedItem = signal<MDTabLink | null>(null);\r\n\r\n  @Input({ transform: booleanAttribute })\r\n  get fitInkBarToContent(): boolean {\r\n    return this._fitInkBarToContent.value;\r\n  }\r\n  set fitInkBarToContent(value: boolean) {\r\n    this._fitInkBarToContent.next(value);\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n  readonly _fitInkBarToContent = new BehaviorSubject(false);\r\n\r\n  @Input({ alias: 'md-stretch-tabs', transform: booleanAttribute })\r\n  stretchTabs: boolean = true;\r\n\r\n  @Input({ transform: booleanAttribute })\r\n  isLegacyMode: boolean = false;\r\n\r\n  @Input()\r\n  legacySize: LegacySize = 'medium';\r\n\r\n  @Input()\r\n  get animationDuration(): string {\r\n    return this._animationDuration;\r\n  }\r\n  set animationDuration(value: string | number) {\r\n    const stringValue = value + '';\r\n    this._animationDuration = /^\\d+$/.test(stringValue) ? `${value}ms` : stringValue;\r\n  }\r\n  private _animationDuration = '500ms';\r\n\r\n  @Input({ transform: booleanAttribute })\r\n  get disableRipple(): boolean {\r\n    return this._disableRipple();\r\n  }\r\n  set disableRipple(value: boolean) {\r\n    this._disableRipple.set(value);\r\n  }\r\n  private _disableRipple = signal(false);\r\n\r\n  @Input() tabPanel?: MDTabNavPanel;\r\n\r\n  @ContentChildren(forwardRef(() => MDTabLink), { descendants: true }) _items: QueryList<MDTabLink>;\r\n\r\n  @ViewChild('tabListContainer', { static: true }) _tabListContainer: ElementRef<HTMLElement>;\r\n  @ViewChild('tabList', { static: true }) _tabList: ElementRef<HTMLElement>;\r\n  @ViewChild('tabListInner', { static: true }) _tabListInner: ElementRef<HTMLElement>;\r\n  @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\r\n  @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\r\n\r\n  _inkBar: InkBar;\r\n\r\n  protected _itemSelected(): void {\r\n    // Link activation is handled by the focused MDTabLink.\r\n  }\r\n\r\n  override ngAfterContentInit(): void {\r\n    this._inkBar = new InkBar(this._items);\r\n    this._items.changes\r\n      .pipe(startWith(null), takeUntil(this._destroyed))\r\n      .subscribe(() => this.updateActiveLink());\r\n\r\n    super.ngAfterContentInit();\r\n\r\n    this._keyManager!.change\r\n      .pipe(startWith(null), takeUntil(this._destroyed))\r\n      .subscribe(() => this._focusedItem.set((this._keyManager?.activeItem as MDTabLink | null) || null));\r\n  }\r\n\r\n  updateActiveLink(): void {\r\n    if (!this._items) {\r\n      return;\r\n    }\r\n\r\n    const items = this._items.toArray();\r\n\r\n    for (let i = 0; i < items.length; i++) {\r\n      if (items[i].active) {\r\n        this.selectedIndex = i;\r\n\r\n        if (this.tabPanel) {\r\n          this.tabPanel._activeTabId = items[i].id;\r\n        }\r\n\r\n        this._focusedItem.set(items[i]);\r\n        this._changeDetectorRef.markForCheck();\r\n        return;\r\n      }\r\n    }\r\n\r\n    this.selectedIndex = -1;\r\n  }\r\n\r\n  _getHostRole(): string | null {\r\n    return this.tabPanel ? 'tablist' : this._elementRef.nativeElement.getAttribute('role');\r\n  }\r\n\r\n  _getRole(): string | null {\r\n    return this.tabPanel ? 'presentation' : null;\r\n  }\r\n\r\n  _hasFocus(link: MDTabLink): boolean {\r\n    return this._keyManager?.activeItem === link;\r\n  }\r\n}\r\n\r\n@Component({\r\n  selector: '[md-tab-link], [mdTabLink]',\r\n  exportAs: 'mdTabLink',\r\n  templateUrl: 'tab-link.html',\r\n  styleUrl: 'tab-nav-bar.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  host: {\r\n    class: 'mdc-tab md-tab-link focus-indicator',\r\n    '[attr.aria-controls]': '_getAriaControls()',\r\n    '[attr.aria-current]': '_getAriaCurrent()',\r\n    '[attr.aria-disabled]': 'disabled',\r\n    '[attr.aria-selected]': '_getAriaSelected()',\r\n    '[attr.id]': 'id',\r\n    '[attr.tabIndex]': '_tabIndex()',\r\n    '[attr.role]': '_getRole()',\r\n    '[class.mdc-tab-disabled]': 'disabled',\r\n    '[class.mdc-tab--active]': 'active',\r\n    '[class.mdc-tab-legacy]': '_tabNavBar.isLegacyMode',\r\n    '(focus)': '_handleFocus()',\r\n    '(keydown)': '_handleKeydown($event)',\r\n  },\r\n})\r\nexport class MDTabLink extends InkBarItem implements AfterViewInit, OnDestroy, FocusableOption {\r\n  private _tabNavBar = inject(MDTabNav);\r\n  elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  private _focusMonitor = inject(FocusMonitor);\r\n  private readonly _destroyed = new Subject<void>();\r\n\r\n  protected _isActive = false;\r\n  protected _tabIndex = computed(() => (this._tabNavBar._focusedItem() === this ? this.tabIndex : -1));\r\n\r\n  @Input({ transform: booleanAttribute })\r\n  get active(): boolean {\r\n    return this._isActive;\r\n  }\r\n  set active(value: boolean) {\r\n    if (value !== this._isActive) {\r\n      this._isActive = value;\r\n      this._tabNavBar.updateActiveLink();\r\n    }\r\n  }\r\n\r\n  @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n  @Input({ transform: booleanAttribute })\r\n  get disableRipple(): boolean {\r\n    return this._disableRipple();\r\n  }\r\n  set disableRipple(value: boolean) {\r\n    this._disableRipple.set(value);\r\n  }\r\n  private _disableRipple = signal(false);\r\n\r\n  @Input({\r\n    transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\r\n  })\r\n  tabIndex = 0;\r\n\r\n  @Input() id: string = inject(_IdGenerator).getId('md-tab-link-');\r\n\r\n  get rippleDisabled(): boolean {\r\n    return this.disabled || this.disableRipple || this._tabNavBar.disableRipple;\r\n  }\r\n\r\n  constructor() {\r\n    super();\r\n\r\n    this._tabNavBar._fitInkBarToContent.pipe(takeUntil(this._destroyed)).subscribe((fitInkBarToContent) => {\r\n      this.fitInkBarToContent = fitInkBarToContent;\r\n    });\r\n  }\r\n\r\n  focus(): void {\r\n    this.elementRef.nativeElement.focus();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this._focusMonitor.monitor(this.elementRef);\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    this._destroyed.next();\r\n    this._destroyed.complete();\r\n    super.ngOnDestroy();\r\n    this._focusMonitor.stopMonitoring(this.elementRef);\r\n  }\r\n\r\n  _handleFocus(): void {\r\n    this._tabNavBar.focusIndex = this._tabNavBar._items.toArray().indexOf(this);\r\n  }\r\n\r\n  _handleKeydown(event: KeyboardEvent): void {\r\n    if (event.keyCode === SPACE || event.keyCode === ENTER) {\r\n      if (this.disabled) {\r\n        event.preventDefault();\r\n      } else if (this._tabNavBar.tabPanel) {\r\n        if (event.keyCode === SPACE) {\r\n          event.preventDefault();\r\n        }\r\n\r\n        this.elementRef.nativeElement.click();\r\n      }\r\n    }\r\n  }\r\n\r\n  _getAriaControls(): string | null {\r\n    return this._tabNavBar.tabPanel\r\n      ? this._tabNavBar.tabPanel?.id\r\n      : this.elementRef.nativeElement.getAttribute('aria-controls');\r\n  }\r\n\r\n  _getAriaSelected(): string | null {\r\n    return this._tabNavBar.tabPanel\r\n      ? this.active\r\n        ? 'true'\r\n        : 'false'\r\n      : this.elementRef.nativeElement.getAttribute('aria-selected');\r\n  }\r\n\r\n  _getAriaCurrent(): string | null {\r\n    return this.active && !this._tabNavBar.tabPanel ? 'page' : null;\r\n  }\r\n\r\n  _getRole(): string | null {\r\n    return this._tabNavBar.tabPanel ? 'tab' : this.elementRef.nativeElement.getAttribute('role');\r\n  }\r\n}\r\n\r\n@Component({\r\n  selector: 'md-tab-nav-panel',\r\n  exportAs: 'mdTabNavPanel',\r\n  template: '',\r\n  host: {\r\n    '[attr.aria-labelledby]': '_activeTabId',\r\n    '[attr.id]': 'id',\r\n    class: 'md-tab-nav-panel',\r\n    role: 'tabpanel',\r\n  },\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MDTabNavPanel {\r\n  @Input() id: string = inject(_IdGenerator).getId('md-tab-nav-panel-');\r\n\r\n  _activeTabId?: string;\r\n}\r\n","<div\r\n  class=\"mdc-tab-header-pagination mdc-tab-header-pagination-before\"\r\n  #previousPaginator\r\n  [class.mdc-tab-header-pagination-disabled]=\"_disableScrollBefore\"\r\n  (click)=\"_handlePaginatorClick('before')\"\r\n  (mousedown)=\"_handlePaginatorPress('before', $event)\"\r\n  (touchend)=\"_stopInterval()\">\r\n  <div class=\"mdc-tab-header-pagination-chevron\"></div>\r\n</div>\r\n\r\n<div\r\n  class=\"mdc-tab-label-container\"\r\n  #tabListContainer\r\n  (keydown)=\"_handleKeydown($event)\">\r\n  <div\r\n    #tabList\r\n    class=\"mdc-tab-list\"\r\n    [attr.role]=\"_getRole()\"\r\n    (cdkObserveContent)=\"_onContentChanges()\">\r\n    <div class=\"mdc-tab-labels\" #tabListInner>\r\n      <ng-content></ng-content>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<div\r\n  class=\"mdc-tab-header-pagination mdc-tab-header-pagination-after\"\r\n  #nextPaginator\r\n  [class.mdc-tab-header-pagination-disabled]=\"_disableScrollAfter\"\r\n  (mousedown)=\"_handlePaginatorPress('after', $event)\"\r\n  (click)=\"_handlePaginatorClick('after')\"\r\n  (touchend)=\"_stopInterval()\">\r\n  <div class=\"mdc-tab-header-pagination-chevron\"></div>\r\n</div>\r\n","<span class=\"mdc-tab__ripple\"></span>\r\n<span class=\"mdc-tab__content\">\r\n  <span class=\"mdc-tab__text-label\">\r\n    <ng-content></ng-content>\r\n  </span>\r\n</span>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MDTabContent } from './tab-content';\r\nimport { MDTabLabel } from './tab-label';\r\nimport { MDTab } from './tab';\r\nimport { MDTabGroup } from './tab-group';\r\nimport { MDTabLink, MDTabNav, MDTabNavPanel } from './tab-nav-bar';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, MDTabContent, MDTabLabel, MDTab, MDTabGroup, MDTabNav, MDTabLink, MDTabNavPanel],\r\n    exports: [MDTabContent, MDTabLabel, MDTab, MDTabGroup, MDTabNav, MDTabLink, MDTabNavPanel],\r\n})\r\nexport class MDTabsModule {}\r\n","import { _IdGenerator, FocusableOption } from '@angular/cdk/a11y';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  Output,\r\n  SimpleChanges,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  forwardRef,\r\n  numberAttribute,\r\n  inject,\r\n  HostAttributeToken,\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors,\r\n  Validator,\r\n} from '@angular/forms';\r\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\r\n\r\n/**\r\n * Finite states for the checkbox visual state machine.\r\n *\r\n * - `Init`: initial (pre-render) state\r\n * - `Checked`: box is checked\r\n * - `Unchecked`: box is unchecked\r\n *\r\n * Used to pick the proper animation class during transitions.\r\n */\r\nexport enum TransitionCheckState {\r\n  Init,\r\n  Checked,\r\n  Unchecked,\r\n}\r\n\r\n/**\r\n * Payload for `(change)` output.\r\n *\r\n * - `source`: reference to emitting checkbox instance\r\n * - `checked`: current boolean state after the change\r\n */\r\nexport class MDCheckboxChange {\r\n  /** Source checkbox that emitted the change. */\r\n  source: MDCheckBox;\r\n  /** Current checked state after the update. */\r\n  checked: boolean;\r\n}\r\n\r\n/**\r\n * Controls how a host click affects the checked state.\r\n *\r\n * - `'noop'`  — ignore host clicks (useful for fully-controlled mode)\r\n * - `'check'` — toggle on click (default)\r\n * - `undefined` — treated as default\r\n */\r\nexport type CheckboxClickAction = 'noop' | 'check' | undefined;\r\n\r\n@Component({\r\n  selector: 'md-checkbox',\r\n  templateUrl: 'checkbox.html',\r\n  styleUrl: 'checkbox.scss',\r\n  host: {\r\n    class: 'md-mdc-checkbox',\r\n    '[attr.tabindex]': 'null',\r\n    '[attr.aria-label]': 'null',\r\n    '[attr.aria-labelledby]': 'null',\r\n    '[class.animation-noopable]': '_animationsDisabled',\r\n    '[class.mdc-checkbox--disabled]': 'disabled',\r\n    '[id]': 'id',\r\n    '[class.mdc-checkbox-disabled]': 'disabled',\r\n    '[class.mdc-checkbox-checked]': 'checked',\r\n    '[class.mdc-checkbox-disabled-interactive]': 'disabledInteractive',\r\n    '[class]': 'color ? color : \"accent\"',\r\n  },\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MDCheckBox),\r\n      multi: true,\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: MDCheckBox,\r\n      multi: true,\r\n    },\r\n  ],\r\n  exportAs: 'mdCheckbox',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n/**\r\n * Material-like Checkbox with CVA + validation support.\r\n *\r\n * @remarks\r\n * - Implements Angular Forms interfaces (`ControlValueAccessor`, `Validator`).\r\n * - Emits {@link MDCheckBox.change | change} on user-driven updates.\r\n * - Applies CSS animation classes for state transitions (configurable).\r\n *\r\n * @example Template usage\r\n * ```html\r\n * <md-checkbox [(ngModel)]=\"checked\" (change)=\"onChanged($event)\">Remember me</md-checkbox>\r\n * ```\r\n */\r\nexport class MDCheckBox implements OnChanges, ControlValueAccessor, Validator, FocusableOption {\r\n  /** Host `ElementRef` for low-level DOM ops (focus mgmt, class toggles via templates). */\r\n  _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n  /** Change detector to mark view dirty on imperative state changes. */\r\n  private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n  /** Zone used to schedule work outside Angular for animation class cleanup. */\r\n  private _ngZone = inject(NgZone);\r\n\r\n  /** When true, skips adding animation classes to avoid motion. */\r\n  protected _animationsDisabled = false;\r\n\r\n  /**\r\n   * Local options bag (can be extended to accept DI-config in the future).\r\n   *\r\n   * - `color`: theme class on host (`'accent'` by default)\r\n   * - `clickAction`: how clicks affect toggle (default `'check'`)\r\n   * - `disabledInteractive`: allow certain focus/aria semantics even if disabled\r\n   */\r\n  private _options = {\r\n    color: 'accent',\r\n    clickAction: 'check',\r\n    disabledInteractive: false,\r\n  };\r\n\r\n  // ───────────────────────────── FocusableOption ─────────────────────────────\r\n\r\n  /**\r\n   * FocusableOption API (CDK lists, key manager, etc.).\r\n   * Delegates focus to the internal native `<input>`.\r\n   */\r\n  focus() {\r\n    this._inputElement.nativeElement.focus();\r\n  }\r\n\r\n  // ───────────────────────────── Events & helpers ─────────────────────────────\r\n\r\n  /**\r\n   * Factory for `(change)` event payloads.\r\n   * @param isChecked Final boolean state after user interaction/programmatic toggle.\r\n   */\r\n  protected _createChangeEvent(isChecked: boolean) {\r\n    const event = new MDCheckboxChange();\r\n    event.source = this;\r\n    event.checked = isChecked;\r\n    return event;\r\n  }\r\n\r\n  /**\r\n   * Returns the element on which animation classes are applied.\r\n   * Typically the native input or visual container around it.\r\n   */\r\n  protected _getAnimationTargetElement() {\r\n    return this._inputElement?.nativeElement;\r\n  }\r\n\r\n  /** Mapping of transition names to MDC animation classes. */\r\n  protected _animationClasses = {\r\n    uncheckedToChecked: 'mdc-checkbox--anim-unchecked-checked',\r\n    checkedToUnchecked: 'mdc-checkbox--anim-checked-unchecked',\r\n  };\r\n\r\n  // ───────────────────────────── A11y Inputs ─────────────────────────────\r\n\r\n  /** Accessible label text (if no external label is used). */\r\n  @Input('aria-label') ariaLabel: string = '';\r\n\r\n  /** Element id that labels this checkbox (preferred over `aria-label`). */\r\n  @Input('aria-labelledby') ariaLabelledby: string | null = null;\r\n\r\n  /** Element id that provides a description for this control. */\r\n  @Input('aria-describedby') ariaDescribedby: string;\r\n\r\n  /** Expanded state for composite widgets; rarely needed on a checkbox. */\r\n  @Input({ alias: 'aria-expanded', transform: booleanAttribute }) ariaExpanded: boolean;\r\n\r\n  /** Id of element(s) whose contents are controlled by this checkbox. */\r\n  @Input('aria-controls') ariaControls: string;\r\n\r\n  /** Id of element(s) owned by this checkbox. */\r\n  @Input('aria-owns') ariaOwns: string;\r\n\r\n  // ───────────────────────────── Identity / naming ─────────────────────────────\r\n\r\n  /** Unique id seed used for host and internal input id wiring. */\r\n  private _uniqueId: string;\r\n\r\n  /** Host element id; also used to derive input id if provided. */\r\n  @Input() id: string;\r\n\r\n  /** Computed id for the internal `<input>`. */\r\n  get inputId(): string {\r\n    return `${this.id || this._uniqueId}-input`;\r\n  }\r\n\r\n  // ───────────────────────────── Form-related inputs ─────────────────────────────\r\n\r\n  /** Whether the control is required; used by `Validator` implementation. */\r\n  @Input({ transform: booleanAttribute }) required: boolean;\r\n\r\n  /** Label placement relative to the box. @default 'after' */\r\n  @Input() labelPosition: 'before' | 'after' = 'after';\r\n\r\n  /** HTML `name` attribute of the internal input. */\r\n  @Input() name: string | null = null;\r\n\r\n  /**\r\n   * Fired when the user toggles the checkbox (after internal state is updated).\r\n   * Emits {@link MDCheckboxChange}.\r\n   */\r\n  @Output() readonly change = new EventEmitter<MDCheckboxChange>();\r\n\r\n  /** Optional value associated with this checkbox (for forms/radio-like patterns). */\r\n  @Input() value: string;\r\n\r\n  /** Reference to the native input (used for focus, syncing native state). */\r\n  @ViewChild('input') _inputElement: ElementRef<HTMLInputElement>;\r\n\r\n  /** Reference to the label element (used to stop click bubbling). */\r\n  @ViewChild('label') _labelElement: ElementRef<HTMLInputElement>;\r\n\r\n  /**\r\n   * Tab order for the internal input. If `null/undefined` — defaults to `0`.\r\n   * Accepts string/number; normalized via `numberAttribute`.\r\n   */\r\n  @Input({ transform: (value: unknown) => (value == null ? undefined : numberAttribute(value)) })\r\n  tabIndex: number;\r\n\r\n  /** Theme color token applied as a host class (e.g., `'accent'`, `'primary'`). */\r\n  @Input() color: string | undefined;\r\n\r\n  /**\r\n   * When true, allows certain interactions even in disabled state.\r\n   * Useful when a disabled checkbox still needs focus/aria semantics.\r\n   */\r\n  @Input({ transform: booleanAttribute }) disabledInteractive: boolean;\r\n\r\n  /** onTouched callback provided by Angular Forms. */\r\n  _onTouched: () => any = () => {};\r\n\r\n  /** Currently applied animation class; cleared after timeout. */\r\n  private _currentAnimationClass: string = '';\r\n\r\n  /** Last known check state to compute transition direction. */\r\n  private _currentCheckState: TransitionCheckState = TransitionCheckState.Init;\r\n\r\n  /** onChange callback provided by Angular Forms (propagates model updates). */\r\n  private _controlValueAccessorChangeFn: (value: any) => void = () => {};\r\n\r\n  /** Hook to notify Angular Forms that validator inputs changed. */\r\n  private _validatorChangeFn = () => {};\r\n\r\n  constructor() {\r\n    const tabIndex = inject(new HostAttributeToken('tabindex'), { optional: true });\r\n    this._options = this._options;\r\n    this.color = this._options.color;\r\n    this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\r\n    this.id = this._uniqueId = inject(_IdGenerator).getId('mdc-checkbox-');\r\n    this.disabledInteractive = this._options?.disabledInteractive ?? false;\r\n  }\r\n\r\n  // ───────────────────────────── Angular lifecycle ─────────────────────────────\r\n\r\n  /** On input changes (e.g., `required` toggled), re-run validator if needed. */\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes['required']) {\r\n      this._validatorChangeFn();\r\n    }\r\n  }\r\n\r\n  // ───────────────────────────── State: checked/disabled ─────────────────────────────\r\n\r\n  /** Current boolean state (getter). */\r\n  @Input({ transform: booleanAttribute })\r\n  get checked(): boolean {\r\n    return this._checked;\r\n  }\r\n  /**\r\n   * Setter that marks view for check under OnPush strategy.\r\n   * Avoids unnecessary marks if value didn't change.\r\n   */\r\n  set checked(value: boolean) {\r\n    if (value != this.checked) {\r\n      this._checked = value;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n  private _checked: boolean = false;\r\n\r\n  /** Disabled state (getter). */\r\n  @Input({ transform: booleanAttribute })\r\n  get disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n  /**\r\n   * Setter that marks view for check under OnPush strategy.\r\n   * Avoids unnecessary marks if value didn't change.\r\n   */\r\n  set disabled(value: boolean) {\r\n    if (value !== this.disabled) {\r\n      this._disabled = value;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n  private _disabled: boolean = false;\r\n\r\n  // ───────────────────────────── Misc handlers ─────────────────────────────\r\n\r\n  /**\r\n   * Force change detection when projected label text mutates (e.g., via i18n async).\r\n   * Called from template via `(cdkObserveContent)` or similar.\r\n   */\r\n  _onLabelTextChange() {\r\n    this._changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  // ───────────────────────────── ControlValueAccessor ─────────────────────────────\r\n\r\n  /** Writes a new value from the model into the view. */\r\n  writeValue(value: any) {\r\n    this.checked = !!value;\r\n  }\r\n\r\n  /** Registers a callback to be triggered when the value changes in the UI. */\r\n  registerOnChange(fn: (value: any) => void) {\r\n    this._controlValueAccessorChangeFn = fn;\r\n  }\r\n\r\n  /** Registers a callback for the control being touched (blurred). */\r\n  registerOnTouched(fn: any) {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  /** Enables or disables the control from the Angular Forms API. */\r\n  setDisabledState(isDisabled: boolean) {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  // ───────────────────────────── Validator ─────────────────────────────\r\n\r\n  /**\r\n   * Synchronous validation: if `required`, only `true` is valid.\r\n   */\r\n  validate(control: AbstractControl<boolean>): ValidationErrors | null {\r\n    return this.required && control.value !== true ? { required: true } : null;\r\n  }\r\n\r\n  /** Informs Angular Forms that validators should be re-run. */\r\n  registerOnValidatorChange(fn: () => void): void {\r\n    this._validatorChangeFn = fn;\r\n  }\r\n\r\n  // ───────────────────────────── Animations ─────────────────────────────\r\n\r\n  /**\r\n   * Applies/removes the appropriate animation CSS class for the transition.\r\n   * Cleans up the class after a timeout (~duration of the CSS animation).\r\n   */\r\n  private _transitionCheckState(newState: TransitionCheckState) {\r\n    let oldState = this._currentCheckState;\r\n    let element = this._getAnimationTargetElement();\r\n\r\n    if (oldState === newState || !element) {\r\n      return;\r\n    }\r\n    if (this._currentAnimationClass) {\r\n      element.classList.remove(this._currentAnimationClass);\r\n    }\r\n\r\n    this._currentAnimationClass = this._getAnimationClassForCheckStateTransition(oldState, newState);\r\n    this._currentCheckState = newState;\r\n\r\n    if (this._currentAnimationClass.length > 0) {\r\n      element.classList.add(this._currentAnimationClass);\r\n      const animationClass = this._currentAnimationClass;\r\n\r\n      this._ngZone.runOutsideAngular(() => {\r\n        setTimeout(() => {\r\n          element!.classList.remove(animationClass);\r\n        }, 1000);\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Picks the correct CSS animation class for a given `old → new` transition.\r\n   * Returns empty string when animations are disabled.\r\n   */\r\n  private _getAnimationClassForCheckStateTransition(\r\n    oldState: TransitionCheckState,\r\n    newState: TransitionCheckState\r\n  ): string {\r\n    if (this._animationsDisabled) {\r\n      return '';\r\n    }\r\n\r\n    switch (oldState) {\r\n      case TransitionCheckState.Init:\r\n        if (newState === TransitionCheckState.Checked) {\r\n          return this._animationClasses.uncheckedToChecked;\r\n        }\r\n        break;\r\n      case TransitionCheckState.Unchecked:\r\n        return this._animationClasses.uncheckedToChecked;\r\n      case TransitionCheckState.Checked:\r\n        return this._animationClasses.checkedToUnchecked;\r\n    }\r\n\r\n    return '';\r\n  }\r\n\r\n  // ───────────────────────────── UI events ─────────────────────────────\r\n\r\n  /** Host handler for click on the native `<input>`. */\r\n  _onInputClick() {\r\n    this._handleInputClick();\r\n  }\r\n\r\n  /**\r\n   * Click on the larger touch target (ripple/visual area) should toggle as well.\r\n   * Also refocuses the real input if not disabled to preserve keyboard flow.\r\n   */\r\n  _onTouchTargetClick() {\r\n    this._handleInputClick();\r\n\r\n    if (!this.disabled) {\r\n      this._inputElement.nativeElement.focus();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Prevent outer components from reacting to internal mouse/keyboard events.\r\n   */\r\n  _onInteractionEvent(event: Event) {\r\n    event.stopPropagation();\r\n  }\r\n\r\n  /**\r\n   * Mark as touched after blur has fully propagated to avoid change collisions.\r\n   */\r\n  _onBlur() {\r\n    Promise.resolve().then(() => {\r\n      this._onTouched();\r\n      this._changeDetectorRef.markForCheck();\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Centralized click handler used by input/touch-target.\r\n   * Respects disabled state and `clickAction` behavior.\r\n   */\r\n  protected _handleInputClick() {\r\n    const clickAction = this._options?.clickAction;\r\n\r\n    if (!this.disabled && clickAction !== 'noop') {\r\n      this._checked = !this._checked;\r\n      this._transitionCheckState(this._checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\r\n      this._emitChangeEvent();\r\n    } else if ((this.disabled && this.disabledInteractive) || (!this.disabled && clickAction === 'noop')) {\r\n      this._inputElement.nativeElement.checked = this.checked;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Emits Angular Forms change, fires `(change)` output, and syncs native input state.\r\n   */\r\n  private _emitChangeEvent() {\r\n    this._controlValueAccessorChangeFn(this.checked);\r\n    this.change.emit(this._createChangeEvent(this.checked));\r\n    if (this._inputElement) {\r\n      this._inputElement.nativeElement.checked = this.checked;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Programmatic toggle (e.g., from parent component).\r\n   * Also notifies Angular Forms via registered `onChange` callback.\r\n   */\r\n  toggle(): void {\r\n    this.checked = !this.checked;\r\n    this._controlValueAccessorChangeFn(this.checked);\r\n  }\r\n\r\n  /**\r\n   * If a click originates from inside the label element, stop it from bubbling\r\n   * to avoid double-handling (host click + input click).\r\n   */\r\n  _preventBubblingFromLabel(event: MouseEvent) {\r\n    if (!!event.target && this._labelElement.nativeElement.contains(event.target as HTMLElement)) {\r\n      event.stopPropagation();\r\n    }\r\n  }\r\n}\r\n","<div class=\"checkbox-internal-field\" (click)=\"_preventBubblingFromLabel($event)\">\r\n    <div #checkbox class=\"mdc-checkbox\">\r\n        <div class=\"mdc-checkbox-touch-target\" (click)=\"_onTouchTargetClick()\"></div>\r\n        <input\r\n            #input\r\n            type=\"checkbox\"\r\n            class=\"mdc-checkbox__native-control\"\r\n            [class.mdc-checkbox--selected]=\"checked\"\r\n            [attr.aria-label]=\"ariaLabel || null\"\r\n            [attr.aria-labelledby]=\"ariaLabelledby\"\r\n            [attr.aria-describedby]=\"ariaDescribedby\"\r\n            [attr.aria-controls]=\"ariaControls\"\r\n            [attr.aria-disabled]=\"disabled && disabledInteractive ? true : null\"\r\n            [attr.aria-expanded]=\"ariaExpanded\"\r\n            [attr.aria-owns]=\"ariaOwns\"\r\n            [attr.name]=\"name\"\r\n            [attr.value]=\"value\"\r\n            [checked]=\"checked\"\r\n            [disabled]=\"disabled && !disabledInteractive\"\r\n            [id]=\"inputId\"\r\n            [required]=\"required\"\r\n            [tabIndex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\r\n            (blur)=\"_onBlur()\"\r\n            (click)=\"_onInputClick()\"\r\n            (change)=\"_onInteractionEvent($event)\"\r\n        />\r\n        <div class=\"mdc-checkbox__background\">\r\n            <svg class=\"mdc-checkbox__checkmark\" focusable=\"false\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n                <path class=\"mdc-checkbox__checkmark-path\" fill=\"none\" d=\"M1.73,12.91 8.1,19.28 22.79,4.59\" />\r\n            </svg>\r\n            <div class=\"mdc-checkbox__mixedmark\"></div>\r\n        </div>\r\n    </div>\r\n\r\n    <label class=\"mdc-label\" #label [for]=\"inputId\">\r\n        <ng-content></ng-content>\r\n    </label>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MDCheckBox } from './checkbox';\r\n\r\n@NgModule({\r\n    imports: [MDCheckBox],\r\n    exports: [MDCheckBox],\r\n})\r\nexport class MDCheckBoxModule {}\r\n","import {\r\n  AfterContentInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  EventEmitter,\r\n  InjectionToken,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  QueryList,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  inject,\r\n} from '@angular/core';\r\nimport {_IdGenerator, ActiveDescendantKeyManager} from '@angular/cdk/a11y';\r\nimport {Platform} from '@angular/cdk/platform';\r\nimport {Subscription} from 'rxjs';\r\nimport { MDOption, MDOptionGroup } from '../select';\r\n\r\nexport class MDAutocompleteSelectedEvent {\r\n  constructor(\r\n    public source: MDAutocomplete,\r\n    public option: MDOption,\r\n  ) {}\r\n}\r\n\r\nexport interface MDAutocompleteActivatedEvent {\r\n  source: MDAutocomplete;\r\n  option: MDOption | null;\r\n}\r\n\r\nexport interface MdAutocompleteDefaultOptions {\r\n  autoActiveFirstOption?: boolean;\r\n  autoSelectActiveOption?: boolean;\r\n  requireSelection?: boolean;\r\n  backdropClass?: string;\r\n  hasBackdrop?: boolean;\r\n  overlayPanelClass?: string | string[];\r\n  hideSingleSelectionIndicator?: boolean;\r\n}\r\n\r\nexport const MD_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken<MdAutocompleteDefaultOptions>(\r\n  'md-autocomplete-default-options',\r\n  {\r\n    providedIn: 'root',\r\n    factory: () => ({\r\n      autoActiveFirstOption: false,\r\n      autoSelectActiveOption: false,\r\n      hideSingleSelectionIndicator: false,\r\n      requireSelection: false,\r\n      hasBackdrop: false,\r\n    }),\r\n  },\r\n);\r\n\r\nexport interface MDOptionParentComponent {\r\n  multiple?: boolean;\r\n  inertGroups?: boolean;\r\n  hideSingleSelectionIndicator?: boolean;\r\n}\r\n\r\nexport const MD_OPTION_PARENT_COMPONENT = new InjectionToken<MDOptionParentComponent>(\r\n  'MD_OPTION_PARENT_COMPONENT',\r\n);\r\n\r\n@Component({\r\n  selector: 'md-autocomplete',\r\n  templateUrl: 'autocomplete.html',\r\n  styleUrl: 'autocomplete.scss',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  exportAs: 'mdAutocomplete',\r\n  host: {\r\n    'class': 'md-mdc-autocomplete',\r\n  },\r\n  providers: [{provide: MD_OPTION_PARENT_COMPONENT, useExisting: MDAutocomplete}],\r\n})\r\nexport class MDAutocomplete implements AfterContentInit, OnDestroy {\r\n  private _changeDetectorRef = inject(ChangeDetectorRef);\r\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  protected _defaults = inject<MdAutocompleteDefaultOptions>(MD_AUTOCOMPLETE_DEFAULT_OPTIONS);\r\n  private _activeOptionChanges = Subscription.EMPTY;\r\n\r\n  _keyManager: ActiveDescendantKeyManager<MDOption>;\r\n  showPanel: boolean = false;\r\n\r\n  get isOpen(): boolean {\r\n    return this._isOpen && this.showPanel;\r\n  }\r\n  _isOpen: boolean = false;\r\n  _latestOpeningTrigger: unknown;\r\n\r\n  @ViewChild(TemplateRef, {static: true}) template: TemplateRef<any>;\r\n  @ViewChild('panel') panel: ElementRef;\r\n  @ContentChildren(MDOption, {descendants: true}) options: QueryList<MDOption>;\r\n  @ContentChildren(MDOptionGroup, {descendants: true}) optionGroups: QueryList<MDOptionGroup>;\r\n  @Input('aria-label') ariaLabel: string;\r\n  @Input('aria-labelledby') ariaLabelledby: string;\r\n  @Input() displayWith: ((value: any) => string) | null = null;\r\n  @Input({transform: booleanAttribute}) autoActiveFirstOption: boolean;\r\n  @Input({transform: booleanAttribute}) autoSelectActiveOption: boolean;\r\n  @Input({transform: booleanAttribute}) requireSelection: boolean;\r\n  @Input() panelWidth: string | number;\r\n  @Input() _animationsDisabled: boolean = false;\r\n\r\n  @Output() readonly optionSelected = new EventEmitter<MDAutocompleteSelectedEvent>();\r\n  @Output() readonly opened = new EventEmitter<void>();\r\n  @Output() readonly closed = new EventEmitter<void>();\r\n  @Output() readonly optionActivated = new EventEmitter<MDAutocompleteActivatedEvent>();\r\n\r\n  @Input('class')\r\n  set classList(value: string | string[]) {\r\n    this._classList = value;\r\n    this._elementRef.nativeElement.className = '';\r\n  }\r\n  _classList: string | string[];\r\n\r\n  @Input({transform: booleanAttribute})\r\n  get hideSingleSelectionIndicator(): boolean {\r\n    return this._hideSingleSelectionIndicator;\r\n  }\r\n  set hideSingleSelectionIndicator(value: boolean) {\r\n    this._hideSingleSelectionIndicator = value;\r\n    this._syncParentProperties();\r\n  }\r\n  private _hideSingleSelectionIndicator: boolean;\r\n\r\n  _syncParentProperties(): void {\r\n    if (this.options) {\r\n      for (const option of this.options) {\r\n        option._changeDetectorRef.markForCheck();\r\n      }\r\n    }\r\n  }\r\n\r\n  id: string = inject(_IdGenerator).getId('md-autocomplete-');\r\n  readonly inertGroups: boolean;\r\n\r\n  constructor() {\r\n    const platform = inject(Platform);\r\n    this.inertGroups = platform?.SAFARI || false;\r\n    this.autoActiveFirstOption = !!this._defaults.autoActiveFirstOption;\r\n    this.autoSelectActiveOption = !!this._defaults.autoSelectActiveOption;\r\n    this.requireSelection = !!this._defaults.requireSelection;\r\n    this._hideSingleSelectionIndicator = this._defaults.hideSingleSelectionIndicator ?? false;\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    this._keyManager = new ActiveDescendantKeyManager<MDOption>(this.options)\r\n      .withWrap()\r\n      .skipPredicate(this._skipPredicate);\r\n    this._activeOptionChanges = this._keyManager.change.subscribe(index => {\r\n      if (this.isOpen) {\r\n        this.optionActivated.emit({source: this, option: this.options.toArray()[index] || null});\r\n      }\r\n    });\r\n    this._setVisibility();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._keyManager?.destroy();\r\n    this._activeOptionChanges.unsubscribe();\r\n  }\r\n\r\n  _setScrollTop(scrollTop: number): void {\r\n    if (this.panel) {\r\n      this.panel.nativeElement.scrollTop = scrollTop;\r\n    }\r\n  }\r\n\r\n  _getScrollTop(): number {\r\n    return this.panel ? this.panel.nativeElement.scrollTop : 0;\r\n  }\r\n\r\n  _setVisibility() {\r\n    this.showPanel = !!this.options?.length;\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  _emitSelectEvent(option: MDOption): void {\r\n    const event = new MDAutocompleteSelectedEvent(this, option);\r\n    this.optionSelected.emit(event);\r\n  }\r\n\r\n  _getPanelAriaLabelledby(labelId: string | null): string | null {\r\n    if (this.ariaLabel) {\r\n      return null;\r\n    }\r\n    const labelExpression = labelId ? labelId + ' ' : '';\r\n    return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\r\n  }\r\n\r\n  protected _skipPredicate() {\r\n    return false;\r\n  }\r\n}\r\n","<ng-template>\r\n  <div\r\n    class=\"md-mdc-autocomplete-panel mdc-menu-surface mdc-menu-surface--open\"\r\n    role=\"listbox\"\r\n    [id]=\"id\"\r\n    [class]=\"_classList\"\r\n    [class.md-mdc-autocomplete-visible]=\"showPanel\"\r\n    [class.md-mdc-autocomplete-hidden]=\"!showPanel\"\r\n    [class.md-autocomplete-panel-animations-enabled]=\"!_animationsDisabled\"\r\n    [class.md-primary]=\"_color === 'primary'\"\r\n    [class.md-accent]=\"_color === 'accent'\"\r\n    [class.md-warn]=\"_color === 'warn'\"\r\n    [attr.aria-label]=\"ariaLabel || null\"\r\n    #panel>\r\n    <ng-content></ng-content>\r\n  </div>\r\n</ng-template>","import {Directive, ElementRef, inject} from '@angular/core';\r\n\r\n\r\n@Directive({\r\n  selector: '[mdAutocompleteOrigin]',\r\n  exportAs: 'mdAutocompleteOrigin',\r\n})\r\nexport class MDAutocompleteOrigin {\r\n  elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n  constructor() {}\r\n}","import { addAriaReferencedId, removeAriaReferencedId } from '@angular/cdk/a11y';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport {\r\n    ConnectedPosition,\r\n    createFlexibleConnectedPositionStrategy,\r\n    createOverlayRef,\r\n    createRepositionScrollStrategy,\r\n    FlexibleConnectedPositionStrategy,\r\n    OverlayConfig,\r\n    OverlayRef,\r\n    PositionStrategy,\r\n    ScrollStrategy,\r\n} from '@angular/cdk/overlay';\r\nimport { _getEventTarget, _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ViewportRuler } from '@angular/cdk/scrolling';\r\nimport {\r\n    AfterViewInit,\r\n    ChangeDetectorRef,\r\n    Directive,\r\n    ElementRef,\r\n    EnvironmentInjector,\r\n    InjectionToken,\r\n    Injector,\r\n    Input,\r\n    NgZone,\r\n    OnChanges,\r\n    OnDestroy,\r\n    Renderer2,\r\n    SimpleChanges,\r\n    ViewContainerRef,\r\n    afterNextRender,\r\n    booleanAttribute,\r\n    forwardRef,\r\n    inject,\r\n} from '@angular/core';\r\nimport { coerceArray } from '@angular/cdk/coercion';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Observable, Subject, Subscription, defer, merge, of as observableOf } from 'rxjs';\r\nimport { delay, filter, map, startWith, switchMap, take, tap } from 'rxjs/operators';\r\nimport { MD_AUTOCOMPLETE_DEFAULT_OPTIONS, MDAutocomplete, MdAutocompleteDefaultOptions } from './autocomplete';\r\nimport { MDAutocompleteOrigin } from './autocomplete-origin';\r\nimport { MDOption, MDOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition } from '../select';\r\n\r\nexport const MD_AUTOCOMPLETE_VALUE_ACCESSOR: any = {\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => MDAutocompleteTrigger),\r\n    multi: true,\r\n};\r\n\r\nexport function getMDAutocompleteMissingPanelError(): Error {\r\n    return Error(\r\n        'Attempting to open an undefined instance of `md-autocomplete`. ' +\r\n            'Make sure that the id passed to the `mdAutocomplete` is correct and that ' +\r\n            \"you're attempting to open it after the ngAfterContentInit hook.\"\r\n    );\r\n}\r\n\r\nexport const MD_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\r\n    'md-autocomplete-scroll-strategy',\r\n    {\r\n        providedIn: 'root',\r\n        factory: () => {\r\n            const injector = inject(Injector);\r\n            return () => createRepositionScrollStrategy(injector);\r\n        },\r\n    }\r\n);\r\n\r\n@Directive({\r\n    selector: `input[mdAutocomplete], textarea[mdAutocomplete]`,\r\n    host: {\r\n        class: 'md-mdc-autocomplete-trigger',\r\n        '[attr.autocomplete]': 'autocompleteAttribute',\r\n        '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\r\n        '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\r\n        '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\r\n        '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\r\n        '[attr.aria-controls]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\r\n        '[attr.aria-haspopup]': 'autocompleteDisabled ? null : \"listbox\"',\r\n        '(focusin)': '_handleFocus()',\r\n        '(blur)': '_onTouched()',\r\n        '(input)': '_handleInput($event)',\r\n        '(keydown)': '_handleKeydown($event)',\r\n        '(click)': '_handleClick()',\r\n    },\r\n    exportAs: 'mdAutocompleteTrigger',\r\n    providers: [MD_AUTOCOMPLETE_VALUE_ACCESSOR],\r\n})\r\nexport class MDAutocompleteTrigger implements ControlValueAccessor, AfterViewInit, OnChanges, OnDestroy {\r\n    private _environmentInjector = inject(EnvironmentInjector);\r\n    private _element = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n    private _injector = inject(Injector);\r\n    private _viewContainerRef = inject(ViewContainerRef);\r\n    private _zone = inject(NgZone);\r\n    private _changeDetectorRef = inject(ChangeDetectorRef);\r\n    private _dir = inject(Directionality, { optional: true });\r\n    private _viewportRuler = inject(ViewportRuler);\r\n    private _scrollStrategy = inject(MD_AUTOCOMPLETE_SCROLL_STRATEGY);\r\n    private _renderer = inject(Renderer2);\r\n    private _animationsDisabled = false;\r\n    private _defaults = inject<MdAutocompleteDefaultOptions | null>(MD_AUTOCOMPLETE_DEFAULT_OPTIONS, {\r\n        optional: true,\r\n    });\r\n\r\n    private _overlayRef: OverlayRef | null;\r\n    private _portal: TemplatePortal;\r\n    private _componentDestroyed = false;\r\n    private _initialized = new Subject<void>();\r\n    private _keydownSubscription: Subscription | null;\r\n    private _outsideClickSubscription: Subscription | null;\r\n    private _cleanupWindowBlur: (() => void) | undefined;\r\n\r\n    private _previousValue: string | number | null;\r\n\r\n    private _valueOnAttach: string | number | null;\r\n\r\n    private _valueOnLastKeydown: string | null;\r\n\r\n    private _positionStrategy: FlexibleConnectedPositionStrategy;\r\n\r\n    private _manuallyFloatingLabel = false;\r\n\r\n    private _closingActionsSubscription: Subscription;\r\n\r\n    private _viewportSubscription = Subscription.EMPTY;\r\n\r\n    private _breakpointObserver = inject(BreakpointObserver);\r\n    private _handsetLandscapeSubscription = Subscription.EMPTY;\r\n\r\n    private _canOpenOnNextFocus = true;\r\n\r\n    private _valueBeforeAutoSelection: string | undefined;\r\n\r\n    private _pendingAutoselectedOption: MDOption | null;\r\n\r\n    private readonly _closeKeyEventStream = new Subject<void>();\r\n\r\n    readonly _overlayPanelClass = coerceArray(this._defaults?.overlayPanelClass || []);\r\n\r\n    private _windowBlurHandler = () => {\r\n        this._canOpenOnNextFocus = this.panelOpen || !this._hasFocus();\r\n    };\r\n\r\n    _onChange: (value: any) => void = () => {};\r\n\r\n    _onTouched = () => {};\r\n\r\n    @Input('mdAutocomplete') autocomplete: MDAutocomplete;\r\n\r\n    @Input('mdAutocompletePosition') position: 'auto' | 'above' | 'below' = 'auto';\r\n\r\n    @Input('mdAutocompleteConnectedTo') connectedTo: MDAutocompleteOrigin;\r\n\r\n    @Input('autocomplete') autocompleteAttribute: string = 'off';\r\n\r\n    @Input({ alias: 'mdAutocompleteDisabled', transform: booleanAttribute })\r\n    autocompleteDisabled: boolean;\r\n\r\n    constructor(...args: unknown[]);\r\n    constructor() {}\r\n\r\n    private _aboveClass = 'md-mdc-autocomplete-panel-above';\r\n\r\n    ngAfterViewInit() {\r\n        this._initialized.next();\r\n        this._initialized.complete();\r\n        this._cleanupWindowBlur = this._renderer.listen('window', 'blur', this._windowBlurHandler);\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes['position'] && this._positionStrategy) {\r\n            this._setStrategyPositions(this._positionStrategy);\r\n\r\n            if (this.panelOpen) {\r\n                this._overlayRef!.updatePosition();\r\n            }\r\n        }\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this._cleanupWindowBlur?.();\r\n        this._handsetLandscapeSubscription.unsubscribe();\r\n        this._viewportSubscription.unsubscribe();\r\n        this._componentDestroyed = true;\r\n        this._destroyPanel();\r\n        this._closeKeyEventStream.complete();\r\n        this._clearFromModal();\r\n    }\r\n\r\n    get panelOpen(): boolean {\r\n        return this._overlayAttached && this.autocomplete.showPanel;\r\n    }\r\n    private _overlayAttached: boolean = false;\r\n\r\n    openPanel(): void {\r\n        this._openPanelInternal();\r\n    }\r\n\r\n    closePanel(): void {\r\n        if (!this._overlayAttached) {\r\n            return;\r\n        }\r\n\r\n        if (this.panelOpen) {\r\n            this._zone.run(() => {\r\n                this.autocomplete.closed.emit();\r\n            });\r\n        }\r\n\r\n        if (this.autocomplete._latestOpeningTrigger === this) {\r\n            this.autocomplete._isOpen = false;\r\n            this.autocomplete._latestOpeningTrigger = null;\r\n        }\r\n\r\n        this._overlayAttached = false;\r\n        this._pendingAutoselectedOption = null;\r\n\r\n        if (this._overlayRef && this._overlayRef.hasAttached()) {\r\n            this._overlayRef.detach();\r\n            this._closingActionsSubscription.unsubscribe();\r\n        }\r\n\r\n        this._updatePanelState();\r\n\r\n        if (!this._componentDestroyed) {\r\n            this._changeDetectorRef.detectChanges();\r\n        }\r\n\r\n        if (this._trackedModal) {\r\n            removeAriaReferencedId(this._trackedModal, 'aria-owns', this.autocomplete.id);\r\n        }\r\n    }\r\n\r\n    updatePosition(): void {\r\n        if (this._overlayAttached) {\r\n            this._overlayRef!.updatePosition();\r\n        }\r\n    }\r\n\r\n    get panelClosingActions(): Observable<MDOptionSelectionChange | null> {\r\n        return merge(\r\n            this.optionSelections,\r\n            this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)),\r\n            this._closeKeyEventStream,\r\n            this._getOutsideClickStream(),\r\n            this._overlayRef ? this._overlayRef.detachments().pipe(filter(() => this._overlayAttached)) : observableOf()\r\n        ).pipe(map((event) => (event instanceof MDOptionSelectionChange ? event : null)));\r\n    }\r\n\r\n    readonly optionSelections: Observable<MDOptionSelectionChange> = defer(() => {\r\n        const options = this.autocomplete ? this.autocomplete.options : null;\r\n\r\n        if (options) {\r\n            return options.changes.pipe(\r\n                startWith(options),\r\n                switchMap(() => merge(...options.map((option) => option.onSelectionChange)))\r\n            );\r\n        }\r\n\r\n        return this._initialized.pipe(switchMap(() => this.optionSelections));\r\n    }) as Observable<MDOptionSelectionChange>;\r\n\r\n    get activeOption(): MDOption | null {\r\n        if (this.autocomplete && this.autocomplete._keyManager) {\r\n            return this.autocomplete._keyManager.activeItem;\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    private _getOutsideClickStream(): Observable<any> {\r\n        return new Observable((observer) => {\r\n            const listener = (event: MouseEvent | TouchEvent) => {\r\n                const clickTarget = _getEventTarget<HTMLElement>(event)!;\r\n                const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\r\n\r\n                if (\r\n                    this._overlayAttached &&\r\n                    clickTarget !== this._element.nativeElement &&\r\n                    !this._hasFocus() &&\r\n                    (!customOrigin || !customOrigin.contains(clickTarget)) &&\r\n                    !!this._overlayRef &&\r\n                    !this._overlayRef.overlayElement.contains(clickTarget)\r\n                ) {\r\n                    observer.next(event);\r\n                }\r\n            };\r\n\r\n            const cleanups = [\r\n                this._renderer.listen('document', 'click', listener),\r\n                this._renderer.listen('document', 'auxclick', listener),\r\n                this._renderer.listen('document', 'touchend', listener),\r\n            ];\r\n\r\n            return () => {\r\n                cleanups.forEach((current) => current());\r\n            };\r\n        });\r\n    }\r\n\r\n    writeValue(value: any): void {\r\n        Promise.resolve(null).then(() => this._assignOptionValue(value));\r\n    }\r\n\r\n    registerOnChange(fn: (value: any) => {}): void {\r\n        this._onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: () => {}) {\r\n        this._onTouched = fn;\r\n    }\r\n\r\n    setDisabledState(isDisabled: boolean) {\r\n        this._element.nativeElement.disabled = isDisabled;\r\n    }\r\n\r\n    _handleKeydown(e: Event): void {\r\n        const event = e as KeyboardEvent;\r\n        const keyCode = event.keyCode;\r\n        const hasModifier = hasModifierKey(event);\r\n\r\n        if (keyCode === ESCAPE && !hasModifier) {\r\n            event.preventDefault();\r\n        }\r\n\r\n        this._valueOnLastKeydown = this._element.nativeElement.value;\r\n\r\n        if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {\r\n            this.activeOption._selectViaInteraction();\r\n            this._resetActiveItem();\r\n            event.preventDefault();\r\n        } else if (this.autocomplete) {\r\n            const prevActiveItem = this.autocomplete._keyManager.activeItem;\r\n            const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\r\n\r\n            if (keyCode === TAB || (isArrowKey && !hasModifier && this.panelOpen)) {\r\n                this.autocomplete._keyManager.onKeydown(event);\r\n            } else if (isArrowKey && this._canOpen()) {\r\n                this._openPanelInternal(this._valueOnLastKeydown);\r\n            }\r\n\r\n            if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\r\n                this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\r\n\r\n                if (this.autocomplete.autoSelectActiveOption && this.activeOption) {\r\n                    if (!this._pendingAutoselectedOption) {\r\n                        this._valueBeforeAutoSelection = this._valueOnLastKeydown;\r\n                    }\r\n\r\n                    this._pendingAutoselectedOption = this.activeOption;\r\n                    this._assignOptionValue(this.activeOption.value);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    _handleInput(event: Event): void {\r\n        let target = event.target as HTMLInputElement;\r\n        let value: number | string | null = target.value;\r\n\r\n        if (target.type === 'number') {\r\n            value = value == '' ? null : parseFloat(value);\r\n        }\r\n\r\n        if (this._previousValue !== value) {\r\n            this._previousValue = value;\r\n            this._pendingAutoselectedOption = null;\r\n\r\n            if (!this.autocomplete || !this.autocomplete.requireSelection) {\r\n                this._onChange(value);\r\n            }\r\n\r\n            if (!value) {\r\n                this._clearPreviousSelectedOption(null, false);\r\n            } else if (this.panelOpen && !this.autocomplete.requireSelection) {\r\n                const selectedOption = this.autocomplete.options?.find((option) => option.selected);\r\n\r\n                if (selectedOption) {\r\n                    const display = this._getDisplayValue(selectedOption.value);\r\n\r\n                    if (value !== display) {\r\n                        selectedOption.deselect(false);\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (this._canOpen() && this._hasFocus()) {\r\n                const valueOnAttach = this._valueOnLastKeydown ?? this._element.nativeElement.value;\r\n                this._valueOnLastKeydown = null;\r\n                this._openPanelInternal(valueOnAttach);\r\n            }\r\n        }\r\n    }\r\n\r\n    _handleFocus(): void {\r\n        if (!this._canOpenOnNextFocus) {\r\n            this._canOpenOnNextFocus = true;\r\n        } else if (this._canOpen()) {\r\n            this._previousValue = this._element.nativeElement.value;\r\n            this._attachOverlay(this._previousValue);\r\n        }\r\n    }\r\n\r\n    _handleClick(): void {\r\n        if (this._canOpen() && !this.panelOpen) {\r\n            this._openPanelInternal();\r\n        }\r\n    }\r\n\r\n    private _hasFocus(): boolean {\r\n        return _getFocusedElementPierceShadowDom() === this._element.nativeElement;\r\n    }\r\n\r\n    private _subscribeToClosingActions(): Subscription {\r\n        const initialRender = new Observable<void>((subscriber) => {\r\n            afterNextRender(\r\n                () => {\r\n                    subscriber.next();\r\n                },\r\n                { injector: this._environmentInjector }\r\n            );\r\n        });\r\n        const optionChanges =\r\n            this.autocomplete.options?.changes.pipe(\r\n                tap(() => this._positionStrategy.reapplyLastPosition()),\r\n                delay(0)\r\n            ) ?? observableOf();\r\n\r\n        return merge(initialRender, optionChanges)\r\n            .pipe(\r\n                switchMap(() =>\r\n                    this._zone.run(() => {\r\n                        const wasOpen = this.panelOpen;\r\n                        this._resetActiveItem();\r\n                        this._updatePanelState();\r\n                        this._changeDetectorRef.detectChanges();\r\n\r\n                        if (this.panelOpen) {\r\n                            this._overlayRef!.updatePosition();\r\n                        }\r\n\r\n                        if (wasOpen !== this.panelOpen) {\r\n                            if (this.panelOpen) {\r\n                                this._emitOpened();\r\n                            } else {\r\n                                this.autocomplete.closed.emit();\r\n                            }\r\n                        }\r\n\r\n                        return this.panelClosingActions;\r\n                    })\r\n                ),\r\n                take(1)\r\n            )\r\n            .subscribe((event) => this._setValueAndClose(event));\r\n    }\r\n\r\n    private _emitOpened() {\r\n        this.autocomplete.opened.emit();\r\n    }\r\n\r\n    private _destroyPanel(): void {\r\n        if (this._overlayRef) {\r\n            this.closePanel();\r\n            this._overlayRef.dispose();\r\n            this._overlayRef = null;\r\n        }\r\n    }\r\n\r\n    private _getDisplayValue<T>(value: T): T | string {\r\n        const autocomplete = this.autocomplete;\r\n        return autocomplete && autocomplete.displayWith ? autocomplete.displayWith(value) : value;\r\n    }\r\n\r\n    private _assignOptionValue(value: any): void {\r\n        const toDisplay = this._getDisplayValue(value);\r\n\r\n        if (value == null) {\r\n            this._clearPreviousSelectedOption(null, false);\r\n        }\r\n\r\n        this._updateNativeInputValue(toDisplay != null ? toDisplay : '');\r\n    }\r\n\r\n    private _updateNativeInputValue(value: string): void {\r\n        this._element.nativeElement.value = value;\r\n\r\n        this._previousValue = value;\r\n    }\r\n\r\n    private _setValueAndClose(event: MDOptionSelectionChange | null): void {\r\n        const panel = this.autocomplete;\r\n        const toSelect = event ? event.source : this._pendingAutoselectedOption;\r\n\r\n        if (toSelect) {\r\n            this._clearPreviousSelectedOption(toSelect);\r\n            this._assignOptionValue(toSelect.value);\r\n            this._onChange(toSelect.value);\r\n            panel._emitSelectEvent(toSelect);\r\n            this._element.nativeElement.focus();\r\n        } else if (panel.requireSelection && this._element.nativeElement.value !== this._valueOnAttach) {\r\n            this._clearPreviousSelectedOption(null);\r\n            this._assignOptionValue(null);\r\n            this._onChange(null);\r\n        }\r\n\r\n        this.closePanel();\r\n    }\r\n\r\n    private _clearPreviousSelectedOption(skip: MDOption | null, emitEvent?: boolean) {\r\n        this.autocomplete?.options?.forEach((option) => {\r\n            if (option !== skip && option.selected) {\r\n                option.deselect(emitEvent);\r\n            }\r\n        });\r\n    }\r\n\r\n    private _openPanelInternal(valueOnAttach = this._element.nativeElement.value) {\r\n        this._attachOverlay(valueOnAttach);\r\n        if (this._trackedModal) {\r\n            const panelId = this.autocomplete.id;\r\n            addAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\r\n        }\r\n    }\r\n\r\n    private _attachOverlay(valueOnAttach: string): void {\r\n        if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\r\n            throw getMDAutocompleteMissingPanelError();\r\n        }\r\n\r\n        let overlayRef = this._overlayRef;\r\n\r\n        if (!overlayRef) {\r\n            this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef);\r\n            overlayRef = createOverlayRef(this._injector, this._getOverlayConfig());\r\n            this._overlayRef = overlayRef;\r\n            this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\r\n                if (this.panelOpen && overlayRef) {\r\n                    overlayRef.updateSize({ width: this._getPanelWidth() });\r\n                }\r\n            });\r\n            this._handsetLandscapeSubscription = this._breakpointObserver\r\n                .observe(Breakpoints.HandsetLandscape)\r\n                .subscribe((result) => {\r\n                    const isHandsetLandscape = result.matches;\r\n                    if (isHandsetLandscape) {\r\n                        this._positionStrategy\r\n                            .withFlexibleDimensions(true)\r\n                            .withGrowAfterOpen(true)\r\n                            .withViewportMargin(8);\r\n                    } else {\r\n                        this._positionStrategy\r\n                            .withFlexibleDimensions(false)\r\n                            .withGrowAfterOpen(false)\r\n                            .withViewportMargin(0);\r\n                    }\r\n                });\r\n        } else {\r\n            this._positionStrategy.setOrigin(this._getConnectedElement());\r\n            overlayRef.updateSize({ width: this._getPanelWidth() });\r\n        }\r\n\r\n        if (overlayRef && !overlayRef.hasAttached()) {\r\n            overlayRef.attach(this._portal);\r\n            this._valueOnAttach = valueOnAttach;\r\n            this._valueOnLastKeydown = null;\r\n            this._closingActionsSubscription = this._subscribeToClosingActions();\r\n        }\r\n\r\n        const wasOpen = this.panelOpen;\r\n\r\n        this.autocomplete._isOpen = this._overlayAttached = true;\r\n        this.autocomplete._latestOpeningTrigger = this;\r\n        this._updatePanelState();\r\n        this._applyModalPanelOwnership();\r\n\r\n        if (this.panelOpen && wasOpen !== this.panelOpen) {\r\n            this._emitOpened();\r\n        }\r\n    }\r\n\r\n    private _handlePanelKeydown = (event: KeyboardEvent) => {\r\n        if (\r\n            (event.keyCode === ESCAPE && !hasModifierKey(event)) ||\r\n            (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))\r\n        ) {\r\n            if (this._pendingAutoselectedOption) {\r\n                this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');\r\n                this._pendingAutoselectedOption = null;\r\n            }\r\n            this._closeKeyEventStream.next();\r\n            this._resetActiveItem();\r\n            event.stopPropagation();\r\n            event.preventDefault();\r\n        }\r\n    };\r\n\r\n    private _updatePanelState() {\r\n        this.autocomplete._setVisibility();\r\n\r\n        if (this.panelOpen) {\r\n            const overlayRef = this._overlayRef!;\r\n\r\n            if (!this._keydownSubscription) {\r\n                this._keydownSubscription = overlayRef.keydownEvents().subscribe(this._handlePanelKeydown);\r\n            }\r\n\r\n            if (!this._outsideClickSubscription) {\r\n                this._outsideClickSubscription = overlayRef.outsidePointerEvents().subscribe();\r\n            }\r\n        } else {\r\n            this._keydownSubscription?.unsubscribe();\r\n            this._outsideClickSubscription?.unsubscribe();\r\n            this._keydownSubscription = this._outsideClickSubscription = null;\r\n        }\r\n    }\r\n\r\n    private _getOverlayConfig(): OverlayConfig {\r\n        return new OverlayConfig({\r\n            positionStrategy: this._getOverlayPosition(),\r\n            scrollStrategy: this._scrollStrategy(),\r\n            width: this._getPanelWidth(),\r\n            direction: this._dir ?? undefined,\r\n            hasBackdrop: this._defaults?.hasBackdrop,\r\n            backdropClass: this._defaults?.backdropClass || 'cdk-overlay-transparent-backdrop',\r\n            panelClass: this._overlayPanelClass,\r\n            disableAnimations: this._animationsDisabled,\r\n        });\r\n    }\r\n\r\n    private _getOverlayPosition(): PositionStrategy {\r\n        const strategy = createFlexibleConnectedPositionStrategy(this._injector, this._getConnectedElement())\r\n            .withFlexibleDimensions(false)\r\n            .withPush(false);\r\n\r\n        this._setStrategyPositions(strategy);\r\n        this._positionStrategy = strategy;\r\n        return strategy;\r\n    }\r\n\r\n    private _setStrategyPositions(positionStrategy: FlexibleConnectedPositionStrategy) {\r\n        const belowPositions: ConnectedPosition[] = [\r\n            { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n            { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n        ];\r\n\r\n        const panelClass = this._aboveClass;\r\n        const abovePositions: ConnectedPosition[] = [\r\n            { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass },\r\n            { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass },\r\n        ];\r\n\r\n        let positions: ConnectedPosition[];\r\n\r\n        if (this.position === 'above') {\r\n            positions = abovePositions;\r\n        } else if (this.position === 'below') {\r\n            positions = belowPositions;\r\n        } else {\r\n            positions = [...belowPositions, ...abovePositions];\r\n        }\r\n\r\n        positionStrategy.withPositions(positions);\r\n    }\r\n\r\n    private _getConnectedElement(): ElementRef<HTMLElement> {\r\n        if (this.connectedTo) {\r\n            return this.connectedTo.elementRef;\r\n        }\r\n\r\n        return this._element;\r\n    }\r\n\r\n    private _getPanelWidth(): number | string {\r\n        return this.autocomplete.panelWidth || this._getHostWidth();\r\n    }\r\n\r\n    private _getHostWidth(): number {\r\n        return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\r\n    }\r\n\r\n    private _resetActiveItem(): void {\r\n        const autocomplete = this.autocomplete;\r\n\r\n        if (autocomplete.autoActiveFirstOption) {\r\n            let firstEnabledOptionIndex = -1;\r\n\r\n            for (let index = 0; index < autocomplete.options.length; index++) {\r\n                const option = autocomplete.options.get(index)!;\r\n                if (!option.disabled) {\r\n                    firstEnabledOptionIndex = index;\r\n                    break;\r\n                }\r\n            }\r\n            autocomplete._keyManager.setActiveItem(firstEnabledOptionIndex);\r\n        } else {\r\n            autocomplete._keyManager.setActiveItem(-1);\r\n        }\r\n    }\r\n\r\n    private _canOpen(): boolean {\r\n        const element = this._element.nativeElement;\r\n        return !element.readOnly && !element.disabled && !this.autocompleteDisabled;\r\n    }\r\n\r\n    private _scrollToOption(index: number): void {\r\n        const autocomplete = this.autocomplete;\r\n        const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\r\n\r\n        if (index === 0 && labelCount === 1) {\r\n            autocomplete._setScrollTop(0);\r\n        } else if (autocomplete.panel) {\r\n            const option = autocomplete.options.toArray()[index];\r\n\r\n            if (option) {\r\n                const element = option._getHostElement();\r\n                const newScrollPosition = _getOptionScrollPosition(\r\n                    element.offsetTop,\r\n                    element.offsetHeight,\r\n                    autocomplete._getScrollTop(),\r\n                    autocomplete.panel.nativeElement.offsetHeight\r\n                );\r\n\r\n                autocomplete._setScrollTop(newScrollPosition);\r\n            }\r\n        }\r\n    }\r\n\r\n    private _trackedModal: Element | null = null;\r\n\r\n    private _applyModalPanelOwnership() {\r\n        const modal = this._element.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');\r\n\r\n        if (!modal) {\r\n            return;\r\n        }\r\n\r\n        const panelId = this.autocomplete.id;\r\n\r\n        if (this._trackedModal) {\r\n            removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\r\n        }\r\n\r\n        addAriaReferencedId(modal, 'aria-owns', panelId);\r\n        this._trackedModal = modal;\r\n    }\r\n\r\n    private _clearFromModal() {\r\n        if (this._trackedModal) {\r\n            const panelId = this.autocomplete.id;\r\n\r\n            removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\r\n            this._trackedModal = null;\r\n        }\r\n    }\r\n}\r\n","\r\nimport {NgModule} from '@angular/core';\r\nimport {BidiModule} from '@angular/cdk/bidi';\r\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\r\nimport {OverlayModule} from '@angular/cdk/overlay';\r\nimport {MDAutocomplete} from './autocomplete';\r\nimport { MDAutocompleteOrigin } from './autocomplete-origin';\r\nimport { MDAutocompleteTrigger } from './autocomplete.trigger';\r\nimport { MDOptionModule } from '../select/option-module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    OverlayModule,\r\n    MDOptionModule,\r\n    MDAutocomplete,\r\n    MDAutocompleteTrigger,\r\n    MDAutocompleteOrigin,\r\n  ],\r\n  exports: [\r\n    CdkScrollableModule,\r\n    MDAutocomplete,\r\n    MDOptionModule,\r\n    BidiModule,\r\n    MDAutocompleteTrigger,\r\n    MDAutocompleteOrigin,\r\n  ],\r\n})\r\nexport class MDAutocompleteModule {}","import { _IdGenerator, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\r\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\r\nimport {\r\n  AfterContentInit,\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChildren,\r\n  Directive,\r\n  DoCheck,\r\n  ElementRef,\r\n  EventEmitter,\r\n  InjectionToken,\r\n  Injector,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  QueryList,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  afterNextRender,\r\n  booleanAttribute,\r\n  forwardRef,\r\n  inject,\r\n  numberAttribute,\r\n  HostAttributeToken,\r\n  Renderer2,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\r\n\r\n/**\r\n * Change payload emitted by both group and individual radio buttons.\r\n * `source` is the button that triggered the change; `value` is its current value.\r\n */\r\nexport class RadioChange<T = any> {\r\n  constructor(public source: MDRadioButton, public value: T) {}\r\n}\r\n\r\n/** ControlValueAccessor provider for the radio group. */\r\nexport const RADIO_GROUP_CONTROL_VALUE_ACCESSOR: any = {\r\n  provide: NG_VALUE_ACCESSOR,\r\n  useExisting: forwardRef(() => MDRadioGroup),\r\n  multi: true,\r\n};\r\n\r\n/** Token to inject the parent group into child radio buttons. */\r\nexport const MD_RADIO_GROUP = new InjectionToken<MDRadioGroup>('MDRadioGroup');\r\n\r\n/**\r\n * Radio group directive: manages a set of `md-radio-button` children.\r\n *\r\n * Responsibilities:\r\n * - Keeps a single selection (mutual exclusivity).\r\n * - Syncs `name` across all child radios.\r\n * - Integrates with Angular forms via ControlValueAccessor.\r\n * - Forwards `disabled`, `required`, and `disabledInteractive` to children.\r\n */\r\n@Directive({\r\n  selector: 'md-radio-group',\r\n  exportAs: 'mdRadioGroup',\r\n  providers: [RADIO_GROUP_CONTROL_VALUE_ACCESSOR, { provide: MD_RADIO_GROUP, useExisting: MDRadioGroup }],\r\n  host: {\r\n    role: 'radiogroup',\r\n    class: 'mdc-radio-group',\r\n  },\r\n})\r\nexport class MDRadioGroup implements AfterContentInit, OnDestroy, ControlValueAccessor {\r\n  /** Triggers CD when value/flags change via setters. */\r\n  private _changeDetector = inject(ChangeDetectorRef);\r\n\r\n  /** Currently selected value (model). */\r\n  private _value: any = null;\r\n\r\n  /** Shared `name` for all child radios (defaults to unique id). */\r\n  private _name: string = inject(_IdGenerator).getId('radio-group-');\r\n\r\n  /** Reference to the selected radio (if any). */\r\n  private _selected: MDRadioButton | null = null;\r\n\r\n  /** True after first content init; used to gate change emissions. */\r\n  private _isInitialized: boolean = false;\r\n\r\n  /** Group-level disabled flag; propagated to children. */\r\n  private _disabled: boolean = false;\r\n\r\n  /** Group-level required flag; propagated to children. */\r\n  private _required: boolean = false;\r\n\r\n  /** Subscription to children changes (add/remove). */\r\n  private _buttonChanges: Subscription;\r\n\r\n  /** ngModel/FormControl onChange callback. */\r\n  _controlValueAccessorChangeFn: (value: any) => void = () => {};\r\n\r\n  /** ngModel/FormControl onTouched callback. */\r\n  onTouched: () => any = () => {};\r\n\r\n  /** Emits when selection changes after init. */\r\n  @Output() readonly change: EventEmitter<RadioChange> = new EventEmitter<RadioChange>();\r\n\r\n  /** Child radios discovered in content. */\r\n  @ContentChildren(forwardRef(() => MDRadioButton), { descendants: true }) _radios: QueryList<MDRadioButton>;\r\n\r\n  /** Group name getter/setter (propagates to children). */\r\n  @Input()\r\n  get name(): string {\r\n    return this._name;\r\n  }\r\n  set name(value: string) {\r\n    this._name = value;\r\n    this._updateRadioButtonNames();\r\n  }\r\n\r\n  /** Model value getter/setter; updates selected radio accordingly. */\r\n  @Input()\r\n  get value(): any {\r\n    return this._value;\r\n  }\r\n  set value(newValue: any) {\r\n    if (this._value !== newValue) {\r\n      this._value = newValue;\r\n      this._updateSelectedRadioFromValue();\r\n      this._checkSelectedRadioButton();\r\n    }\r\n  }\r\n\r\n  /** Ensures the selected radio is actually checked. */\r\n  _checkSelectedRadioButton() {\r\n    if (this._selected && !this._selected.checked) {\r\n      this._selected.checked = true;\r\n    }\r\n  }\r\n\r\n  /** Selected radio getter/setter; also sets group value. */\r\n  @Input()\r\n  get selected() {\r\n    return this._selected;\r\n  }\r\n  set selected(selected: MDRadioButton | null) {\r\n    this._selected = selected;\r\n    this.value = selected ? selected.value : null;\r\n    this._checkSelectedRadioButton();\r\n  }\r\n\r\n  /** Group disabled getter/setter; marks children for check. */\r\n  @Input({ transform: booleanAttribute })\r\n  get disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n  set disabled(value: boolean) {\r\n    this._disabled = value;\r\n    this._markRadiosForCheck();\r\n  }\r\n\r\n  /** Group required getter/setter; marks children for check. */\r\n  @Input({ transform: booleanAttribute })\r\n  get required(): boolean {\r\n    return this._required;\r\n  }\r\n  set required(value: boolean) {\r\n    this._required = value;\r\n    this._markRadiosForCheck();\r\n  }\r\n\r\n  /**\r\n   * If true, disabled items may still be focusable/interactive\r\n   * (special a11y scenarios). Propagated to children.\r\n   */\r\n  @Input({ transform: booleanAttribute })\r\n  get disabledInteractive(): boolean {\r\n    return this._disabledInteractive;\r\n  }\r\n  set disabledInteractive(value: boolean) {\r\n    this._disabledInteractive = value;\r\n    this._markRadiosForCheck();\r\n  }\r\n  private _disabledInteractive = false;\r\n\r\n  /** Overloads kept for compatibility; actual ctor is empty. */\r\n  constructor(...args: unknown[]);\r\n  constructor() {}\r\n\r\n  /** After content init, watch for dynamic child list changes. */\r\n  ngAfterContentInit() {\r\n    this._isInitialized = true;\r\n    this._buttonChanges = this._radios.changes.subscribe(() => {\r\n      if (this.selected && !this._radios.find((radio) => radio === this.selected)) {\r\n        this._selected = null;\r\n      }\r\n    });\r\n  }\r\n\r\n  /** Clean up subscriptions. */\r\n  ngOnDestroy() {\r\n    this._buttonChanges?.unsubscribe();\r\n  }\r\n\r\n  /** Mark group as touched (used by children on blur). */\r\n  _touch() {\r\n    if (this.onTouched) {\r\n      this.onTouched();\r\n    }\r\n  }\r\n\r\n  /** Propagate `name` to child radios and mark them for check. */\r\n  private _updateRadioButtonNames(): void {\r\n    if (this._radios) {\r\n      this._radios.forEach((radio) => {\r\n        radio.name = this.name;\r\n        radio._markForCheck();\r\n      });\r\n    }\r\n  }\r\n\r\n  /** Update `checked` on children based on current group value. */\r\n  private _updateSelectedRadioFromValue(): void {\r\n    const isAlreadySelected = this._selected !== null && this._selected.value === this._value;\r\n    if (this._radios && !isAlreadySelected) {\r\n      this._selected = null;\r\n      this._radios.forEach((radio) => {\r\n        radio.checked = this.value === radio.value;\r\n        if (radio.checked) {\r\n          this._selected = radio;\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  /** Emit `change` when selection altered by user after init. */\r\n  _emitChangeEvent(): void {\r\n    if (this._isInitialized) {\r\n      this.change.emit(new RadioChange(this._selected!, this._value));\r\n    }\r\n  }\r\n\r\n  /** Ask all children to run CD (OnPush-safe updates). */\r\n  _markRadiosForCheck() {\r\n    if (this._radios) {\r\n      this._radios.forEach((radio) => radio._markForCheck());\r\n    }\r\n  }\r\n\r\n  /** Write model value from forms API. */\r\n  writeValue(value: any) {\r\n    this.value = value;\r\n    this._changeDetector.markForCheck();\r\n  }\r\n\r\n  /** Register forms onChange callback. */\r\n  registerOnChange(fn: (value: any) => void) {\r\n    this._controlValueAccessorChangeFn = fn;\r\n  }\r\n\r\n  /** Register forms onTouched callback. */\r\n  registerOnTouched(fn: any) {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  /** Set disabled via forms API. */\r\n  setDisabledState(isDisabled: boolean) {\r\n    this.disabled = isDisabled;\r\n    this._changeDetector.markForCheck();\r\n  }\r\n}\r\n\r\n/**\r\n * Single radio button component.\r\n *\r\n * Responsibilities:\r\n * - Manages its own checked/disabled state.\r\n * - Coordinates with its parent `MDRadioGroup`.\r\n * - Emits `change` when user selects it.\r\n * - Handles focus/keyboard via CDK FocusMonitor.\r\n */\r\n@Component({\r\n  selector: 'md-radio-button',\r\n  templateUrl: 'radio.html',\r\n  styleUrl: 'radio.scss',\r\n  host: {\r\n    class: 'md-mdc-radio-button',\r\n    '[attr.id]': 'id',\r\n    '[class.mdc-radio-checked]': 'checked',\r\n    '[class.mdc-radio-disabled]': 'disabled',\r\n    '[class.mdc-radio-disabled-interactive]': 'disabledInteractive',\r\n    '[class.animation-noopable]': '_noopAnimations',\r\n    '[attr.tabindex]': 'null',\r\n    '[attr.aria-label]': 'null',\r\n    '[attr.aria-labelledby]': 'null',\r\n    '[attr.aria-describedby]': 'null',\r\n    '(focus)': '_inputElement.nativeElement.focus()',\r\n  },\r\n  exportAs: 'mdRadioButton',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MDRadioButton implements OnInit, AfterViewInit, DoCheck, OnDestroy {\r\n  /** Host element reference (used by FocusMonitor and listeners). */\r\n  protected _elementRef = inject(ElementRef);\r\n\r\n  /** Change detector to request view updates under OnPush. */\r\n  private _changeDetector = inject(ChangeDetectorRef);\r\n\r\n  /** CDK FocusMonitor to handle programmatic focus origins. */\r\n  private _focusMonitor = inject(FocusMonitor);\r\n\r\n  /** Ensures unique selection across same-name radios. */\r\n  private _radioDispatcher = inject(UniqueSelectionDispatcher);\r\n\r\n  /** Zone for running event listeners outside Angular (perf). */\r\n  private _ngZone = inject(NgZone);\r\n\r\n  /** Renderer for low-level DOM events binding. */\r\n  private _renderer = inject(Renderer2);\r\n\r\n  /** Unique id seed for host/input ids. */\r\n  private _uniqueId = inject(_IdGenerator).getId('radio-');\r\n\r\n  /** Cleanup function for native click listener. */\r\n  private _cleanupClick: (() => void) | undefined;\r\n\r\n  /** Element id (defaults to unique id). */\r\n  @Input() id: string = this._uniqueId;\r\n\r\n  /** Shared group name; set by group or consumer. */\r\n  @Input() name: string;\r\n\r\n  /** ARIA label text for input (if no external label). */\r\n  @Input('aria-label') ariaLabel: string;\r\n\r\n  /** Id of element that labels this input. */\r\n  @Input('aria-labelledby') ariaLabelledby: string;\r\n\r\n  /** Id of element that describes this input. */\r\n  @Input('aria-describedby') ariaDescribedby: string;\r\n\r\n  /**\r\n   * Tabindex for internal input; normalized via numberAttribute.\r\n   * Default is 0 so item can be focused when selected.\r\n   */\r\n  @Input({\r\n    transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\r\n  })\r\n  tabIndex: number = 0;\r\n\r\n  /** Checked state with group coordination and dispatcher notify. */\r\n  @Input({ transform: booleanAttribute })\r\n  get checked(): boolean {\r\n    return this._checked;\r\n  }\r\n  set checked(value: boolean) {\r\n    if (this._checked !== value) {\r\n      this._checked = value;\r\n\r\n      // Sync with parent group value and selected reference.\r\n      if (value && this.radioGroup && this.radioGroup.value !== this.value) {\r\n        this.radioGroup.selected = this;\r\n      } else if (!value && this.radioGroup && this.radioGroup.value === this.value) {\r\n        this.radioGroup.selected = null;\r\n      }\r\n\r\n      // Notify other radios with the same name.\r\n      if (value) {\r\n        this._radioDispatcher.notify(this.id, this.name);\r\n      }\r\n\r\n      this._changeDetector.markForCheck();\r\n    }\r\n  }\r\n\r\n  /** Arbitrary value associated with this radio. */\r\n  @Input()\r\n  get value(): any {\r\n    return this._value;\r\n  }\r\n  set value(value: any) {\r\n    if (this._value !== value) {\r\n      this._value = value;\r\n\r\n      // If part of a group, keep checked state in sync with group's value.\r\n      if (this.radioGroup !== null) {\r\n        if (!this.checked) {\r\n          this.checked = this.radioGroup.value === value;\r\n        }\r\n        if (this.checked) {\r\n          this.radioGroup.selected = this;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  /** Disabled state; considers group-level disabled as well. */\r\n  @Input({ transform: booleanAttribute })\r\n  get disabled(): boolean {\r\n    return this._disabled || (this.radioGroup !== null && this.radioGroup.disabled);\r\n  }\r\n  set disabled(value: boolean) {\r\n    this._setDisabled(value);\r\n  }\r\n\r\n  /** Required state; considers group-level required as well. */\r\n  @Input({ transform: booleanAttribute })\r\n  get required(): boolean {\r\n    return this._required || (this.radioGroup && this.radioGroup.required);\r\n  }\r\n  set required(value: boolean) {\r\n    if (value !== this._required) {\r\n      this._changeDetector.markForCheck();\r\n    }\r\n    this._required = value;\r\n  }\r\n\r\n  /**\r\n   * If true, item remains interactive/focusable even when disabled.\r\n   * Also considers group-level disabledInteractive.\r\n   */\r\n  @Input({ transform: booleanAttribute })\r\n  get disabledInteractive(): boolean {\r\n    return this._disabledInteractive || (this.radioGroup !== null && this.radioGroup.disabledInteractive);\r\n  }\r\n  set disabledInteractive(value: boolean) {\r\n    this._disabledInteractive = value;\r\n  }\r\n  private _disabledInteractive: boolean;\r\n\r\n  /** Emits when this particular radio is selected by the user. */\r\n  @Output() readonly change: EventEmitter<RadioChange> = new EventEmitter<RadioChange>();\r\n\r\n  /** Optional reference to parent group (injected). */\r\n  radioGroup: MDRadioGroup;\r\n\r\n  /** Id for internal input element. */\r\n  get inputId(): string {\r\n    return `${this.id || this._uniqueId}-input`;\r\n  }\r\n\r\n  /** Backing fields for state. */\r\n  private _checked: boolean = false;\r\n  private _disabled: boolean;\r\n  private _required: boolean;\r\n  private _value: any = null;\r\n\r\n  /** Callback to unlisten from unique selection dispatcher. */\r\n  private _removeUniqueSelectionListener: () => void = () => {};\r\n\r\n  /** Tracks last applied tabindex for optimization. */\r\n  private _previousTabIndex: number | undefined;\r\n\r\n  /** Template refs. */\r\n  @ViewChild('input') _inputElement: ElementRef<HTMLInputElement>;\r\n\r\n  /** Placeholder for potential animations flag (wired via template). */\r\n  @ViewChild('formField', { read: ElementRef, static: true })\r\n  _noopAnimations = false;\r\n\r\n  /** Injector used for afterNextRender microtask scheduling. */\r\n  private _injector = inject(Injector);\r\n\r\n  /**\r\n   * Inject parent group (optional) and host tabindex.\r\n   * Also initializes disabledInteractive default.\r\n   */\r\n  constructor() {\r\n    const radioGroup = inject<MDRadioGroup>(MD_RADIO_GROUP, { optional: true })!;\r\n    const tabIndex = inject(new HostAttributeToken('tabindex'), { optional: true });\r\n    this.radioGroup = radioGroup;\r\n    this._disabledInteractive = false;\r\n    if (tabIndex) {\r\n      this.tabIndex = numberAttribute(tabIndex, 0);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Programmatic focus API.\r\n   * If `origin` provided, uses FocusMonitor to set proper focus classes.\r\n   */\r\n  focus(options?: FocusOptions, origin?: FocusOrigin): void {\r\n    if (origin) {\r\n      this._focusMonitor.focusVia(this._inputElement, origin, options);\r\n    } else {\r\n      this._inputElement.nativeElement.focus(options);\r\n    }\r\n  }\r\n\r\n  /** Ask view to update (used by group). */\r\n  _markForCheck() {\r\n    this._changeDetector.markForCheck();\r\n  }\r\n\r\n  /** Initialize from group (name/value) and subscribe to unique selection dispatcher. */\r\n  ngOnInit() {\r\n    if (this.radioGroup) {\r\n      this.checked = this.radioGroup.value === this._value;\r\n      if (this.checked) {\r\n        this.radioGroup.selected = this;\r\n      }\r\n      this.name = this.radioGroup.name;\r\n    }\r\n    this._removeUniqueSelectionListener = this._radioDispatcher.listen((id, name) => {\r\n      if (id !== this.id && name === this.name) {\r\n        this.checked = false;\r\n      }\r\n    });\r\n  }\r\n\r\n  /** Keep tabindexes updated so only selected item is in tab order. */\r\n  ngDoCheck(): void {\r\n    this._updateTabIndex();\r\n  }\r\n\r\n  /** Attach focus monitor and click handler outside Angular for perf. */\r\n  ngAfterViewInit() {\r\n    this._updateTabIndex();\r\n\r\n    this._focusMonitor.monitor(this._elementRef, true).subscribe((focusOrigin) => {\r\n      // When focus leaves the host entirely, mark the group as touched.\r\n      if (!focusOrigin && this.radioGroup) {\r\n        this.radioGroup._touch();\r\n      }\r\n    });\r\n\r\n    // Prevent change detection storms: add listener outside Angular.\r\n    this._ngZone.runOutsideAngular(() => {\r\n      this._cleanupClick = this._renderer.listen(this._inputElement.nativeElement, 'click', this._onInputClick);\r\n    });\r\n  }\r\n\r\n  /** Cleanup listeners and monitors. */\r\n  ngOnDestroy() {\r\n    this._cleanupClick?.();\r\n    this._focusMonitor.stopMonitoring(this._elementRef);\r\n    this._removeUniqueSelectionListener();\r\n  }\r\n\r\n  /** Emit own change and, if part of a group, notify the group. */\r\n  private _emitChangeEvent(): void {\r\n    this.change.emit(new RadioChange(this, this._value));\r\n  }\r\n\r\n  /**\r\n   * Handles interaction on the real input.\r\n   * Ensures single selection, emits change, updates group model.\r\n   */\r\n  _onInputInteraction(event: Event) {\r\n    event.stopPropagation();\r\n\r\n    if (!this.checked && !this.disabled) {\r\n      const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\r\n\r\n      this.checked = true;\r\n      this._emitChangeEvent();\r\n\r\n      if (this.radioGroup) {\r\n        this.radioGroup._controlValueAccessorChangeFn(this.value);\r\n        if (groupValueChanged) {\r\n          this.radioGroup._emitChangeEvent();\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Click on the visual/touch target should behave like clicking the input.\r\n   * Also refocus the input if allowed.\r\n   */\r\n  _onTouchTargetClick(event: Event) {\r\n    this._onInputInteraction(event);\r\n    if (!this.disabled || this.disabledInteractive) {\r\n      this._inputElement?.nativeElement.focus();\r\n    }\r\n  }\r\n\r\n  /** Setter for disabled that triggers CD when value changes. */\r\n  protected _setDisabled(value: boolean) {\r\n    if (this._disabled !== value) {\r\n      this._disabled = value;\r\n      this._changeDetector.markForCheck();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Prevent native input click from toggling when disabled but `disabledInteractive` is true.\r\n   * Keeps UI consistent with intended behavior.\r\n   */\r\n  private _onInputClick = (event: Event) => {\r\n    if (this.disabled && this.disabledInteractive) {\r\n      event.preventDefault();\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Maintain roving tabindex:\r\n   * - Selected radio keeps its configured tabIndex (defaults to 0).\r\n   * - Non-selected radios get tabindex=\"-1\".\r\n   * Also re-routes focus to the selected item if needed after render.\r\n   */\r\n  private _updateTabIndex() {\r\n    const group = this.radioGroup;\r\n    let value: number;\r\n\r\n    if (!group || !group.selected || this.disabled) {\r\n      value = this.tabIndex;\r\n    } else {\r\n      value = group.selected === this ? this.tabIndex : -1;\r\n    }\r\n\r\n    if (value !== this._previousTabIndex) {\r\n      const input: HTMLInputElement | undefined = this._inputElement?.nativeElement;\r\n\r\n      if (input) {\r\n        input.setAttribute('tabindex', value + '');\r\n        this._previousTabIndex = value;\r\n\r\n        // After the DOM updates, if focus landed on a non-selected radio, redirect it.\r\n        afterNextRender(\r\n          () => {\r\n            queueMicrotask(() => {\r\n              if (\r\n                group &&\r\n                group.selected &&\r\n                group.selected !== this &&\r\n                document.activeElement === input\r\n              ) {\r\n                group.selected?._inputElement.nativeElement.focus();\r\n                if (document.activeElement === input) {\r\n                  this._inputElement.nativeElement.blur();\r\n                }\r\n              }\r\n            });\r\n          },\r\n          { injector: this._injector }\r\n        );\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div class=\"radio-internal-form-field\" #formField>\r\n  <div class=\"mdc-radio\" [class.mdc-radio--disabled]=\"disabled\">\r\n    <div class=\"mdc-radio-touch-target\" (click)=\"_onTouchTargetClick($event)\"></div>\r\n    <input #input class=\"mdc-radio__native-control\" type=\"radio\"\r\n           [id]=\"inputId\"\r\n           [checked]=\"checked\"\r\n           [disabled]=\"disabled && !disabledInteractive\"\r\n           [attr.name]=\"name\"\r\n           [attr.value]=\"value\"\r\n           [required]=\"required\"\r\n           aria-invalid=\"false\"\r\n           [attr.aria-label]=\"ariaLabel\"\r\n           [attr.aria-labelledby]=\"ariaLabelledby\"\r\n           [attr.aria-describedby]=\"ariaDescribedby\"\r\n           [attr.aria-disabled]=\"disabled && disabledInteractive ? 'true' : null\"\r\n           (change)=\"_onInputInteraction($event)\">\r\n    <div class=\"mdc-radio__background\">\r\n      <div class=\"mdc-radio__outer-circle\"></div>\r\n      <div class=\"mdc-radio__inner-circle\"></div>\r\n    </div>\r\n  </div>\r\n  <label class=\"mdc-label\" [for]=\"inputId\">\r\n    <ng-content></ng-content>\r\n  </label>\r\n</div>","import {NgModule} from '@angular/core';\r\nimport { MDRadioButton, MDRadioGroup } from './radio';\r\n\r\n@NgModule({\r\n  imports: [MDRadioGroup, MDRadioButton],\r\n  exports: [MDRadioGroup, MDRadioButton],\r\n})\r\nexport class MDRadioModule {}","import {ENTER, ModifierKey} from '@angular/cdk/keycodes';\r\nimport {InjectionToken} from '@angular/core';\r\n\r\nexport interface SeparatorKey {\r\n  keyCode: number;\r\n  modifiers: readonly ModifierKey[];\r\n}\r\n\r\nexport interface MDChipsDefaultOptions {\r\n  separatorKeyCodes: readonly (number | SeparatorKey)[] | ReadonlySet<number | SeparatorKey>;\r\n  hideSingleSelectionIndicator?: boolean;\r\n  inputDisabledInteractive?: boolean;\r\n}\r\n\r\nexport const MD_CHIPS_DEFAULT_OPTIONS = new InjectionToken<MDChipsDefaultOptions>(\r\n  'md-chips-default-options',\r\n  {\r\n    providedIn: 'root',\r\n    factory: () => ({\r\n      separatorKeyCodes: [ENTER],\r\n    }),\r\n  },\r\n);\r\n\r\nexport const MD_CHIP_AVATAR = new InjectionToken('MDChipAvatar');\r\nexport const MD_CHIP_TRAILING_ICON = new InjectionToken('MDChipTrailingIcon');\r\nexport const MD_CHIP_EDIT = new InjectionToken('MDChipEdit');\r\nexport const MD_CHIP_REMOVE = new InjectionToken('MDChipRemove');\r\nexport const MD_CHIP = new InjectionToken('MDChip');","import {\r\n  Directive,\r\n  ElementRef,\r\n  Input,\r\n  booleanAttribute,\r\n  numberAttribute,\r\n  inject,\r\n} from '@angular/core';\r\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\r\nimport {MD_CHIP} from './tokens';\r\n\r\n@Directive({\r\n  selector: '[mdChipContent]',\r\n  host: {\r\n    'class':\r\n      'md-mdc-chip-action mdc-evolution-chip__action mdc-evolution-chip__action--presentational',\r\n    '[class.mdc-evolution-chip__action--primary]': '_isPrimary',\r\n    '[class.mdc-evolution-chip__action--secondary]': '!_isPrimary',\r\n    '[class.mdc-evolution-chip__action--trailing]': '!_isPrimary && !_isLeading',\r\n    '[attr.disabled]': '_getDisabledAttribute()',\r\n    '[attr.aria-disabled]': 'disabled',\r\n  },\r\n})\r\nexport class MDChipContent {\r\n  _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  protected _parentChip = inject<{\r\n    _handlePrimaryActionInteraction(): void;\r\n    remove(): void;\r\n    disabled: boolean;\r\n    _edit(): void;\r\n    _isEditing?: boolean;\r\n  }>(MD_CHIP);\r\n\r\n  _isPrimary = true;\r\n\r\n  _isLeading = false;\r\n\r\n  @Input({transform: booleanAttribute})\r\n  get disabled(): boolean {\r\n    return this._disabled || this._parentChip?.disabled || false;\r\n  }\r\n  set disabled(value: boolean) {\r\n    this._disabled = value;\r\n  }\r\n  private _disabled = false;\r\n\r\n  @Input({\r\n    transform: (value: unknown) => (value == null ? -1 : numberAttribute(value)),\r\n  })\r\n  tabIndex: number = -1;\r\n\r\n  @Input()\r\n  _allowFocusWhenDisabled = false;\r\n\r\n  protected _getDisabledAttribute(): string | null {\r\n    return this.disabled && !this._allowFocusWhenDisabled ? '' : null;\r\n  }\r\n\r\n  constructor() {\r\n    if (this._elementRef.nativeElement.nodeName === 'BUTTON') {\r\n      this._elementRef.nativeElement.setAttribute('type', 'button');\r\n    }\r\n  }\r\n\r\n  focus() {\r\n    this._elementRef.nativeElement.focus();\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[mdChipAction]',\r\n  host: {\r\n    '[attr.tabindex]': '_getTabindex()',\r\n    '[class.mdc-evolution-chip__action--presentational]': 'false',\r\n    '(click)': '_handleClick($event)',\r\n    '(keydown)': '_handleKeydown($event)',\r\n  },\r\n})\r\nexport class MDChipAction extends MDChipContent {\r\n  protected _getTabindex(): string | null {\r\n    return this.disabled && !this._allowFocusWhenDisabled ? null : this.tabIndex.toString();\r\n  }\r\n\r\n  _handleClick(event: MouseEvent) {\r\n    if (!this.disabled && this._isPrimary) {\r\n      event.preventDefault();\r\n      this._parentChip._handlePrimaryActionInteraction();\r\n    }\r\n  }\r\n\r\n  _handleKeydown(event: KeyboardEvent) {\r\n    if (\r\n      (event.keyCode === ENTER || event.keyCode === SPACE) &&\r\n      !this.disabled &&\r\n      this._isPrimary &&\r\n      !this._parentChip._isEditing\r\n    ) {\r\n      event.preventDefault();\r\n      this._parentChip._handlePrimaryActionInteraction();\r\n    }\r\n  }\r\n}","import { FocusMonitor, _IdGenerator } from '@angular/cdk/a11y';\r\nimport { BACKSPACE, DELETE } from '@angular/cdk/keycodes';\r\nimport { _CdkPrivateStyleLoader, _VisuallyHiddenLoader } from '@angular/cdk/private';\r\n\r\nimport {\r\n    AfterContentInit,\r\n    AfterViewInit,\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChild,\r\n    ContentChildren,\r\n    DoCheck,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HOST_TAG_NAME,\r\n    Injector,\r\n    Input,\r\n    NgZone,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    QueryList,\r\n    ViewChild,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    inject,\r\n    DOCUMENT,\r\n} from '@angular/core';\r\nimport { Subject, Subscription, merge } from 'rxjs';\r\nimport { MD_CHIP, MD_CHIP_AVATAR, MD_CHIP_EDIT, MD_CHIP_REMOVE, MD_CHIP_TRAILING_ICON } from './tokens';\r\nimport { MDChipAvatar, MDChipEdit, MDChipRemove, MDChipTrailingIcon } from './chip-icons';\r\nimport { MDChipAction, MDChipContent } from './chip-action';\r\n\r\nexport interface MDChipEvent {\r\n    chip: MDChip;\r\n}\r\n\r\n@Component({\r\n    selector: 'md-basic-chip, [md-basic-chip], md-chip, [md-chip]',\r\n    exportAs: 'mdChip',\r\n    templateUrl: 'chip.html',\r\n    styleUrl: 'chip.scss',\r\n    host: {\r\n        class: 'md-mdc-chip',\r\n        '[class]': '\"md-\" + (color || \"primary\")',\r\n        '[class.mdc-evolution-chip]': '!_isBasicChip',\r\n        '[class.mdc-evolution-chip--disabled]': 'disabled',\r\n        '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\r\n        '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon',\r\n        '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\r\n        '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\r\n        '[class.md-mdc-chip-with-avatar]': 'leadingIcon',\r\n        '[class.md-mdc-chip-highlighted]': 'highlighted',\r\n        '[class.md-mdc-chip-disabled]': 'disabled',\r\n        '[class.md-mdc-basic-chip]': '_isBasicChip',\r\n        '[class.md-mdc-standard-chip]': '!_isBasicChip',\r\n        '[class.md-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()',\r\n        '[class._md-animation-noopable]': '_animationsDisabled',\r\n        '[id]': 'id',\r\n        '[attr.role]': 'role',\r\n        '[attr.aria-label]': 'ariaLabel',\r\n        '(keydown)': '_handleKeydown($event)',\r\n    },\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [{ provide: MD_CHIP, useExisting: MDChip }],\r\n    imports: [MDChipContent],\r\n})\r\nexport class MDChip implements OnInit, AfterViewInit, AfterContentInit, OnDestroy {\r\n    _changeDetectorRef = inject(ChangeDetectorRef);\r\n    _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n    private readonly _tagName = inject(HOST_TAG_NAME);\r\n    protected _ngZone = inject(NgZone);\r\n    private _focusMonitor = inject(FocusMonitor);\r\n\r\n    protected _document = inject(DOCUMENT);\r\n\r\n    readonly _onFocus = new Subject<MDChipEvent>();\r\n\r\n    readonly _onBlur = new Subject<MDChipEvent>();\r\n\r\n    _isBasicChip: boolean;\r\n\r\n    @Input() role: string | null = null;\r\n\r\n    private _hasFocusInternal = false;\r\n\r\n    private _pendingFocus: boolean;\r\n\r\n    private _actionChanges: Subscription | undefined;\r\n\r\n    _animationsDisabled = false;\r\n\r\n    @ContentChildren(MD_CHIP_AVATAR, { descendants: true })\r\n    protected _allLeadingIcons: QueryList<MDChipAvatar>;\r\n\r\n    @ContentChildren(MD_CHIP_TRAILING_ICON, { descendants: true })\r\n    protected _allTrailingIcons: QueryList<MDChipTrailingIcon>;\r\n\r\n    @ContentChildren(MD_CHIP_EDIT, { descendants: true })\r\n    protected _allEditIcons: QueryList<MDChipEdit>;\r\n\r\n    @ContentChildren(MD_CHIP_REMOVE, { descendants: true })\r\n    protected _allRemoveIcons: QueryList<MDChipRemove>;\r\n\r\n    _hasFocus() {\r\n        return this._hasFocusInternal;\r\n    }\r\n\r\n    @Input() id: string = inject(_IdGenerator).getId('md-mdc-chip-');\r\n\r\n    @Input('aria-label') ariaLabel: string | null = null;\r\n\r\n    @Input('aria-description') ariaDescription: string | null = null;\r\n\r\n    _chipListDisabled: boolean = false;\r\n\r\n    _hadFocusOnRemove = false;\r\n\r\n    private _textElement!: HTMLElement;\r\n\r\n    @Input()\r\n    get value(): any {\r\n        return this._value !== undefined ? this._value : this._textElement.textContent!.trim();\r\n    }\r\n    set value(value: any) {\r\n        this._value = value;\r\n    }\r\n    protected _value: any;\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    removable: boolean = true;\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    highlighted: boolean = false;\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    get disabled(): boolean {\r\n        return this._disabled || this._chipListDisabled;\r\n    }\r\n    set disabled(value: boolean) {\r\n        this._disabled = value;\r\n    }\r\n    private _disabled = false;\r\n\r\n    @Output() readonly removed: EventEmitter<MDChipEvent> = new EventEmitter<MDChipEvent>();\r\n\r\n    @Output() readonly destroyed: EventEmitter<MDChipEvent> = new EventEmitter<MDChipEvent>();\r\n\r\n    protected basicChipAttrName = 'md-basic-chip';\r\n\r\n    @ContentChild(MD_CHIP_AVATAR) leadingIcon: MDChipAvatar;\r\n\r\n    @ContentChild(MD_CHIP_EDIT) editIcon: MDChipEdit;\r\n\r\n    @ContentChild(MD_CHIP_TRAILING_ICON) trailingIcon: MDChipTrailingIcon;\r\n\r\n    @ContentChild(MD_CHIP_REMOVE) removeIcon: MDChipRemove;\r\n\r\n    @ViewChild(MDChipAction) primaryAction: MDChipAction;\r\n\r\n    protected _injector = inject(Injector);\r\n\r\n    constructor() {\r\n        this._monitorFocus();\r\n    }\r\n\r\n    ngOnInit() {\r\n        this._isBasicChip =\r\n            this._elementRef.nativeElement.hasAttribute(this.basicChipAttrName) ||\r\n            this._tagName.toLowerCase() === this.basicChipAttrName;\r\n    }\r\n\r\n    ngAfterViewInit() {\r\n        this._textElement = this._elementRef.nativeElement.querySelector('.md-mdc-chip-action-label')!;\r\n\r\n        if (this._pendingFocus) {\r\n            this._pendingFocus = false;\r\n            this.focus();\r\n        }\r\n    }\r\n\r\n    ngAfterContentInit(): void {\r\n        this._actionChanges = merge(\r\n            this._allLeadingIcons.changes,\r\n            this._allTrailingIcons.changes,\r\n            this._allEditIcons.changes,\r\n            this._allRemoveIcons.changes\r\n        ).subscribe(() => this._changeDetectorRef.markForCheck());\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this._focusMonitor.stopMonitoring(this._elementRef);\r\n        this._actionChanges?.unsubscribe();\r\n        this.destroyed.emit({ chip: this });\r\n        this.destroyed.complete();\r\n    }\r\n\r\n    remove(): void {\r\n        if (this.removable) {\r\n            this._hadFocusOnRemove = this._hasFocus();\r\n            this.removed.emit({ chip: this });\r\n        }\r\n    }\r\n\r\n    _hasTrailingIcon() {\r\n        return !!(this.trailingIcon || this.removeIcon);\r\n    }\r\n\r\n    _handleKeydown(event: KeyboardEvent) {\r\n        if ((event.keyCode === BACKSPACE && !event.repeat) || event.keyCode === DELETE) {\r\n            event.preventDefault();\r\n            this.remove();\r\n        }\r\n    }\r\n\r\n    focus(): void {\r\n        if (!this.disabled) {\r\n            if (this.primaryAction) {\r\n                this.primaryAction.focus();\r\n            } else {\r\n                this._pendingFocus = true;\r\n            }\r\n        }\r\n    }\r\n\r\n    _getSourceAction(target: Node): MDChipAction | undefined {\r\n        return this._getActions().find((action) => {\r\n            const element = action._elementRef.nativeElement;\r\n            return element === target || element.contains(target);\r\n        });\r\n    }\r\n\r\n    _getActions(): MDChipAction[] {\r\n        const result: MDChipAction[] = [];\r\n\r\n        if (this.editIcon) {\r\n            result.push(this.editIcon);\r\n        }\r\n\r\n        if (this.primaryAction) {\r\n            result.push(this.primaryAction);\r\n        }\r\n\r\n        if (this.removeIcon) {\r\n            result.push(this.removeIcon);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    _handlePrimaryActionInteraction() {\r\n        // Empty here, but is overwritten in child classes.\r\n    }\r\n\r\n    _hasInteractiveActions(): boolean {\r\n        return this._getActions().length > 0;\r\n    }\r\n\r\n    _edit(event: Event) {\r\n        // Empty here, but is overwritten in child classes.\r\n    }\r\n\r\n    private _monitorFocus() {\r\n        this._focusMonitor.monitor(this._elementRef, true).subscribe((origin) => {\r\n            const hasFocus = origin !== null;\r\n\r\n            if (hasFocus !== this._hasFocusInternal) {\r\n                this._hasFocusInternal = hasFocus;\r\n\r\n                if (hasFocus) {\r\n                    this._onFocus.next({ chip: this });\r\n                } else {\r\n                    this._changeDetectorRef.markForCheck();\r\n                    setTimeout(() => this._ngZone.run(() => this._onBlur.next({ chip: this })));\r\n                }\r\n            }\r\n        });\r\n    }\r\n}\r\n","<span class=\"md-mdc-chip-focus-overlay\"></span>\r\n\r\n<span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--primary\">\r\n  <span mdChipContent>\r\n    @if (leadingIcon) {\r\n      <span class=\"mdc-evolution-chip__graphic md-mdc-chip-graphic\">\r\n        <ng-content select=\"md-chip-avatar, [mdChipAvatar]\"></ng-content>\r\n      </span>\r\n    }\r\n    <span class=\"mdc-evolution-chip__text-label md-mdc-chip-action-label\">\r\n      <ng-content></ng-content>\r\n      <span class=\"md-mdc-chip-primary-focus-indicator md-focus-indicator\"></span>\r\n    </span>\r\n  </span>\r\n</span>\r\n\r\n@if (_hasTrailingIcon()) {\r\n  <span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing\">\r\n    <ng-content select=\"md-chip-trailing-icon,[mdChipRemove],[mdChipTrailingIcon]\"></ng-content>\r\n  </span>\r\n}","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  ViewEncapsulation,\r\n  OnInit,\r\n  inject,\r\n  booleanAttribute,\r\n} from '@angular/core';\r\nimport { MDChip } from './chip';\r\nimport { MD_CHIP, MD_CHIPS_DEFAULT_OPTIONS } from './tokens';\r\nimport { MDChipAction } from './chip-action';\r\n\r\n\r\nexport class MDChipSelectionChange {\r\n  constructor(\r\n    public source: MDChipOption,\r\n    public selected: boolean,\r\n    public isUserInput = false,\r\n  ) {}\r\n}\r\n\r\n@Component({\r\n  selector: 'md-basic-chip-option, [md-basic-chip-option], md-chip-option, [md-chip-option]',\r\n  templateUrl: 'chip-option.html',\r\n  styleUrl: 'chip.scss',\r\n  host: {\r\n    'class': 'md-mdc-chip md-mdc-chip-option',\r\n    '[class.mdc-evolution-chip]': '!_isBasicChip',\r\n    '[class.mdc-evolution-chip--filter]': '!_isBasicChip',\r\n    '[class.mdc-evolution-chip--selectable]': '!_isBasicChip',\r\n    '[class.md-mdc-chip-selected]': 'selected',\r\n    '[class.md-mdc-chip-multiple]': '_chipListMultiple',\r\n    '[class.md-mdc-chip-disabled]': 'disabled',\r\n    '[class.md-mdc-chip-with-avatar]': 'leadingIcon',\r\n    '[class.mdc-evolution-chip--disabled]': 'disabled',\r\n    '[class.mdc-evolution-chip--selected]': 'selected',\r\n    '[class.mdc-evolution-chip--selecting]': '!_animationsDisabled',\r\n    '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\r\n    '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\r\n    '[class.mdc-evolution-chip--with-primary-graphic]': '_hasLeadingGraphic()',\r\n    '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\r\n    '[class.md-mdc-chip-highlighted]': 'highlighted',\r\n    '[class.md-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()',\r\n    '[attr.tabindex]': 'null',\r\n    '[attr.aria-label]': 'null',\r\n    '[attr.aria-description]': 'null',\r\n    '[attr.role]': 'role',\r\n    '[id]': 'id',\r\n  },\r\n  providers: [\r\n    {provide: MDChip, useExisting: MDChipOption},\r\n    {provide: MD_CHIP, useExisting: MDChipOption},\r\n  ],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [MDChipAction],\r\n})\r\nexport class MDChipOption extends MDChip implements OnInit {\r\n  private _defaultOptions = inject(MD_CHIPS_DEFAULT_OPTIONS, {optional: true});\r\n\r\n  chipListSelectable: boolean = true;\r\n\r\n  _chipListMultiple: boolean = false;\r\n\r\n  _chipListHideSingleSelectionIndicator: boolean =\r\n    this._defaultOptions?.hideSingleSelectionIndicator ?? false;\r\n\r\n\r\n  @Input({transform: booleanAttribute})\r\n  get selectable(): boolean {\r\n    return this._selectable && this.chipListSelectable;\r\n  }\r\n  set selectable(value: boolean) {\r\n    this._selectable = value;\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n  protected _selectable: boolean = true;\r\n\r\n  /** Whether the chip is selected. */\r\n  @Input({transform: booleanAttribute})\r\n  get selected(): boolean {\r\n    return this._selected;\r\n  }\r\n  set selected(value: boolean) {\r\n    this._setSelectedState(value, false, true);\r\n  }\r\n  private _selected = false;\r\n\r\n\r\n  get ariaSelected(): string | null {\r\n    return this.selectable ? this.selected.toString() : null;\r\n  }\r\n\r\n  protected override basicChipAttrName = 'md-basic-chip-option';\r\n\r\n  @Output() readonly selectionChange: EventEmitter<MDChipSelectionChange> =\r\n    new EventEmitter<MDChipSelectionChange>();\r\n\r\n  override ngOnInit() {\r\n    super.ngOnInit();\r\n    this.role = 'presentation';\r\n  }\r\n\r\n\r\n  select(): void {\r\n    this._setSelectedState(true, false, true);\r\n  }\r\n\r\n\r\n  deselect(): void {\r\n    this._setSelectedState(false, false, true);\r\n  }\r\n\r\n\r\n  selectViaInteraction(): void {\r\n    this._setSelectedState(true, true, true);\r\n  }\r\n\r\n\r\n  toggleSelected(isUserInput: boolean = false): boolean {\r\n    this._setSelectedState(!this.selected, isUserInput, true);\r\n    return this.selected;\r\n  }\r\n\r\n  override _handlePrimaryActionInteraction() {\r\n    if (!this.disabled) {\r\n\r\n      this.focus();\r\n\r\n      if (this.selectable) {\r\n        this.toggleSelected(true);\r\n      }\r\n    }\r\n  }\r\n\r\n  _hasLeadingGraphic() {\r\n    if (this.leadingIcon) {\r\n      return true;\r\n    }\r\n\r\n\r\n    return !this._chipListHideSingleSelectionIndicator || this._chipListMultiple;\r\n  }\r\n\r\n  _setSelectedState(isSelected: boolean, isUserInput: boolean, emitEvent: boolean) {\r\n    if (isSelected !== this.selected) {\r\n      this._selected = isSelected;\r\n\r\n      if (emitEvent) {\r\n        this.selectionChange.emit({\r\n          source: this,\r\n          isUserInput,\r\n          selected: this.selected,\r\n        });\r\n      }\r\n\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n}","<span class=\"md-mdc-chip-focus-overlay\"></span>\r\n\r\n<span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--primary\">\r\n  <button\r\n    mdChipAction\r\n    [_allowFocusWhenDisabled]=\"true\"\r\n    [attr.aria-description]=\"ariaDescription\"\r\n    [attr.aria-label]=\"ariaLabel\"\r\n    [attr.aria-selected]=\"ariaSelected\"\r\n    role=\"option\">\r\n    @if (_hasLeadingGraphic()) {\r\n      <span class=\"mdc-evolution-chip__graphic md-mdc-chip-graphic\">\r\n        <ng-content select=\"md-chip-avatar, [mdChipAvatar]\"></ng-content>\r\n        <span class=\"mdc-evolution-chip__checkmark\">\r\n          <svg\r\n            class=\"mdc-evolution-chip__checkmark-svg\"\r\n            viewBox=\"-2 -3 30 30\"\r\n            focusable=\"false\"\r\n            aria-hidden=\"true\">\r\n            <path class=\"mdc-evolution-chip__checkmark-path\"\r\n                  fill=\"none\" stroke=\"currentColor\" d=\"M1.73,12.91 8.1,19.28 22.79,4.59\" />\r\n          </svg>\r\n        </span>\r\n      </span>\r\n    }\r\n    <span class=\"mdc-evolution-chip__text-label md-mdc-chip-action-label\">\r\n      <ng-content></ng-content>\r\n      <span class=\"md-mdc-chip-primary-focus-indicator md-focus-indicator\"></span>\r\n    </span>\r\n  </button>\r\n</span>\r\n\r\n@if (_hasTrailingIcon()) {\r\n  <span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing\">\r\n    <ng-content select=\"md-chip-trailing-icon,[mdChipRemove],[mdChipTrailingIcon]\"></ng-content>\r\n  </span>\r\n}","import {Directive, ElementRef, inject, DOCUMENT} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: 'span[mdChipEditInput]',\r\n  host: {\r\n    'class': 'md-chip-edit-input',\r\n    'role': 'textbox',\r\n    'tabindex': '-1',\r\n    'contenteditable': 'true',\r\n  },\r\n})\r\nexport class MDChipEditInput {\r\n  private readonly _elementRef = inject(ElementRef);\r\n  private readonly _document = inject(DOCUMENT);\r\n\r\n  constructor() {}\r\n\r\n  initialize(initialValue: string) {\r\n    this.getNativeElement().focus();\r\n    this.setValue(initialValue);\r\n  }\r\n\r\n  getNativeElement(): HTMLElement {\r\n    return this._elementRef.nativeElement;\r\n  }\r\n\r\n  setValue(value: string) {\r\n    this.getNativeElement().textContent = value;\r\n    this._moveCursorToEndOfInput();\r\n  }\r\n\r\n  getValue(): string {\r\n    return this.getNativeElement().textContent || '';\r\n  }\r\n\r\n  private _moveCursorToEndOfInput() {\r\n    const range = this._document.createRange();\r\n    range.selectNodeContents(this.getNativeElement());\r\n    range.collapse(false);\r\n    const sel = window.getSelection()!;\r\n    sel.removeAllRanges();\r\n    sel.addRange(range);\r\n  }\r\n}","import {ENTER} from '@angular/cdk/keycodes';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChild,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  afterNextRender,\r\n} from '@angular/core';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport { MDChip, MDChipEvent } from './chip';\r\nimport { MD_CHIP } from './tokens';\r\nimport { MDChipAction } from './chip-action';\r\nimport { MDChipEditInput } from './chip-edit-input';\r\n\r\nexport interface MDChipEditedEvent extends MDChipEvent {\r\n  value: string;\r\n}\r\n\r\n\r\n@Component({\r\n  selector: 'md-chip-row, [md-chip-row], md-basic-chip-row, [md-basic-chip-row]',\r\n  templateUrl: 'chip-row.html',\r\n  styleUrl: 'chip.scss',\r\n  host: {\r\n    'class': 'md-mdc-chip md-mdc-chip-row mdc-evolution-chip',\r\n    '[class.md-mdc-chip-with-avatar]': 'leadingIcon',\r\n    '[class.md-mdc-chip-disabled]': 'disabled',\r\n    '[class.md-mdc-chip-editing]': '_isEditing',\r\n    '[class.md-mdc-chip-editable]': 'editable',\r\n    '[class.mdc-evolution-chip--disabled]': 'disabled',\r\n    '[class.mdc-evolution-chip--with-leading-action]': '_hasLeadingActionIcon()',\r\n    '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\r\n    '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon',\r\n    '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\r\n    '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\r\n    '[class.md-mdc-chip-highlighted]': 'highlighted',\r\n    '[class.md-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()',\r\n    '[id]': 'id',\r\n\r\n    '[attr.tabindex]': 'disabled ? null : -1',\r\n    '[attr.aria-label]': 'null',\r\n    '[attr.aria-description]': 'null',\r\n    '[attr.role]': 'role',\r\n    '(focus)': '_handleFocus()',\r\n    '(click)': 'this._hasInteractiveActions() ? _handleClick($event) : null',\r\n    '(dblclick)': '_handleDoubleclick($event)',\r\n  },\r\n  providers: [\r\n    {provide: MDChip, useExisting: MDChipRow},\r\n    {provide: MD_CHIP, useExisting: MDChipRow},\r\n  ],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [MDChipAction, MDChipEditInput],\r\n})\r\nexport class MDChipRow extends MDChip implements AfterViewInit {\r\n  protected override basicChipAttrName = 'md-basic-chip-row';\r\n\r\n  private _editStartPending = false;\r\n\r\n  @Input() editable: boolean = false;\r\n\r\n  @Output() readonly edited: EventEmitter<MDChipEditedEvent> =\r\n    new EventEmitter<MDChipEditedEvent>();\r\n\r\n\r\n  @ViewChild(MDChipEditInput) defaultEditInput?: MDChipEditInput;\r\n\r\n  @ContentChild(MDChipEditInput) contentEditInput?: MDChipEditInput;\r\n\r\n\r\n  private _alreadyFocused = false;\r\n\r\n  _isEditing = false;\r\n\r\n  constructor() {\r\n    super();\r\n\r\n    this.role = 'row';\r\n    this._onBlur.pipe(takeUntil(this.destroyed)).subscribe(() => {\r\n      if (this._isEditing && !this._editStartPending) {\r\n        this._onEditFinish();\r\n      }\r\n      this._alreadyFocused = false;\r\n    });\r\n  }\r\n\r\n  override ngAfterViewInit() {\r\n    super.ngAfterViewInit();\r\n\r\n    this._ngZone.runOutsideAngular(() => {\r\n      this._elementRef.nativeElement.addEventListener(\r\n        'mousedown',\r\n        () => (this._alreadyFocused = this._hasFocus()),\r\n      );\r\n    });\r\n  }\r\n\r\n  protected _hasLeadingActionIcon() {\r\n    return !this._isEditing && !!this.editIcon;\r\n  }\r\n\r\n  override _hasTrailingIcon() {\r\n    return !this._isEditing && super._hasTrailingIcon();\r\n  }\r\n\r\n  _handleFocus() {\r\n    if (!this._isEditing && !this.disabled) {\r\n      this.focus();\r\n    }\r\n  }\r\n\r\n  override _handleKeydown(event: KeyboardEvent): void {\r\n    if (event.keyCode === ENTER && !this.disabled) {\r\n      if (this._isEditing) {\r\n        event.preventDefault();\r\n        this._onEditFinish();\r\n      } else if (this.editable) {\r\n        this._startEditing(event);\r\n      }\r\n    } else if (this._isEditing) {\r\n      event.stopPropagation();\r\n    } else {\r\n      super._handleKeydown(event);\r\n    }\r\n  }\r\n\r\n  _handleClick(event: MouseEvent) {\r\n    if (!this.disabled && this.editable && !this._isEditing && this._alreadyFocused) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      this._startEditing(event);\r\n    }\r\n  }\r\n\r\n  _handleDoubleclick(event: MouseEvent) {\r\n    if (!this.disabled && this.editable) {\r\n      this._startEditing(event);\r\n    }\r\n  }\r\n\r\n  override _edit(): void {\r\n    this._changeDetectorRef.markForCheck();\r\n    this._startEditing();\r\n  }\r\n\r\n  private _startEditing(event?: Event) {\r\n    if (\r\n      !this.primaryAction ||\r\n      (this.removeIcon &&\r\n        !!event &&\r\n        this._getSourceAction(event.target as Node) === this.removeIcon)\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    const value = this.value;\r\n\r\n    this._isEditing = this._editStartPending = true;\r\n\r\n    afterNextRender(\r\n      () => {\r\n        this._getEditInput().initialize(value);\r\n\r\n        setTimeout(() => this._ngZone.run(() => (this._editStartPending = false)));\r\n      },\r\n      {injector: this._injector},\r\n    );\r\n  }\r\n\r\n  private _onEditFinish() {\r\n    this._isEditing = this._editStartPending = false;\r\n    this.edited.emit({chip: this, value: this._getEditInput().getValue()});\r\n\r\n    if (\r\n      this._document.activeElement === this._getEditInput().getNativeElement() ||\r\n      this._document.activeElement === this._document.body\r\n    ) {\r\n      this.primaryAction.focus();\r\n    }\r\n  }\r\n\r\n  private _getEditInput(): MDChipEditInput {\r\n    return this.contentEditInput || this.defaultEditInput!;\r\n  }\r\n}","@if (!_isEditing) {\r\n  <span class=\"md-mdc-chip-focus-overlay\"></span>\r\n}\r\n\r\n@if (_hasLeadingActionIcon()) {\r\n  <span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--leading\" role=\"gridcell\">\r\n    <ng-content select=\"[mdChipEdit]\"></ng-content>\r\n  </span>\r\n}\r\n<span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--primary\" role=\"gridcell\"\r\n    mdChipAction\r\n    [disabled]=\"disabled\"\r\n    [attr.aria-description]=\"ariaDescription\"\r\n    [attr.aria-label]=\"ariaLabel\">\r\n  @if (leadingIcon) {\r\n    <span class=\"mdc-evolution-chip__graphic md-mdc-chip-graphic\">\r\n      <ng-content select=\"md-chip-avatar, [mdChipAvatar]\"></ng-content>\r\n    </span>\r\n  }\r\n\r\n  <span class=\"mdc-evolution-chip__text-label md-mdc-chip-action-label\">\r\n    @if (_isEditing) {\r\n      @if (contentEditInput) {\r\n        <ng-content select=\"[mdChipEditInput]\"></ng-content>\r\n      } @else {\r\n        <span mdChipEditInput></span>\r\n      }\r\n    } @else {\r\n      <ng-content></ng-content>\r\n    }\r\n\r\n    <span class=\"md-mdc-chip-primary-focus-indicator md-focus-indicator\" aria-hidden=\"true\"></span>\r\n  </span>\r\n</span>\r\n\r\n@if (_hasTrailingIcon()) {\r\n  <span\r\n    class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing\"\r\n    role=\"gridcell\">\r\n    <ng-content select=\"md-chip-trailing-icon,[mdChipRemove],[mdChipTrailingIcon]\"></ng-content>\r\n  </span>\r\n}","import {FocusKeyManager} from '@angular/cdk/a11y';\r\nimport {Directionality} from '@angular/cdk/bidi';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  QueryList,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  numberAttribute,\r\n  inject,\r\n} from '@angular/core';\r\nimport {Observable, Subject, merge} from 'rxjs';\r\nimport {startWith, switchMap, takeUntil} from 'rxjs/operators';\r\nimport { MDChipAction, MDChipContent } from './chip-action';\r\nimport { MDChip, MDChipEvent } from './chip';\r\n\r\n@Component({\r\n  selector: 'md-chip-set',\r\n  template: `\r\n    <div class=\"mdc-evolution-chip-set__chips\" role=\"presentation\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n  `,\r\n  styleUrl: 'chip-set.scss',\r\n  host: {\r\n    'class': 'md-mdc-chip-set mdc-evolution-chip-set',\r\n    '(keydown)': '_handleKeydown($event)',\r\n    '[attr.role]': 'role',\r\n  },\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MDChipSet implements AfterViewInit, OnDestroy {\r\n  protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  protected _changeDetectorRef = inject(ChangeDetectorRef);\r\n  private _dir = inject(Directionality, {optional: true});\r\n\r\n  private _lastDestroyedFocusedChipIndex: number | null = null;\r\n\r\n  protected _keyManager: FocusKeyManager<MDChipAction>;\r\n\r\n  protected _destroyed = new Subject<void>();\r\n\r\n  protected _defaultRole = 'presentation';\r\n\r\n  get chipFocusChanges(): Observable<MDChipEvent> {\r\n    return this._getChipStream(chip => chip._onFocus);\r\n  }\r\n\r\n  get chipDestroyedChanges(): Observable<MDChipEvent> {\r\n    return this._getChipStream(chip => chip.destroyed);\r\n  }\r\n\r\n  get chipRemovedChanges(): Observable<MDChipEvent> {\r\n    return this._getChipStream(chip => chip.removed);\r\n  }\r\n\r\n  @Input({transform: booleanAttribute})\r\n  get disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n  set disabled(value: boolean) {\r\n    this._disabled = value;\r\n    this._syncChipsState();\r\n  }\r\n  protected _disabled: boolean = false;\r\n\r\n  get empty(): boolean {\r\n    return !this._chips || this._chips.length === 0;\r\n  }\r\n\r\n  @Input()\r\n  get role(): string | null {\r\n    if (this._explicitRole) {\r\n      return this._explicitRole;\r\n    }\r\n\r\n    return this.empty ? null : this._defaultRole;\r\n  }\r\n\r\n  @Input({\r\n    transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\r\n  })\r\n  tabIndex: number = 0;\r\n\r\n  set role(value: string | null) {\r\n    this._explicitRole = value;\r\n  }\r\n  private _explicitRole: string | null = null;\r\n\r\n  get focused(): boolean {\r\n    return this._hasFocusedChip();\r\n  }\r\n\r\n  @ContentChildren(MDChip, {\r\n    descendants: true,\r\n  })\r\n  _chips: QueryList<MDChip>;\r\n\r\n  _chipActions = new QueryList<MDChipAction>();\r\n\r\n  constructor() {}\r\n\r\n  ngAfterViewInit() {\r\n    this._setUpFocusManagement();\r\n    this._trackChipSetChanges();\r\n    this._trackDestroyedFocusedChip();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._keyManager?.destroy();\r\n    this._chipActions.destroy();\r\n    this._destroyed.next();\r\n    this._destroyed.complete();\r\n  }\r\n\r\n  protected _hasFocusedChip() {\r\n    return this._chips && this._chips.some(chip => chip._hasFocus());\r\n  }\r\n\r\n  protected _syncChipsState() {\r\n    this._chips?.forEach(chip => {\r\n      chip._chipListDisabled = this._disabled;\r\n      chip._changeDetectorRef.markForCheck();\r\n    });\r\n  }\r\n\r\n  /** Dummy method for subclasses to override. Base chip set cannot be focused. */\r\n  focus() {}\r\n\r\n  _handleKeydown(event: KeyboardEvent) {\r\n    if (this._originatesFromChip(event)) {\r\n      this._keyManager.onKeydown(event);\r\n    }\r\n  }\r\n\r\n  protected _isValidIndex(index: number): boolean {\r\n    return index >= 0 && index < this._chips.length;\r\n  }\r\n\r\n  protected _allowFocusEscape() {\r\n    const previous = this._elementRef.nativeElement.tabIndex;\r\n\r\n    if (previous !== -1) {\r\n      this._elementRef.nativeElement.tabIndex = -1;\r\n\r\n      setTimeout(() => (this._elementRef.nativeElement.tabIndex = previous));\r\n    }\r\n  }\r\n\r\n  protected _getChipStream<T, C extends MDChip = MDChip>(\r\n    mappingFunction: (chip: C) => Observable<T>,\r\n  ): Observable<T> {\r\n    return this._chips.changes.pipe(\r\n      startWith(null),\r\n      switchMap(() => merge(...(this._chips as QueryList<C>).map(mappingFunction))),\r\n    );\r\n  }\r\n\r\n  protected _originatesFromChip(event: Event): boolean {\r\n    let currentElement = event.target as HTMLElement | null;\r\n\r\n    while (currentElement && currentElement !== this._elementRef.nativeElement) {\r\n      if (currentElement.classList.contains('md-mdc-chip')) {\r\n        return true;\r\n      }\r\n      currentElement = currentElement.parentElement;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private _setUpFocusManagement() {\r\n    this._chips.changes.pipe(startWith(this._chips)).subscribe((chips: QueryList<MDChip>) => {\r\n      const actions: MDChipAction[] = [];\r\n      chips.forEach(chip => chip._getActions().forEach(action => actions.push(action)));\r\n      this._chipActions.reset(actions);\r\n      this._chipActions.notifyOnChanges();\r\n    });\r\n\r\n    this._keyManager = new FocusKeyManager(this._chipActions)\r\n      .withVerticalOrientation()\r\n      .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr')\r\n      .withHomeAndEnd()\r\n      .skipPredicate(action => this._skipPredicate(action));\r\n\r\n    this.chipFocusChanges.pipe(takeUntil(this._destroyed)).subscribe(({chip}) => {\r\n      const action = chip._getSourceAction(document.activeElement as Element);\r\n\r\n      if (action) {\r\n        this._keyManager.updateActiveItem(action);\r\n      }\r\n    });\r\n\r\n    this._dir?.change\r\n      .pipe(takeUntil(this._destroyed))\r\n      .subscribe(direction => this._keyManager.withHorizontalOrientation(direction));\r\n  }\r\n\r\n  protected _skipPredicate(action: MDChipContent): boolean {\r\n    return action.disabled;\r\n  }\r\n\r\n  private _trackChipSetChanges() {\r\n    this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\r\n      if (this.disabled) {\r\n        Promise.resolve().then(() => this._syncChipsState());\r\n      }\r\n\r\n      this._redirectDestroyedChipFocus();\r\n    });\r\n  }\r\n\r\n  private _trackDestroyedFocusedChip() {\r\n    this.chipDestroyedChanges.pipe(takeUntil(this._destroyed)).subscribe((event: MDChipEvent) => {\r\n      const chipArray = this._chips.toArray();\r\n      const chipIndex = chipArray.indexOf(event.chip);\r\n      const hasFocus = event.chip._hasFocus();\r\n      const wasLastFocused =\r\n        event.chip._hadFocusOnRemove &&\r\n        this._keyManager.activeItem &&\r\n        event.chip._getActions().includes(this._keyManager.activeItem);\r\n\r\n      const shouldMoveFocus = hasFocus || wasLastFocused;\r\n\r\n      if (this._isValidIndex(chipIndex) && shouldMoveFocus) {\r\n        this._lastDestroyedFocusedChipIndex = chipIndex;\r\n      }\r\n    });\r\n  }\r\n\r\n  private _redirectDestroyedChipFocus() {\r\n    if (this._lastDestroyedFocusedChipIndex == null) {\r\n      return;\r\n    }\r\n\r\n    if (this._chips.length) {\r\n      const newIndex = Math.min(this._lastDestroyedFocusedChipIndex, this._chips.length - 1);\r\n      const chipToFocus = this._chips.toArray()[newIndex];\r\n\r\n      if (chipToFocus.disabled) {\r\n        if (this._chips.length === 1) {\r\n          this.focus();\r\n        } else {\r\n          this._keyManager.setPreviousItemActive();\r\n        }\r\n      } else {\r\n        chipToFocus.focus();\r\n      }\r\n    } else {\r\n      this.focus();\r\n    }\r\n\r\n    this._lastDestroyedFocusedChipIndex = null;\r\n  }\r\n}","import {\r\n    AfterContentInit,\r\n    booleanAttribute,\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ContentChildren,\r\n    EventEmitter,\r\n    forwardRef,\r\n    inject,\r\n    Input,\r\n    OnDestroy,\r\n    Output,\r\n    QueryList,\r\n    ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { startWith, takeUntil } from 'rxjs/operators';\r\nimport { TAB } from '@angular/cdk/keycodes';\r\nimport { MDChipSet } from './chip-set';\r\nimport { MD_CHIPS_DEFAULT_OPTIONS } from './tokens';\r\nimport { MDChipOption, MDChipSelectionChange } from './chip-option';\r\nimport { MDChip, MDChipEvent } from './chip';\r\nimport { MDChipAction } from './chip-action';\r\n\r\nexport class MDChipListboxChange {\r\n    constructor(public source: MDChipListbox, public value: any) {}\r\n}\r\n\r\nexport const MD_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR: any = {\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => MDChipListbox),\r\n    multi: true,\r\n};\r\n\r\n@Component({\r\n    selector: 'md-chip-listbox',\r\n    template: `\r\n        <div class=\"mdc-evolution-chip-set__chips\" role=\"presentation\">\r\n            <ng-content></ng-content>\r\n        </div>\r\n    `,\r\n    styleUrl: 'chip-set.scss',\r\n    host: {\r\n        class: 'mdc-evolution-chip-set md-mdc-chip-listbox',\r\n        '[attr.role]': 'role',\r\n        '[tabIndex]': '(disabled || empty) ? -1 : tabIndex',\r\n        '[attr.aria-required]': 'role ? required : null',\r\n        '[attr.aria-disabled]': 'disabled.toString()',\r\n        '[attr.aria-multiselectable]': 'multiple',\r\n        '[attr.aria-orientation]': 'ariaOrientation',\r\n        '[class.md-mdc-chip-list-disabled]': 'disabled',\r\n        '[class.md-mdc-chip-list-required]': 'required',\r\n        '(focus)': 'focus()',\r\n        '(blur)': '_blur()',\r\n        '(keydown)': '_keydown($event)',\r\n    },\r\n    providers: [MD_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MDChipListbox extends MDChipSet implements AfterContentInit, OnDestroy, ControlValueAccessor {\r\n    _onTouched = () => {};\r\n\r\n    _onChange: (value: any) => void = () => {};\r\n\r\n    protected override _defaultRole = 'listbox';\r\n\r\n    private _defaultOptions = inject(MD_CHIPS_DEFAULT_OPTIONS, { optional: true });\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    get multiple(): boolean {\r\n        return this._multiple;\r\n    }\r\n    set multiple(value: boolean) {\r\n        this._multiple = value;\r\n        this._syncListboxProperties();\r\n    }\r\n    private _multiple: boolean = false;\r\n\r\n    get selected(): MDChipOption[] | MDChipOption {\r\n        const selectedChips = this._chips.toArray().filter((chip) => chip.selected);\r\n        return this.multiple ? selectedChips : selectedChips[0];\r\n    }\r\n\r\n    @Input('aria-orientation') ariaOrientation: 'horizontal' | 'vertical' = 'horizontal';\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    get selectable(): boolean {\r\n        return this._selectable;\r\n    }\r\n    set selectable(value: boolean) {\r\n        this._selectable = value;\r\n        this._syncListboxProperties();\r\n    }\r\n    protected _selectable: boolean = true;\r\n\r\n    @Input() compareWith: (o1: any, o2: any) => boolean = (o1: any, o2: any) => o1 === o2;\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    required: boolean = false;\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    get hideSingleSelectionIndicator(): boolean {\r\n        return this._hideSingleSelectionIndicator;\r\n    }\r\n    set hideSingleSelectionIndicator(value: boolean) {\r\n        this._hideSingleSelectionIndicator = value;\r\n        this._syncListboxProperties();\r\n    }\r\n    private _hideSingleSelectionIndicator: boolean = this._defaultOptions?.hideSingleSelectionIndicator ?? false;\r\n\r\n    get chipSelectionChanges(): Observable<MDChipSelectionChange> {\r\n        return this._getChipStream<MDChipSelectionChange, MDChipOption>((chip) => chip.selectionChange);\r\n    }\r\n\r\n    get chipBlurChanges(): Observable<MDChipEvent> {\r\n        return this._getChipStream((chip) => chip._onBlur);\r\n    }\r\n\r\n    @Input()\r\n    get value(): any {\r\n        return this._value;\r\n    }\r\n    set value(value: any) {\r\n        if (this._chips && this._chips.length) {\r\n            this._setSelectionByValue(value, false);\r\n        }\r\n        this._value = value;\r\n    }\r\n    protected _value: any;\r\n\r\n    @Output() readonly change: EventEmitter<MDChipListboxChange> = new EventEmitter<MDChipListboxChange>();\r\n\r\n    @ContentChildren(MDChipOption, {\r\n        descendants: true,\r\n    })\r\n    override _chips: QueryList<MDChipOption> = undefined!;\r\n\r\n    ngAfterContentInit() {\r\n        this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\r\n            if (this.value !== undefined) {\r\n                Promise.resolve().then(() => {\r\n                    this._setSelectionByValue(this.value, false);\r\n                });\r\n            }\r\n            this._syncListboxProperties();\r\n        });\r\n\r\n        this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => this._blur());\r\n        this.chipSelectionChanges.pipe(takeUntil(this._destroyed)).subscribe((event) => {\r\n            if (!this.multiple) {\r\n                this._chips.forEach((chip) => {\r\n                    if (chip !== event.source) {\r\n                        chip._setSelectedState(false, false, false);\r\n                    }\r\n                });\r\n            }\r\n\r\n            if (event.isUserInput) {\r\n                this._propagateChanges();\r\n            }\r\n        });\r\n    }\r\n\r\n    override focus(): void {\r\n        if (this.disabled) {\r\n            return;\r\n        }\r\n\r\n        const firstSelectedChip = this._getFirstSelectedChip();\r\n\r\n        if (firstSelectedChip && !firstSelectedChip.disabled) {\r\n            firstSelectedChip.focus();\r\n        } else if (this._chips.length > 0) {\r\n            this._keyManager.setFirstItemActive();\r\n        } else {\r\n            this._elementRef.nativeElement.focus();\r\n        }\r\n    }\r\n\r\n    writeValue(value: any): void {\r\n        if (value != null) {\r\n            this.value = value;\r\n        } else {\r\n            this.value = undefined;\r\n        }\r\n    }\r\n\r\n    registerOnChange(fn: (value: any) => void): void {\r\n        this._onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: () => void): void {\r\n        this._onTouched = fn;\r\n    }\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this.disabled = isDisabled;\r\n    }\r\n\r\n    _setSelectionByValue(value: any, isUserInput: boolean = true) {\r\n        this._clearSelection();\r\n\r\n        if (Array.isArray(value)) {\r\n            value.forEach((currentValue) => this._selectValue(currentValue, isUserInput));\r\n        } else {\r\n            this._selectValue(value, isUserInput);\r\n        }\r\n    }\r\n\r\n    _blur() {\r\n        if (!this.disabled) {\r\n            setTimeout(() => {\r\n                if (!this.focused) {\r\n                    this._markAsTouched();\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    _keydown(event: KeyboardEvent) {\r\n        if (event.keyCode === TAB) {\r\n            super._allowFocusEscape();\r\n        }\r\n    }\r\n\r\n    private _markAsTouched() {\r\n        this._onTouched();\r\n        this._changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    private _propagateChanges(): void {\r\n        let valueToEmit: any = null;\r\n\r\n        if (Array.isArray(this.selected)) {\r\n            valueToEmit = this.selected.map((chip) => chip.value);\r\n        } else {\r\n            valueToEmit = this.selected ? this.selected.value : undefined;\r\n        }\r\n        this._value = valueToEmit;\r\n        this.change.emit(new MDChipListboxChange(this, valueToEmit));\r\n        this._onChange(valueToEmit);\r\n        this._changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    private _clearSelection(skip?: MDChip): void {\r\n        this._chips.forEach((chip) => {\r\n            if (chip !== skip) {\r\n                chip.deselect();\r\n            }\r\n        });\r\n    }\r\n\r\n    private _selectValue(value: any, isUserInput: boolean): MDChip | undefined {\r\n        const correspondingChip = this._chips.find((chip) => {\r\n            return chip.value != null && this.compareWith(chip.value, value);\r\n        });\r\n\r\n        if (correspondingChip) {\r\n            isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\r\n        }\r\n\r\n        return correspondingChip;\r\n    }\r\n\r\n    private _syncListboxProperties() {\r\n        if (this._chips) {\r\n            Promise.resolve().then(() => {\r\n                this._chips.forEach((chip) => {\r\n                    chip._chipListMultiple = this.multiple;\r\n                    chip.chipListSelectable = this._selectable;\r\n                    chip._chipListHideSingleSelectionIndicator = this.hideSingleSelectionIndicator;\r\n                    chip._changeDetectorRef.markForCheck();\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    private _getFirstSelectedChip(): MDChipOption | undefined {\r\n        if (Array.isArray(this.selected)) {\r\n            return this.selected.length ? this.selected[0] : undefined;\r\n        } else {\r\n            return this.selected;\r\n        }\r\n    }\r\n\r\n    protected override _skipPredicate(action: MDChipAction): boolean {\r\n        return false;\r\n    }\r\n}\r\n","import { _IdGenerator } from '@angular/cdk/a11y';\r\nimport { DOWN_ARROW, hasModifierKey, TAB, UP_ARROW } from '@angular/cdk/keycodes';\r\nimport {\r\n    AfterContentInit,\r\n    AfterViewInit,\r\n    booleanAttribute,\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ContentChildren,\r\n    DoCheck,\r\n    EventEmitter,\r\n    Input,\r\n    OnDestroy,\r\n    Output,\r\n    QueryList,\r\n    ViewEncapsulation,\r\n    inject,\r\n    Injectable,\r\n} from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, FormGroupDirective, NgControl, NgForm, Validators } from '@angular/forms';\r\nimport { MDChipSet } from './chip-set';\r\nimport { MDChipTextControl } from './chip-text-control';\r\nimport { merge, Observable, Subject, takeUntil } from 'rxjs';\r\nimport { MDChipRow } from './chip-row';\r\nimport { MDChipEvent } from './chip';\r\n\r\nexport class MDChipGridChange {\r\n    constructor(public source: MDChipGrid, public value: any) {}\r\n}\r\n\r\n\r\n@Component({\r\n    selector: 'md-chip-grid',\r\n    template: `\r\n        <div class=\"mdc-evolution-chip-set__chips\" role=\"presentation\">\r\n            <ng-content></ng-content>\r\n        </div>\r\n    `,\r\n    styleUrl: 'chip-set.scss',\r\n    host: {\r\n        class: 'md-mdc-chip-set md-mdc-chip-grid mdc-evolution-chip-set',\r\n        '[attr.role]': 'role',\r\n        '[attr.tabindex]': '(disabled || (_chips && _chips.length === 0)) ? -1 : tabIndex',\r\n        '[attr.aria-disabled]': 'disabled.toString()',\r\n        '[attr.aria-invalid]': 'errorState',\r\n        '[class.md-mdc-chip-list-disabled]': 'disabled',\r\n        '[class.md-mdc-chip-list-invalid]': 'errorState',\r\n        '[class.md-mdc-chip-list-required]': 'required',\r\n        '(focus)': 'focus()',\r\n        '(blur)': '_blur()',\r\n    },\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MDChipGrid\r\n    extends MDChipSet\r\n    implements AfterContentInit, AfterViewInit, ControlValueAccessor, DoCheck, OnDestroy\r\n{\r\n    ngControl = inject(NgControl, { optional: true, self: true })!;\r\n\r\n    readonly controlType: string = 'md-chip-grid';\r\n\r\n    protected _chipInput?: MDChipTextControl;\r\n\r\n    protected override _defaultRole = 'grid';\r\n    private _errorStateTracker: _ErrorStateTracker;\r\n    private _uid = inject(_IdGenerator).getId('md-chip-grid-');\r\n\r\n\r\n    private _ariaDescribedbyIds: string[] = [];\r\n\r\n    _onTouched = () => {};\r\n\r\n\r\n    _onChange: (value: any) => void = () => {};\r\n\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    override get disabled(): boolean {\r\n        return this.ngControl ? !!this.ngControl.disabled : this._disabled;\r\n    }\r\n    override set disabled(value: boolean) {\r\n        this._disabled = value;\r\n        this._syncChipsState();\r\n        this.stateChanges.next();\r\n    }\r\n\r\n\r\n    get id(): string {\r\n        return this._chipInput ? this._chipInput.id : this._uid;\r\n    }\r\n\r\n\r\n    override get empty(): boolean {\r\n        return (!this._chipInput || this._chipInput.empty) && (!this._chips || this._chips.length === 0);\r\n    }\r\n\r\n\r\n    @Input()\r\n    get placeholder(): string {\r\n        return this._chipInput ? this._chipInput.placeholder : this._placeholder;\r\n    }\r\n    set placeholder(value: string) {\r\n        this._placeholder = value;\r\n        this.stateChanges.next();\r\n    }\r\n    protected _placeholder: string;\r\n\r\n\r\n    override get focused(): boolean {\r\n        return this._chipInput?.focused || this._hasFocusedChip();\r\n    }\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    get required(): boolean {\r\n        return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n    }\r\n    set required(value: boolean) {\r\n        this._required = value;\r\n        this.stateChanges.next();\r\n    }\r\n    protected _required: boolean | undefined;\r\n\r\n    get shouldLabelFloat(): boolean {\r\n        return !this.empty || this.focused;\r\n    }\r\n\r\n\r\n    @Input()\r\n    get value(): any {\r\n        return this._value;\r\n    }\r\n    set value(value: any) {\r\n        this._value = value;\r\n    }\r\n    protected _value: any[] = [];\r\n\r\n    @Input()\r\n    get errorStateMatcher() {\r\n        return this._errorStateTracker.matcher;\r\n    }\r\n    set errorStateMatcher(value: ErrorStateMatcher) {\r\n        this._errorStateTracker.matcher = value;\r\n    }\r\n\r\n\r\n    get chipBlurChanges(): Observable<MDChipEvent> {\r\n        return this._getChipStream((chip) => chip._onBlur);\r\n    }\r\n\r\n\r\n    @Output() readonly change: EventEmitter<MDChipGridChange> = new EventEmitter<MDChipGridChange>();\r\n\r\n\r\n    @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    @ContentChildren(MDChipRow, {\r\n        descendants: true,\r\n    })\r\n    override _chips: QueryList<MDChipRow> = undefined!;\r\n\r\n\r\n    readonly stateChanges = new Subject<void>();\r\n\r\n    get errorState() {\r\n        return this._errorStateTracker.errorState;\r\n    }\r\n    set errorState(value: boolean) {\r\n        this._errorStateTracker.errorState = value;\r\n    }\r\n\r\n    constructor(...args: unknown[]);\r\n\r\n    constructor() {\r\n        super();\r\n\r\n        const parentForm = inject(NgForm, { optional: true });\r\n        const parentFormGroup = inject(FormGroupDirective, { optional: true });\r\n        const defaultErrorStateMatcher = inject(ErrorStateMatcher);\r\n\r\n        if (this.ngControl) {\r\n            this.ngControl.valueAccessor = this;\r\n        }\r\n\r\n        this._errorStateTracker = new _ErrorStateTracker(\r\n            defaultErrorStateMatcher,\r\n            this.ngControl,\r\n            parentFormGroup,\r\n            parentForm,\r\n            this.stateChanges\r\n        );\r\n    }\r\n\r\n    ngAfterContentInit() {\r\n        this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => {\r\n            this._blur();\r\n            this.stateChanges.next();\r\n        });\r\n\r\n        merge(this.chipFocusChanges, this._chips.changes)\r\n            .pipe(takeUntil(this._destroyed))\r\n            .subscribe(() => this.stateChanges.next());\r\n    }\r\n\r\n    ngDoCheck() {\r\n        if (this.ngControl) {\r\n            this.updateErrorState();\r\n        }\r\n    }\r\n\r\n    override ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n        this.stateChanges.complete();\r\n    }\r\n\r\n    registerInput(inputElement: MDChipTextControl): void {\r\n        this._chipInput = inputElement;\r\n        this._chipInput.setDescribedByIds(this._ariaDescribedbyIds);\r\n\r\n        this._elementRef.nativeElement.removeAttribute('aria-describedby');\r\n    }\r\n\r\n\r\n    onContainerClick(event: MouseEvent) {\r\n        if (!this.disabled && !this._originatesFromChip(event)) {\r\n            this.focus();\r\n        }\r\n    }\r\n\r\n\r\n    override focus(): void {\r\n        if (this.disabled || this._chipInput?.focused) {\r\n            return;\r\n        }\r\n\r\n        if (!this._chips.length || this._chips.first.disabled) {\r\n            if (!this._chipInput) {\r\n                return;\r\n            }\r\n\r\n\r\n            Promise.resolve().then(() => this._chipInput!.focus());\r\n        } else {\r\n            const activeItem = this._keyManager.activeItem;\r\n\r\n            if (activeItem) {\r\n                activeItem.focus();\r\n            } else {\r\n                this._keyManager.setFirstItemActive();\r\n            }\r\n        }\r\n\r\n        this.stateChanges.next();\r\n    }\r\n\r\n    get describedByIds(): string[] {\r\n        if (this._chipInput) {\r\n            return this._chipInput.describedByIds || [];\r\n        }\r\n        const existing = this._elementRef.nativeElement.getAttribute('aria-describedby');\r\n        return existing ? existing.split(' ') : [];\r\n    }\r\n\r\n\r\n    setDescribedByIds(ids: string[]) {\r\n        this._ariaDescribedbyIds = ids;\r\n\r\n        if (this._chipInput) {\r\n            this._chipInput.setDescribedByIds(ids);\r\n        } else if (ids.length) {\r\n            this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\r\n        } else {\r\n            this._elementRef.nativeElement.removeAttribute('aria-describedby');\r\n        }\r\n    }\r\n\r\n    writeValue(value: any): void {\r\n        this._value = value;\r\n    }\r\n\r\n\r\n    registerOnChange(fn: (value: any) => void): void {\r\n        this._onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: () => void): void {\r\n        this._onTouched = fn;\r\n    }\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this.disabled = isDisabled;\r\n        this.stateChanges.next();\r\n    }\r\n\r\n    updateErrorState() {\r\n        this._errorStateTracker.updateErrorState();\r\n    }\r\n\r\n    _blur() {\r\n        if (!this.disabled) {\r\n            setTimeout(() => {\r\n                if (!this.focused) {\r\n                    this._propagateChanges();\r\n                    this._markAsTouched();\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    protected override _allowFocusEscape() {\r\n        if (!this._chipInput?.focused) {\r\n            super._allowFocusEscape();\r\n        }\r\n    }\r\n\r\n    override _handleKeydown(event: KeyboardEvent) {\r\n        const keyCode = event.keyCode;\r\n        const activeItem = this._keyManager.activeItem;\r\n\r\n        if (keyCode === TAB) {\r\n            if (\r\n                this._chipInput?.focused &&\r\n                hasModifierKey(event, 'shiftKey') &&\r\n                this._chips.length &&\r\n                !this._chips.last.disabled\r\n            ) {\r\n                event.preventDefault();\r\n\r\n                if (activeItem) {\r\n                    this._keyManager.setActiveItem(activeItem);\r\n                } else {\r\n                    this._focusLastChip();\r\n                }\r\n            } else {\r\n                super._allowFocusEscape();\r\n            }\r\n        } else if (!this._chipInput?.focused) {\r\n            if ((keyCode === UP_ARROW || keyCode === DOWN_ARROW) && activeItem) {\r\n                const eligibleActions = this._chipActions.filter(\r\n                    (action) => action._isPrimary === activeItem._isPrimary && !this._skipPredicate(action)\r\n                );\r\n                const currentIndex = eligibleActions.indexOf(activeItem);\r\n                const delta = event.keyCode === UP_ARROW ? -1 : 1;\r\n\r\n                event.preventDefault();\r\n                if (currentIndex > -1 && this._isValidIndex(currentIndex + delta)) {\r\n                    this._keyManager.setActiveItem(eligibleActions[currentIndex + delta]);\r\n                }\r\n            } else {\r\n                super._handleKeydown(event);\r\n            }\r\n        }\r\n\r\n        this.stateChanges.next();\r\n    }\r\n\r\n    _focusLastChip() {\r\n        if (this._chips.length) {\r\n            this._chips.last.focus();\r\n        }\r\n    }\r\n\r\n    private _propagateChanges(): void {\r\n        const valueToEmit = this._chips.length ? this._chips.toArray().map((chip) => chip.value) : [];\r\n        this._value = valueToEmit;\r\n        this.change.emit(new MDChipGridChange(this, valueToEmit));\r\n        this.valueChange.emit(valueToEmit);\r\n        this._onChange(valueToEmit);\r\n        this._changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    private _markAsTouched() {\r\n        this._onTouched();\r\n        this._changeDetectorRef.markForCheck();\r\n        this.stateChanges.next();\r\n    }\r\n}\r\n\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class ErrorStateMatcher {\r\n  isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n    return !!(control && control.invalid && (control.touched || (form && form.submitted)));\r\n  }\r\n}\r\n\r\nexport class _ErrorStateTracker {\r\n  errorState = false;\r\n\r\n  matcher: ErrorStateMatcher;\r\n\r\n  constructor(\r\n    private _defaultMatcher: ErrorStateMatcher | null,\r\n    public ngControl: NgControl | null,\r\n    private _parentFormGroup: FormGroupDirective | null,\r\n    private _parentForm: NgForm | null,\r\n    private _stateChanges: Subject<void>,\r\n  ) {}\r\n\r\n  updateErrorState() {\r\n    const oldState = this.errorState;\r\n    const parent = this._parentFormGroup || this._parentForm;\r\n    const matcher = this.matcher || this._defaultMatcher;\r\n    const control = this.ngControl ? (this.ngControl.control as AbstractControl) : null;\r\n    const newState = matcher?.isErrorState(control, parent) ?? false;\r\n\r\n    if (newState !== oldState) {\r\n      this.errorState = newState;\r\n      this._stateChanges.next();\r\n    }\r\n  }\r\n}","import {ENTER, SPACE} from '@angular/cdk/keycodes';\r\nimport {Directive} from '@angular/core';\r\nimport { MD_CHIP_AVATAR, MD_CHIP_EDIT, MD_CHIP_REMOVE, MD_CHIP_TRAILING_ICON } from './tokens';\r\nimport { MDChipAction, MDChipContent } from './chip-action';\r\n\r\n@Directive({\r\n  selector: 'md-chip-avatar, [mdChipAvatar]',\r\n  host: {\r\n    'class': 'md-mdc-chip-avatar mdc-evolution-chip__icon mdc-evolution-chip__icon--primary',\r\n    'role': 'img',\r\n  },\r\n  providers: [{provide: MD_CHIP_AVATAR, useExisting: MDChipAvatar}],\r\n})\r\nexport class MDChipAvatar {}\r\n\r\n\r\n@Directive({\r\n  selector: 'md-chip-trailing-icon, [mdChipTrailingIcon]',\r\n  host: {\r\n    'class':\r\n      'md-mdc-chip-trailing-icon mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing',\r\n    'aria-hidden': 'true',\r\n  },\r\n  providers: [{provide: MD_CHIP_TRAILING_ICON, useExisting: MDChipTrailingIcon}],\r\n})\r\nexport class MDChipTrailingIcon extends MDChipContent {\r\n  override _isPrimary = false;\r\n}\r\n\r\n@Directive({\r\n  selector: '[mdChipEdit]',\r\n  host: {\r\n    'class':\r\n      'md-mdc-chip-edit md-mdc-chip-avatar md-focus-indicator ' +\r\n      'mdc-evolution-chip__icon mdc-evolution-chip__icon--primary',\r\n    'role': 'button',\r\n    '[attr.aria-hidden]': 'null',\r\n  },\r\n  providers: [{provide: MD_CHIP_EDIT, useExisting: MDChipEdit}],\r\n})\r\nexport class MDChipEdit extends MDChipAction {\r\n  override _isPrimary = false;\r\n  override _isLeading = true;\r\n\r\n  override _handleClick(event: MouseEvent): void {\r\n    if (!this.disabled) {\r\n      event.stopPropagation();\r\n      event.preventDefault();\r\n      this._parentChip._edit();\r\n    }\r\n  }\r\n\r\n  override _handleKeydown(event: KeyboardEvent) {\r\n    if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled) {\r\n      event.stopPropagation();\r\n      event.preventDefault();\r\n      this._parentChip._edit();\r\n    }\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[mdChipRemove]',\r\n  host: {\r\n    'class':\r\n      'md-mdc-chip-remove md-mdc-chip-trailing-icon md-focus-indicator ' +\r\n      'mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing',\r\n    'role': 'button',\r\n    '[attr.aria-hidden]': 'null',\r\n  },\r\n  providers: [{provide: MD_CHIP_REMOVE, useExisting: MDChipRemove}],\r\n})\r\nexport class MDChipRemove extends MDChipAction {\r\n  override _isPrimary = false;\r\n\r\n  override _handleClick(event: MouseEvent): void {\r\n    if (!this.disabled) {\r\n      event.stopPropagation();\r\n      event.preventDefault();\r\n      this._parentChip.remove();\r\n    }\r\n  }\r\n\r\n  override _handleKeydown(event: KeyboardEvent) {\r\n    if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled) {\r\n      event.stopPropagation();\r\n      event.preventDefault();\r\n      this._parentChip.remove();\r\n    }\r\n  }\r\n}","import { BACKSPACE, hasModifierKey, ModifierKey } from '@angular/cdk/keycodes';\r\nimport {\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    Output,\r\n    booleanAttribute,\r\n    inject,\r\n} from '@angular/core';\r\nimport { _IdGenerator } from '@angular/cdk/a11y';\r\nimport { MDChipTextControl } from './chip-text-control';\r\nimport { MDChipGrid } from './chip-grid';\r\nimport { MD_CHIPS_DEFAULT_OPTIONS, MDChipsDefaultOptions, SeparatorKey } from './tokens';\r\n\r\nexport interface MDChipInputEvent {\r\n    input: HTMLInputElement;\r\n    value: string;\r\n    chipInput: MDChipInput;\r\n}\r\n\r\n@Directive({\r\n    selector: 'input[mdChipInputFor]',\r\n    exportAs: 'mdChipInput, mdChipInputFor',\r\n    host: {\r\n        class: 'md-mdc-chip-input md-mdc-input-element mdc-text-field__input md-input-element',\r\n        '(keydown)': '_keydown($event)',\r\n        '(blur)': '_blur()',\r\n        '(focus)': '_focus()',\r\n        '(input)': '_onInput()',\r\n        '[id]': 'id',\r\n        '[attr.disabled]': 'disabled && !disabledInteractive ? \"\" : null',\r\n        '[attr.placeholder]': 'placeholder || null',\r\n        '[attr.aria-invalid]': '_chipGrid && _chipGrid.ngControl ? _chipGrid.ngControl.invalid : null',\r\n        '[attr.aria-required]': '_chipGrid && _chipGrid.required || null',\r\n        '[attr.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\r\n        '[attr.readonly]': '_getReadonlyAttribute()',\r\n        '[attr.required]': '_chipGrid && _chipGrid.required || null',\r\n    },\r\n})\r\nexport class MDChipInput implements MDChipTextControl, OnChanges, OnDestroy {\r\n    protected _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n\r\n    focused: boolean = false;\r\n\r\n    @Input('mdChipInputFor')\r\n    get chipGrid(): MDChipGrid {\r\n        return this._chipGrid;\r\n    }\r\n    set chipGrid(value: MDChipGrid) {\r\n        if (value) {\r\n            this._chipGrid = value;\r\n            this._chipGrid.registerInput(this);\r\n        }\r\n    }\r\n    protected _chipGrid: MDChipGrid;\r\n\r\n    @Input({ alias: 'mdChipInputAddOnBlur', transform: booleanAttribute })\r\n    addOnBlur: boolean = false;\r\n\r\n    @Input('mdChipInputSeparatorKeyCodes')\r\n    separatorKeyCodes: readonly (number | SeparatorKey)[] | ReadonlySet<number | SeparatorKey>;\r\n\r\n    @Output('mdChipInputTokenEnd')\r\n    readonly chipEnd: EventEmitter<MDChipInputEvent> = new EventEmitter<MDChipInputEvent>();\r\n\r\n    @Input() placeholder: string = '';\r\n\r\n    @Input() id: string = inject(_IdGenerator).getId('md-mdc-chip-list-input-');\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    get disabled(): boolean {\r\n        return this._disabled || (this._chipGrid && this._chipGrid.disabled);\r\n    }\r\n    set disabled(value: boolean) {\r\n        this._disabled = value;\r\n    }\r\n    private _disabled: boolean = false;\r\n\r\n    @Input({ transform: booleanAttribute })\r\n    readonly: boolean = false;\r\n\r\n    @Input({ alias: 'mdChipInputDisabledInteractive', transform: booleanAttribute })\r\n    disabledInteractive: boolean;\r\n\r\n    get empty(): boolean {\r\n        return !this.inputElement.value;\r\n    }\r\n\r\n    readonly inputElement!: HTMLInputElement;\r\n\r\n    constructor() {\r\n        const defaultOptions = inject<MDChipsDefaultOptions>(MD_CHIPS_DEFAULT_OPTIONS);\r\n\r\n        this.inputElement = this._elementRef.nativeElement as HTMLInputElement;\r\n        this.separatorKeyCodes = defaultOptions.separatorKeyCodes;\r\n        this.disabledInteractive = defaultOptions.inputDisabledInteractive ?? false;\r\n    }\r\n\r\n    ngOnChanges() {\r\n        this._chipGrid.stateChanges.next();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.chipEnd.complete();\r\n    }\r\n\r\n    _keydown(event: KeyboardEvent) {\r\n        if (this.empty && event.keyCode === BACKSPACE) {\r\n            if (!event.repeat) {\r\n                this._chipGrid._focusLastChip();\r\n            }\r\n            event.preventDefault();\r\n        } else {\r\n            this._emitChipEnd(event);\r\n        }\r\n    }\r\n\r\n    _blur() {\r\n        if (this.addOnBlur) {\r\n            this._emitChipEnd();\r\n        }\r\n        this.focused = false;\r\n        if (!this._chipGrid.focused) {\r\n            this._chipGrid._blur();\r\n        }\r\n        this._chipGrid.stateChanges.next();\r\n    }\r\n\r\n    _focus() {\r\n        this.focused = true;\r\n        this._chipGrid.stateChanges.next();\r\n    }\r\n\r\n    _emitChipEnd(event?: KeyboardEvent) {\r\n        if (!event || (this._isSeparatorKey(event) && !event.repeat)) {\r\n            this.chipEnd.emit({\r\n                input: this.inputElement,\r\n                value: this.inputElement.value,\r\n                chipInput: this,\r\n            });\r\n\r\n            event?.preventDefault();\r\n        }\r\n    }\r\n\r\n    _onInput() {\r\n        this._chipGrid.stateChanges.next();\r\n    }\r\n\r\n    focus(): void {\r\n        this.inputElement.focus();\r\n    }\r\n\r\n    clear(): void {\r\n        this.inputElement.value = '';\r\n    }\r\n\r\n    get describedByIds(): string[] {\r\n        const element = this._elementRef.nativeElement;\r\n        const existingDescribedBy = element.getAttribute('aria-describedby');\r\n\r\n        return existingDescribedBy?.split(' ') || [];\r\n    }\r\n\r\n    setDescribedByIds(ids: string[]): void {\r\n        const element = this._elementRef.nativeElement;\r\n\r\n        if (ids.length) {\r\n            element.setAttribute('aria-describedby', ids.join(' '));\r\n        } else {\r\n            element.removeAttribute('aria-describedby');\r\n        }\r\n    }\r\n\r\n    private _isSeparatorKey(event: KeyboardEvent): boolean {\r\n        if (!this.separatorKeyCodes) {\r\n            return false;\r\n        }\r\n\r\n        for (const key of this.separatorKeyCodes) {\r\n            let keyCode: number;\r\n            let modifiers: readonly ModifierKey[] | null;\r\n\r\n            if (typeof key === 'number') {\r\n                keyCode = key;\r\n                modifiers = null;\r\n            } else {\r\n                keyCode = key.keyCode;\r\n                modifiers = key.modifiers;\r\n            }\r\n\r\n            const modifiersMatch = !modifiers?.length ? !hasModifierKey(event) : hasModifierKey(event, ...modifiers);\r\n\r\n            if (keyCode === event.keyCode && modifiersMatch) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    protected _getReadonlyAttribute(): string | null {\r\n        return this.readonly || (this.disabled && this.disabledInteractive) ? 'true' : null;\r\n    }\r\n}\r\n","import { BidiModule } from \"@angular/cdk/bidi\";\r\nimport { MDChip } from \"./chip\";\r\nimport { MDChipAction } from \"./chip-action\";\r\nimport { MDChipEditInput } from \"./chip-edit-input\";\r\nimport { ErrorStateMatcher, MDChipGrid } from \"./chip-grid\";\r\nimport { MDChipAvatar, MDChipEdit, MDChipRemove, MDChipTrailingIcon } from \"./chip-icons\";\r\nimport { MDChipInput } from \"./chip-input\";\r\nimport { MDChipListbox } from \"./chip-listbox\";\r\nimport { MDChipOption } from \"./chip-option\";\r\nimport { MDChipRow } from \"./chip-row\";\r\nimport { MDChipSet } from \"./chip-set\";\r\nimport { MD_CHIPS_DEFAULT_OPTIONS, MDChipsDefaultOptions } from \"./tokens\";\r\nimport { ENTER } from \"@angular/cdk/keycodes\";\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nconst CHIP_DECLARATIONS = [\r\n  MDChip,\r\n  MDChipAvatar,\r\n  MDChipEdit,\r\n  MDChipEditInput,\r\n  MDChipGrid,\r\n  MDChipInput,\r\n  MDChipListbox,\r\n  MDChipOption,\r\n  MDChipRemove,\r\n  MDChipRow,\r\n  MDChipSet,\r\n  MDChipTrailingIcon,\r\n];\r\n\r\n@NgModule({\r\n  imports: [MDChipAction, CHIP_DECLARATIONS],\r\n  exports: [BidiModule, CHIP_DECLARATIONS],\r\n  providers: [\r\n    ErrorStateMatcher,\r\n    {\r\n      provide: MD_CHIPS_DEFAULT_OPTIONS,\r\n      useValue: {\r\n        separatorKeyCodes: [ENTER],\r\n      } as MDChipsDefaultOptions,\r\n    },\r\n  ],\r\n})\r\nexport class MDChipsModule {}","import { Component, ViewEncapsulation, ChangeDetectionStrategy, input, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Individual header card component for use within md-header-card-set.\n *\n * @remarks\n * Simple container component that accepts any content via ng-content projection.\n * Styled with border, background, and padding. Use within md-header-card-set\n * for responsive grid layout.\n *\n * @example\n * ```html\n * <md-header-card>\n *   <div class=\"title\">Card Title</div>\n *   <div class=\"content\">Card content here</div>\n * </md-header-card>\n * ```\n */\n@Component({\n  selector: 'md-header-card',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './header-card.component.html',\n  styleUrls: ['./header-card.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MDHeaderCardComponent {\n  @Input() padding: string = '16px';\n}\n","<div \nclass=\"md-header-card\"\n[style.padding]=\"padding\"\n>\n  <ng-content></ng-content>\n</div>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  inject,\n  Input,\n  QueryList,\n  ViewEncapsulation,\n  booleanAttribute,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MDHeaderCardComponent } from './header-card.component'; \n\n/**\n * Container for multiple header cards with responsive CSS Grid layout.\n *\n * @remarks\n * Uses CSS Grid with auto-fit to automatically determine optimal column count.\n * Cards flex between minCardWidth and maxCardWidth to minimize empty space.\n * Card count is automatically tracked via ContentChildren.\n *\n * Layout behavior:\n * - Mobile (<768px): horizontal scroll, single row\n * - Tablet+ (≥768px): CSS Grid with auto-fit, cards sized between min/max\n *\n * Features:\n * - Automatic card count tracking (--md-header-card-count CSS variable)\n * - Automatic column count based on available space\n * - Configurable min/max card widths\n * - Full-width layout with responsive padding\n *\n * @example\n * ```html\n * <md-header-card-set [gap]=\"8\" [minCardWidth]=\"300\" [maxCardWidth]=\"600\">\n *   <md-header-card>\n *     <div class=\"service-name\">Service Title</div>\n *   </md-header-card>\n *   <md-header-card>\n *     <div class=\"data-item\">Type: <span>Canvas</span></div>\n *   </md-header-card>\n * </md-header-card-set>\n * ```\n */\n@Component({\n  selector: 'md-header-card-set',\n  templateUrl: 'header-card-set.component.html',\n  styleUrl: 'header-card-set.component.scss',\n  host: {\n    class: 'md-header-card-set',\n    '[class.md-header-card-set-nowrap]': 'noWrap',\n  },\n  exportAs: 'mdHeaderCardSet',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ CommonModule ],\n  standalone: true,\n})\nexport class MDHeaderCardSetComponent implements AfterContentInit {\n  @ContentChildren(MDHeaderCardComponent) cards!: QueryList<MDHeaderCardComponent>;\n\n  private _cdr = inject(ChangeDetectorRef);\n  private _cardCount = 0;\n  /**\n   * Gap between cards in pixels.\n   * @default 8\n   */\n  @Input() gap: number = 8;\n\n  /**\n   * Horizontal padding for the container in pixels.\n   * Responsive: 16px mobile, 24px tablet, 32px desktop.\n   * @default 'responsive'\n   */\n  @Input() padding: number | 'responsive' = 'responsive';\n\n  /**\n   * Minimum card width in pixels.\n   * Cards won't shrink below this value.\n   * @default 300\n   */\n  @Input() minCardWidth: number = 300;\n\n  /**\n   * Maximum card width in pixels.\n   * Cards won't grow beyond this value.\n   * @default 570\n   */\n  @Input() maxCardWidth: number = 570;\n\n  /**\n   * Disable wrapping (force single row with horizontal scroll).\n   * Useful for mobile or specific layouts.\n   * @default false\n   */\n  @Input({ transform: booleanAttribute }) noWrap: boolean = false;\n\n  ngAfterContentInit(): void {\n    this._cardCount = this.cards.length;\n    this.cards.changes.subscribe(() => {\n      this._cardCount = this.cards.length;\n      this._cdr.markForCheck();\n    });\n  }\n\n  /**\n   * Get CSS custom properties for the container.\n   * @internal\n   */\n  get _containerStyles(): Record<string, string> {\n    const styles: Record<string, string> = {\n      '--md-header-card-set-gap': `${this.gap}px`,\n      '--md-header-card-min-width': `${this.minCardWidth}px`,\n      '--md-header-card-max-width': `${this.maxCardWidth}px`,\n      '--md-header-card-count': `${this._cardCount}` \n    };\n\n    if (typeof this.padding === 'number') {\n      styles['--md-header-card-set-padding'] = `${this.padding}px`;\n    }\n\n    return styles;\n  }\n}\n","<div class=\"md-header-card-set-container\" [ngStyle]=\"_containerStyles\">\n  <div class=\"md-header-card-set-wrapper\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MDHeaderCardComponent } from './header-card.component';\nimport { MDHeaderCardSetComponent } from './header-card-set.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MDHeaderCardComponent,\n    MDHeaderCardSetComponent\n  ],\n  exports: [\n    MDHeaderCardComponent,\n    MDHeaderCardSetComponent\n  ]\n})\nexport class MDHeaderCardModule { }\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  ViewEncapsulation,\r\n  booleanAttribute,\r\n  numberAttribute,\r\n} from '@angular/core';\r\n\r\nimport { PaginatorPageEvent } from './paginator.types';\r\n\r\n/**\r\n * MD Paginator Component\r\n *\r\n * A standalone paginator with first/prev/next/last navigation.\r\n * Can be used independently or together with md-grid.\r\n *\r\n * @example\r\n * ```html\r\n * <!-- Standalone usage -->\r\n * <md-paginator\r\n *   [offset]=\"currentPage\"\r\n *   [limit]=\"pageSize\"\r\n *   [count]=\"totalItems\"\r\n *   (page)=\"onPage($event)\">\r\n * </md-paginator>\r\n * ```\r\n */\r\n@Component({\r\n  selector: 'md-paginator',\r\n  templateUrl: './paginator.component.html',\r\n  styleUrl: './paginator.component.scss',\r\n  host: {\r\n    class: 'md-paginator',\r\n  },\r\n  exportAs: 'mdPaginator',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: true,\r\n})\r\nexport class MDPaginatorComponent {\r\n  /** Current page offset (0-indexed) */\r\n  @Input({ transform: numberAttribute }) offset: number = 0;\r\n\r\n  /** Page size (items per page) */\r\n  @Input({ transform: numberAttribute }) limit: number = 10;\r\n\r\n  /** Total items count */\r\n  @Input({ transform: numberAttribute }) count: number = 0;\r\n\r\n  /** Height of the paginator in pixels */\r\n  @Input({ transform: numberAttribute }) height: number = 40;\r\n\r\n  /** Show first/last page buttons */\r\n  @Input({ transform: booleanAttribute }) showFirstLast: boolean = true;\r\n\r\n  /** Available page size options for the dropdown. Empty array hides the dropdown. */\r\n  @Input() pageSizeOptions: number[] = [];\r\n\r\n  /** Page change event */\r\n  @Output() page = new EventEmitter<PaginatorPageEvent>();\r\n\r\n  /** Emitted when page size changes via the dropdown */\r\n  @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n  /** Total number of pages */\r\n  get totalPages(): number {\r\n    return Math.ceil(this.count / this.limit) || 0;\r\n  }\r\n\r\n  /** Current page number (1-indexed for display) */\r\n  get currentPage(): number {\r\n    return this.offset + 1;\r\n  }\r\n\r\n  /** Navigate to a specific page (0-indexed offset) */\r\n  setPage(offset: number): void {\r\n    const maxOffset = Math.max(0, this.totalPages - 1);\r\n    const newOffset = Math.max(0, Math.min(offset, maxOffset));\r\n\r\n    if (newOffset !== this.offset) {\r\n      this.page.emit({\r\n        offset: newOffset,\r\n        limit: this.limit,\r\n        count: this.count,\r\n        pageSize: this.limit,\r\n      });\r\n    }\r\n  }\r\n\r\n  /** Go to first page */\r\n  firstPage(): void {\r\n    this.setPage(0);\r\n  }\r\n\r\n  /** Go to previous page */\r\n  prevPage(): void {\r\n    this.setPage(this.offset - 1);\r\n  }\r\n\r\n  /** Go to next page */\r\n  nextPage(): void {\r\n    this.setPage(this.offset + 1);\r\n  }\r\n\r\n  /** Go to last page */\r\n  lastPage(): void {\r\n    this.setPage(this.totalPages - 1);\r\n  }\r\n\r\n  /** Handle page size change from dropdown */\r\n  onPageSizeChange(event: Event): void {\r\n    const select = event.target as HTMLSelectElement;\r\n    const newSize = Number(select.value);\r\n    if (newSize > 0 && newSize !== this.limit) {\r\n      this.pageSizeChange.emit(newSize);\r\n    }\r\n  }\r\n}\r\n","@if (totalPages > 1) {\r\n    <div class=\"md-paginator-inner\" [style.height.px]=\"height\">\r\n        @if (pageSizeOptions.length > 0) {\r\n            <div class=\"md-paginator-page-size\">\r\n                <span class=\"md-paginator-page-size-label\">Items per page:</span>\r\n                <select class=\"md-paginator-page-size-select\" [value]=\"limit\" (change)=\"onPageSizeChange($event)\">\r\n                    @for (option of pageSizeOptions; track option) {\r\n                        <option [value]=\"option\" [selected]=\"option === limit\">{{ option }}</option>\r\n                    }\r\n                </select>\r\n            </div>\r\n        }\r\n\r\n        <div class=\"md-paginator-pager\">\r\n            @if (showFirstLast) {\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"md-paginator-btn\"\r\n                    [disabled]=\"offset === 0\"\r\n                    (click)=\"firstPage()\"\r\n                    title=\"First page\"\r\n                >\r\n                    <span class=\"md-paginator-icon-first\"></span>\r\n                </button>\r\n            }\r\n            <button\r\n                type=\"button\"\r\n                class=\"md-paginator-btn\"\r\n                [disabled]=\"offset === 0\"\r\n                (click)=\"prevPage()\"\r\n                title=\"Previous page\"\r\n            >\r\n                <span class=\"md-paginator-icon-prev\"></span>\r\n            </button>\r\n\r\n            <span class=\"md-paginator-info\"> {{ currentPage }} / {{ totalPages }} </span>\r\n\r\n            <button\r\n                type=\"button\"\r\n                class=\"md-paginator-btn\"\r\n                [disabled]=\"offset >= totalPages - 1\"\r\n                (click)=\"nextPage()\"\r\n                title=\"Next page\"\r\n            >\r\n                <span class=\"md-paginator-icon-next\"></span>\r\n            </button>\r\n            @if (showFirstLast) {\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"md-paginator-btn\"\r\n                    [disabled]=\"offset >= totalPages - 1\"\r\n                    (click)=\"lastPage()\"\r\n                    title=\"Last page\"\r\n                >\r\n                    <span class=\"md-paginator-icon-last\"></span>\r\n                </button>\r\n            }\r\n        </div>\r\n    </div>\r\n}\r\n","import { PipeTransform, TemplateRef } from '@angular/core';\r\n\r\n/**\r\n * Sort direction enum\r\n */\r\nexport enum SortDirection {\r\n  asc = 'asc',\r\n  desc = 'desc',\r\n  none = ''\r\n}\r\n\r\n/**\r\n * Sort type - single or multi column sorting\r\n */\r\nexport enum SortType {\r\n  single = 'single',\r\n  multi = 'multi'\r\n}\r\n\r\n/**\r\n * Sort property with direction\r\n */\r\nexport interface SortPropDir {\r\n  prop: string;\r\n  dir: SortDirection;\r\n}\r\n\r\n/**\r\n * Sort event emitted when sorting changes\r\n */\r\nexport interface GridSortEvent {\r\n  active: string;\r\n  direction: SortDirection\r\n}\r\n\r\n/**\r\n * Page event emitted when pagination changes\r\n */\r\nexport interface GridPageEvent {\r\n  offset: number;\r\n  limit: number;\r\n  count: number;\r\n  pageSize: number;\r\n}\r\n\r\n/**\r\n * Row edit event\r\n */\r\nexport interface GridRowEditEvent<T = any> {\r\n  row: T;\r\n  rowIndex: number;\r\n  originalRow?: T;\r\n}\r\n\r\n/**\r\n * Column resize event\r\n */\r\nexport interface GridColumnResizeEvent {\r\n  column: GridColumn;\r\n  prevWidth: number;\r\n  newWidth: number;\r\n}\r\n\r\n/**\r\n * Grouped rows structure\r\n */\r\nexport interface GroupedRows<T = any> {\r\n  key: any;\r\n  value: T[];\r\n}\r\n\r\n/**\r\n * Cell template context - available in cell templates\r\n */\r\nexport interface GridCellContext<T = any> {\r\n  /** Current row data */\r\n  row: T;\r\n  /** Cell value */\r\n  value: any;\r\n  /** Column definition */\r\n  column: GridColumn<T>;\r\n  /** Row index */\r\n  rowIndex: number;\r\n  /** Whether the row is in edit mode */\r\n  isEditing: boolean;\r\n  /** Group key if grouped */\r\n  group?: any;\r\n}\r\n\r\n/**\r\n * Header cell template context\r\n */\r\nexport interface GridHeaderContext<T = any> {\r\n  /** Column definition */\r\n  column: GridColumn<T>;\r\n  /** Current sort direction */\r\n  sortDir?: SortDirection;\r\n  /** Function to trigger sort */\r\n  sortFn: () => void;\r\n}\r\n\r\n/**\r\n * Edit template context - available in edit templates\r\n */\r\nexport interface GridEditContext<T = any> {\r\n  /** Current row data (mutable copy) */\r\n  row: T;\r\n  /** Original row data (immutable) */\r\n  originalRow: T;\r\n  /** Cell value */\r\n  value: any;\r\n  /** Column definition */\r\n  column: GridColumn<T>;\r\n  /** Row index */\r\n  rowIndex: number;\r\n  /** Function to save changes */\r\n  saveFn: () => void;\r\n  /** Function to cancel editing */\r\n  cancelFn: () => void;\r\n}\r\n\r\nexport type ColumnPinnedType = 'left' | 'right' | null | undefined;\r\nexport type GridColumnMobileRole = 'data' | 'id' | 'actions';\r\n/**\r\n * Column definition interface\r\n */\r\nexport interface GridColumn<T = any> {\r\n  /** Column unique identifier */\r\n  $$id?: string;\r\n\r\n  /** Display name for the header */\r\n  name?: string;\r\n\r\n  /** Mobile card layout role. Defaults to a regular data column. */\r\n  mobileRole?: GridColumnMobileRole;\r\n\r\n  /** Property path to get value from row (e.g., 'user.name') */\r\n  prop?: string;\r\n\r\n  /** Column width in pixels */\r\n  width?: number;\r\n\r\n  /** Minimum column width */\r\n  minWidth: number;\r\n\r\n  /** Maximum column width */\r\n  maxWidth?: number;\r\n\r\n  flex?: number;\r\n\r\n  suppressSizeToFit?: boolean;\r\n\r\n  /** Whether column is sortable */\r\n  sortable: boolean;\r\n\r\n  /** Whether column is resizeable (can be dragged to change width) */\r\n  resizeable: boolean;\r\n\r\n  pinned: ColumnPinnedType;\r\n\r\n  /** Custom sort comparator */\r\n  comparator?: (valueA: any, valueB: any, rowA: T, rowB: T, sortDir: SortDirection) => number;\r\n\r\n  /** Pipe to transform cell value */\r\n  pipe?: PipeTransform;\r\n\r\n  /** CSS class for header cell */\r\n  headerClass?: string | ((data: { column: GridColumn<T> }) => string | Record<string, boolean>);\r\n\r\n  /** CSS class for body cell */\r\n  cellClass?: string | ((data: { row: T; column: GridColumn<T>; value: any }) => string | Record<string, boolean>);\r\n\r\n  /** Template for cell content in view mode */\r\n  cellTemplate?: TemplateRef<GridCellContext<T>>;\r\n\r\n  /** Template for header content */\r\n  headerTemplate?: TemplateRef<GridHeaderContext<T>>;\r\n\r\n  /** Template for cell content in edit mode */\r\n  editTemplate?: TemplateRef<GridEditContext<T>>;\r\n}\r\n\r\n/** @deprecated Use GridEditContext instead */\r\nexport type CardsGridEditContext<T = any> = GridEditContext<T>;\r\n\r\n\r\nexport type ColumnEventType = 'sizeColumnsToFit' | 'autosizeColumns' | 'flex' | 'gridInitializing' | 'uiColumnResized';\r\n","import { MDGridColumnDirective } from './cards-grid-column.directive';\r\nimport {\r\n  GroupedRows,\r\n  SortDirection,\r\n  SortPropDir,\r\n} from './cards-grid.types';\r\n\r\nlet columnIdCounter = 0;\r\n\r\n/**\r\n * Generate unique column ID\r\n */\r\nexport function generateColumnId(): string {\r\n  return `cards-grid-col-${columnIdCounter++}`;\r\n}\r\n\r\n/**\r\n * Get value from object by property path (supports nested paths like 'user.name')\r\n */\r\nexport function getValueByPath<T>(obj: T, path: string): any {\r\n  if (!path) return obj;\r\n\r\n  const parts = path.split('.');\r\n  let value: any = obj;\r\n\r\n  for (const part of parts) {\r\n    if (value == null) return undefined;\r\n    value = value[part];\r\n  }\r\n\r\n  return value;\r\n}\r\n\r\n/**\r\n * Create value getter function for column\r\n */\r\nexport function createValueGetter<T>(prop?: string): (row: T) => any {\r\n  if (!prop) {\r\n    return () => undefined;\r\n  }\r\n  return (row: T) => getValueByPath(row, prop);\r\n}\r\n\r\n/**\r\n * Format property name as display name\r\n * e.g., 'firstName' -> 'First Name', 'user_name' -> 'User Name'\r\n */\r\nexport function formatPropAsName(prop: string): string {\r\n  // Handle nested paths - use last part\r\n  const parts = prop.split('.');\r\n  const lastPart = parts[parts.length - 1];\r\n\r\n  // Convert camelCase or snake_case to Title Case\r\n  return lastPart\r\n    .replace(/_/g, ' ')\r\n    .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n    .replace(/\\b\\w/g, char => char.toUpperCase());\r\n}\r\n\r\n/**\r\n * Group rows by a property\r\n */\r\nexport function groupRowsByProperty<T>(\r\n  rows: T[],\r\n  groupBy: keyof T | ((row: T) => any)\r\n): GroupedRows<T>[] {\r\n  const groups = new Map<any, T[]>();\r\n\r\n  for (const row of rows) {\r\n    const key = typeof groupBy === 'function'\r\n      ? groupBy(row)\r\n      : row[groupBy];\r\n\r\n    if (!groups.has(key)) {\r\n      groups.set(key, []);\r\n    }\r\n    groups.get(key)!.push(row);\r\n  }\r\n\r\n  return Array.from(groups.entries()).map(([key, value]) => ({ key, value }));\r\n}\r\n\r\n/**\r\n * Sort rows by sort configuration\r\n */\r\nexport function sortRows<T>(\r\n  rows: T[],\r\n  sorts: SortPropDir[],\r\n  columns: MDGridColumnDirective<T>[]\r\n): T[] {\r\n  if (!sorts || sorts.length === 0) {\r\n    return rows;\r\n  }\r\n\r\n  const sorted = [...rows];\r\n\r\n  sorted.sort((a, b) => {\r\n    for (const sort of sorts) {\r\n      const column = columns.find(c => c.prop === sort.prop);\r\n      if (!column) continue;\r\n\r\n      const valueA = column.getValue(a);\r\n      const valueB = column.getValue(b);\r\n\r\n      let result: number;\r\n\r\n      if (column.comparator) {\r\n        result = column.comparator(valueA, valueB, a, b, sort.dir);\r\n      } else {\r\n        result = defaultComparator(valueA, valueB);\r\n      }\r\n\r\n      if (result !== 0) {\r\n        return sort.dir === SortDirection.desc ? -result : result;\r\n      }\r\n    }\r\n    return 0;\r\n  });\r\n\r\n  return sorted;\r\n}\r\n\r\n/**\r\n * Default comparator for sorting\r\n */\r\nexport function defaultComparator(valueA: any, valueB: any): number {\r\n  if (valueA == null && valueB == null) return 0;\r\n  if (valueA == null) return -1;\r\n  if (valueB == null) return 1;\r\n\r\n  if (typeof valueA === 'string' && typeof valueB === 'string') {\r\n    return valueA.localeCompare(valueB);\r\n  }\r\n\r\n  if (valueA < valueB) return -1;\r\n  if (valueA > valueB) return 1;\r\n  return 0;\r\n}\r\n\r\n/**\r\n * Get next sort direction\r\n */\r\nexport function nextSortDirection(\r\n  currentDir: SortDirection | undefined,\r\n  enableClearing: boolean = false\r\n): SortDirection | undefined {\r\n  if (!currentDir) {\r\n    return SortDirection.asc;\r\n  }\r\n  if (currentDir === SortDirection.asc) {\r\n    return SortDirection.desc;\r\n  }\r\n  if (enableClearing) {\r\n    return undefined;\r\n  }\r\n  return SortDirection.asc;\r\n}\r\n","import {\r\n    booleanAttribute,\r\n    ContentChild,\r\n    Directive,\r\n    EventEmitter,\r\n    Host,\r\n    Input,\r\n    numberAttribute,\r\n    OnChanges,\r\n    OnInit,\r\n    Optional,\r\n    Output,\r\n    PipeTransform,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n    ColumnEventType,\r\n    ColumnPinnedType,\r\n    GridColumnMobileRole,\r\n    GridCellContext,\r\n    GridColumn,\r\n    GridEditContext,\r\n    GridHeaderContext,\r\n    SortDirection,\r\n} from './cards-grid.types';\r\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\r\nimport { generateColumnId, getValueByPath } from './cards-grid.utils';\r\n\r\n@Directive({\r\n    selector: '[mdGridCellTemplate]',\r\n    standalone: true,\r\n})\r\nexport class MDGridCellTemplateDirective<T = any> {\r\n    static ngTemplateContextGuard<T>(dir: MDGridCellTemplateDirective<T>, ctx: unknown): ctx is GridCellContext<T> {\r\n        return true;\r\n    }\r\n}\r\n\r\n@Directive({\r\n    selector: '[mdGridHeaderTemplate]',\r\n    standalone: true,\r\n})\r\nexport class MDGridHeaderTemplateDirective<T = any> {\r\n    static ngTemplateContextGuard<T>(dir: MDGridHeaderTemplateDirective<T>, ctx: unknown): ctx is GridHeaderContext<T> {\r\n        return true;\r\n    }\r\n}\r\n\r\n@Directive({\r\n    selector: '[mdGridEditTemplate]',\r\n    standalone: true,\r\n})\r\nexport class MDGridEditTemplateDirective<T = any> {\r\n    static ngTemplateContextGuard<T>(dir: MDGridEditTemplateDirective<T>, ctx: unknown): ctx is GridEditContext<T> {\r\n        return true;\r\n    }\r\n}\r\n\r\ntype ClassValue = string | Record<string, boolean>;\r\n\r\ntype HeaderClassContext<T> = {\r\n    column: GridColumn<T>;\r\n};\r\n\r\ntype CellClassContext<T> = {\r\n    row: T;\r\n    column: GridColumn<T>;\r\n    value: any;\r\n};\r\n\r\ntype HeaderClassFn<T> = (data: HeaderClassContext<T>) => ClassValue;\r\ntype CellClassFn<T> = (data: CellClassContext<T>) => ClassValue;\r\n\r\nconst defaultInitialWidth = 200;\r\n\r\n@Directive({\r\n    selector: 'md-grid-column',\r\n    standalone: true,\r\n})\r\nexport class MDGridColumnDirective<T = any> implements GridColumn<T>, OnChanges {\r\n    @Input() name?: string;\r\n    @Input() prop?: string;\r\n    @Input() mobileRole: GridColumnMobileRole = 'data';\r\n    @Input({ transform: numberAttribute }) width?: number;\r\n    @Input({ transform: (v: unknown) => coerceNumberProperty(v, 36) }) minWidth = 36;\r\n    @Input({ transform: (v: unknown) => coerceNumberProperty(v, Number.MAX_SAFE_INTEGER) }) maxWidth = Number.MAX_SAFE_INTEGER;\r\n    @Input({ transform: (v: unknown) => coerceNumberProperty(v, 0) }) flex = 0;\r\n    @Input({ transform: booleanAttribute }) suppressSizeToFit = false;\r\n    @Input({ transform: booleanAttribute }) suppressAutoSize = false;\r\n    @Input({ transform: booleanAttribute }) resizeable = true;\r\n    @Input() pinned: ColumnPinnedType = null;\r\n    @Input({ transform: booleanAttribute }) sortable = false;\r\n    @Input() comparator?: (valueA: any, valueB: any, rowA: T, rowB: T, sortDir: SortDirection) => number;\r\n    @Input() pipe?: PipeTransform;\r\n    @Input() headerClass: string | HeaderClassFn<T>;\r\n    @Input() cellClass: string | CellClassFn<T>;\r\n    @Input() cellTemplate?: TemplateRef<GridCellContext<T>>;\r\n\r\n    @Output() colDefChange = new EventEmitter<void>();\r\n\r\n    @ContentChild(MDGridCellTemplateDirective, { read: TemplateRef })\r\n    private contentCellTemplate?: TemplateRef<GridCellContext<T>>;\r\n\r\n    get resolvedCellTemplate(): TemplateRef<GridCellContext<T>> | undefined {\r\n        return this.cellTemplate || this.contentCellTemplate;\r\n    }\r\n\r\n    @Input() headerTemplate?: TemplateRef<GridHeaderContext<T>>;\r\n    @ContentChild(MDGridHeaderTemplateDirective, { read: TemplateRef }) private contentHeaderTemplate?: TemplateRef<\r\n        GridHeaderContext<T>\r\n    >;\r\n\r\n    get resolvedHeaderTemplate(): TemplateRef<GridHeaderContext<T>> | undefined {\r\n        return this.headerTemplate || this.contentHeaderTemplate;\r\n    }\r\n\r\n    @Input() editTemplate: TemplateRef<GridEditContext<T>>;\r\n\r\n    @ContentChild(MDGridEditTemplateDirective, { read: TemplateRef }) private contentEditTemplate?: TemplateRef<\r\n        GridEditContext<T>\r\n    >;\r\n\r\n    get resolvedEditTemplate(): TemplateRef<GridEditContext<T>> | undefined {\r\n        return this.editTemplate || this.contentEditTemplate;\r\n    }\r\n\r\n    flexOverridden = false;\r\n\r\n    get resolvedFlex() {\r\n        return this.flexOverridden ? null : this.flex;\r\n    }\r\n\r\n    actualWidth: number = 0;\r\n\r\n    $$id: string = generateColumnId();\r\n\r\n    getValue(row: T) {\r\n        return this.prop ? getValueByPath(row, this.prop) : undefined;\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.resetActualWidth('gridInitializing');\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if(changes['flex'] || changes['minWidth'] || changes['maxWidth'] || changes['width']) {\r\n            this.colDefChange.emit();\r\n        }\r\n    }\r\n\r\n    getActualWidth(): number {\r\n        return this.actualWidth;\r\n    }\r\n\r\n    setActualWidth(actualWidth: number, source: ColumnEventType) {\r\n        actualWidth = Math.max(actualWidth, this.minWidth);\r\n        actualWidth = Math.min(actualWidth, this.maxWidth);\r\n\r\n        if (source !== 'flex' && source !== 'gridInitializing') {\r\n            this.flexOverridden = true;\r\n        }\r\n\r\n        this.actualWidth = actualWidth;\r\n    }\r\n\r\n    resetActualWidth(source: ColumnEventType) {\r\n        const initialWidth = this.calculateColInitialWidth();\r\n\r\n        this.setActualWidth(initialWidth, source);\r\n    }\r\n\r\n    private calculateColInitialWidth(): number {\r\n        const width = this.width ?? defaultInitialWidth;\r\n        return Math.max(Math.min(width, this.maxWidth), this.minWidth);\r\n    }\r\n}\r\n\r\n@Directive({\r\n    selector: 'md-grid-column[mdGridIdColumn]',\r\n    standalone: true,\r\n})\r\nexport class MDGridIdColumnDirective implements OnInit {\r\n    constructor(@Host() @Optional() private column: MDGridColumnDirective) {}\r\n\r\n    ngOnInit(): void {\r\n        if (this.column) {\r\n            this.column.mobileRole = 'id';\r\n        }\r\n    }\r\n}\r\n\r\n@Directive({\r\n    selector: 'md-grid-column[mdGridActionsColumn]',\r\n    standalone: true,\r\n})\r\nexport class MDGridActionsColumnDirective implements OnInit {\r\n    constructor(@Host() @Optional() private column: MDGridColumnDirective) {}\r\n\r\n    ngOnInit(): void {\r\n        if (this.column) {\r\n            this.column.mobileRole = 'actions';\r\n        }\r\n    }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[mdGridToolbarTemplate]',\r\n    standalone: true,\r\n})\r\nexport class MDGridToolbarTemplateDirective {\r\n    constructor(public templateRef: TemplateRef<unknown>) {}\r\n}\r\n","import { MDGridColumnDirective } from './cards-grid-column.directive';\r\n\r\ntype FlexItem = {\r\n    col: MDGridColumnDirective;\r\n    isFlex: boolean;\r\n    flex: number;\r\n    min: number;\r\n    max: number;\r\n    initialSize: number;\r\n    targetSize: number;\r\n    frozenSize?: number;\r\n    violationType?: 'min' | 'max';\r\n};\r\n\r\nexport function refreshFlexedColumns(\r\n    totalSpace: number,\r\n    columns: MDGridColumnDirective[],\r\n    resizingCols?: MDGridColumnDirective[]\r\n) {\r\n    if (!totalSpace) return;\r\n\r\n    let flexAfterDisplayIndex = -1;\r\n    if (resizingCols) {\r\n        const allResizingCols = new Set(resizingCols);\r\n\r\n        for (let i = columns.length - 1; i >= 0; i--) {\r\n            if (allResizingCols.has(columns[i])) {\r\n                flexAfterDisplayIndex = i;\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    let hasFlexItems = false;\r\n    const items = columns.map((col, i) => {\r\n        const flex = col.resolvedFlex;\r\n\r\n        const isFlex = Boolean(flex) && flex! > 0 && i > flexAfterDisplayIndex;\r\n\r\n        hasFlexItems ||= isFlex;\r\n\r\n        return <FlexItem>{\r\n            col,\r\n            isFlex,\r\n            flex: Math.max(0, flex ?? 0),\r\n            initialSize: col.getActualWidth(),\r\n            min: col.minWidth,\r\n            max: col.maxWidth,\r\n            targetSize: 0,\r\n        };\r\n    });\r\n\r\n    if (!hasFlexItems) return;\r\n\r\n    let unfrozenItemCount = items.length;\r\n    let unfrozenFlex = items.reduce((acc, item) => acc + item.flex, 0);\r\n    let unfrozenSpace = totalSpace;\r\n\r\n    const freeze = (item: FlexItem, width: number) => {\r\n        item.frozenSize = width;\r\n        item.col.setActualWidth(width, 'flex');\r\n\r\n        unfrozenSpace -= width;\r\n        unfrozenFlex -= item.flex;\r\n        unfrozenItemCount -= 1;\r\n    };\r\n\r\n    const isFrozen = (item: FlexItem) => item.frozenSize != null;\r\n\r\n    for (const item of items) {\r\n        if (!item.isFlex) {\r\n            freeze(item, item.initialSize);\r\n        }\r\n    }\r\n\r\n    while (unfrozenItemCount > 0) {\r\n        const spaceToFill = Math.round(unfrozenFlex < 1 ? unfrozenSpace * unfrozenFlex : unfrozenSpace);\r\n\r\n        let lastUnfrozenItem: FlexItem | undefined;\r\n        let actualLeft = 0;\r\n        let idealRight = 0;\r\n\r\n        for (const item of items) {\r\n            if (isFrozen(item)) {\r\n                continue;\r\n            }\r\n\r\n            lastUnfrozenItem = item;\r\n            idealRight += spaceToFill * (item.flex / unfrozenFlex);\r\n\r\n            const idealSize = idealRight - actualLeft;\r\n            const roundedSize = Math.round(idealSize);\r\n\r\n            item.targetSize = roundedSize;\r\n            actualLeft += roundedSize;\r\n        }\r\n\r\n        if (lastUnfrozenItem) {\r\n            lastUnfrozenItem.targetSize += spaceToFill - actualLeft;\r\n        }\r\n\r\n        let totalViolation = 0;\r\n\r\n        for (const item of items) {\r\n            if (isFrozen(item)) {\r\n                continue;\r\n            }\r\n\r\n            const unclampedSize = item.targetSize;\r\n            const clampedSize = Math.min(Math.max(unclampedSize, item.min), item.max);\r\n\r\n            totalViolation += clampedSize - unclampedSize;\r\n            item.violationType =\r\n                clampedSize === unclampedSize ? undefined : clampedSize < unclampedSize ? 'max' : 'min';\r\n\r\n            item.targetSize = clampedSize;\r\n        }\r\n\r\n        const freezeType = totalViolation === 0 ? 'all' : totalViolation > 0 ? 'min' : 'max';\r\n\r\n        for (const item of items) {\r\n            if (isFrozen(item)) {\r\n                continue;\r\n            }\r\n\r\n            if (freezeType === 'all' || item.violationType === freezeType) {\r\n                freeze(item, item.targetSize);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nexport function getWidthOfColsInList(columnList: MDGridColumnDirective[]) {\r\n    return columnList.reduce((width, col) => width + col.getActualWidth(), 0);\r\n}\r\n\r\nexport function _removeFromArray<T>(array: T[], object: T): void {\r\n    const index = array.indexOf(object);\r\n\r\n    if (index >= 0) {\r\n        array.splice(index, 1);\r\n    }\r\n}\r\n\r\nexport function sizeColumnsToFit(\r\n    gridWidth: number,\r\n    allColumns: MDGridColumnDirective[],\r\n    defaultMinColumnWidth: number | null,\r\n    defaultMaxColumnWidth: number | null,\r\n    onlyScaleUp: boolean\r\n) {\r\n    if (gridWidth <= 0 || !allColumns.length) {\r\n        return;\r\n    }\r\n\r\n    const currentTotalColumnWidth = getWidthOfColsInList(allColumns);\r\n\r\n    if (onlyScaleUp && currentTotalColumnWidth > gridWidth) {\r\n        return;\r\n    }\r\n\r\n    const doColumnsAlreadyFit = gridWidth === currentTotalColumnWidth;\r\n\r\n    if (doColumnsAlreadyFit) {\r\n        const doAllColumnsSatisfyConstraints = allColumns.every((column) => {\r\n            if (column.suppressSizeToFit) {\r\n                return true;\r\n            }\r\n\r\n            const minWidth = column.minWidth || defaultMinColumnWidth;\r\n            const maxWidth = column.maxWidth || defaultMaxColumnWidth;\r\n\r\n            const colWidth = column.getActualWidth();\r\n            return (minWidth == null || colWidth >= minWidth) && (maxWidth == null || colWidth <= maxWidth);\r\n        });\r\n\r\n        if (doAllColumnsSatisfyConstraints) {\r\n            return;\r\n        }\r\n    }\r\n\r\n    const colsToSpread: MDGridColumnDirective[] = [];\r\n    const colsToNotSpread: MDGridColumnDirective[] = [];\r\n\r\n    for (const column of allColumns) {\r\n        if (column.suppressSizeToFit) {\r\n            colsToNotSpread.push(column);\r\n        } else {\r\n            colsToSpread.push(column);\r\n        }\r\n    }\r\n\r\n    let finishedResizing = false;\r\n\r\n    const currentWidths: Partial<Record<string, number>> = {};\r\n\r\n    const moveToNotSpread = (column: MDGridColumnDirective) => {\r\n        _removeFromArray(colsToSpread, column);\r\n\r\n        colsToNotSpread.push(column);\r\n    };\r\n\r\n    for (const column of colsToSpread) {\r\n        if (onlyScaleUp) {\r\n            currentWidths[column.$$id] = column.getActualWidth();\r\n        }\r\n        column.resetActualWidth('autosizeColumns');\r\n\r\n        const minWidth = defaultMinColumnWidth ?? -Infinity;\r\n        const maxWidth = defaultMaxColumnWidth ?? Infinity;\r\n\r\n        const colWidth = column.getActualWidth();\r\n        const targetWidth = Math.max(Math.min(colWidth, maxWidth), minWidth);\r\n\r\n        if (targetWidth != colWidth) {\r\n            column.setActualWidth(targetWidth, 'autosizeColumns');\r\n        }\r\n    }\r\n\r\n    while (!finishedResizing) {\r\n        finishedResizing = true;\r\n        const availablePixels = gridWidth - getWidthOfColsInList(colsToNotSpread);\r\n\r\n        if (availablePixels <= 0) {\r\n            for (const column of colsToSpread) {\r\n                const newWidth = defaultMinColumnWidth ?? column.minWidth;\r\n\r\n                column.setActualWidth(newWidth, 'autosizeColumns');\r\n            }\r\n        } else {\r\n            const scale = availablePixels / getWidthOfColsInList(colsToSpread);\r\n\r\n            let pixelsForLastCol = availablePixels;\r\n\r\n            for (let i = colsToSpread.length - 1; i >= 0; i--) {\r\n                const column = colsToSpread[i];\r\n\r\n                const minOverride = defaultMinColumnWidth ?? currentWidths[column.$$id];\r\n                const maxOverride = defaultMaxColumnWidth;\r\n\r\n                const minWidth = Math.max(minOverride ?? -Infinity, column.minWidth);\r\n                const maxWidth = Math.min(maxOverride ?? Infinity, column.maxWidth);\r\n\r\n                let newWidth = Math.round(column.getActualWidth() * scale);\r\n\r\n                if (newWidth < minWidth) {\r\n                    newWidth = minWidth;\r\n                    moveToNotSpread(column);\r\n                    finishedResizing = false;\r\n                } else if (newWidth > maxWidth) {\r\n                    newWidth = maxWidth;\r\n                    moveToNotSpread(column);\r\n                    finishedResizing = false;\r\n                } else if (i === 0) {\r\n                    newWidth = pixelsForLastCol;\r\n                }\r\n\r\n                column.setActualWidth(newWidth, 'autosizeColumns');\r\n                pixelsForLastCol -= newWidth;\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nexport function getPreferredWidthForElements(elements: HTMLElement[], host: HTMLElement) {\r\n    const eDummyContainer = document.createElement('form');\r\n    eDummyContainer.style.position = 'fixed';\r\n\r\n    eDummyContainer.append(document.createElement('tr'));\r\n    for (const el of elements) {\r\n        eDummyContainer.append(el);\r\n    }\r\n\r\n    host.appendChild(eDummyContainer);\r\n\r\n    const dummyContainerWidth = Math.ceil(eDummyContainer.getBoundingClientRect().width);\r\n\r\n    eDummyContainer.remove();\r\n\r\n    return dummyContainerWidth;\r\n}\r\n\r\nexport function normaliseColumnWidth(\r\n    column: MDGridColumnDirective,\r\n    newWidth: number,\r\n    limits: { minWidth?: number; maxWidth?: number } = {}\r\n) {\r\n    const minWidth = limits.minWidth ?? column.minWidth;\r\n    if (newWidth < minWidth) {\r\n        newWidth = minWidth;\r\n    }\r\n    const maxWidth = limits.maxWidth ?? column.maxWidth;\r\n    if (newWidth > maxWidth) {\r\n        newWidth = maxWidth;\r\n    }\r\n    return newWidth;\r\n}\r\n","import {\r\n    AfterContentInit,\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChild,\r\n    ContentChildren,\r\n    EventEmitter,\r\n    inject,\r\n    Input,\r\n    OnChanges,\r\n    Output,\r\n    QueryList,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewEncapsulation,\r\n    booleanAttribute,\r\n    numberAttribute,\r\n    ElementRef,\r\n    viewChildren,\r\n    contentChildren,\r\n    NgZone,\r\n    ViewChild,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MDPaginatorComponent } from '../paginator/paginator.component';\r\nimport { PaginatorPageEvent } from '../paginator/paginator.types';\r\nimport { MDGridColumnDirective } from './cards-grid-column.directive';\r\nimport { MDGridToolbarTemplateDirective } from './cards-grid-toolbar.directive';\r\nimport {\r\n    GridColumnResizeEvent,\r\n    GridRowEditEvent,\r\n    GridColumn,\r\n    GroupedRows,\r\n    SortDirection,\r\n    SortPropDir,\r\n    SortType,\r\n    GridPageEvent,\r\n    GridSortEvent,\r\n} from './cards-grid.types';\r\nimport { groupRowsByProperty, nextSortDirection, sortRows } from './cards-grid.utils';\r\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport {\r\n    getPreferredWidthForElements,\r\n    normaliseColumnWidth,\r\n    refreshFlexedColumns,\r\n    sizeColumnsToFit,\r\n} from './column-sizing.utils';\r\nimport { merge, switchMap, take } from 'rxjs';\r\n\r\n@Component({\r\n    selector: 'md-grid',\r\n    templateUrl: './cards-grid.component.html',\r\n    styleUrl: './cards-grid.component.scss',\r\n    host: {\r\n        class: 'md-grid',\r\n    },\r\n    exportAs: 'mdGrid',\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n    imports: [CommonModule, MDPaginatorComponent],\r\n})\r\nexport class MDGridComponent<T extends Record<string, any> = any> implements AfterContentInit, OnChanges {\r\n    private _cdr = inject(ChangeDetectorRef);\r\n    private host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n    private zone = inject(NgZone);\r\n\r\n    @Input() rows: T[] = [];\r\n    @Input() trackByKey = null;\r\n\r\n    @Input() groupRowsBy?: keyof T | ((row: T) => any);\r\n\r\n    @Input() groupHeaderTemplate?: TemplateRef<{ group: GroupedRows<T> }>;\r\n\r\n    @Input() rowActionsTemplate?: TemplateRef<{\r\n        row: T;\r\n        rowIndex: number;\r\n        isEditing: boolean;\r\n        editFn: () => void;\r\n        saveFn: () => void;\r\n        cancelFn: () => void;\r\n    }>;\r\n\r\n    @Input({ transform: numberAttribute }) headerHeight: number = 46;\r\n\r\n    @Input() cardHeight: number | 'auto' = 'auto';\r\n\r\n    @Input({ transform: numberAttribute }) gap: number = 5;\r\n\r\n    @Input({ transform: numberAttribute }) defaultColumnWidth: number = 150;\r\n\r\n    @Input({ transform: booleanAttribute }) showRowActions: boolean = true;\r\n\r\n    @Input() emptyMessage: string = 'No items to display';\r\n\r\n    @Input() emptyTemplate?: TemplateRef<void>;\r\n\r\n    @Input({ transform: booleanAttribute }) enableColumnResize: boolean = false;\r\n\r\n    @Input({ transform: (v: unknown) => coerceNumberProperty(v, null) }) defaultMinColumnWidth: number = 50;\r\n\r\n    @Input({ transform: (v: unknown) => coerceNumberProperty(v, null) }) defaultMaxColumnWidth: number = 500;\r\n\r\n    @Output() columnResize = new EventEmitter<GridColumnResizeEvent>();\r\n\r\n    @Input() sorts: SortPropDir[] = [];\r\n\r\n    @Input() sortType: SortType = SortType.single;\r\n\r\n    @Input() mdSortActive: string;\r\n\r\n    @Input() mdSortDirection: string;\r\n\r\n    @Input({ transform: booleanAttribute }) externalSorting: boolean = false;\r\n\r\n    @Input({ transform: booleanAttribute }) enableClearingSortState: boolean = false;\r\n\r\n    @Input() sortAscendingIcon?: string;\r\n\r\n    @Input() sortDescendingIcon?: string;\r\n\r\n    @Input() sortUnsetIcon?: string;\r\n\r\n    @Output() sort = new EventEmitter<GridSortEvent>();\r\n\r\n    @Input({ transform: numberAttribute }) limit: number = 15;\r\n\r\n    @Input({ transform: numberAttribute }) offset: number = 0;\r\n\r\n    @Input({ transform: numberAttribute }) count?: number;\r\n\r\n    @Input({ transform: booleanAttribute }) externalPaging: boolean = false;\r\n\r\n    @Input({ transform: booleanAttribute }) showFooter: boolean = true;\r\n\r\n    @Input({ transform: numberAttribute }) footerHeight: number = 40;\r\n\r\n    @Input() autosizeStrategy: AutosizeStrategy;\r\n\r\n    @Input() pageSizeOptions: number[] = [];\r\n\r\n    @Output() page = new EventEmitter<GridPageEvent>();\r\n\r\n    @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n    @Input() editingRow: T | null = null;\r\n    @Output() editingRowChange = new EventEmitter<T | null>();\r\n\r\n    @Output() rowEditStart = new EventEmitter<GridRowEditEvent<T>>();\r\n\r\n    @Output() rowEditSave = new EventEmitter<GridRowEditEvent<T>>();\r\n\r\n    @Output() rowEditCancel = new EventEmitter<GridRowEditEvent<T>>();\r\n\r\n    @Output() inited = new EventEmitter<boolean>();\r\n    @Output() firstTimeVisible = new EventEmitter<boolean>();\r\n    @Output() layoutReady = new EventEmitter<boolean>();\r\n\r\n    @ContentChildren(MDGridColumnDirective)\r\n    _columnDirectives!: QueryList<MDGridColumnDirective<T>>;\r\n\r\n    @ContentChild(MDGridToolbarTemplateDirective)\r\n    toolbarTemplate?: MDGridToolbarTemplateDirective;\r\n\r\n    columns__ = contentChildren(MDGridColumnDirective);\r\n    columnsObs = toObservable(this.columns__);\r\n\r\n    _displayRows: T[] = [];\r\n\r\n    _groupedRows: GroupedRows<T>[] | null = null;\r\n\r\n    private _originalEditRow: T | null = null;\r\n\r\n    _editingRowCopy: T | null = null;\r\n\r\n    _editingRowIndex: number = -1;\r\n\r\n    _resizingColumn: MDGridColumnDirective<T> | null = null;\r\n\r\n    private _resizeStartX: number = 0;\r\n\r\n    private _resizeStartWidth: number = 0;\r\n\r\n    get totalSpace() {\r\n        return this.host.nativeElement.clientWidth - (this.hasVerticalScroll ? 15 : 0);\r\n    }\r\n\r\n    get columns() {\r\n        return [...this._columnDirectives.toArray()];\r\n    }\r\n\r\n    get toolbarContext(): MDGridToolbarContext<T> {\r\n        return { $implicit: this, grid: this };\r\n    }\r\n\r\n    gridInited = false;\r\n\r\n    get actualWidthSum() {\r\n        return this._columnDirectives.toArray().reduce((acc, item) => acc + item.actualWidth, 0);\r\n    }\r\n\r\n    async ngAfterContentInit(): Promise<void> {\r\n        await this.waitForFonts();\r\n\r\n        this.gridInited = true;\r\n\r\n        this._cdr.detectChanges();\r\n        this.applyInitialColumnSizing();\r\n        this.observeGridResize();\r\n        this.watchColumnDefinitions();\r\n        this.syncScroll();\r\n        this.inited.emit(true);\r\n    }\r\n\r\n    private async waitForFonts(): Promise<void> {\r\n        await document.fonts?.ready;\r\n    }\r\n\r\n    private observeGridResize(): void {\r\n        let width = this.totalSpace;\r\n        let firstRun = true;\r\n\r\n        const resize = new ResizeObserver(([entry]) => {\r\n            const newWidth = entry.contentRect.width;\r\n            const scrollStateChanged = this.updateScrollState();\r\n\r\n            if (newWidth > 0 && firstRun) {\r\n                this.firstTimeVisible.emit();\r\n                this.refreshLayoutAfterConsumerSizing();\r\n                this.layoutReady.emit(true);\r\n                firstRun = false;\r\n                width = this.totalSpace;\r\n\r\n                this.refreshFlexedLayout();\r\n                return;\r\n            }\r\n\r\n            const nextWidth = newWidth - (this.hasVerticalScroll ? 16 : 0);\r\n\r\n            if (Math.abs(nextWidth - width) < 0.5 && !scrollStateChanged) return;\r\n\r\n            width = nextWidth;\r\n\r\n            this.refreshFlexedLayout();\r\n        });\r\n\r\n        resize.observe(this.host.nativeElement);\r\n    }\r\n\r\n    private watchColumnDefinitions(): void {\r\n        this.columnsObs\r\n            .pipe(\r\n                switchMap((cols) => {\r\n                    const colDefChangeArr = cols.map((dir) => dir.colDefChange);\r\n\r\n                    return merge(...colDefChangeArr);\r\n                })\r\n            )\r\n            .subscribe(() => {\r\n                cancelAnimationFrame(this.requestAnimationFrameId);\r\n\r\n                this.requestAnimationFrameId = requestAnimationFrame(() => {\r\n                    this.refreshFlexedLayout();\r\n                });\r\n            });\r\n    }\r\n\r\n    sizeColumnsToFit() {\r\n        sizeColumnsToFit(this.totalSpace, this._columnDirectives.toArray(), null, null, false);\r\n        this.updateScrollState();\r\n        this._cdr.markForCheck();\r\n    }\r\n\r\n    autoSize() {\r\n        this.sizeToFitCellContents(null, null);\r\n        sizeColumnsToFit(this.totalSpace, this._columnDirectives.toArray(), null, null, true);\r\n        this.updateScrollState();\r\n        this._cdr.markForCheck();\r\n    }\r\n\r\n    resetFlexSizing(): void {\r\n        for (const column of this._columnDirectives.toArray()) {\r\n            column.flexOverridden = false;\r\n            column.resetActualWidth('gridInitializing');\r\n        }\r\n\r\n        this.refreshFlexedLayout();\r\n    }\r\n\r\n    sizeToFitCellContents(defaultMinColumnWidth: number | null, defaultMaxColumnWidth: number | null) {\r\n        const cells = this.cells();\r\n        const columns = this._columnDirectives.toArray();\r\n\r\n        const columnsLength = columns.length;\r\n        for (let i = 0; i < columnsLength; i++) {\r\n            const columnCells = [];\r\n            for (let j = i; j < cells.length; j += columnsLength) {\r\n                const cell = cells[j].nativeElement;\r\n                const clone = <HTMLElement>cell.cloneNode(true);\r\n                clone.style.width = 'unset';\r\n                clone.style.position = 'static';\r\n                clone.style.left = '';\r\n\r\n                columnCells.push(clone);\r\n            }\r\n\r\n            const column = this.columns[i];\r\n            const preferredWidth = getPreferredWidthForElements(columnCells, this.host.nativeElement);\r\n\r\n            if (preferredWidth > 0) {\r\n                const columnLimit: { minWidth?: number; maxWidth?: number } = {};\r\n\r\n                if (defaultMinColumnWidth) {\r\n                    columnLimit.minWidth = defaultMinColumnWidth;\r\n                }\r\n                if (defaultMaxColumnWidth) {\r\n                    columnLimit.maxWidth = defaultMaxColumnWidth;\r\n                }\r\n\r\n                const newWidth = normaliseColumnWidth(column, preferredWidth, columnLimit);\r\n                column.setActualWidth(newWidth, 'autosizeColumns');\r\n            }\r\n        }\r\n\r\n        this._cdr.markForCheck();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes['rows'] || changes['sorts'] || changes['limit'] || changes['offset']) {\r\n            this._processRows();\r\n        }\r\n\r\n        if (changes['editingRow']) {\r\n            this._handleEditingRowChange();\r\n        }\r\n\r\n        if (changes['groupRowsBy']) {\r\n            this._processRows();\r\n        }\r\n    }\r\n\r\n    hasHorizontalScroll = false;\r\n    hasVerticalScroll = false;\r\n\r\n    private applyInitialColumnSizing(): void {\r\n        this.updateScrollState();\r\n\r\n        if (this.autosizeStrategy === 'fitCellContents') {\r\n            this.sizeToFitCellContents(null, null);\r\n        } else if (this.autosizeStrategy === 'fitGridWidth') {\r\n            sizeColumnsToFit(this.totalSpace, this._columnDirectives.toArray(), null, null, false);\r\n        } else {\r\n            refreshFlexedColumns(this.totalSpace, this._columnDirectives.toArray());\r\n        }\r\n\r\n        this.updateScrollState();\r\n        this._cdr.detectChanges();\r\n    }\r\n\r\n    private refreshLayoutAfterConsumerSizing(): void {\r\n        this.updateScrollState();\r\n        this._cdr.detectChanges();\r\n    }\r\n\r\n    private refreshFlexedLayout(width = this.totalSpace): void {\r\n        refreshFlexedColumns(width, this._columnDirectives.toArray());\r\n        this.updateScrollState();\r\n        this._cdr.detectChanges();\r\n    }\r\n\r\n    private updateScrollState(): boolean {\r\n        const el = this.bodyScroll.nativeElement;\r\n        const hasVerticalScroll = el.scrollHeight > el.clientHeight;\r\n        const hasHorizontalScroll = el.scrollWidth > el.clientWidth;\r\n        const changed =\r\n            this.hasVerticalScroll !== hasVerticalScroll || this.hasHorizontalScroll !== hasHorizontalScroll;\r\n\r\n        this.hasVerticalScroll = hasVerticalScroll;\r\n        this.hasHorizontalScroll = hasHorizontalScroll;\r\n\r\n        return changed;\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.destroyFns.forEach((fn) => fn());\r\n    }\r\n\r\n    editRow(row: T): void;\r\n    editRow(index: number): void;\r\n    editRow(rowOrIndex: T | number): void {\r\n        const index = typeof rowOrIndex === 'number' ? rowOrIndex : this._displayRows.indexOf(rowOrIndex);\r\n        const row = typeof rowOrIndex === 'number' ? this._displayRows[rowOrIndex] : rowOrIndex;\r\n\r\n        if (index < 0 || !row) return;\r\n\r\n        if (this._editingRowCopy) {\r\n            this.cancelEdit();\r\n        }\r\n\r\n        this._originalEditRow = row;\r\n        this._editingRowCopy = structuredClone(row);\r\n        this._editingRowIndex = index;\r\n\r\n        this.editingRow = row;\r\n        this.editingRowChange.emit(row);\r\n        this.rowEditStart.emit({ row, rowIndex: index });\r\n\r\n        this._cdr.markForCheck();\r\n    }\r\n\r\n    saveRow(): void;\r\n    saveRow(row: T): void;\r\n    saveRow(row?: T): void {\r\n        if (!this._editingRowCopy || this._editingRowIndex < 0) return;\r\n\r\n        const savedRow = row || this._editingRowCopy;\r\n        const originalRow = this._originalEditRow!;\r\n        const rowIndex = this._editingRowIndex;\r\n\r\n        const rowsIndex = this.rows.indexOf(originalRow);\r\n        if (rowsIndex >= 0) {\r\n            Object.assign(this.rows[rowsIndex], savedRow);\r\n        }\r\n\r\n        this.rowEditSave.emit({\r\n            row: savedRow,\r\n            rowIndex,\r\n            originalRow,\r\n        });\r\n\r\n        this._clearEditState();\r\n        this._processRows();\r\n        this._cdr.markForCheck();\r\n    }\r\n\r\n    cancelEdit(): void {\r\n        if (!this._editingRowCopy) return;\r\n\r\n        this.rowEditCancel.emit({\r\n            row: this._originalEditRow!,\r\n            rowIndex: this._editingRowIndex,\r\n        });\r\n\r\n        this._clearEditState();\r\n        this._cdr.markForCheck();\r\n    }\r\n\r\n    isEditing(row: T): boolean {\r\n        return this._originalEditRow === row;\r\n    }\r\n\r\n    getEditingCopy(row: T): T | null {\r\n        if (this._originalEditRow === row) {\r\n            return this._editingRowCopy;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    currentSortCol: MDGridColumnDirective<T> | null = null;\r\n    currentSortDirection: SortDirection | undefined = undefined;\r\n\r\n    start = SortDirection.asc;\r\n\r\n    onColumnSort(column: MDGridColumnDirective<T>): void {\r\n        if (!column.sortable) return;\r\n\r\n        if (this.currentSortCol?.$$id !== column.$$id) {\r\n            this.currentSortCol = column;\r\n            this.currentSortDirection = this.start;\r\n        } else {\r\n            let sortDirectionCycle = getSortDirectionCycle(this.start, false);\r\n\r\n            let nextDirectionIndex = sortDirectionCycle.indexOf(this.currentSortDirection!) + 1;\r\n            if (nextDirectionIndex == sortDirectionCycle.length) {\r\n                nextDirectionIndex = 0;\r\n            }\r\n\r\n            this.currentSortDirection = sortDirectionCycle[nextDirectionIndex];\r\n        }\r\n\r\n        this.sort.emit({ active: this.currentSortCol.prop!, direction: this.currentSortDirection });\r\n    }\r\n\r\n    getSortDir(column: MDGridColumnDirective<T>): SortDirection | undefined {\r\n        return column === this.currentSortCol ? this.currentSortDirection : undefined;\r\n    }\r\n\r\n    getSortClass(column: MDGridColumnDirective<T>): string {\r\n        if (!column.sortable || this.currentSortCol !== column) return '';\r\n\r\n        const dir = this.currentSortDirection;\r\n        if (dir === SortDirection.asc) {\r\n            return this.sortAscendingIcon || 'md-grid-sort-asc';\r\n        }\r\n        if (dir === SortDirection.desc) {\r\n            return this.sortDescendingIcon || 'md-grid-sort-desc';\r\n        }\r\n        return ``;\r\n    }\r\n\r\n    isColumnResizeable(column: MDGridColumnDirective<T>): boolean {\r\n        return this.enableColumnResize && column.resizeable;\r\n    }\r\n\r\n    isFirstActionColumn(column: MDGridColumnDirective<T>): boolean {\r\n        const firstActionColumn = this.columns.find((item) => item.mobileRole === 'actions');\r\n        return firstActionColumn?.$$id === column.$$id;\r\n    }\r\n\r\n    isLastActionColumn(column: MDGridColumnDirective<T>): boolean {\r\n        const actionColumns = this.columns.filter((item) => item.mobileRole === 'actions');\r\n        return actionColumns[actionColumns.length - 1]?.$$id === column.$$id;\r\n    }\r\n\r\n    onResizeStart(event: MouseEvent, column: MDGridColumnDirective<T>): void {\r\n        if (!this.isColumnResizeable(column)) return;\r\n\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n\r\n        this._resizingColumn = column;\r\n        this._resizeStartX = event.clientX;\r\n        this._resizeStartWidth = column.getActualWidth();\r\n\r\n        this.zone.runOutsideAngular(() => {\r\n            document.addEventListener('mousemove', this._onResizeMove);\r\n        });\r\n\r\n        document.addEventListener('mouseup', this._onResizeEnd);\r\n\r\n        document.body.classList.add('md-grid-resizing');\r\n    }\r\n\r\n    private _onResizeMove = (event: MouseEvent): void => {\r\n        if (!this._resizingColumn) return;\r\n\r\n        const deltaX = event.clientX - this._resizeStartX;\r\n\r\n        const newWidth = this._resizeStartWidth + deltaX;\r\n        const key = this._resizingColumn;\r\n        const shiftKey = event instanceof MouseEvent && event.shiftKey === true;\r\n\r\n        const columnWidths = [{ key, newWidth }];\r\n\r\n        this.setColumnWidths(columnWidths, shiftKey);\r\n    };\r\n\r\n    private _onResizeEnd = (): void => {\r\n        if (!this._resizingColumn) return;\r\n\r\n        document.removeEventListener('mousemove', this._onResizeMove);\r\n        document.removeEventListener('mouseup', this._onResizeEnd);\r\n\r\n        document.body.classList.remove('md-grid-resizing');\r\n\r\n        const prevWidth = this._resizeStartWidth;\r\n        const newWidth = this._resizingColumn.actualWidth!;\r\n\r\n        if (prevWidth !== newWidth) {\r\n            this.columnResize.emit({\r\n                column: this._resizingColumn,\r\n                prevWidth,\r\n                newWidth,\r\n            });\r\n        }\r\n\r\n        this._resizingColumn = null;\r\n        this.updateScrollState();\r\n        this._cdr.markForCheck();\r\n    };\r\n\r\n    get _paginatorCount(): number {\r\n        return this.count ?? this.rows?.length ?? 0;\r\n    }\r\n\r\n    onPaginatorPage(event: PaginatorPageEvent): void {\r\n        this.offset = event.offset;\r\n        this.page.emit(event);\r\n\r\n        if (!this.externalPaging) {\r\n            this._processRows();\r\n        }\r\n    }\r\n\r\n    onPaginatorPageSizeChange(newSize: number): void {\r\n        this.limit = newSize;\r\n        this.offset = 0;\r\n        this.pageSizeChange.emit(newSize);\r\n\r\n        if (!this.externalPaging) {\r\n            this._processRows();\r\n        }\r\n    }\r\n\r\n    setPage(offset: number): void {\r\n        const totalCount = this._paginatorCount;\r\n        const maxOffset = Math.max(0, Math.ceil(totalCount / this.limit) - 1);\r\n        const newOffset = Math.max(0, Math.min(offset, maxOffset));\r\n\r\n        if (newOffset !== this.offset) {\r\n            this.offset = newOffset;\r\n            this.page.emit({\r\n                offset: newOffset,\r\n                limit: this.limit,\r\n                count: totalCount,\r\n                pageSize: this.limit,\r\n            });\r\n\r\n            if (!this.externalPaging) {\r\n                this._processRows();\r\n            }\r\n        }\r\n    }\r\n\r\n    get totalPages(): number {\r\n        return Math.ceil(this._paginatorCount / this.limit);\r\n    }\r\n\r\n    get currentPage(): number {\r\n        return this.offset + 1;\r\n    }\r\n\r\n    getCellValue(row: T, column: MDGridColumnDirective<T>): any {\r\n        const value = column.getValue(row);\r\n        if (column.pipe) {\r\n            return column.pipe.transform(value);\r\n        }\r\n        return value;\r\n    }\r\n\r\n    getTemplateRow(row: T): T {\r\n        if (this._originalEditRow === row && this._editingRowCopy) {\r\n            return this._editingRowCopy;\r\n        }\r\n        return row;\r\n    }\r\n\r\n    trackByRow = (index: number, row: T): any => {\r\n        return this.trackByKey ? row[this.trackByKey] : row;\r\n    };\r\n\r\n    trackByColumn = (index: number, column: MDGridColumnDirective<T>): string => {\r\n        return column.$$id;\r\n    };\r\n\r\n    trackByGroup = (index: number, group: GroupedRows<T>): any => {\r\n        return group.key;\r\n    };\r\n\r\n    private _processRows(): void {\r\n        let processed = [...(this?.rows ?? [])];\r\n\r\n        if (!this.externalSorting && this.sorts.length > 0) {\r\n            processed = sortRows(processed, this.sorts, this._columnDirectives.toArray());\r\n        }\r\n\r\n        if (!this.externalPaging) {\r\n            const start = this.offset * this.limit;\r\n            const end = start + this.limit;\r\n            processed = processed.slice(start, end);\r\n        }\r\n\r\n        this._displayRows = processed;\r\n\r\n        if (this.groupRowsBy) {\r\n            this._groupedRows = groupRowsByProperty(this._displayRows, this.groupRowsBy);\r\n        } else {\r\n            this._groupedRows = null;\r\n        }\r\n\r\n        this._cdr.markForCheck();\r\n    }\r\n\r\n    private _handleEditingRowChange(): void {\r\n        if (this.editingRow && this._originalEditRow !== this.editingRow) {\r\n            const index = this._displayRows.indexOf(this.editingRow);\r\n            if (index >= 0) {\r\n                this._originalEditRow = this.editingRow;\r\n                this._editingRowCopy = structuredClone(this.editingRow);\r\n                this._editingRowIndex = index;\r\n            }\r\n        } else if (!this.editingRow && this._originalEditRow) {\r\n            this._clearEditState();\r\n        }\r\n    }\r\n\r\n    private _clearEditState(): void {\r\n        this._originalEditRow = null;\r\n        this._editingRowCopy = null;\r\n        this._editingRowIndex = -1;\r\n        this.editingRow = null;\r\n        this.editingRowChange.emit(null);\r\n    }\r\n\r\n    cells = viewChildren<ElementRef<HTMLElement>>('cell');\r\n    cellsObs = toObservable(this.cells);\r\n\r\n    public getColAfter(col: GridColumn): MDGridColumnDirective | null {\r\n        const allDisplayedColumns = this._columnDirectives.toArray();\r\n\r\n        const oldIndex = allDisplayedColumns.indexOf(<MDGridColumnDirective>col);\r\n\r\n        if (oldIndex < allDisplayedColumns.length - 1) {\r\n            return allDisplayedColumns[oldIndex + 1];\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    setColumnWidths(\r\n        columnWidths: {\r\n            key: MDGridColumnDirective;\r\n            newWidth: number;\r\n        }[],\r\n        shiftKey: boolean\r\n    ) {\r\n        const sets: ColumnResizeSet[] = [];\r\n\r\n        for (const columnWidth of columnWidths) {\r\n            const col = columnWidth.key;\r\n\r\n            sets.push({\r\n                width: columnWidth.newWidth,\r\n                ratios: [1],\r\n                columns: [col],\r\n            });\r\n\r\n            if (shiftKey) {\r\n                const otherCol = this.getColAfter(col);\r\n\r\n                if (!otherCol) {\r\n                    continue;\r\n                }\r\n\r\n                const widthDiff = col.getActualWidth() - columnWidth.newWidth;\r\n                const otherColWidth = otherCol.getActualWidth() + widthDiff;\r\n\r\n                sets.push({\r\n                    width: otherColWidth,\r\n                    ratios: [1],\r\n                    columns: [otherCol],\r\n                });\r\n            }\r\n        }\r\n\r\n        if (sets.length === 0) {\r\n            return;\r\n        }\r\n\r\n        this.resizeColumnSets(sets);\r\n    }\r\n\r\n    resizeColumnSets(resizeSets: ColumnResizeSet[]) {\r\n        const passMinMaxCheck =\r\n            !resizeSets || resizeSets.every((columnResizeSet) => checkMinAndMaxWidthsForSet(columnResizeSet));\r\n\r\n        if (!passMinMaxCheck) {\r\n            return;\r\n        }\r\n\r\n        const changedCols: MDGridColumnDirective[] = [];\r\n\r\n        for (const set of resizeSets) {\r\n            const { width, columns, ratios } = set;\r\n\r\n            columns.forEach((col, index) => {\r\n                const colNewWidth = Math.round(ratios[index] * width);\r\n                const actualWidth = col.getActualWidth();\r\n\r\n                if (colNewWidth !== actualWidth) {\r\n                    col.setActualWidth(colNewWidth, 'uiColumnResized');\r\n                    changedCols.push(col);\r\n                }\r\n            });\r\n\r\n            const atLeastOneColChanged = changedCols.length > 0;\r\n\r\n            if (atLeastOneColChanged) {\r\n                cancelAnimationFrame(this.requestAnimationFrameId);\r\n                this.requestAnimationFrameId = requestAnimationFrame(() => {\r\n                    this.zone.run(() => {\r\n                        refreshFlexedColumns(this.totalSpace, this._columnDirectives.toArray(), columns);\r\n                        this.updateScrollState();\r\n                        this._cdr.markForCheck();\r\n                    });\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    requestAnimationFrameId: number;\r\n    isSyncing = false;\r\n\r\n    @ViewChild('headerScroll') headerScroll!: ElementRef<HTMLElement>;\r\n    @ViewChild('bodyScroll') bodyScroll!: ElementRef<HTMLElement>;\r\n\r\n    private destroyFns: (() => void)[] = [];\r\n\r\n    syncScroll() {\r\n        this.zone.runOutsideAngular(() => {\r\n            const el1 = this.headerScroll.nativeElement;\r\n            const el2 = this.bodyScroll.nativeElement;\r\n\r\n            const sync = (source: HTMLElement, target: HTMLElement) => {\r\n                if (this.isSyncing) return;\r\n\r\n                this.isSyncing = true;\r\n\r\n                target.scrollLeft = source.scrollLeft;\r\n                this.isSyncing = false;\r\n            };\r\n\r\n            const h1 = () => sync(el1, el2);\r\n            const h2 = () => sync(el2, el1);\r\n\r\n            el1.addEventListener('scroll', h1);\r\n            el2.addEventListener('scroll', h2);\r\n\r\n            this.destroyFns.push(() => el1.removeEventListener('scroll', h1));\r\n            this.destroyFns.push(() => el2.removeEventListener('scroll', h2));\r\n        });\r\n    }\r\n}\r\n\r\nfunction checkMinAndMaxWidthsForSet(columnResizeSet: ColumnResizeSet) {\r\n    const { columns, width } = columnResizeSet;\r\n\r\n    let minWidthAccumulated = 0;\r\n    let maxWidthAccumulated = 0;\r\n    let maxWidthActive = true;\r\n\r\n    for (const col of columns) {\r\n        const minWidth = col.minWidth;\r\n        minWidthAccumulated += minWidth || 0;\r\n\r\n        const maxWidth = col.maxWidth;\r\n        if (maxWidth > 0) {\r\n            maxWidthAccumulated += maxWidth;\r\n        } else {\r\n            maxWidthActive = false;\r\n        }\r\n    }\r\n\r\n    const minWidthPasses = width >= minWidthAccumulated;\r\n    const maxWidthPasses = !maxWidthActive || width <= maxWidthAccumulated;\r\n\r\n    return minWidthPasses && maxWidthPasses;\r\n}\r\n\r\nexport interface ColumnResizeSet {\r\n    columns: MDGridColumnDirective[];\r\n    ratios: number[];\r\n    width: number;\r\n}\r\n\r\nexport interface MDGridToolbarContext<T extends Record<string, any> = any> {\r\n    $implicit: MDGridComponent<T>;\r\n    grid: MDGridComponent<T>;\r\n}\r\n\r\nexport type AutosizeStrategy = 'fitGridWidth' | 'fitCellContents';\r\n\r\nfunction getSortDirectionCycle(start: SortDirection, disableClear: boolean): SortDirection[] {\r\n    let sortOrder: SortDirection[] = [SortDirection.asc, SortDirection.desc];\r\n    if (start == 'desc') {\r\n        sortOrder.reverse();\r\n    }\r\n    if (!disableClear) {\r\n        sortOrder.push(SortDirection.none);\r\n    }\r\n\r\n    return sortOrder;\r\n}\r\n","<!-- Scrollable container for header and body -->\r\n@if (gridInited) {\r\n    @if (toolbarTemplate) {\r\n        <div class=\"md-grid-actions-toolbar d-flex justify-content-end gap-2\">\r\n            <ng-template\r\n                [ngTemplateOutlet]=\"toolbarTemplate.templateRef\"\r\n                [ngTemplateOutletContext]=\"toolbarContext\"\r\n            />\r\n        </div>\r\n    }\r\n\r\n    <div class=\"md-grid-scroll-container\">\r\n        <!-- Header -->\r\n        @if (headerHeight > 0) {\r\n            <div\r\n                class=\"md-grid-header\"\r\n                role=\"row\"\r\n                [style.height.px]=\"headerHeight\"\r\n                [class.has-vertical-scroll]=\"hasVerticalScroll\"\r\n                #headerScroll\r\n            >\r\n                <div class=\"md-grid-header-inner\">\r\n                    @for (column of columns; track trackByColumn($index, column)) {\r\n                        <div\r\n                            #cell\r\n                            class=\"md-grid-header-cell\"\r\n                            role=\"columnheader\"\r\n                            [class.md-grid-id-cell]=\"column.mobileRole === 'id'\"\r\n                            [class.md-grid-data-cell]=\"column.mobileRole === 'data'\"\r\n                            [class.md-grid-column-actions-cell]=\"column.mobileRole === 'actions'\"\r\n                            [class.md-grid-first-action-cell]=\"isFirstActionColumn(column)\"\r\n                            [class.md-grid-last-action-cell]=\"isLastActionColumn(column)\"\r\n                            [class.resizeable]=\"isColumnResizeable(column)\"\r\n                            [class.sortable]=\"column.sortable\"\r\n                            [class.sort-active]=\"getSortDir(column)\"\r\n                            [class.sort-asc]=\"getSortDir(column) === 'asc'\"\r\n                            [class.sort-desc]=\"getSortDir(column) === 'desc'\"\r\n                            [style.width.px]=\"column.actualWidth\"\r\n                            [attr.title]=\"column.name\"\r\n                        >\r\n                            <!-- Custom header template -->\r\n                            @if (column.resolvedHeaderTemplate) {\r\n                                <ng-template\r\n                                    [ngTemplateOutlet]=\"column.resolvedHeaderTemplate\"\r\n                                    [ngTemplateOutletContext]=\"{\r\n                                        column: column,\r\n                                        sortDir: getSortDir(column),\r\n                                        sortFn: onColumnSort.bind(this, column),\r\n                                    }\"\r\n                                />\r\n                            } @else {\r\n                                <!-- Default header -->\r\n                                @if (column.sortable) {\r\n                                    <button\r\n                                        type=\"button\"\r\n                                        class=\"md-grid-header-sort-trigger\"\r\n                                        [attr.title]=\"column.name\"\r\n                                        (click)=\"onColumnSort(column)\"\r\n                                    >\r\n                                        <span class=\"md-grid-header-cell-label\">{{ column.name }}</span>\r\n                                        <span class=\"md-grid-sort-icon\" [ngClass]=\"getSortClass(column)\"></span>\r\n                                    </button>\r\n                                } @else {\r\n                                    <span class=\"md-grid-header-cell-label\">{{ column.name }}</span>\r\n                                }\r\n                            }\r\n\r\n                            <!-- Resize handle -->\r\n                            @if (isColumnResizeable(column)) {\r\n                                <span class=\"md-grid-resize-handle\" (mousedown)=\"onResizeStart($event, column)\"></span>\r\n                            }\r\n                        </div>\r\n                    }\r\n\r\n                    <!-- Actions header cell -->\r\n                    @if (showRowActions) {\r\n                        <div class=\"md-grid-header-cell md-grid-actions-cell\">\r\n                            <span class=\"md-grid-header-cell-label\"></span>\r\n                        </div>\r\n                    }\r\n                </div>\r\n            </div>\r\n        }\r\n\r\n        @if (_displayRows.length === 0) {\r\n            <!-- Empty state -->\r\n            <div class=\"md-grid-empty\">\r\n                @if (emptyTemplate) {\r\n                    <ng-template [ngTemplateOutlet]=\"emptyTemplate\" />\r\n                } @else {\r\n                    <span class=\"md-grid-empty-text\">{{ emptyMessage }}</span>\r\n                }\r\n            </div>\r\n        }\r\n\r\n        <!-- Body -->\r\n        <div class=\"md-grid-body\" [style.gap.px]=\"gap\" #bodyScroll>\r\n            <div class=\"horizontal-scroll-container\" [style.width.px]=\"actualWidthSum\">\r\n                @if (_groupedRows) {\r\n                    <!-- Grouped rows -->\r\n                    @for (group of _groupedRows; track trackByGroup($index, group)) {\r\n                        <div class=\"md-grid-group\">\r\n                            <!-- Group header -->\r\n                            <div class=\"md-grid-group-header\">\r\n                                @if (groupHeaderTemplate) {\r\n                                    <ng-template\r\n                                        [ngTemplateOutlet]=\"groupHeaderTemplate\"\r\n                                        [ngTemplateOutletContext]=\"{ group: group }\"\r\n                                    />\r\n                                } @else {\r\n                                    <span class=\"md-grid-group-title\">{{ group.key }}</span>\r\n                                }\r\n                            </div>\r\n\r\n                            <!-- Group rows -->\r\n                            <div class=\"md-grid-group-rows\" [style.gap.px]=\"gap\">\r\n                                @for (row of group.value; track trackByRow($index, row); let rowIndex = $index) {\r\n                                    <ng-container\r\n                                        *ngTemplateOutlet=\"\r\n                                            rowTemplate;\r\n                                            context: { row: row, rowIndex: rowIndex, group: group.key }\r\n                                        \"\r\n                                    />\r\n                                }\r\n                            </div>\r\n                        </div>\r\n                    }\r\n                } @else {\r\n                    <!-- Non-grouped rows -->\r\n                    @for (row of _displayRows; track trackByRow($index, row); let rowIndex = $index) {\r\n                        <ng-container\r\n                            *ngTemplateOutlet=\"rowTemplate; context: { row: row, rowIndex: rowIndex, group: null }\"\r\n                        />\r\n                    }\r\n                }\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <!-- Footer / Pagination -->\r\n    @if (showFooter) {\r\n        <md-paginator\r\n            [offset]=\"offset\"\r\n            [limit]=\"limit\"\r\n            [count]=\"_paginatorCount\"\r\n            [height]=\"footerHeight\"\r\n            [pageSizeOptions]=\"pageSizeOptions\"\r\n            (page)=\"onPaginatorPage($event)\"\r\n            (pageSizeChange)=\"onPaginatorPageSizeChange($event)\"\r\n        >\r\n        </md-paginator>\r\n    }\r\n}\r\n<!-- End scroll container -->\r\n\r\n<!-- Row template -->\r\n<ng-template #rowTemplate let-row=\"row\" let-rowIndex=\"rowIndex\" let-group=\"group\">\r\n    <div\r\n        class=\"md-grid-card\"\r\n        [class.md-grid-card-editing]=\"isEditing(row)\"\r\n        [class.md-grid-card-fixed-height]=\"cardHeight !== 'auto'\"\r\n        [style.height]=\"cardHeight === 'auto' ? null : cardHeight + 'px'\"\r\n        role=\"row\"\r\n    >\r\n        @for (column of columns; track trackByColumn($index, column)) {\r\n            <div\r\n                class=\"md-grid-cell\"\r\n                [class.md-grid-id-cell]=\"column.mobileRole === 'id'\"\r\n                [class.md-grid-data-cell]=\"column.mobileRole === 'data'\"\r\n                [class.md-grid-column-actions-cell]=\"column.mobileRole === 'actions'\"\r\n                [class.md-grid-first-action-cell]=\"isFirstActionColumn(column)\"\r\n                [class.md-grid-last-action-cell]=\"isLastActionColumn(column)\"\r\n                [style.width.px]=\"column.actualWidth\"\r\n                #cell\r\n                role=\"cell\"\r\n            >\r\n                <span class=\"md-grid-mobile-label\">{{ column.name }}</span>\r\n                <span class=\"md-grid-cell-content\">\r\n                    <!-- Edit mode -->\r\n                    @if (isEditing(row) && column.resolvedEditTemplate) {\r\n                        <ng-template\r\n                            [ngTemplateOutlet]=\"column.resolvedEditTemplate\"\r\n                            [ngTemplateOutletContext]=\"{\r\n                                row: getTemplateRow(row),\r\n                                originalRow: row,\r\n                                value: getCellValue(getTemplateRow(row), column),\r\n                                column: column,\r\n                                rowIndex: rowIndex,\r\n                                saveFn: saveRow.bind(this),\r\n                                cancelFn: cancelEdit.bind(this),\r\n                            }\"\r\n                        />\r\n                    }\r\n                    <!-- View mode with custom template -->\r\n                    @else if (column.resolvedCellTemplate) {\r\n                        <span class=\"md-grid-cell-template-content\">\r\n                            <ng-template\r\n                                [ngTemplateOutlet]=\"column.resolvedCellTemplate\"\r\n                                [ngTemplateOutletContext]=\"{\r\n                                    row: row,\r\n                                    value: getCellValue(row, column),\r\n                                    column: column,\r\n                                    rowIndex: rowIndex,\r\n                                    isEditing: isEditing(row),\r\n                                    group: group,\r\n                                }\"\r\n                            />\r\n                        </span>\r\n                    }\r\n                    <!-- Default view mode -->\r\n                    @else {\r\n                        <span class=\"md-grid-cell-value\">{{ getCellValue(row, column) }}</span>\r\n                    }\r\n                </span>\r\n            </div>\r\n        }\r\n\r\n        <!-- Row actions -->\r\n        @if (showRowActions) {\r\n            <div class=\"md-grid-cell md-grid-actions-cell md-grid-row-actions-cell\">\r\n                @if (rowActionsTemplate) {\r\n                    <ng-template\r\n                        [ngTemplateOutlet]=\"rowActionsTemplate\"\r\n                        [ngTemplateOutletContext]=\"{\r\n                            row: row,\r\n                            rowIndex: rowIndex,\r\n                            isEditing: isEditing(row),\r\n                            editFn: editRow.bind(this, row),\r\n                            saveFn: saveRow.bind(this),\r\n                            cancelFn: cancelEdit.bind(this),\r\n                        }\"\r\n                    />\r\n                } @else {\r\n                    <!-- Default actions -->\r\n                    @if (isEditing(row)) {\r\n                        <button\r\n                            type=\"button\"\r\n                            class=\"md-grid-action-btn md-grid-action-save\"\r\n                            (click)=\"saveRow()\"\r\n                            title=\"Save\"\r\n                        >\r\n                            <span class=\"md-grid-icon-save\"></span>\r\n                        </button>\r\n                        <button\r\n                            type=\"button\"\r\n                            class=\"md-grid-action-btn md-grid-action-cancel\"\r\n                            (click)=\"cancelEdit()\"\r\n                            title=\"Cancel\"\r\n                        >\r\n                            <span class=\"md-grid-icon-cancel\"></span>\r\n                        </button>\r\n                    } @else {\r\n                        <button\r\n                            type=\"button\"\r\n                            class=\"md-grid-action-btn md-grid-action-edit\"\r\n                            (click)=\"editRow(row)\"\r\n                            title=\"Edit\"\r\n                        >\r\n                            <span class=\"md-grid-icon-edit\"></span>\r\n                        </button>\r\n                    }\r\n                }\r\n            </div>\r\n        }\r\n    </div>\r\n</ng-template>\r\n","import { Directive, HostListener, Input } from '@angular/core';\r\n\r\nimport { MDGridComponent } from './cards-grid.component';\r\n\r\n@Directive({\r\n    selector: '[mdGridAutoSize]',\r\n    standalone: true,\r\n})\r\nexport class MDGridAutoSizeDirective {\r\n    @Input('mdGridAutoSize') grid?: MDGridComponent;\r\n\r\n    @HostListener('click', ['$event'])\r\n    onClick(event: Event): void {\r\n        event.preventDefault();\r\n        this.grid?.autoSize();\r\n    }\r\n}\r\n\r\n@Directive({\r\n    selector: '[mdGridResetFlexSizing]',\r\n    standalone: true,\r\n})\r\nexport class MDGridResetFlexSizingDirective {\r\n    @Input('mdGridResetFlexSizing') grid?: MDGridComponent;\r\n\r\n    @HostListener('click', ['$event'])\r\n    onClick(event: Event): void {\r\n        event.preventDefault();\r\n        this.grid?.resetFlexSizing();\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { MDGridComponent } from './cards-grid.component';\r\nimport {\r\n  MDGridColumnDirective,\r\n  MDGridIdColumnDirective,\r\n  MDGridActionsColumnDirective,\r\n  MDGridCellTemplateDirective,\r\n  MDGridHeaderTemplateDirective,\r\n  MDGridEditTemplateDirective,\r\n} from './cards-grid-column.directive';\r\nimport { MDGridAutoSizeDirective, MDGridResetFlexSizingDirective } from './cards-grid-actions.directive';\r\nimport { MDGridToolbarTemplateDirective } from './cards-grid-toolbar.directive';\r\n\r\nconst DECLARATIONS = [\r\n  MDGridComponent,\r\n  MDGridColumnDirective,\r\n  MDGridIdColumnDirective,\r\n  MDGridActionsColumnDirective,\r\n  MDGridCellTemplateDirective,\r\n  MDGridHeaderTemplateDirective,\r\n  MDGridEditTemplateDirective,\r\n  MDGridAutoSizeDirective,\r\n  MDGridResetFlexSizingDirective,\r\n  MDGridToolbarTemplateDirective,\r\n];\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    ...DECLARATIONS,\r\n  ],\r\n  exports: DECLARATIONS,\r\n})\r\nexport class MDGridModule {}\r\n","// Components\r\nexport { MDGridComponent } from './cards-grid.component';\r\n\r\n// Directives\r\nexport {\r\n  MDGridColumnDirective,\r\n  MDGridIdColumnDirective,\r\n  MDGridActionsColumnDirective,\r\n  MDGridCellTemplateDirective,\r\n  MDGridHeaderTemplateDirective,\r\n  MDGridEditTemplateDirective,\r\n} from './cards-grid-column.directive';\r\nexport { MDGridAutoSizeDirective, MDGridResetFlexSizingDirective } from './cards-grid-actions.directive';\r\nexport { MDGridToolbarTemplateDirective } from './cards-grid-toolbar.directive';\r\n\r\n// Module\r\nexport { MDGridModule } from './cards-grid.module';\r\n\r\n// Types (new names)\r\nexport {\r\n  GridColumn,\r\n  GridColumnMobileRole,\r\n  GridCellContext,\r\n  GridHeaderContext,\r\n  GridEditContext,\r\n  GridSortEvent,\r\n  GridPageEvent,\r\n  GridRowEditEvent,\r\n  GridColumnResizeEvent,\r\n  GroupedRows,\r\n  SortDirection,\r\n  SortType,\r\n  SortPropDir,\r\n  CardsGridEditContext,\r\n} from './cards-grid.types';\r\n\r\n// Utils (if needed externally)\r\nexport {\r\n  groupRowsByProperty,\r\n  sortRows,\r\n} from './cards-grid.utils';\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MDPaginatorComponent } from './paginator.component';\r\n\r\n@NgModule({\r\n  imports: [MDPaginatorComponent],\r\n  exports: [MDPaginatorComponent],\r\n})\r\nexport class MDPaginatorModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CollapseSetComponent","i2","i1.FilteredFieldService","i3.FilteredFieldItemComponent","i1.MefDevSelectComponent","i3.SlideRightComponent","i1.SlideUpComponent","i2.SlideRightComponent","i3","i4.StageComponent","i1.StepExecutorComponent","observableOf","i1","i2.MefDevTabsInkBarDirective","i2.MefDevTabsNavComponent","i3.MefDevTabLabelDirective","i4.MefDevTabBodyComponent","i1.MefDevTabSetComponent","HEADER_SCROLL_DELAY","HEADER_SCROLL_INTERVAL","passiveEventListenerOptions","filter","map","startWith","switchMap","takeUntil","take","ViewportRuler"],"mappings":"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"}