{"version":3,"file":"bravobit-bb-foundation-dialog.mjs","sources":["../../../projects/bb-foundation/dialog/src/lib/dialog.ref.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.interfaces.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-registry.service.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.insertion.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.service.ts","../../../projects/bb-foundation/dialog/src/lib/directives/confirm.directive.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.config.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.module.ts","../../../projects/bb-foundation/dialog/src/bravobit-bb-foundation-dialog.ts"],"sourcesContent":["import {take} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\n\nexport class BbDialogRef<T = any> {\n\n    // Data.\n    private readonly _afterClosed$ = new Subject<T>();\n    private readonly _overlayClicked$ = new Subject<void>();\n\n    readonly afterClosed = this._afterClosed$.pipe(take(1));\n    readonly overlayClicked = this._overlayClicked$.pipe(take(1));\n\n    onOverlayClicked() {\n        this._overlayClicked$.next();\n    }\n\n    close(result?: T) {\n        this._afterClosed$.next(result);\n    }\n\n}\n","import {InjectionToken, Injector} from '@angular/core';\n\nexport class BbDialogConfig<T = any> {\n    data?: T;\n    injector?: Injector;\n}\n\nexport interface DialogConfirmOptions {\n    cancelButtonClass: string;\n    cancelButtonText: string;\n    confirmButtonText: string;\n    confirmButtonClass: string;\n    confirmIconName: string;\n    width: string;\n    onConfirmed: () => Promise<any>;\n}\n\nexport class DialogConfig {\n    animationMs?: number;\n    icons?: {\n        closeIcon?: string;\n        confirmIcon?: string;\n    };\n}\n\nexport const DIALOG_CONFIG: InjectionToken<DialogConfig> = new InjectionToken('dialog config');\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, OnDestroy, OnInit, Output, Renderer2, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {firstValueFrom, fromEvent, Subscription, takeUntil, timer} from 'rxjs';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {filter, switchMap} from 'rxjs/operators';\n\n@Component({\n    selector: 'bb-dialog-overlay',\n    templateUrl: './dialog-overlay.component.html',\n    styleUrls: ['./dialog-overlay.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {'class': 'bb-dialog-overlay'}\n})\nexport class BbDialogOverlay implements OnInit, OnDestroy {\n\n    // Dependencies.\n    private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n    private readonly _renderer: Renderer2 = inject(Renderer2);\n    private readonly _elementRef: ElementRef = inject(ElementRef);\n    private readonly _document: Document = inject(DOCUMENT);\n\n    // Inputs.\n    @Input({transform: booleanAttribute}) closeRequestedDisabled: boolean = false;\n\n    // Outputs.\n    @Output() closeRequested = new EventEmitter<void>();\n\n    // Subscriptions.\n    private _subscription = new Subscription();\n\n    ngOnInit() {\n        this.handleOverlayClicks();\n    }\n\n    ngOnDestroy() {\n        this._subscription?.unsubscribe();\n    }\n\n    async close() {\n        this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n        const timer$ = timer(this._config?.animationMs ?? 240);\n        return firstValueFrom(timer$);\n    }\n\n    private handleOverlayClicks() {\n        const element = this._elementRef.nativeElement ?? null;\n        const elementMovePx = 20;\n        const subscription = fromEvent<PointerEvent>(this._document, 'pointerdown').pipe(\n            filter(event => event?.target === element),\n            switchMap(pointerDownEvent => {\n                const startX = pointerDownEvent.clientX;\n                const startY = pointerDownEvent.clientY;\n\n                return fromEvent<PointerEvent>(this._document, 'pointerup').pipe(\n                    filter(pointerUpEvent => pointerUpEvent?.target === element && this.getMoveDistance(pointerUpEvent, startX, startY) <= elementMovePx),\n                    takeUntil(\n                        fromEvent<PointerEvent>(this._document, 'pointermove').pipe(\n                            filter(pointerMoveEvent => this.getMoveDistance(pointerMoveEvent, startX, startY) > elementMovePx)\n                        )\n                    )\n                );\n            })\n        ).subscribe(() => {\n            if (this.closeRequestedDisabled) {\n                return;\n            }\n            this.closeRequested.emit();\n        });\n        this._subscription.add(subscription);\n    }\n\n    private getMoveDistance(event: PointerEvent, initialX: number, initialY: number) {\n        return Math.sqrt(\n            Math.pow(event.clientX - initialX, 2) +\n            Math.pow(event.clientY - initialY, 2)\n        );\n    }\n\n}\n","<ng-content select=\"[bb-dialog-modal]\"></ng-content>\n","import {BbDialogModal} from './dialog-modal/dialog-modal.component';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DialogRegistry {\n\n    private _items: string[] = [];\n\n    add(id: string) {\n        this._items.push(id);\n    }\n\n    remove(id: string) {\n        this._items = this._items.filter(item => item !== id);\n    }\n\n    isActive(modal: BbDialogModal) {\n        return this._items?.[this._items?.length - 1] === modal?.id;\n    }\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, inject, OnInit, Renderer2, ViewEncapsulation, DOCUMENT, input} from '@angular/core';\nimport {DialogRegistry} from '../dialog-registry.service';\n\nlet nextUniqueId = 0;\n\n@Component({\n    selector: '[bb-dialog-modal]',\n    templateUrl: './dialog-modal.component.html',\n    styleUrls: ['./dialog-modal.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'bb-dialog-modal',\n        '[class.without-body-padding]': 'withoutBodyPadding()',\n        '[class.fullscreen]': 'appearance() === \\'fullscreen\\'',\n        '[class.bottom-sheet]': 'appearance() === \\'bottom-sheet\\'',\n        '[style.max-width]': 'appearance() === \\'modal\\' ? maxWidth() : null',\n        'role': 'dialog'\n    }\n})\nexport class BbDialogModal implements OnInit {\n\n    // Dependencies.\n    private readonly _renderer: Renderer2 = inject(Renderer2);\n    private readonly _registry: DialogRegistry = inject(DialogRegistry);\n    private readonly _document?: Document = inject(DOCUMENT, {optional: true});\n\n    // Readonly data.\n    readonly id: string = `bb-dialog-${nextUniqueId++}`;\n\n    // Inputs.\n    readonly appearance = input<'modal' | 'fullscreen' | 'bottom-sheet'>('modal');\n    readonly withoutBodyPadding = input(false, {transform: booleanAttribute});\n    readonly maxWidth = input<string>('30rem');\n\n    ngOnInit() {\n        this._registry.add(this.id);\n        this.allowGlobalOverflow(false);\n    }\n\n    ngOnDestroy() {\n        this._registry.remove(this.id);\n        this.allowGlobalOverflow(true);\n    }\n\n    private allowGlobalOverflow(allow: boolean) {\n        const element = this._document?.body ?? null;\n        if (!element) {\n            return;\n        }\n\n        allow\n            ? this._renderer.removeStyle(element, 'overflow')\n            : this._renderer.setStyle(element, 'overflow', 'hidden');\n    }\n\n}\n","<ng-content select=\"[bb-dialog-header]\"></ng-content>\n\n<div class=\"bb-dialog-modal-body\">\n    <ng-content></ng-content>\n</div>\n\n<ng-content select=\"[bb-dialog-actions]\"></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, HostListener, inject, Input, Output, ViewEncapsulation} from '@angular/core';\nimport {BbDialogModal} from '../dialog-modal/dialog-modal.component';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {DialogRegistry} from '../dialog-registry.service';\nimport {BbIcon} from '@bravobit/bb-foundation/elements';\n\n@Component({\n    selector: '[bb-dialog-header]',\n    templateUrl: './dialog-header.component.html',\n    styleUrls: ['./dialog-header.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {'class': 'bb-dialog-header'},\n    imports: [BbIcon]\n})\nexport class BbDialogHeader {\n\n    // Dependencies.\n    private readonly _config: DialogConfig = inject(DIALOG_CONFIG);\n    private readonly _registry: DialogRegistry = inject(DialogRegistry);\n    private readonly _modal?: BbDialogModal = inject(BbDialogModal, {optional: true});\n\n    // Readonly data.\n    readonly closeIconName: string = this._config?.icons?.closeIcon ?? 'material:close';\n\n    // Inputs.\n    @Input() icon: string | null = null;\n    @Input({transform: booleanAttribute}) closeRequestedDisabled: boolean = false;\n\n    // Outputs.\n    @Output() closeRequested = new EventEmitter<void>();\n\n    @HostListener('window:keyup.escape')\n    onKeyEvent() {\n        if (this.closeRequestedDisabled || !this._registry.isActive(this._modal)) {\n            return;\n        }\n        this.closeRequested.emit();\n    }\n\n}\n","@if (icon; as iconSrc) {\n    <bb-icon [src]=\"iconSrc\"></bb-icon>\n}\n\n<ng-content></ng-content>\n\n@if (closeRequested?.observed && !closeRequestedDisabled) {\n    <button (click)=\"closeRequested?.emit()\"\n            type=\"button\"\n            class=\"bb-dialog-header-close\">\n        <bb-icon [src]=\"closeIconName\"></bb-icon>\n    </button>\n}\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {BbFormGroup} from '@bravobit/bb-foundation/elements';\n\n@Component({\n    selector: '[bb-dialog-actions]',\n    templateUrl: './dialog-actions.component.html',\n    styleUrls: ['./dialog-actions.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {'class': 'bb-dialog-actions'},\n    imports: [BbFormGroup]\n})\nexport class BbDialogActions {\n}\n","<bb-form-group class=\"end\">\n    <ng-content></ng-content>\n</bb-form-group>\n","import {Directive, inject, ViewContainerRef} from '@angular/core';\n\n@Directive({\n    selector: '[bbDialogInsertion]'\n})\nexport class BbDialogInsertion {\n\n    public readonly viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n\n}\n","import {ChangeDetectionStrategy, Component, ComponentRef, ElementRef, inject, Injector, OnDestroy, OnInit, Renderer2, Type, ViewChild, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {firstValueFrom, fromEvent, Subject, Subscription, takeUntil, timer} from 'rxjs';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {filter, switchMap, take} from 'rxjs/operators';\nimport {BbDialogInsertion} from '../dialog.insertion';\n\n@Component({\n    selector: 'bb-dialog-container',\n    templateUrl: './dialog-container.component.html',\n    styleUrls: ['./dialog-container.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {'class': 'bb-dialog-container'},\n    imports: [BbDialogInsertion]\n})\nexport class BbDialogContainer implements OnInit, OnDestroy {\n\n    // Dependencies.\n    private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n    private readonly _renderer: Renderer2 = inject(Renderer2);\n    private readonly _elementRef: ElementRef = inject(ElementRef);\n    private readonly _document: Document = inject(DOCUMENT);\n\n    // Views.\n    @ViewChild(BbDialogInsertion, {static: true}) insertion: BbDialogInsertion;\n\n    // Data.\n    componentRef: ComponentRef<any> | null = null;\n    childComponentType: Type<any> | null = null;\n    parentInjector: Injector | null = null;\n\n    // State.\n    private _overlayClicked$ = new Subject<void>();\n    onOverlayClicked = this._overlayClicked$.pipe(take(1));\n\n    // Subscriptions.\n    private _subscription = new Subscription();\n\n    ngOnInit() {\n        this.handleOverlayClicks();\n        this.loadChildComponent(this.childComponentType);\n    }\n\n    ngOnDestroy() {\n        this._subscription?.unsubscribe();\n    }\n\n    async close() {\n        this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n        const timer$ = timer(this._config?.animationMs ?? 240);\n        return firstValueFrom(timer$);\n    }\n\n    private loadChildComponent(componentType: Type<any>) {\n        const viewContainerRef = this.insertion.viewContainerRef;\n        viewContainerRef.clear();\n        this.componentRef = viewContainerRef.createComponent(componentType, {\n            injector: this.parentInjector ?? undefined\n        });\n    }\n\n    private handleOverlayClicks() {\n        const element = this._elementRef.nativeElement ?? null;\n        const elementMovePx = 20;\n        const subscription = fromEvent<PointerEvent>(this._document, 'pointerdown').pipe(\n            filter(event => event?.target === element),\n            switchMap(pointerDownEvent => {\n                const startX = pointerDownEvent.clientX;\n                const startY = pointerDownEvent.clientY;\n\n                return fromEvent<PointerEvent>(this._document, 'pointerup').pipe(\n                    filter(pointerUpEvent => pointerUpEvent?.target === element && this.getMoveDistance(pointerUpEvent, startX, startY) <= elementMovePx),\n                    takeUntil(\n                        fromEvent<PointerEvent>(this._document, 'pointermove').pipe(\n                            filter(pointerMoveEvent => this.getMoveDistance(pointerMoveEvent, startX, startY) > elementMovePx)\n                        )\n                    )\n                );\n            })\n        ).subscribe(() => {\n            this._overlayClicked$.next();\n        });\n        this._subscription.add(subscription);\n    }\n\n    private getMoveDistance(event: PointerEvent, initialX: number, initialY: number) {\n        return Math.sqrt(\n            Math.pow(event.clientX - initialX, 2) +\n            Math.pow(event.clientY - initialY, 2)\n        );\n    }\n\n}\n","<div class=\"bb-dialog-container-component\">\n    <ng-container bbDialogInsertion></ng-container>\n</div>\n","import {ChangeDetectionStrategy, Component, inject, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbFocusTrap, BbTemplate, BbFocus} from '@bravobit/bb-foundation/utils';\nimport {BbDialogHeader} from '../dialog-header/dialog-header.component';\nimport {BbDialogModal} from '../dialog-modal/dialog-modal.component';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbButton} from '@bravobit/bb-foundation/elements';\nimport {BbDialogConfig} from '../dialog.interfaces';\nimport {AsyncPipe, NgClass} from '@angular/common';\nimport {BbDialogRef} from '../dialog.ref';\nimport {BehaviorSubject} from 'rxjs';\n\nlet nextUniqueId = 0;\n\n@Component({\n    selector: 'bb-dialog-confirm',\n    templateUrl: './dialog-confirm.component.html',\n    styleUrls: ['./dialog-confirm.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {'class': 'bb-dialog-confirm'},\n    imports: [BbDialogModal, BbDialogHeader, BbFocusTrap, BbLocalize, BbTemplate, NgClass, BbButton, BbFocus, AsyncPipe]\n})\nexport class BbDialogConfirm {\n\n    // Dependencies.\n    private readonly _config: BbDialogConfig = inject(BbDialogConfig);\n    private readonly _dialogRef: BbDialogRef<boolean> = inject(BbDialogRef);\n\n    // Readonly data.\n    readonly dialogId: string = `bb-dialog-confirm-${nextUniqueId++}`;\n    readonly title: string | TemplateRef<any> = this._config?.data?.title ?? null;\n    readonly description: string | TemplateRef<any> = this._config?.data?.description ?? null;\n    readonly confirmButtonText: string = this._config?.data?.confirmButtonText ?? 'dialog.default_confirm_button';\n    readonly cancelButtonText: string = this._config?.data?.cancelButtonText ?? 'dialog.default_cancel_button';\n    readonly confirmButtonClass: string = this._config?.data?.confirmButtonClass ?? null;\n    readonly cancelButtonClass: string = this._config?.data?.cancelButtonClass ?? null;\n    readonly onConfirmed: () => Promise<any> = this._config?.data?.onConfirmed ?? null;\n    readonly icon: string = this._config?.data?.icon ?? 'material:notifications_active';\n    readonly width: string = this._config?.data?.width ?? '30rem';\n\n    // State.\n    loading$ = new BehaviorSubject(false);\n\n    async onClose(result: boolean) {\n        if (!result || (this.onConfirmed === null || this.onConfirmed === undefined)) {\n            return this._dialogRef.close(result);\n        }\n\n        return this.onConfirmedClose();\n    }\n\n    async onConfirmedClose() {\n        try {\n            this.loading$.next(true);\n            await this.onConfirmed();\n        } catch {\n            // Do nothing.\n        } finally {\n            this.loading$.next(false);\n            this._dialogRef.close(true);\n        }\n    }\n}\n","<div [attr.aria-labelledby]=\"dialogId\"\n     [maxWidth]=\"width\"\n     bb-dialog-modal\n     bbFocusTrap>\n    <header [icon]=\"icon\"\n            bb-dialog-header>\n        @if (title; as titleContent) {\n            <strong [id]=\"dialogId\">\n                <ng-template [bbTemplate]=\"titleContent\">\n                    {{ $any(titleContent) | bbLocalize:{optional: true} }}\n                </ng-template>\n            </strong>\n        }\n    </header>\n\n    @if (description; as descriptionContent) {\n        <p class=\"bb-dialog-confirm-description\">\n            <ng-template [bbTemplate]=\"descriptionContent\">\n                {{ $any(descriptionContent) | bbLocalize:{optional: true} }}\n            </ng-template>\n        </p>\n    }\n\n    <footer class=\"bb-dialog-confirm-footer\">\n        @if (cancelButtonText; as cancelButtonTextLabel) {\n            <button [ngClass]=\"cancelButtonClass ? cancelButtonClass : 'secondary full'\"\n                    [disabled]=\"loading$ | async\"\n                    (click)=\"onClose(false)\"\n                    bb-button\n                    type=\"button\">\n                {{ cancelButtonTextLabel | bbLocalize:{optional: true} }}\n            </button>\n        }\n        @if (confirmButtonText; as confirmButtonTextLabel) {\n            <button [ngClass]=\"confirmButtonClass ? confirmButtonClass : 'destructive full'\"\n                    [loading]=\"loading$ | async\"\n                    (click)=\"onClose(true)\"\n                    bb-button\n                    bbFocus\n                    type=\"button\">\n                {{ confirmButtonTextLabel | bbLocalize:{optional: true} }}\n            </button>\n        }\n    </footer>\n</div>\n","import {ApplicationRef, ComponentRef, createComponent, createEnvironmentInjector, EnvironmentInjector, inject, Injectable, TemplateRef, Type} from '@angular/core';\nimport {BbDialogConfig, DIALOG_CONFIG, DialogConfig, DialogConfirmOptions} from './dialog.interfaces';\nimport {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogRef} from './dialog.ref';\nimport {firstValueFrom} from 'rxjs';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class Dialog {\n\n    // Dependencies.\n    private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n    private readonly _applicationRef: ApplicationRef = inject(ApplicationRef);\n    private readonly _environmentInjector: EnvironmentInjector = inject(EnvironmentInjector);\n\n    open<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n        return this.createDialog<T>(componentType, config);\n    }\n\n    async confirm(title: string | TemplateRef<any>, description: string | TemplateRef<any>, options?: Partial<DialogConfirmOptions>) {\n        const icon = options?.confirmIconName ?? this._config?.icons?.confirmIcon ?? null;\n        const dialogRef = this.open<boolean>(BbDialogConfirm, {\n            data: {title, description, ...(options ?? {}), icon}\n        });\n        return await firstValueFrom(dialogRef.afterClosed);\n    }\n\n    private createDialog<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n        // Create a reference.\n        const dialogRef = new BbDialogRef<T>();\n        const environmentInjector = createEnvironmentInjector([\n            {provide: BbDialogConfig, useValue: config ?? {}},\n            {provide: BbDialogRef, useValue: dialogRef}\n        ], this._environmentInjector);\n        const dialogComponentRef = createComponent(BbDialogContainer, {environmentInjector});\n\n        // Attach the host view to the application.\n        this._applicationRef.attachView(dialogComponentRef.hostView);\n\n        try {\n            // Remove the current focus.\n            const activeElement = document.activeElement as HTMLElement;\n            activeElement.blur();\n\n            // Append the element to the DOM.\n            document.body.appendChild(dialogComponentRef.location.nativeElement);\n        } catch {\n            // Don't do anything, because it must've failed.\n        }\n\n        // Set the child component type on the component.\n        dialogComponentRef.instance.childComponentType = componentType;\n        dialogComponentRef.instance.parentInjector = config?.injector ?? null;\n        dialogComponentRef.instance.onOverlayClicked.subscribe(() => dialogRef.onOverlayClicked());\n\n        // Listen for close events.\n        dialogRef.afterClosed.subscribe(async () => {\n            await dialogComponentRef?.instance?.close();\n            return this.deleteDialog(dialogComponentRef);\n        });\n\n        // Return the reference.\n        return dialogRef;\n    }\n\n    private deleteDialog(dialogComponentRef: ComponentRef<BbDialogContainer>) {\n        // Only continue if the dialog component ref exists.\n        if (!dialogComponentRef) {\n            return;\n        }\n\n        // Detach the dialog.\n        this._applicationRef.detachView(dialogComponentRef.hostView);\n\n        // Destroy the dialog.\n        dialogComponentRef.destroy();\n        dialogComponentRef = null;\n    }\n\n}\n","import {Directive, EventEmitter, HostListener, inject, Input, Output, TemplateRef} from '@angular/core';\nimport {Dialog} from '../dialog.service';\n\n@Directive({\n    selector: '[bbConfirm]'\n})\nexport class BbConfirm {\n\n    // Dependencies.\n    private _dialog = inject(Dialog);\n\n    // Inputs.\n    @Input() bbConfirmTitle: string | TemplateRef<any> = 'dialog.default_title';\n    @Input() bbConfirmDescription: string | TemplateRef<any> = 'dialog.default_description';\n    @Input() bbConfirmIconName: string | null = null;\n    @Input() bbConfirmButtonText: string | null = null;\n    @Input() bbConfirmWidth: string | null = null;\n    @Input() bbCancelButtonText: string | null = null;\n\n    // Outputs.\n    @Output('bbConfirm') confirm = new EventEmitter<MouseEvent>();\n\n    @HostListener('click', ['$event'])\n    async onClick(event: MouseEvent) {\n        const confirmed = await this._dialog.confirm(this.bbConfirmTitle, this.bbConfirmDescription, {\n            confirmButtonText: this.bbConfirmButtonText,\n            cancelButtonText: this.bbCancelButtonText,\n            confirmIconName: this.bbConfirmIconName,\n            width: this.bbConfirmWidth\n        });\n        if (!confirmed) {\n            return;\n        }\n\n        this.confirm.emit(event);\n    }\n\n}\n","import {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {DIALOG_CONFIG, DialogConfig} from './dialog.interfaces';\n\nexport function provideDialogConfig(config?: DialogConfig): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        {provide: DIALOG_CONFIG, useValue: config ?? {}}\n    ]);\n}\n","import {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogActions} from './dialog-actions/dialog-actions.component';\nimport {BbDialogOverlay} from './dialog-overlay/dialog-overlay.component';\nimport {BbDialogHeader} from './dialog-header/dialog-header.component';\nimport {BbDialogModal} from './dialog-modal/dialog-modal.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbConfirm} from './directives/confirm.directive';\nimport {BbDialogInsertion} from './dialog.insertion';\nimport {provideDialogConfig} from './dialog.config';\nimport {DialogConfig} from './dialog.interfaces';\n\n@NgModule({\n    imports: [\n        BbDialogContainer,\n        BbDialogOverlay,\n        BbDialogModal,\n        BbDialogHeader,\n        BbDialogActions,\n        BbDialogConfirm,\n        BbDialogInsertion,\n        BbConfirm\n    ],\n    exports: [\n        BbDialogOverlay,\n        BbDialogModal,\n        BbDialogHeader,\n        BbDialogActions,\n        BbConfirm\n    ]\n})\nexport class DialogModule {\n\n    static forRoot(config?: DialogConfig): ModuleWithProviders<DialogModule> {\n        return {\n            ngModule: DialogModule,\n            providers: [\n                provideDialogConfig(config)\n            ]\n        };\n    }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["nextUniqueId"],"mappings":"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"}