{"version":3,"file":"bootkit-angular-components-offcanvas.mjs","sources":["../../../projects/bootkit/components/offcanvas/offcanvas.directive.ts","../../../projects/bootkit/components/offcanvas/offcanvas.module.ts","../../../projects/bootkit/components/offcanvas/bootkit-angular-components-offcanvas.ts"],"sourcesContent":["import { OnInit, ElementRef, Renderer2, effect, HostListener, Directive, input, Output, EventEmitter, OnDestroy, afterNextRender, untracked } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[bkOffcanvas]',\r\n    exportAs: 'bkOffcanvas',\r\n    standalone: true,\r\n})\r\nexport class OffcanvasDirective implements OnInit, OnDestroy {\r\n    public show = input(false);\r\n    public backdrop = input(false);\r\n\r\n    @Output()\r\n    public backdropClick = new EventEmitter<MouseEvent>;\r\n\r\n    private _firstShowEffectRun = true;\r\n    private _firstBackdropEffectRun = true;\r\n    private _backdropElement?: any;\r\n    private _backdropClickUnlistenFunc?: any;\r\n    private _backdropTransitionendUnlistenFunc?: any;\r\n    private addClass = (c: string) => this._renderer.addClass(this._el.nativeElement, c);\r\n\r\n    constructor(private _el: ElementRef, private _renderer: Renderer2) {\r\n\r\n        afterNextRender(() => {\r\n            if (this.show() && this.backdrop()) {\r\n                this._createBackdrop();\r\n            }\r\n        });\r\n\r\n        effect(() => {\r\n            var show = this.show();\r\n            var backdrop = untracked(() => this.backdrop());\r\n\r\n            if (this._firstShowEffectRun) {\r\n                if (show) {\r\n                    this.addClass('show');\r\n                }\r\n                this._firstShowEffectRun = false;\r\n                return;\r\n            }\r\n\r\n\r\n            if (show) {\r\n                this.addClass('show');\r\n                if (backdrop)\r\n                    this._createBackdrop();\r\n            } else {\r\n                this.addClass('hiding');\r\n                this._hideBackdrop(); // we first hide backdrop, after hide transition completed, we destroy it.\r\n            }\r\n        });\r\n\r\n        effect(() => {\r\n            var backdrop = this.backdrop();\r\n            var show = untracked(() => this.show());\r\n\r\n            if (this._firstBackdropEffectRun) {\r\n                this._firstBackdropEffectRun = false;\r\n                return;\r\n            }\r\n\r\n            if (show) {\r\n                if (backdrop)\r\n                    this._createBackdrop();\r\n                else\r\n                    this._destroyBackdrop();\r\n            }\r\n        });\r\n    }\r\n\r\n    ngOnInit(): void {\r\n    }\r\n\r\n    private _createBackdrop() {\r\n        if (!this._backdropElement) {\r\n            this._backdropElement = this._renderer.createElement('div');\r\n            ['offcanvas-backdrop', 'fade', 'show'].forEach(c => this._renderer.addClass(this._backdropElement, c));\r\n\r\n            // Append the new element next to the host element\r\n            const parent = this._renderer.parentNode(this._el.nativeElement);\r\n            const nextSibling = this._renderer.nextSibling(this._el.nativeElement);\r\n            this._renderer.insertBefore(parent, this._backdropElement, nextSibling);\r\n\r\n            this._backdropClickUnlistenFunc = this._renderer.listen(this._backdropElement, 'click', (e) => {\r\n                this.backdropClick.emit(e);\r\n            });\r\n\r\n            this._backdropTransitionendUnlistenFunc = this._renderer.listen(this._backdropElement, 'transitionend', (e) => {\r\n                if (!this.show()) {\r\n                    this._destroyBackdrop();\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    private _destroyBackdrop() {\r\n        if (this._backdropElement) {\r\n            const parent = this._renderer.parentNode(this._el.nativeElement);\r\n            this._renderer.removeChild(parent, this._backdropElement, false);\r\n            this._backdropClickUnlistenFunc()\r\n\r\n            this._backdropClickUnlistenFunc = undefined;\r\n            this._backdropElement = undefined\r\n        }\r\n    }\r\n\r\n    private _hideBackdrop() {\r\n        if (this._backdropElement) {\r\n            this._renderer.removeClass(this._backdropElement, 'show');\r\n        }\r\n    }\r\n\r\n    @HostListener('transitionend', ['$event'])\r\n    private _onTransitionend(e: TransitionEvent): void {\r\n        if (!this.show() && e.propertyName == 'transform') {\r\n            ['show', 'hiding'].forEach(x => this._renderer.removeClass(this._el.nativeElement, x));\r\n            // if (this.backdrop())\r\n            //     this._destroyBackdrop();\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this._destroyBackdrop()\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { OffcanvasDirective } from './offcanvas.directive';\r\n\r\nconst items = [\r\n    OffcanvasDirective,\r\n];\r\n\r\n@NgModule({\r\n    imports: items,\r\n    exports: items\r\n})\r\nexport class OffcanvasModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}