{
  "version": 3,
  "file": "covalent-core-steps.js",
  "sources": [
    "ng://@covalent/core/steps/out/steps.module.ts",
    "ng://@covalent/core/steps/out/step-body/step-body.component.ts",
    "ng://@covalent/core/steps/out/step-header/step-header.component.ts",
    "ng://@covalent/core/steps/out/steps.component.ts",
    "ng://@covalent/core/steps/out/step.component.ts"
  ],
  "sourcesContent": [
    "import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollDispatchModule } from '@angular/cdk/scrolling';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRippleModule } from '@angular/material/core';\n\nimport { CovalentCommonModule } from '@covalent/core/common';\n\n// Steps\nimport { TdStepsComponent } from './steps.component';\nimport { TdStepHeaderComponent } from './step-header/step-header.component';\nimport { TdStepBodyComponent } from './step-body/step-body.component';\nimport { TdStepComponent, TdStepLabelDirective, TdStepActionsDirective,\n         TdStepSummaryDirective } from './step.component';\n\nconst TD_STEPS: Type<any>[] = [\n  TdStepsComponent,\n  TdStepComponent,\n  TdStepHeaderComponent,\n  TdStepBodyComponent,\n  TdStepLabelDirective,\n  TdStepActionsDirective,\n  TdStepSummaryDirective,\n];\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatIconModule,\n    MatRippleModule,\n    PortalModule,\n    ScrollDispatchModule,\n    CovalentCommonModule,\n  ],\n  declarations: [\n    TD_STEPS,\n  ],\n  exports: [\n    TD_STEPS,\n  ],\n})\nexport class CovalentStepsModule {\n\n}\n",
    "import { Component, Input, ViewChild, ElementRef } from '@angular/core';\n\nimport { StepState } from '../step.component';\n\nimport { TdCollapseAnimation } from '@covalent/core/common';\n\n@Component({\n  selector: 'td-step-body',\n  styles: [`:host{\n  -webkit-box-sizing:border-box;\n          box-sizing:border-box;\n  display:-webkit-box;\n  display:-ms-flexbox;\n  display:flex;\n  -webkit-box-orient:horizontal;\n  -webkit-box-direction:normal;\n      -ms-flex-direction:row;\n          flex-direction:row; }\n  :host .td-step-body{\n    overflow-x:hidden;\n    -webkit-box-flex:1;\n        -ms-flex:1;\n            flex:1;\n    -webkit-box-sizing:border-box;\n            box-sizing:border-box; }\n    :host .td-step-body .td-step-summary.ng-animating,\n    :host .td-step-body .td-step-content-wrapper.ng-animating{\n      overflow:hidden; }\n    :host .td-step-body .td-step-content{\n      overflow-x:auto; }\n    :host .td-step-body .td-step-actions{\n      -webkit-box-sizing:border-box;\n              box-sizing:border-box;\n      display:-webkit-box;\n      display:-ms-flexbox;\n      display:flex;\n      -webkit-box-orient:horizontal;\n      -webkit-box-direction:normal;\n          -ms-flex-direction:row;\n              flex-direction:row; }\n`],\n  template: `<ng-content></ng-content>\n<div class=\"td-step-body\">\n  <div class=\"td-step-content-wrapper\"\n       [@tdCollapse]=\"!active\">\n    <div #contentRef cdkScrollable [class.td-step-content]=\"hasContent\">\n      <ng-content select=\"[td-step-body-content]\"></ng-content>\n    </div>\n    <div #actionsRef\n         [class.td-step-actions]=\"hasActions\">\n      <ng-content select=\"[td-step-body-actions]\"></ng-content>\n    </div>\n  </div>\n  <div #summaryRef\n       [@tdCollapse]=\"active || !isComplete()\"\n       [class.td-step-summary]=\"hasSummary\">\n    <ng-content select=\"[td-step-body-summary]\"></ng-content>\n  </div>\n</div>`,\n  animations: [\n    TdCollapseAnimation(),\n  ],\n})\nexport class TdStepBodyComponent {\n\n  @ViewChild('contentRef', { read: ElementRef }) contentRef: ElementRef;\n\n  get hasContent(): boolean {\n    return this.contentRef &&\n          (this.contentRef.nativeElement.children.length > 0 || !!this.contentRef.nativeElement.textContent.trim());\n  }\n\n  @ViewChild('actionsRef', { read: ElementRef }) actionsRef: ElementRef;\n\n  get hasActions(): boolean {\n    return this.actionsRef &&\n          (this.actionsRef.nativeElement.children.length > 0 || !!this.actionsRef.nativeElement.textContent.trim());\n  }\n\n  @ViewChild('summaryRef', { read: ElementRef }) summaryRef: ElementRef;\n\n  get hasSummary(): boolean {\n    return this.summaryRef &&\n          (this.summaryRef.nativeElement.children.length > 0 || !!this.summaryRef.nativeElement.textContent.trim());\n  }\n\n  /**\n   * active?: boolean\n   * Sets for active/inactive states on body.\n   */\n  @Input('active') active: boolean;\n\n  /**\n   * state?: StepState or ['none' | 'required' | 'complete']\n   * Sets styles for state of body.\n   * Defaults to [StepState.None | 'none'].\n   */\n  @Input('state') state: StepState = StepState.None;\n\n  /**\n   * Returns 'true' if [state] equals to [StepState.Complete | 'complete'], else 'false'.\n   */\n  isComplete(): boolean {\n    return this.state === StepState.Complete;\n  }\n}\n",
    "import { Component, Input } from '@angular/core';\n\nimport { ICanDisable, mixinDisabled, ICanDisableRipple, mixinDisableRipple } from '@covalent/core/common';\n\nimport { StepState } from '../step.component';\n\nexport class TdStepHeaderBase {}\n\n/* tslint:disable-next-line */\nexport const _TdStepHeaderMixinBase = mixinDisableRipple(mixinDisabled(TdStepHeaderBase));\n\n@Component({\n  selector: 'td-step-header',\n  inputs: ['disabled', 'disableRipple'],\n  styles: [`.td-step-header{\n  position:relative;\n  outline:none;\n  height:72px;\n  -webkit-box-orient:horizontal;\n  -webkit-box-direction:normal;\n      -ms-flex-direction:row;\n          flex-direction:row;\n  -webkit-box-sizing:border-box;\n          box-sizing:border-box;\n  display:-webkit-box;\n  display:-ms-flexbox;\n  display:flex;\n  -webkit-box-flex:1;\n      -ms-flex:1;\n          flex:1;\n  -webkit-box-pack:start;\n      -ms-flex-pack:start;\n          justify-content:start;\n  -webkit-box-align:center;\n      -ms-flex-align:center;\n          align-items:center;\n  -ms-flex-line-pack:center;\n      align-content:center;\n  max-width:100%; }\n  .td-step-header:hover:not(.mat-disabled){\n    cursor:pointer; }\n  .td-step-header mat-icon.td-edit-icon{\n    margin:0 8px; }\n  .td-step-header mat-icon.mat-warn{\n    font-size:24px;\n    height:24px;\n    width:24px; }\n  .td-step-header mat-icon.mat-complete{\n    position:relative;\n    left:-2px;\n    top:2px;\n    font-size:28px;\n    height:24px;\n    width:24px; }\n  .td-step-header .td-circle{\n    height:24px;\n    width:24px;\n    line-height:24px;\n    border-radius:99%;\n    text-align:center;\n    -webkit-box-flex:0;\n        -ms-flex:none;\n            flex:none; }\n    .td-step-header .td-circle mat-icon{\n      margin-top:2px;\n      font-weight:bold; }\n  .td-step-header .td-triangle > mat-icon{\n    font-size:25px; }\n  .td-step-header .td-complete{\n    font-size:0; }\n  ::ng-deep :not([dir='rtl']) .td-step-header .td-circle, ::ng-deep :not([dir='rtl'])\n  .td-step-header .td-triangle, ::ng-deep :not([dir='rtl'])\n  .td-step-header .td-complete{\n    margin-left:8px;\n    margin-right:0; }\n  ::ng-deep [dir='rtl'] .td-step-header .td-circle, ::ng-deep [dir='rtl']\n  .td-step-header .td-triangle, ::ng-deep [dir='rtl']\n  .td-step-header .td-complete{\n    margin-left:0;\n    margin-right:8px; }\n  .td-step-header .td-circle,\n  .td-step-header .td-complete{\n    font-size:14px; }\n  .td-step-header .td-step-label-wrapper{\n    padding-left:8px;\n    padding-right:8px; }\n  .td-step-header .td-step-header-separator{\n    -webkit-box-flex:1;\n        -ms-flex:1;\n            flex:1;\n    -webkit-box-sizing:border-box;\n            box-sizing:border-box; }\n`],\n  template: `<div class=\"td-step-header\"\n      [class.mat-disabled]=\"disabled\"\n      matRipple\n      [matRippleDisabled]=\"disabled || disableRipple\"\n      [tabIndex]=\"disabled ? -1 : 0\">\n  <div class=\"td-circle\"\n      [class.mat-inactive]=\"(!active && !isComplete()) || disabled\"\n      [class.mat-active]=\"active && !disabled\"\n      *ngIf=\"!isRequired() && !isComplete()\">\n    <span *ngIf=\"(active || !isComplete())\">{{number || ''}}</span>\n  </div>\n  <div class=\"td-complete\" *ngIf=\"isComplete()\">\n    <mat-icon class=\"mat-complete\">check_circle</mat-icon>\n  </div>\n  <div class=\"td-triangle\"\n      [class.bg-muted]=\"disabled\"\n      *ngIf=\"isRequired()\">\n    <mat-icon class=\"mat-warn\">warning</mat-icon>\n  </div>\n  <div class=\"td-step-label-wrapper\"\n        [class.mat-inactive]=\"(!active && !isComplete()) || disabled\"\n        [class.mat-warn]=\"isRequired() && !disabled\">\n    <div class=\"td-step-label\">\n      <ng-content select=\"[td-step-header-label]\"></ng-content>\n    </div>\n    <div class=\"td-step-sublabel\">\n      <ng-content select=\"[td-step-header-sublabel]\"></ng-content>\n    </div>\n  </div>\n  <span class=\"td-step-header-separator\"></span>\n  <mat-icon class=\"td-edit-icon\" *ngIf=\"isComplete() && !active && !disabled\">mode_edit</mat-icon>\n</div>`,\n})\nexport class TdStepHeaderComponent extends _TdStepHeaderMixinBase implements ICanDisable, ICanDisableRipple {\n\n  /**\n   * Number assigned to [TdStepHeaderComponent].\n   */\n  @Input('number') number: number;\n\n  /**\n   * active?: boolean\n   * Sets for active/inactive states on header.\n   */\n  @Input('active') active: boolean;\n\n  /**\n   * state?: StepState or ['none' | 'required' | 'complete']\n   * Sets styles for state of header.\n   * Defaults to [StepState.None | 'none'].\n   */\n  @Input('state') state: StepState = StepState.None;\n\n  /**\n   * Returns 'true' if [state] equals to [StepState.Complete | 'complete'], else 'false'.\n   */\n  isComplete(): boolean {\n    return this.state === StepState.Complete;\n  }\n\n  /**\n   * Returns 'true' if [state] equals to [StepState.Required | 'required'], else 'false'.\n   */\n  isRequired(): boolean {\n    return this.state === StepState.Required;\n  }\n}\n",
    "import { Component, Input, Output } from '@angular/core';\nimport { OnDestroy, AfterContentInit } from '@angular/core';\nimport { EventEmitter, ContentChildren, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs/Subscription';\n\nimport { TdStepComponent } from './step.component';\n\nexport interface IStepChangeEvent {\n  newStep: TdStepComponent;\n  prevStep: TdStepComponent;\n}\n\nexport enum StepMode {\n  Vertical = 'vertical',\n  Horizontal = 'horizontal',\n}\n\n@Component({\n  selector: 'td-steps',\n  styles: [`.td-line-wrapper,\n.td-step{\n  position:relative; }\n\n.td-steps-header{\n  -webkit-box-sizing:border-box;\n          box-sizing:border-box;\n  display:-webkit-box;\n  display:-ms-flexbox;\n  display:flex;\n  -webkit-box-orient:horizontal;\n  -webkit-box-direction:normal;\n      -ms-flex-direction:row;\n          flex-direction:row; }\n\n.td-line-wrapper{\n  width:24px;\n  min-height:1px; }\n\n.td-horizontal-line{\n  border-bottom-width:1px;\n  border-bottom-style:solid;\n  height:1px;\n  position:relative;\n  top:36px;\n  min-width:15px;\n  -webkit-box-flex:1;\n      -ms-flex:1;\n          flex:1;\n  -webkit-box-sizing:border-box;\n          box-sizing:border-box; }\n  ::ng-deep :not([dir='rtl']) .td-horizontal-line{\n    left:-6px;\n    right:-3px; }\n  ::ng-deep [dir='rtl'] .td-horizontal-line{\n    left:-3px;\n    right:-6px; }\n\n.td-vertical-line{\n  position:absolute;\n  bottom:-16px;\n  top:-16px;\n  border-left-width:1px;\n  border-left-style:solid; }\n  ::ng-deep :not([dir='rtl']) .td-vertical-line{\n    left:20px;\n    right:auto; }\n  ::ng-deep [dir='rtl'] .td-vertical-line{\n    left:auto;\n    right:20px; }\n`],\n  template: `<div *ngIf=\"isHorizontal()\" class=\"td-steps-header\">\n  <ng-template let-step let-index=\"index\" let-last=\"last\" ngFor [ngForOf]=\"steps\">\n    <td-step-header class=\"td-step-horizontal-header\"\n                    (keydown.enter)=\"step.open()\"\n                    [number]=\"index + 1\"\n                    [active]=\"step.active\"\n                    [disableRipple]=\"step.disableRipple\"\n                    [disabled]=\"step.disabled\" \n                    [state]=\"step.state\"\n                    (click)=\"step.open()\">\n      <ng-template td-step-header-label [cdkPortalHost]=\"step.stepLabel\"></ng-template>\n      <ng-template td-step-header-label [ngIf]=\"!step.stepLabel\">{{step.label}}</ng-template>\n      <ng-template td-step-header-sublabel [ngIf]=\"true\">{{step.sublabel | truncate:30}}</ng-template>\n    </td-step-header>\n    <span *ngIf=\"!last\" class=\"td-horizontal-line\"></span>\n  </ng-template>\n</div>\n<div *ngFor=\"let step of steps; let index = index; let last = last\" class=\"td-step\">\n  <td-step-header class=\"td-step-vertical-header\"\n                  (keydown.enter)=\"step.toggle()\"\n                  [number]=\"index + 1\"\n                  [active]=\"step.active\" \n                  [disabled]=\"step.disabled\"\n                  [disableRipple]=\"step.disableRipple\"\n                  [state]=\"step.state\"\n                  (click)=\"step.toggle()\"\n                  *ngIf=\"isVertical()\">\n    <ng-template td-step-header-label [cdkPortalHost]=\"step.stepLabel\"></ng-template>\n    <ng-template td-step-header-label [ngIf]=\"!step.stepLabel\">{{step.label}}</ng-template>\n    <ng-template td-step-header-sublabel [ngIf]=\"true\">{{step.sublabel}}</ng-template>\n  </td-step-header>\n  <ng-template [ngIf]=\"isVertical() || step.active || (!areStepsActive() && prevStep === step)\">\n    <td-step-body [active]=\"step.active\" [state]=\"step.state\">\n      <div *ngIf=\"isVertical()\" class=\"td-line-wrapper\">\n        <div *ngIf=\"!last\" class=\"td-vertical-line\"></div>\n      </div>\n      <ng-template td-step-body-content [cdkPortalHost]=\"step.stepContent\"></ng-template>\n      <ng-template td-step-body-actions [cdkPortalHost]=\"step.stepActions\"></ng-template>\n      <ng-template td-step-body-summary [cdkPortalHost]=\"step.stepSummary\"></ng-template>\n    </td-step-body>\n  </ng-template>\n</div>\n`,\n})\nexport class TdStepsComponent implements OnDestroy, AfterContentInit {\n\n  private _subcriptions: Subscription[];\n  private _mode: StepMode = StepMode.Vertical;\n  private _steps: QueryList<TdStepComponent>;\n\n  @ContentChildren(TdStepComponent)\n  set stepsContent(steps: QueryList<TdStepComponent>) {\n    if (steps) {\n      this._steps = steps;\n      this._registerSteps();\n    }\n  }\n\n  get steps(): TdStepComponent[] {\n    return this._steps.toArray();\n  }\n  prevStep: TdStepComponent;\n\n  /**\n   * mode?: StepMode or [\"vertical\" | \"horizontal\"]\n   * Defines if the mode of the [TdStepsComponent].  Defaults to [StepMode.Vertical | \"vertical\"]\n   */\n  @Input('mode')\n  set mode(mode: StepMode) {\n    switch (mode) {\n      case StepMode.Horizontal:\n        this._mode = StepMode.Horizontal;\n        break;\n      default:\n        this._mode = StepMode.Vertical;\n    }\n  }\n  get mode(): StepMode {\n    return this._mode;\n  }\n\n  /**\n   * stepChange?: function\n   * Method to be executed when [onStepChange] event is emitted.\n   * Emits an [IStepChangeEvent] implemented object.\n   */\n  @Output('stepChange') onStepChange: EventEmitter<IStepChangeEvent> = new EventEmitter<IStepChangeEvent>();\n\n  /**\n   * Executed after content is initialized, loops through any [TdStepComponent] children elements,\n   * assigns them a number and subscribes as an observer to their [onActivated] event.\n   */\n  ngAfterContentInit(): void {\n    this._registerSteps();\n  }\n\n  /**\n   * Unsubscribes from [TdStepComponent] children elements when component is destroyed.\n   */\n  ngOnDestroy(): void {\n    this._deregisterSteps();\n  }\n\n  /**\n   * Returns 'true' if [mode] equals to [StepMode.Horizontal | 'horizontal'], else 'false'.\n   */\n  isHorizontal(): boolean {\n    return this._mode === StepMode.Horizontal;\n  }\n\n  /**\n   * Returns 'true' if [mode] equals to [StepMode.Vertical | 'vertical'], else 'false'.\n   */\n  isVertical(): boolean {\n    return this._mode === StepMode.Vertical;\n  }\n\n  areStepsActive(): boolean {\n    return this._steps.filter((step: TdStepComponent) => {\n      return step.active;\n    }).length > 0;\n  }\n\n  /**\n   * Wraps previous and new [TdStepComponent] numbers in an object that implements [IStepChangeEvent]\n   * and emits [onStepChange] event.\n   */\n  private _onStepSelection(step: TdStepComponent): void {\n    if (this.prevStep !== step) {\n      let prevStep: TdStepComponent = this.prevStep;\n      this.prevStep = step;\n      let event: IStepChangeEvent = {\n        newStep: step,\n        prevStep: prevStep,\n      };\n      this._deactivateAllBut(step);\n      this.onStepChange.emit(event);\n    }\n  }\n\n  /**\n   * Loops through [TdStepComponent] children elements and deactivates them ignoring the one passed as an argument.\n   */\n  private _deactivateAllBut(activeStep: TdStepComponent): void {\n    this._steps.filter((step: TdStepComponent) => step !== activeStep)\n    .forEach((step: TdStepComponent) => {\n      step.active = false;\n    });\n  }\n\n  private _registerSteps(): void {\n    this._subcriptions = [];\n    this._steps.toArray().forEach((step: TdStepComponent) => {\n      let subscription: Subscription = step.onActivated.asObservable().subscribe(() => {\n        this._onStepSelection(step);\n      });\n      this._subcriptions.push(subscription);\n    });\n  }\n\n  private _deregisterSteps(): void {\n    if (this._subcriptions) {\n      this._subcriptions.forEach((subs: Subscription) => {\n        subs.unsubscribe();\n      });\n      this._subcriptions = undefined;\n    }\n  }\n}\n",
    "import { Component, Directive, Input, Output, TemplateRef, ViewChild,\n         ViewContainerRef, ContentChild, OnInit } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { TemplatePortalDirective, TemplatePortal } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable, mixinDisabled, ICanDisableRipple, mixinDisableRipple } from '@covalent/core/common';\n\nexport enum StepState {\n  None = 'none',\n  Required = 'required',\n  Complete = 'complete',\n}\n\n@Directive({\n  selector: '[td-step-label]ng-template',\n})\nexport class TdStepLabelDirective extends TemplatePortalDirective {\n  constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n    super(templateRef, viewContainerRef);\n  }\n}\n\n@Directive({\n  selector: '[td-step-actions]ng-template',\n})\nexport class TdStepActionsDirective extends TemplatePortalDirective {\n  constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n    super(templateRef, viewContainerRef);\n  }\n}\n\n@Directive({\n  selector: '[td-step-summary]ng-template',\n})\nexport class TdStepSummaryDirective extends TemplatePortalDirective {\n  constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n    super(templateRef, viewContainerRef);\n  }\n}\n\nexport class TdStepBase {}\n\n/* tslint:disable-next-line */\nexport const _TdStepMixinBase = mixinDisableRipple(mixinDisabled(TdStepBase));\n\n@Component({\n  selector: 'td-step',\n  inputs: ['disabled', 'disableRipple'],\n  template: `<ng-template>\n  <ng-content></ng-content>\n</ng-template>`,\n})\nexport class TdStepComponent extends _TdStepMixinBase implements OnInit, ICanDisable, ICanDisableRipple {\n\n  private _active: boolean = false;\n  private _state: StepState = StepState.None;\n\n  private _contentPortal: TemplatePortal<any>;\n  get stepContent(): TemplatePortal<any> {\n    return this._contentPortal;\n  }\n\n  @ViewChild(TemplateRef) _content: TemplateRef<any>;\n  @ContentChild(TdStepLabelDirective) stepLabel: TdStepLabelDirective;\n  @ContentChild(TdStepActionsDirective) stepActions: TdStepActionsDirective;\n  @ContentChild(TdStepSummaryDirective) stepSummary: TdStepSummaryDirective;\n\n  /**\n   * label?: string\n   * Sets label of [TdStepComponent] header.\n   * Defaults to 'Step #'\n   */\n  @Input('label') label: string;\n\n  /**\n   * sublabel?: string\n   * Sets sublabel of [TdStepComponent] header.\n   */\n  @Input('sublabel') sublabel: string;\n\n  /**\n   * active?: boolean\n   * Toggles [TdStepComponent] between active/deactive.\n   */\n  @Input('active')\n  set active(active: boolean) {\n    this._setActive(coerceBooleanProperty(active));\n  }\n  get active(): boolean {\n    return this._active;\n  }\n\n  /**\n   * state?: StepState or ['none' | 'required' | 'complete']\n   * Sets state of [TdStepComponent] depending on value.\n   * Defaults to [StepState.None | 'none'].\n   */\n  @Input('state')\n  set state(state: StepState) {\n    switch (state) {\n      case StepState.Complete:\n        this._state = StepState.Complete;\n        break;\n      case StepState.Required:\n        this._state = StepState.Required;\n        break;\n      default:\n        this._state = StepState.None;\n        break;\n    }\n  }\n  get state(): StepState {\n    return this._state;\n  }\n\n  /**\n   * activated?: function\n   * Event emitted when [TdStepComponent] is activated.\n   */\n  @Output('activated') onActivated: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * deactivated?: function\n   * Event emitted when [TdStepComponent] is deactivated.\n   */\n  @Output('deactivated') onDeactivated: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(private _viewContainerRef: ViewContainerRef) {\n    super();\n  }\n\n  ngOnInit(): void {\n    this._contentPortal = new TemplatePortal(this._content, this._viewContainerRef);\n  }\n\n  /**\n   * Toggle active state of [TdStepComponent]\n   * retuns 'true' if successful, else 'false'.\n   */\n  toggle(): boolean {\n    return this._setActive(!this._active);\n  }\n\n  /**\n   * Opens [TdStepComponent]\n   * retuns 'true' if successful, else 'false'.\n   */\n  open(): boolean {\n    return this._setActive(true);\n  }\n\n  /**\n   * Closes [TdStepComponent]\n   * retuns 'true' if successful, else 'false'.\n   */\n  close(): boolean {\n    return this._setActive(false);\n  }\n\n  /**\n   * Returns 'true' if [state] equals to [StepState.Complete | 'complete'], else 'false'.\n   */\n  isComplete(): boolean {\n    return this._state === StepState.Complete;\n  }\n\n  /** Method executed when the disabled value changes */\n  onDisabledChange(v: boolean): void {\n    if (v && this._active) {\n      this._active = false;\n      this._onDeactivated();\n    }\n  }\n\n  /**\n   * Method to change active state internally and emit the [onActivated] event if 'true' or [onDeactivated]\n   * event if 'false'. (Blocked if [disabled] is 'true')\n   * returns true if successfully changed state\n   */\n  private _setActive(newActive: boolean): boolean {\n    if (this.disabled) {\n      return false;\n    }\n    if (this._active !== newActive) {\n      this._active = newActive;\n      if (newActive) {\n        this._onActivated();\n      } else {\n        this._onDeactivated();\n      }\n      return true;\n    }\n    return false;\n  }\n\n  private _onActivated(): void {\n    this.onActivated.emit(undefined);\n  }\n\n  private _onDeactivated(): void {\n    this.onDeactivated.emit(undefined);\n  }\n}\n"
  ],
  "names": [],
  "mappings": ";;;;;;;;;;;;;AIAA;;IASA,IAAA,EAAS,MAAM;IACf,QAAA,EAAa,UAAU;IACvB,QAAA,EAAa,UAAU;;AAMvB,MAAA,oBAAkC,SAAQ,uBAAuB,CAAjE;;;;;IACE,WAAF,CAAc,WAA6B,EAAE,gBAAkC,EAA/E;QACI,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;KACtC;;;IANH,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW;gBACT,QAAQ,EAAE,4BAA4B;aACvC,EAAD,EAAA;;;;IAhBA,EAAA,IAAA,EAA8C,WAAW,GAAzD;IACA,EAAA,IAAA,EAAS,gBAAgB,GAAzB;;AAyBA,MAAA,sBAAoC,SAAQ,uBAAuB,CAAnE;;;;;IACE,WAAF,CAAc,WAA6B,EAAE,gBAAkC,EAA/E;QACI,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;KACtC;;;IANH,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW;gBACT,QAAQ,EAAE,8BAA8B;aACzC,EAAD,EAAA;;;;IAzBA,EAAA,IAAA,EAA8C,WAAW,GAAzD;IACA,EAAA,IAAA,EAAS,gBAAgB,GAAzB;;AAkCA,MAAA,sBAAoC,SAAQ,uBAAuB,CAAnE;;;;;IACE,WAAF,CAAc,WAA6B,EAAE,gBAAkC,EAA/E;QACI,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;KACtC;;;IANH,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW;gBACT,QAAQ,EAAE,8BAA8B;aACzC,EAAD,EAAA;;;;IAlCA,EAAA,IAAA,EAA8C,WAAW,GAAzD;IACA,EAAA,IAAA,EAAS,gBAAgB,GAAzB;;AAwCA,MAAA,UAAA,CAAA;CAA0B;;AAG1B,AAAO,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;AAS9E,AAAA,MAAA,eAA6B,SAAQ,gBAAgB,CAArD;;;;IA2EE,WAAF,CAAsB,iBAAmC,EAAzD;QACI,KAAK,EAAE,CAAC;QADU,IAAtB,CAAA,iBAAuC,GAAjB,iBAAiB,CAAkB;QAzEzD,IAAA,CAAA,OAAA,GAA6B,KAAK,CAAlC;QACA,IAAA,CAAA,MAAA,GAA8B,SAAS,CAAC,IAAI,CAA5C;;;;;QAgEA,IAAA,CAAA,WAAA,GAAyD,IAAI,YAAY,EAAQ,CAAjF;;;;;QAMA,IAAA,CAAA,aAAA,GAA6D,IAAI,YAAY,EAAQ,CAArF;KAIG;;;;IAvED,IAAI,WAAW,GAAjB;QACI,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;;;;;;;IAyBH,IAAM,MAAM,CAAC,MAAe,EAA5B;QACI,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;;;;;IAEjD,IAAI,MAAM,GAAZ;QACI,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;;;;;;;IAQH,IAAM,KAAK,CAAC,KAAgB,EAA5B;QACI,QAAQ,KAAK;YACX,KAAK,SAAS,CAAC,QAAQ;gBACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;gBACjC,MAAM;YACR,KAAK,SAAS,CAAC,QAAQ;gBACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;gBACjC,MAAM;YACR;gBACE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;gBAC7B,MAAM;SACT;;;;;IAEH,IAAI,KAAK,GAAX;QACI,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;;;IAkBD,QAAQ,GAAV;QACI,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACjF;;;;;;IAMD,MAAM,GAAR;QACI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;;;;;;IAMD,IAAI,GAAN;QACI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC9B;;;;;;IAMD,KAAK,GAAP;QACI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC/B;;;;;IAKD,UAAU,GAAZ;QACI,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,QAAQ,CAAC;KAC3C;;;;;;IAGD,gBAAgB,CAAC,CAAU,EAA7B;QACI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;;;;;;;;IAOO,UAAU,CAAC,SAAkB,EAAvC;QACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;iBAAM;gBACL,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;YACD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;;;;;IAGP,YAAY,GAAtB;QACI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;;;;IAG3B,cAAc,GAAxB;QACI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;;;IA3JvC,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW;gBACT,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;gBACrC,QAAQ,EAAE,CAAZ;;cAEA,CAAe;aACd,EAAD,EAAA;;;;IAnDA,EAAA,IAAA,EAAS,gBAAgB,GAAzB;;;IA8DA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAG,SAAS,EAAZ,IAAA,EAAA,CAAa,WAAW,EAAxB,EAAA,EAAA;IACA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAG,YAAY,EAAf,IAAA,EAAA,CAAgB,oBAAoB,EAApC,EAAA,EAAA;IACA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAG,YAAY,EAAf,IAAA,EAAA,CAAgB,sBAAsB,EAAtC,EAAA,EAAA;IACA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAG,YAAY,EAAf,IAAA,EAAA,CAAgB,sBAAsB,EAAtC,EAAA,EAAA;IAOA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,OAAO,EAAhB,EAAA,EAAA;IAMA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,UAAU,EAAnB,EAAA,EAAA;IAMA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,QAAQ,EAAjB,EAAA,EAAA;IAaA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,OAAO,EAAhB,EAAA,EAAA;IAsBA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAG,MAAM,EAAT,IAAA,EAAA,CAAU,WAAW,EAArB,EAAA,EAAA;IAMA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAG,MAAM,EAAT,IAAA,EAAA,CAAU,aAAa,EAAvB,EAAA,EAAA;;;;;;;AD9HA;;;;;;IAaA,QAAA,EAAa,UAAU;IACvB,UAAA,EAAe,YAAY;;AAoG3B,MAAA,gBAAA,CAAA;;QAGA,IAAA,CAAA,KAAA,GAA4B,QAAQ,CAAC,QAAQ,CAA7C;;;;;;QAuCA,IAAA,CAAA,YAAA,GAAuE,IAAI,YAAY,EAAoB,CAA3G;;;;;;IAnCA,IAAM,YAAY,CAAC,KAAiC,EAApD;QACI,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;;;;;IAGH,IAAI,KAAK,GAAX;QACI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;KAC9B;;;;;;;IAQH,IAAM,IAAI,CAAC,IAAc,EAAzB;QACI,QAAQ,IAAI;YACV,KAAK,QAAQ,CAAC,UAAU;gBACtB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACjC,MAAM;YACR;gBACE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;SAClC;;;;;IAEH,IAAI,IAAI,GAAV;QACI,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;;;;;IAaD,kBAAkB,GAApB;QACI,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;;;;;IAKD,WAAW,GAAb;QACI,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;;;;;IAKD,YAAY,GAAd;QACI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,UAAU,CAAC;KAC3C;;;;;IAKD,UAAU,GAAZ;QACI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,QAAQ,CAAC;KACzC;;;;IAED,cAAc,GAAhB;QACI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAqB,KAApD;YACM,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACf;;;;;;;IAMO,gBAAgB,CAAC,IAAqB,EAAhD;QACI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B,qBAAI,QAAQ,GAAoB,IAAI,CAAC,QAAQ,CAAC;YAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,qBAAI,KAAK,GAAqB;gBAC5B,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,QAAQ;aACnB,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;;;;;;;IAMK,iBAAiB,CAAC,UAA2B,EAAvD;QACI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAqB,KAAK,IAAI,KAAK,UAAU,CAAC;aACjE,OAAO,CAAC,CAAC,IAAqB,KAAnC;YACM,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB,CAAC,CAAC;;;;;IAGG,cAAc,GAAxB;QACI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAqB,KAAxD;YACM,qBAAI,YAAY,GAAiB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAjF;gBACQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aAC7B,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACvC,CAAC,CAAC;;;;;IAGG,gBAAgB,GAA1B;QACI,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAkB,KAApD;gBACQ,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;SAChC;;;;IA3NL,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW;gBACT,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,CAAC,CAAX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,CAAC,CAAC;gBACA,QAAQ,EAAE,CAAZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,CAAC;aACA,EAAD,EAAA;;;;;IAOA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAG,eAAe,EAAlB,IAAA,EAAA,CAAmB,eAAe,EAAlC,EAAA,EAAA;IAiBA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,MAAM,EAAf,EAAA,EAAA;IAmBA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAG,MAAM,EAAT,IAAA,EAAA,CAAU,YAAY,EAAtB,EAAA,EAAA;;;;;;;AD5JA,AAMA,MAAA,gBAAA,CAAA;CAAgC;;AAGhC,AAAO,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAqH1F,AAAA,MAAA,qBAAmC,SAAQ,sBAAsB,CAAjE;;;;;;;;QAkBA,IAAA,CAAA,KAAA,GAAqC,SAAS,CAAC,IAAI,CAAnD;;;;;;IAKE,UAAU,GAAZ;QACI,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,QAAQ,CAAC;KAC1C;;;;;IAKD,UAAU,GAAZ;QACI,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,QAAQ,CAAC;KAC1C;;;IAnJH,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;gBACrC,MAAM,EAAE,CAAC,CAAX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EA,CAAC,CAAC;gBACA,QAAQ,EAAE,CAAZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BA,CAAO;aACN,EAAD,EAAA;;;;;IAMA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,QAAQ,EAAjB,EAAA,EAAA;IAMA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,QAAQ,EAAjB,EAAA,EAAA;IAOA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,OAAO,EAAhB,EAAA,EAAA;;;;;;;ADhJA,AA+DA,MAAA,mBAAA,CAAA;;;;;;;QAkCA,IAAA,CAAA,KAAA,GAAqC,SAAS,CAAC,IAAI,CAAnD;;;;;IA9BE,IAAI,UAAU,GAAhB;QACI,OAAO,IAAI,CAAC,UAAU;aACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;KACjH;;;;IAID,IAAI,UAAU,GAAhB;QACI,OAAO,IAAI,CAAC,UAAU;aACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;KACjH;;;;IAID,IAAI,UAAU,GAAhB;QACI,OAAO,IAAI,CAAC,UAAU;aACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;KACjH;;;;;IAkBD,UAAU,GAAZ;QACI,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,QAAQ,CAAC;KAC1C;;;IAlGH,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW;gBACT,QAAQ,EAAE,cAAc;gBACxB,MAAM,EAAE,CAAC,CAAX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,CAAC,CAAC;gBACA,QAAQ,EAAE,CAAZ;;;;;;;;;;;;;;;;;MAiBA,CAAO;gBACL,UAAU,EAAE;oBACV,mBAAmB,EAAE;iBACtB;aACF,EAAD,EAAA;;;;;IAGA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAG,SAAS,EAAZ,IAAA,EAAA,CAAa,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAA/C,EAAA,EAAA;IAOA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAG,SAAS,EAAZ,IAAA,EAAA,CAAa,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAA/C,EAAA,EAAA;IAOA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAG,SAAS,EAAZ,IAAA,EAAA,CAAa,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAA/C,EAAA,EAAA;IAWA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,QAAQ,EAAjB,EAAA,EAAA;IAOA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,OAAO,EAAhB,EAAA,EAAA;;;;;;;ADhGA,AAkBA,MAAM,QAAQ,GAAgB;IAC5B,gBAAgB;IAChB,eAAe;IACf,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;CACvB,CAAC;AAkBF,AAAA,MAAA,mBAAA,CAAA;;;IAhBA,EAAA,IAAA,EAAC,QAAQ,EAAT,IAAA,EAAA,CAAU;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,aAAa;oBACb,eAAe;oBACf,YAAY;oBACZ,oBAAoB;oBACpB,oBAAoB;iBACrB;gBACD,YAAY,EAAE;oBACZ,QAAQ;iBACT;gBACD,OAAO,EAAE;oBACP,QAAQ;iBACT;aACF,EAAD,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;"
}
