{"version":3,"file":"ngx-bootstrap-collapse.mjs","sources":["../../../../src/collapse/collapse-animations.ts","../../../../src/collapse/collapse.directive.ts","../../../../src/collapse/collapse.module.ts","../../../../src/collapse/ngx-bootstrap-collapse.ts"],"sourcesContent":["import {\n  animate,\n  style,\n  AnimationMetadata\n} from '@angular/animations';\n\nexport const COLLAPSE_ANIMATION_TIMING = '400ms cubic-bezier(0.4,0.0,0.2,1)';\n\nexport const expandAnimation: AnimationMetadata[] = [\n  style({ height: 0, visibility: 'hidden' }),\n  animate(\n    COLLAPSE_ANIMATION_TIMING,\n    style({ height: '*', visibility: 'visible' })\n  )\n];\n\nexport const collapseAnimation: AnimationMetadata[] = [\n  style({ height: '*', visibility: 'visible' }),\n  animate(\n    COLLAPSE_ANIMATION_TIMING,\n    style({ height: 0, visibility: 'hidden' })\n  )\n];\n","import {\n  AnimationBuilder,\n  AnimationFactory,\n  AnimationPlayer\n} from '@angular/animations';\n\nimport {\n  AfterViewChecked,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  Renderer2\n} from '@angular/core';\n\nimport {\n  collapseAnimation,\n  expandAnimation\n} from './collapse-animations';\n\n@Directive({\n    selector: '[collapse]',\n    exportAs: 'bs-collapse',\n    host: {\n        '[class.collapse]': 'true'\n    },\n    standalone: true\n})\nexport class CollapseDirective implements AfterViewChecked {\n  /** This event fires as soon as content collapses */\n  @Output() collapsed: EventEmitter<CollapseDirective> = new EventEmitter();\n  /** This event fires when collapsing is started */\n  @Output() collapses: EventEmitter<CollapseDirective> = new EventEmitter();\n  /** This event fires as soon as content becomes visible */\n  @Output() expanded: EventEmitter<CollapseDirective> = new EventEmitter();\n  /** This event fires when expansion is started */\n  @Output() expands: EventEmitter<CollapseDirective> = new EventEmitter();\n  // shown\n  @HostBinding('class.in')\n  @HostBinding('class.show')\n\n  isExpanded = true;\n  collapseNewValue = true;\n  // hidden\n  @HostBinding('attr.aria-hidden') isCollapsed = false;\n  // stale state\n  @HostBinding('class.collapse') isCollapse = true;\n  // animation state\n  @HostBinding('class.collapsing') isCollapsing = false;\n\n  @Input()\n  set display(value: string) {\n    this._display = value;\n    if (value === 'none') {\n      this.hide();\n      return;\n    }\n\n    this.isAnimated ? this.toggle() : this.show();\n  }\n\n  /** turn on/off animation */\n  @Input() isAnimated = false;\n  /** A flag indicating visibility of content (shown or hidden) */\n  @Input()\n  set collapse(value: boolean) {\n    this.collapseNewValue = value;\n    if (!this._player || this._isAnimationDone) {\n      this.isExpanded = value;\n      this.toggle();\n    }\n  }\n\n  get collapse(): boolean {\n    return this.isExpanded;\n  }\n\n  private _display = 'block';\n  private _isAnimationDone?: boolean;\n  private _player?: AnimationPlayer;\n  private _stylesLoaded = false;\n\n  private _COLLAPSE_ACTION_NAME = 'collapse';\n  private _EXPAND_ACTION_NAME = 'expand';\n\n  private readonly _factoryCollapseAnimation: AnimationFactory;\n  private readonly _factoryExpandAnimation: AnimationFactory;\n\n  constructor(\n    private _el: ElementRef,\n    private _renderer: Renderer2,\n    _builder: AnimationBuilder\n  ) {\n    this._factoryCollapseAnimation = _builder.build(collapseAnimation);\n    this._factoryExpandAnimation = _builder.build(expandAnimation);\n  }\n\n  ngAfterViewChecked(): void {\n    this._stylesLoaded = true;\n\n    if (!this._player || !this._isAnimationDone) {\n      return;\n    }\n\n    this._player.reset();\n    this._renderer.setStyle(this._el.nativeElement, 'height', '*');\n  }\n\n  /** allows to manually toggle content visibility */\n  toggle(): void {\n    if (this.isExpanded) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n  /** allows to manually hide content */\n  hide(): void {\n    this.isCollapsing = true;\n    this.isExpanded = false;\n    this.isCollapsed = true;\n    this.isCollapsing = false;\n\n    this.collapses.emit(this);\n\n    this._isAnimationDone = false;\n\n    this.animationRun(this.isAnimated, this._COLLAPSE_ACTION_NAME)(() => {\n      this._isAnimationDone = true;\n      if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n        this.show();\n\n        return;\n      }\n      this.collapsed.emit(this);\n      this._renderer.setStyle(this._el.nativeElement, 'display', 'none');\n    });\n  }\n  /** allows to manually show collapsed content */\n  show(): void {\n    this._renderer.setStyle(this._el.nativeElement, 'display', this._display);\n\n    this.isCollapsing = true;\n    this.isExpanded = true;\n    this.isCollapsed = false;\n    this.isCollapsing = false;\n\n    this.expands.emit(this);\n\n    this._isAnimationDone = false;\n    this.animationRun(this.isAnimated, this._EXPAND_ACTION_NAME)(() => {\n      this._isAnimationDone = true;\n      if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n        this.hide();\n\n        return;\n      }\n      this.expanded.emit(this);\n      this._renderer.removeStyle(this._el.nativeElement, 'overflow');\n    });\n  }\n\n  animationRun(isAnimated: boolean, action: string) {\n    if (!isAnimated || !this._stylesLoaded) {\n      return (callback: () => void) => callback();\n    }\n\n    this._renderer.setStyle(this._el.nativeElement, 'overflow', 'hidden');\n    this._renderer.addClass(this._el.nativeElement, 'collapse');\n\n    const factoryAnimation = (action === this._EXPAND_ACTION_NAME)\n      ? this._factoryExpandAnimation\n      : this._factoryCollapseAnimation;\n\n    if (this._player) {\n      this._player.reset();\n    }\n\n    this._player = factoryAnimation.create(this._el.nativeElement);\n    this._player.play();\n\n    return (callback: () => void) => this._player?.onDone(callback);\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { CollapseDirective } from './collapse.directive';\n\n@NgModule({\n    imports: [CollapseDirective],\n    exports: [CollapseDirective]\n})\nexport class CollapseModule {\n  // @deprecated method not required anymore, will be deleted in v19.0.0\n  static forRoot(): ModuleWithProviders<CollapseModule> {\n    return {\n      ngModule: CollapseModule,\n      providers: []\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}