{"version":3,"file":"bootkit-angular-components-collapse.mjs","sources":["../../../projects/bootkit/components/collapse/collapse.directive.ts","../../../projects/bootkit/components/collapse/collapse.component.ts","../../../projects/bootkit/components/collapse/collapse.component.html","../../../projects/bootkit/components/collapse/collapse.module.ts","../../../projects/bootkit/components/collapse/bootkit-angular-components-collapse.ts"],"sourcesContent":["import { Directive, OnInit, ElementRef, Renderer2, input, effect, OnDestroy } from '@angular/core';\r\nimport { animate, AnimationBuilder, AnimationMetadata, AnimationPlayer, style } from '@angular/animations';\r\n\r\n/** \r\n * Directive to handle the collapse and expand functionality of a host element. \r\n */\r\n@Directive({\r\n    selector: '[bkCollapse]',\r\n    exportAs: 'bkCollapse',\r\n    standalone: true,\r\n})\r\nexport class CollapseDirective implements OnInit, OnDestroy {\r\n    /**\r\n     * Indicates whether the host element is collapsed. \r\n     * @input \r\n     */\r\n    public collapsed = input(false);\r\n\r\n    /** Animation timings for collapse/expand animations. \r\n     * @input \r\n     */\r\n    public timings = input<string | number>('0.2s');\r\n\r\n    private _player?: AnimationPlayer;\r\n    private _firstExecution = true;\r\n\r\n    constructor(private el: ElementRef, private builder: AnimationBuilder, private renderer: Renderer2) {\r\n        renderer.setStyle(el.nativeElement, 'overflow', 'hidden');\r\n \r\n        effect(() => {\r\n            var collapsed = this.collapsed();\r\n            if (this._firstExecution) {\r\n                this._firstExecution = false;\r\n                return;\r\n            }\r\n\r\n            if (collapsed)\r\n                this._collapse()\r\n            else\r\n                this._expand();\r\n        });\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this._addClass('collapse');\r\n        if (!this.collapsed()) {\r\n            this._addClass('show');\r\n        }\r\n    }\r\n\r\n    private _collapse() {\r\n        if (this._player) {\r\n            this._player.destroy();\r\n        }\r\n\r\n        this._playAnimation([\r\n            style({ height: '*', opacity: '*' }),\r\n            animate(this.timings(), style({ height: 0, opacity: 0 })),\r\n        ])\r\n\r\n        this._player!.onDone(() => {\r\n            if (this.collapsed()) {\r\n                this._removeClass('show')\r\n            }\r\n        });\r\n    }\r\n\r\n    private _expand() {\r\n        if (this._player) {\r\n            this._player.destroy();\r\n        }\r\n\r\n        this._addClass('show')\r\n        this._playAnimation([\r\n            style({ height: 0, opacity: 0 }),\r\n            animate(this.timings(), style({ height: '*', opacity: '*' })),\r\n        ]);\r\n\r\n        this._player.onDone(() => {\r\n            this._player.destroy()\r\n            this._player = undefined;\r\n        });\r\n    }\r\n\r\n    private _playAnimation(animation: AnimationMetadata | AnimationMetadata[]) {\r\n        this._player = this.builder.build(animation).create(this.el.nativeElement);\r\n        this._player.play();\r\n    }\r\n\r\n    private _addClass = (cls: string) => this.renderer.addClass(this.el.nativeElement, cls);\r\n    private _removeClass = (cls: string) => this.renderer.removeClass(this.el.nativeElement, cls);\r\n\r\n    ngOnDestroy(): void {\r\n        this._player?.destroy();\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, input, model } from '@angular/core';\r\nimport { trigger, state, style, animate, transition } from '@angular/animations';\r\n\r\n/**\r\n * A component that provides collapse and expand functionality. \r\n*/\r\n@Component({\r\n    selector: 'bk-collapse',\r\n    templateUrl: './collapse.component.html',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    styles: `:host{display :block; overflow: hidden}`,\r\n    animations: [\r\n        trigger('collapseExpand', [\r\n            state('collapsed', style({ height: 0, opacity: 0, })),\r\n            state('expanded', style({ height: '*', opacity: '*', })),\r\n            transition('collapsed <=> expanded', [\r\n                animate('{{timings}}')\r\n            ])\r\n        ])\r\n    ]\r\n})\r\nexport class CollapseComponent {\r\n    /**\r\n     * Indicates whether the host element is collapsed. \r\n     * @model \r\n     */\r\n    public collapsed = model(false);\r\n\r\n    /** Animation timings for collapse/expand animations. \r\n     * @input \r\n     */\r\n    public timings = input<string | number>('0.2s');\r\n\r\n    @HostBinding('@collapseExpand')\r\n    private get _collapseExpand() {\r\n        return { value: this.collapsed() ? 'collapsed' : 'expanded', params: { timings: this.timings() } };\r\n    }\r\n}\r\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\r\nimport { CollapseDirective } from './collapse.directive';\r\nimport { CollapseComponent } from './collapse.component';\r\n\r\nconst items = [\r\n    CollapseDirective,\r\n    CollapseComponent\r\n];\r\n\r\n@NgModule({\r\n    imports: items,\r\n    exports: items\r\n})\r\nexport class CollapseModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}