{"version":3,"file":"taiga-ui-core-portals-dialog.mjs","sources":["../../../projects/core/portals/dialog/dialog.providers.ts","../../../projects/core/portals/dialog/dialog.component.ts","../../../projects/core/portals/dialog/dialog.template.html","../../../projects/core/portals/dialog/dialog.options.ts","../../../projects/core/portals/dialog/dialog.service.ts","../../../projects/core/portals/dialog/dialog.directive.ts","../../../projects/core/portals/dialog/dialog.factory.ts","../../../projects/core/portals/dialog/taiga-ui-core-portals-dialog.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable, InjectionToken} from '@angular/core';\nimport {ActivationStart, Router} from '@angular/router';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiCloseWatcher, tuiTypedFromEvent, tuiZonefull} from '@taiga-ui/cdk/observables';\nimport {\n    tuiContainsOrAfter,\n    tuiGetActualTarget,\n    tuiInjectElement,\n    tuiIsElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetViewportWidth} from '@taiga-ui/core/utils/dom';\nimport {filter, merge, Observable, switchMap, take} from 'rxjs';\n\nexport const TUI_DIALOGS_CLOSE = new InjectionToken<Observable<unknown>>(\n    ngDevMode ? 'TUI_DIALOGS_CLOSE' : '',\n    {\n        factory: () =>\n            inject(Router).events.pipe(filter((e) => e instanceof ActivationStart)),\n    },\n);\n\n@Injectable()\nexport class TuiDialogCloseService extends Observable<unknown> {\n    private readonly win = inject(WA_WINDOW);\n    private readonly doc = inject(DOCUMENT);\n    private readonly el = tuiInjectElement();\n\n    private readonly esc$ = tuiTypedFromEvent(this.doc, 'keydown').pipe(\n        filter((event) => {\n            const target = tuiGetActualTarget(event);\n\n            return (\n                // @ts-ignore\n                typeof CloseWatcher === 'undefined' &&\n                event.key?.toLowerCase() === 'escape' &&\n                !event.defaultPrevented &&\n                (this.el.contains(target) || this.isOutside(target))\n            );\n        }),\n    );\n\n    private readonly mousedown$ = tuiTypedFromEvent(this.doc, 'mousedown').pipe(\n        filter(\n            (event) =>\n                // Scrollbars\n                tuiGetViewportWidth(this.win) - event.clientX > 17 &&\n                this.shouldClose(event),\n        ),\n        switchMap(() =>\n            tuiTypedFromEvent(this.doc, 'mouseup').pipe(\n                take(1),\n                filter((event) => this.shouldClose(event)),\n            ),\n        ),\n    );\n\n    // `tuiZonefull()` → `inject(NgZone)` → requires injection context.\n    // Field initializer runs inside it, subscription might not\n    // (e.g. `outputFromObservable`) → NG0203 if called there\n    private readonly watcher$ = tuiCloseWatcher().pipe(tuiZonefull());\n\n    constructor() {\n        super((subscriber) =>\n            merge(this.esc$, this.mousedown$, this.watcher$).subscribe(subscriber),\n        );\n    }\n\n    private isOutside(target: EventTarget): boolean {\n        return tuiIsElement(target) && !tuiContainsOrAfter(this.el, target);\n    }\n\n    private shouldClose(event: MouseEvent): boolean {\n        const target = tuiGetActualTarget(event);\n\n        return (\n            this.isOutside(target) || (target === this.el && this.isOutsideRect(event))\n        );\n    }\n\n    // Host hit with coordinates outside its box → click landed on pseudo-element overlay\n    private isOutsideRect({clientX, clientY}: MouseEvent): boolean {\n        const rect = this.el.getBoundingClientRect();\n\n        return (\n            clientX < rect.left ||\n            clientX > rect.right ||\n            clientY < rect.top ||\n            clientY > rect.bottom\n        );\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_TRUE_HANDLER, TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {TuiAutoFocus} from '@taiga-ui/cdk/directives/auto-focus';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TuiButtonX} from '@taiga-ui/core/directives/button-x';\nimport {TUI_CLOSE_WORD, TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {\n    exhaustMap,\n    filter,\n    isObservable,\n    map,\n    merge,\n    type Observable,\n    of,\n    Subject,\n    switchMap,\n    take,\n} from 'rxjs';\n\nimport {type TuiDialogContext} from './dialog.options';\nimport {TUI_DIALOGS_CLOSE, TuiDialogCloseService} from './dialog.providers';\n\nconst REQUIRED_ERROR = new Error('Required dialog was dismissed');\n\nfunction toObservable<T>(valueOrStream: Observable<T> | T): Observable<T> {\n    return isObservable(valueOrStream) ? valueOrStream : of(valueOrStream);\n}\n\n@Component({\n    selector: 'tui-dialog',\n    imports: [PolymorpheusOutlet, TuiAutoFocus, TuiButton, TuiButtonX, TuiTitle],\n    templateUrl: './dialog.template.html',\n    styles: `\n        [data-tui-version='${TUI_VERSION}'] {\n            @import './dialog.style.less';\n        }\n    `,\n    encapsulation: ViewEncapsulation.None,\n    // So we don't force OnPush on dialog content\n    // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n    changeDetection: ChangeDetectionStrategy.Default,\n    providers: [TuiDialogCloseService],\n    hostDirectives: [TuiAnimated],\n    host: {\n        'data-tui-version': TUI_VERSION,\n        '[attr.data-appearance]': 'context.appearance',\n        '[attr.data-size]': 'context.size',\n        '[class._closable]': 'context.closable',\n        '[class.tui-backdrop-hidden]': 'context.appearance.includes(\"fullscreen\")',\n    },\n})\nexport class TuiDialogComponent<O, I> {\n    protected readonly close$ = new Subject<void>();\n    protected readonly close = inject(TUI_CLOSE_WORD);\n    protected readonly icons = inject(TUI_COMMON_ICONS);\n    protected readonly context = injectContext<TuiDialogContext<I, O>>();\n\n    protected readonly primitive =\n        typeof this.context.content === 'function' ||\n        Object(this.context.content) !== this.context.content;\n\n    protected readonly sub = merge(\n        this.close$.pipe(switchMap(() => toObservable(this.context.closable))),\n        inject(TuiDialogCloseService).pipe(\n            exhaustMap(() => toObservable(this.context.dismissible).pipe(take(1))),\n        ),\n        inject(TUI_DIALOGS_CLOSE).pipe(map(TUI_TRUE_HANDLER)),\n    )\n        .pipe(filter(Boolean), takeUntilDestroyed())\n        .subscribe(() => {\n            if (this.context.required) {\n                this.context.$implicit.error(REQUIRED_ERROR);\n            } else {\n                this.context.$implicit.complete();\n            }\n        });\n}\n","@if (context.closable) {\n    <button\n        tabindex=\"0\"\n        tuiButtonX\n        [appearance]=\"context.appearance.includes('fullscreen') ? 'action' : 'neutral'\"\n        (click)=\"close$.next()\"\n    >\n        {{ close() }}\n    </button>\n}\n\n@if (!primitive && context.label) {\n    <header>\n        <hgroup tuiTitle>\n            <h2\n                [id]=\"context.id\"\n                [innerHTML]=\"context.label\"\n            ></h2>\n        </hgroup>\n    </header>\n}\n\n<ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n    <header>\n        <hgroup tuiTitle>\n            <h2\n                [id]=\"context.id\"\n                [innerHTML]=\"context.label\"\n            ></h2>\n            <p [innerHTML]=\"text\"></p>\n        </hgroup>\n    </header>\n    @if (context.closable || context.dismissible) {\n        <footer>\n            <button\n                size=\"m\"\n                tuiAutoFocus\n                tuiButton\n                type=\"button\"\n                (click)=\"context.$implicit.complete()\"\n            >\n                {{ context.data || 'OK' }}\n            </button>\n        </footer>\n    }\n</ng-container>\n","import {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\nimport {type Observable} from 'rxjs';\n\n/**\n * Options for a dialog\n *\n * appearance - data-appearance attribute of the dialog ('taiga' by default)\n * closable - show close button (true by default)\n * data - arbitrary data for dialog\n * dismissible - close dialog by Esc button or click on overlay (true by default)\n * label - string title for the dialog ('' by default)\n * required - dismissing or closing dialog by X button throws (false by default)\n * size - size of the dialog ('m' by default, null for content width)\n */\nexport interface TuiDialogOptions<I> {\n    readonly appearance: string;\n    readonly closable: Observable<boolean> | boolean;\n    readonly data: I extends void ? undefined : I;\n    readonly dismissible: Observable<boolean> | boolean;\n    readonly label: string;\n    readonly required: boolean;\n    readonly size: TuiSizeL | TuiSizeS | null;\n}\n\nexport type TuiDialogContext<O = void, I = undefined> = TuiPortalContext<\n    TuiDialogOptions<I>,\n    O\n>;\n\nexport const [TUI_DIALOG_OPTIONS, tuiDialogOptionsProvider] = tuiCreateOptions<\n    TuiDialogOptions<void>\n>({\n    appearance: 'taiga',\n    size: 'm',\n    required: false,\n    closable: true,\n    dismissible: true,\n    label: '',\n    data: undefined,\n});\n","import {inject, Injectable} from '@angular/core';\nimport {TuiModalService} from '@taiga-ui/core/portals/modal';\n\nimport {TuiDialogComponent} from './dialog.component';\nimport {TUI_DIALOG_OPTIONS, type TuiDialogOptions} from './dialog.options';\n\n@Injectable({providedIn: 'root'})\nexport class TuiDialogService extends TuiModalService<TuiDialogOptions<any>> {\n    protected readonly options = inject(TUI_DIALOG_OPTIONS);\n    protected readonly content = TuiDialogComponent;\n}\n","import {Directive, input} from '@angular/core';\nimport {tuiAsPortal, TuiPortalDirective} from '@taiga-ui/cdk/portals';\n\nimport {type TuiDialogOptions} from './dialog.options';\nimport {TuiDialogService} from './dialog.service';\n\n@Directive({\n    selector: 'ng-template[tuiDialog]',\n    providers: [tuiAsPortal(TuiDialogService)],\n    hostDirectives: [\n        {\n            directive: TuiPortalDirective,\n            inputs: ['options: tuiDialogOptions', 'open: tuiDialog'],\n            outputs: ['openChange: tuiDialogChange'],\n        },\n    ],\n})\nexport class TuiDialog<T> {\n    public readonly tuiDialogOptions = input<Partial<TuiDialogOptions<T>>>({});\n}\n","import {assertInInjectionContext, inject, INJECTOR, type Injector} from '@angular/core';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\nimport {type Observable} from 'rxjs';\n\nimport {type TuiDialogContext, type TuiDialogOptions} from './dialog.options';\nimport {TuiDialogService} from './dialog.service';\n\ntype SingleUnionOrNever<T, U = T> = [T] extends [never]\n    ? never\n    : T extends U\n      ? [U] extends [T]\n          ? T\n          : never\n      : never;\n\ntype ReplaceAny<T> = 0 extends T & 1 ? void : T;\n\ntype ContextKeys<T> = {\n    [K in keyof T]: ReplaceAny<T[K]> extends TuiDialogContext<any, any> | null\n        ? K\n        : never;\n}[keyof T];\n\ntype AssertNotMultipleContexts<T, K extends keyof T> = [K] extends [never]\n    ? new (...args: any[]) => T\n    : [SingleUnionOrNever<K>] extends [never]\n      ? 'Component has multiple context. Cannot determine the type...'\n      : new (...args: any[]) => T;\n\ntype ExtractDialogData<T, K extends keyof T = ContextKeys<T>> = [K] extends [never]\n    ? void\n    : [SingleUnionOrNever<K>] extends [never]\n      ? never\n      : T[K] extends TuiDialogContext<any, infer D> | null\n        ? D\n        : void;\n\ntype ExtractDialogResult<T, K extends keyof T = ContextKeys<T>> = [K] extends [never]\n    ? void\n    : [SingleUnionOrNever<K>] extends [never]\n      ? never\n      : T[K] extends TuiDialogContext<infer R, any> | null\n        ? R\n        : void;\n\ntype Options<T> = Omit<TuiDialogOptions<T>, 'data'> & {injector: Injector};\n\nexport function tuiDialog<\n    T,\n    K extends ContextKeys<T>,\n    D extends ExtractDialogData<T, K>,\n    R extends ExtractDialogResult<T, K>,\n>(\n    component: AssertNotMultipleContexts<T, K>,\n    {injector, ...options}: Partial<Options<D>> = {},\n): (data: D) => Observable<R> {\n    if (!injector) {\n        assertInInjectionContext(tuiDialog);\n        injector = inject(INJECTOR);\n    }\n\n    const dialogService = injector.get(TuiDialogService);\n\n    return (data) =>\n        dialogService.open(\n            new PolymorpheusComponent(component as new () => T, injector),\n            {\n                ...options,\n                data,\n            },\n        );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}