{"version":3,"file":"taiga-ui-legacy-components-dialog.mjs","sources":["../../../projects/legacy/components/dialog/dialog.component.ts","../../../projects/legacy/components/dialog/dialog.template.html","../../../projects/legacy/components/dialog/dialog.tokens.ts","../../../projects/legacy/components/dialog/dialog.service.ts","../../../projects/legacy/components/dialog/dialog.directive.ts","../../../projects/legacy/components/dialog/dialog.factory.ts","../../../projects/legacy/components/dialog/taiga-ui-legacy-components-dialog.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_TRUE_HANDLER} 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 {TUI_DIALOGS_CLOSE, TuiDialogCloseService} from '@taiga-ui/core/portals/dialog';\nimport {TUI_BREAKPOINT, TUI_CLOSE_WORD, TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {\n    injectContext,\n    type PolymorpheusContent,\n    PolymorpheusOutlet,\n} 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, type TuiDialogSize} from './dialog.interfaces';\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-legacy',\n    imports: [PolymorpheusOutlet, TuiAutoFocus, TuiButton],\n    templateUrl: './dialog.template.html',\n    styleUrl: './dialog.style.less',\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        '[attr.data-appearance]': 'context.appearance',\n        '[attr.data-size]': 'size',\n        '[class._centered]': 'header',\n        '[style.--tui-from]': 'from()',\n    },\n})\nexport class TuiDialogComponent<O, I> {\n    protected readonly close$ = new Subject<void>();\n    protected readonly context = injectContext<TuiDialogContext<I, O>>();\n    protected readonly closeWord = inject(TUI_CLOSE_WORD);\n    protected readonly icons = inject(TUI_COMMON_ICONS);\n    protected readonly breakpoint = inject(TUI_BREAKPOINT);\n\n    protected readonly from = computed(() =>\n        this.size === 'fullscreen' || this.size === 'page' || this.isMobile()\n            ? 'translateY(100vh)'\n            : 'translateY(2.5rem)',\n    );\n\n    protected readonly isMobile = computed(() => this.breakpoint() === 'mobile');\n\n    constructor() {\n        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                this.close();\n            });\n    }\n\n    protected get size(): TuiDialogSize {\n        return this.context.size;\n    }\n\n    protected get header(): PolymorpheusContent<TuiDialogContext<I, O>> {\n        return this.context.header;\n    }\n\n    private close(): void {\n        if (this.context.required) {\n            this.context.$implicit.error(REQUIRED_ERROR);\n        } else {\n            this.context.$implicit.complete();\n        }\n    }\n}\n","@if (header) {\n    <header class=\"t-header\">\n        <ng-container *polymorpheusOutlet=\"header as text; context: context\">\n            {{ text }}\n        </ng-container>\n    </header>\n}\n<div class=\"t-content\">\n    <h2\n        class=\"t-heading\"\n        [class.t-heading_closable]=\"context.closable && !header\"\n        [id]=\"context.id\"\n        [textContent]=\"context.label\"\n    ></h2>\n    <section>\n        <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n            <div [innerHTML]=\"text\"></div>\n            @if (context.closable || context.dismissible) {\n                <div class=\"t-buttons\">\n                    <button\n                        size=\"m\"\n                        tuiAutoFocus\n                        tuiButton\n                        type=\"button\"\n                        (click)=\"context.$implicit.complete()\"\n                    >\n                        {{ context.data?.button || 'OK' }}\n                    </button>\n                </div>\n            }\n        </ng-container>\n    </section>\n</div>\n<div class=\"t-filler\"></div>\n\n<!-- Close button is insensitive to `context.closable === Observable<false>` by design -->\n@if (context.closable) {\n    <button\n        automation-id=\"tui-dialog__close\"\n        tuiIconButton\n        type=\"button\"\n        class=\"t-close\"\n        [appearance]=\"isMobile() ? 'icon' : 'neutral'\"\n        [iconStart]=\"icons.close\"\n        [size]=\"isMobile() ? 'xs' : 's'\"\n        [style.border-radius.%]=\"100\"\n        (click)=\"close$.next()\"\n        (mousedown.prevent.zoneless)=\"(0)\"\n    >\n        {{ closeWord() }}\n    </button>\n}\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nimport {type TuiDialogOptions} from './dialog.interfaces';\n\nexport const TUI_DIALOG_DEFAULT_OPTIONS: TuiDialogOptions<void> = {\n    appearance: '',\n    size: 'm',\n    required: false,\n    closable: true,\n    dismissible: true,\n    label: '',\n    header: '',\n    data: undefined,\n};\n\n/**\n * Default parameters for dialog component\n */\nexport const [TUI_DIALOG_OPTIONS, tuiDialogOptionsProvider] = tuiCreateOptions(\n    TUI_DIALOG_DEFAULT_OPTIONS,\n);\n","import {inject, Injectable} from '@angular/core';\nimport {TuiModalService} from '@taiga-ui/core/portals/modal';\n\nimport {TuiDialogComponent} from './dialog.component';\nimport {type TuiDialogOptions} from './dialog.interfaces';\nimport {TUI_DIALOG_OPTIONS} from './dialog.tokens';\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.interfaces';\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.interfaces';\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":";;;;;;;;;;;;;;;;;AA4BA,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,+BAA+B,CAAC;AAEjE,SAAS,YAAY,CAAI,aAAgC,EAAA;AACrD,IAAA,OAAO,YAAY,CAAC,aAAa,CAAC,GAAG,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC;AAC1E;MAmBa,kBAAkB,CAAA;AAe3B,IAAA,WAAA,GAAA;AAdmB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAQ;QAC5B,IAAA,CAAA,OAAO,GAAG,aAAa,EAA0B;AACjD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AAClC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC;QAEnC,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ;AAC/D,cAAE;cACA,oBAAoB,CAC7B;AAEkB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,QAAQ,CAAC;AAGxE,QAAA,KAAK,CACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EACtE,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAC9B,UAAU,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE,EACD,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;aAEpD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,kBAAkB,EAAE;aAC1C,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,KAAK,EAAE;AAChB,QAAA,CAAC,CAAC;IACV;AAEA,IAAA,IAAc,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;IAC5B;AAEA,IAAA,IAAc,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;IAC9B;IAEQ,KAAK,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC;QAChD;aAAO;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;QACrC;IACJ;+GA3CS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,SAAA,EAThB,CAAC,qBAAqB,CAAC,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CtC,krDAoDA,EAAA,MAAA,EAAA,CAAA,0yFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBc,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA,CAAA;;4FAe5C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;+BACI,mBAAmB,EAAA,OAAA,EACpB,CAAC,kBAAkB,EAAE,YAAY,EAAE,SAAS,CAAC,EAAA,eAAA,EAKrC,uBAAuB,CAAC,OAAO,EAAA,SAAA,EACrC,CAAC,qBAAqB,CAAC,kBAClB,CAAC,WAAW,CAAC,EAAA,IAAA,EACvB;AACF,wBAAA,wBAAwB,EAAE,oBAAoB;AAC9C,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,mBAAmB,EAAE,QAAQ;AAC7B,wBAAA,oBAAoB,EAAE,QAAQ;AACjC,qBAAA,EAAA,QAAA,EAAA,krDAAA,EAAA,MAAA,EAAA,CAAA,0yFAAA,CAAA,EAAA;;;AE7CE,MAAM,0BAA0B,GAA2B;AAC9D,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,IAAI,EAAE,SAAS;;AAGnB;;AAEG;AACI,MAAM,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,GAAG,gBAAgB,CAC1E,0BAA0B;;ACXxB,MAAO,gBAAiB,SAAQ,eAAsC,CAAA;AAD5E,IAAA,WAAA,GAAA;;AAEuB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACpC,IAAA,CAAA,OAAO,GAAG,kBAAkB;AAClD,IAAA;+GAHY,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADJ,MAAM,EAAA,CAAA,CAAA;;4FAClB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCUnB,SAAS,CAAA;AAXtB,IAAA,WAAA,GAAA;AAYoB,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAA+B,EAAE,CAAC;AAC7E,IAAA;+GAFY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,0OATP,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FASjC,SAAS,EAAA,UAAA,EAAA,CAAA;kBAXrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAC1C,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,kBAAkB;AAC7B,4BAAA,MAAM,EAAE,CAAC,2BAA2B,EAAE,iBAAiB,CAAC;4BACxD,OAAO,EAAE,CAAC,6BAA6B,CAAC;AAC3C,yBAAA;AACJ,qBAAA;AACJ,iBAAA;;;AC+BK,SAAU,SAAS,CAMrB,SAA0C,EAC1C,EAAC,QAAQ,EAAE,GAAG,OAAO,EAAA,GAAyB,EAAE,EAAA;IAEhD,IAAI,CAAC,QAAQ,EAAE;QACX,wBAAwB,CAAC,SAAS,CAAC;AACnC,QAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B;IAEA,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAEpD,IAAA,OAAO,CAAC,IAAI,KACR,aAAa,CAAC,IAAI,CACd,IAAI,qBAAqB,CAAC,SAAwB,EAAE,QAAQ,CAAC,EAC7D;AACI,QAAA,GAAG,OAAO;QACV,IAAI;AACP,KAAA,CACJ;AACT;;ACvEA;;AAEG;;;;"}