{"version":3,"file":"taiga-ui-cdk-observables.mjs","sources":["../../../projects/cdk/observables/close-watcher.ts","../../../projects/cdk/observables/control-value.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/drag-and-drop-from.ts","../../../projects/cdk/observables/events.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/take-until-destroyed.ts","../../../projects/cdk/observables/untracked-scheduler.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import {Observable} from 'rxjs';\n\ninterface CloseWatcher {\n    destroy(): void;\n    onclose?(event: Event): void;\n    oncancel?(event: Event): void;\n}\n\nexport function tuiCloseWatcher(): Observable<void> {\n    return new Observable((subscriber) => {\n        let watcher!: CloseWatcher;\n\n        const setup = (): void => {\n            watcher = getWatcher();\n            watcher.onclose = () => setup();\n\n            watcher.oncancel = (event) => {\n                event.preventDefault();\n                subscriber.next();\n            };\n        };\n\n        setup();\n\n        return () => watcher.destroy();\n    });\n}\n\nfunction getWatcher(): CloseWatcher {\n    try {\n        // @ts-ignore\n        return new CloseWatcher();\n    } catch {\n        return {destroy: () => {}};\n    }\n}\n","import {type AbstractControl, type AbstractControlDirective} from '@angular/forms';\nimport {Observable, startWith} from 'rxjs';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiControlValue<T>(\n    control?: AbstractControl | AbstractControlDirective | null,\n): Observable<T> {\n    return new Observable((subscriber) =>\n        control?.valueChanges?.pipe(startWith(control.value)).subscribe(subscriber),\n    );\n}\n","import {fromEvent, type Observable} from 'rxjs';\n\nexport interface TuiTypedEventTarget<E> {\n    addEventListener(\n        type: string,\n        listener: ((evt: E) => void) | null,\n        options?: AddEventListenerOptions | boolean,\n    ): void;\n    removeEventListener(\n        type: string,\n        listener?: ((evt: E) => void) | null,\n        options?: EventListenerOptions | boolean,\n    ): void;\n}\n\n/**\n * Wrapper around {@link Event} to add typings to target and currentTarget.\n */\nexport type TuiEventWith<G extends Event, T extends TuiTypedEventTarget<G>> = G & {\n    readonly currentTarget: T;\n};\n\nexport function tuiTypedFromEvent<E extends keyof WindowEventMap>(\n    target: Window,\n    event: E,\n    options?: AddEventListenerOptions,\n): Observable<TuiEventWith<WindowEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<E extends keyof DocumentEventMap>(\n    target: Document,\n    event: E,\n    options?: AddEventListenerOptions,\n): Observable<TuiEventWith<DocumentEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n    target: T,\n    event: E,\n    options?: AddEventListenerOptions,\n): Observable<TuiEventWith<HTMLElementEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<\n    E extends Event,\n    T extends TuiTypedEventTarget<TuiEventWith<E, T>>,\n>(\n    target: T,\n    event: string,\n    options?: AddEventListenerOptions,\n): Observable<TuiEventWith<E, T>>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n    target: TuiTypedEventTarget<E>,\n    event: string,\n    options?: AddEventListenerOptions,\n): Observable<E>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n    target: TuiTypedEventTarget<E>,\n    event: string,\n    options: AddEventListenerOptions = {},\n): Observable<E> {\n    /**\n     * @note:\n     * in RxJS 7 type signature `TuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\n     */\n    return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n    concat,\n    endWith,\n    map,\n    merge,\n    type Observable,\n    repeat,\n    take,\n    takeWhile,\n} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport type TuiDragStage = 'continues' | 'end' | 'start';\n\nexport class TuiDragState {\n    constructor(\n        public readonly stage: TuiDragStage,\n        public readonly event: MouseEvent,\n    ) {}\n}\n\nexport function tuiDragAndDropFrom(element: Element): Observable<TuiDragState> {\n    const {ownerDocument} = element;\n\n    return concat(\n        tuiTypedFromEvent(element, 'mousedown').pipe(\n            take(1),\n            map((event) => new TuiDragState('start', event)),\n        ),\n        merge(\n            tuiTypedFromEvent(ownerDocument, 'mousemove').pipe(\n                map((event) => new TuiDragState('continues', event)),\n            ),\n            merge(\n                tuiTypedFromEvent(ownerDocument, 'mouseup'),\n                tuiTypedFromEvent(ownerDocument, 'dragend'),\n            ).pipe(\n                take(1),\n                map((event) => new TuiDragState('end', event)),\n                endWith(null),\n            ),\n        ).pipe(takeWhile(tuiIsPresent)),\n    ).pipe(repeat());\n}\n","import {type MonoTypeOperatorFunction, tap} from 'rxjs';\n\nexport function tuiPreventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n    return tap((event) => event.preventDefault());\n}\n\nexport function tuiStopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n    return tap((event) => event.stopPropagation());\n}\n","import {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {EMPTY, type Observable, type OperatorFunction, pipe, switchMap} from 'rxjs';\n\nexport function tuiIfMap<T, G>(\n    project: (value: T) => Observable<G>,\n    predicate: TuiBooleanHandler<T> = Boolean,\n): OperatorFunction<T, G> {\n    return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\n}\n","import {type Observable} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\n/**\n * Normalizes scroll event in case element is `html` (document.documentElement)\n */\nexport function tuiScrollFrom(element: Element): Observable<Event> {\n    return tuiTypedFromEvent(\n        element === element.ownerDocument.documentElement\n            ? element.ownerDocument\n            : element,\n        'scroll',\n    );\n}\n","import {type DestroyRef} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n    catchError,\n    defaultIfEmpty,\n    EMPTY,\n    type MonoTypeOperatorFunction,\n    NEVER,\n    pipe,\n    takeUntil,\n} from 'rxjs';\n\n// NOTE: takeUntilDestroyed and DestroyRef can cause error:\n// NG0911: View has already been destroyed\n// https://github.com/angular/angular/issues/54527\nexport function tuiTakeUntilDestroyed<T>(\n    destroyRef?: DestroyRef,\n): MonoTypeOperatorFunction<T> {\n    return pipe(\n        takeUntil(\n            NEVER.pipe(\n                takeUntilDestroyed(destroyRef),\n                catchError(() => EMPTY),\n                defaultIfEmpty(null),\n            ),\n        ),\n    );\n}\n","import {untracked} from '@angular/core';\nimport {\n    queueScheduler,\n    type SchedulerAction,\n    type SchedulerLike,\n    type Subscription,\n} from 'rxjs';\n\nexport const tuiUntrackedScheduler: SchedulerLike = {\n    now: queueScheduler.now.bind(queueScheduler),\n\n    schedule<T>(\n        work: (this: SchedulerAction<T>, state?: T) => void,\n        delay?: number,\n        state?: T,\n    ): Subscription {\n        return queueScheduler.schedule(\n            function (this: SchedulerAction<T>, s?: T) {\n                return untracked(() => work.call(this, s));\n            },\n            delay,\n            state,\n        );\n    },\n};\n","import {ChangeDetectorRef, inject} from '@angular/core';\nimport {type MonoTypeOperatorFunction, tap} from 'rxjs';\n\nexport function tuiWatch<T>(\n    cdr = inject(ChangeDetectorRef),\n): MonoTypeOperatorFunction<T> {\n    return tap(() => cdr.markForCheck());\n}\n","import {inject, NgZone} from '@angular/core';\nimport {\n    asyncScheduler,\n    type MonoTypeOperatorFunction,\n    Observable,\n    pipe,\n    type SchedulerLike,\n    type Subscription,\n} from 'rxjs';\n\nexport function tuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n    return (source) =>\n        new Observable((subscriber) =>\n            source.subscribe({\n                next: (value) => zone.run(() => subscriber.next(value)),\n                error: (error: unknown) => zone.run(() => subscriber.error(error)),\n                complete: () => zone.run(() => subscriber.complete()),\n            }),\n        );\n}\n\nexport function tuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n    return (source) =>\n        new Observable((subscriber) =>\n            zone.runOutsideAngular(() => source.subscribe(subscriber)),\n        );\n}\n\nexport function tuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n    return pipe(tuiZonefree(zone), tuiZonefull(zone));\n}\n\nclass TuiZoneScheduler implements SchedulerLike {\n    constructor(\n        private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\n        private readonly scheduler: SchedulerLike = asyncScheduler,\n    ) {}\n\n    public now(): number {\n        return this.scheduler.now();\n    }\n\n    public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\n        return this.zoneConditionFn(() => this.scheduler.schedule(...args));\n    }\n}\n\nexport function tuiZonefreeScheduler(\n    zone = inject(NgZone),\n    scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n    return new TuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\n}\n\nexport function tuiZonefullScheduler(\n    zone = inject(NgZone),\n    scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n    return new TuiZoneScheduler(zone.run.bind(zone), scheduler);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;SAQgB,eAAe,GAAA;AAC3B,IAAA,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAI;AACjC,QAAA,IAAI,OAAsB;QAE1B,MAAM,KAAK,GAAG,MAAW;YACrB,OAAO,GAAG,UAAU,EAAE;YACtB,OAAO,CAAC,OAAO,GAAG,MAAM,KAAK,EAAE;AAE/B,YAAA,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAI;gBACzB,KAAK,CAAC,cAAc,EAAE;gBACtB,UAAU,CAAC,IAAI,EAAE;AACrB,YAAA,CAAC;AACL,QAAA,CAAC;AAED,QAAA,KAAK,EAAE;AAEP,QAAA,OAAO,MAAM,OAAO,CAAC,OAAO,EAAE;AAClC,IAAA,CAAC,CAAC;AACN;AAEA,SAAS,UAAU,GAAA;AACf,IAAA,IAAI;;QAEA,OAAO,IAAI,YAAY,EAAE;IAC7B;AAAE,IAAA,MAAM;QACJ,OAAO,EAAC,OAAO,EAAE,MAAK,EAAE,CAAC,EAAC;IAC9B;AACJ;;AChCA;;AAEG;AACG,SAAU,eAAe,CAC3B,OAA2D,EAAA;IAE3D,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAC7B,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAC9E;AACL;;AC2CM,SAAU,iBAAiB,CAC7B,MAA8B,EAC9B,KAAa,EACb,UAAmC,EAAE,EAAA;AAErC;;;AAGG;IACH,OAAO,SAAS,CAAI,MAAa,EAAE,KAAK,EAAE,OAAO,CAA6B;AAClF;;MCjDa,YAAY,CAAA;IACrB,WAAA,CACoB,KAAmB,EACnB,KAAiB,EAAA;QADjB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,KAAK,GAAL,KAAK;IACtB;AACN;AAEK,SAAU,kBAAkB,CAAC,OAAgB,EAAA;AAC/C,IAAA,MAAM,EAAC,aAAa,EAAC,GAAG,OAAO;IAE/B,OAAO,MAAM,CACT,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CACxC,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CACnD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CACvD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,EAC3C,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAC9C,CAAC,IAAI,CACF,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAC9C,OAAO,CAAC,IAAI,CAAC,CAChB,CACJ,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAClC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB;;SC3CgB,iBAAiB,GAAA;AAC7B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC;AACjD;SAEgB,kBAAkB,GAAA;AAC9B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC;AAClD;;SCLgB,QAAQ,CACpB,OAAoC,EACpC,YAAkC,OAAO,EAAA;AAEzC,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClF;;ACJA;;AAEG;AACG,SAAU,aAAa,CAAC,OAAgB,EAAA;IAC1C,OAAO,iBAAiB,CACpB,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC;UAC5B,OAAO,CAAC;AACV,UAAE,OAAO,EACb,QAAQ,CACX;AACL;;ACFA;AACA;AACA;AACM,SAAU,qBAAqB,CACjC,UAAuB,EAAA;AAEvB,IAAA,OAAO,IAAI,CACP,SAAS,CACL,KAAK,CAAC,IAAI,CACN,kBAAkB,CAAC,UAAU,CAAC,EAC9B,UAAU,CAAC,MAAM,KAAK,CAAC,EACvB,cAAc,CAAC,IAAI,CAAC,CACvB,CACJ,CACJ;AACL;;ACnBO,MAAM,qBAAqB,GAAkB;IAChD,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAE5C,IAAA,QAAQ,CACJ,IAAmD,EACnD,KAAc,EACd,KAAS,EAAA;AAET,QAAA,OAAO,cAAc,CAAC,QAAQ,CAC1B,UAAoC,CAAK,EAAA;AACrC,YAAA,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9C,QAAA,CAAC,EACD,KAAK,EACL,KAAK,CACR;IACL,CAAC;;;ACpBC,SAAU,QAAQ,CACpB,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,EAAA;IAE/B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;AACxC;;ACGM,SAAU,WAAW,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AAChD,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,MAAM,CAAC,SAAS,CAAC;AACb,QAAA,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,QAAA,KAAK,EAAE,CAAC,KAAc,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClE,QAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxD,KAAA,CAAC,CACL;AACT;AAEM,SAAU,WAAW,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AAChD,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC7D;AACT;AAEM,SAAU,gBAAgB,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AACrD,IAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AACrD;AAEA,MAAM,gBAAgB,CAAA;IAClB,WAAA,CACqB,eAAwD,EACxD,SAAA,GAA2B,cAAc,EAAA;QADzC,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,SAAS,GAAT,SAAS;IAC3B;IAEI,GAAG,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;IAC/B;IAEO,QAAQ,CAAC,GAAG,IAA2C,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;IACvE;AACH;AAEK,SAAU,oBAAoB,CAChC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EACrB,SAAA,GAA2B,cAAc,EAAA;AAEzC,IAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;AAC7E;AAEM,SAAU,oBAAoB,CAChC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EACrB,SAAA,GAA2B,cAAc,EAAA;AAEzC,IAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;AAC/D;;AC3DA;;AAEG;;;;"}