{"version":3,"file":"ng-doc-ui-kit-observables.mjs","sources":["../../../../libs/ui-kit/observables/from-subscribe.ts","../../../../libs/ui-kit/observables/observable-state.ts","../../../../libs/ui-kit/observables/zone.ts","../../../../libs/ui-kit/observables/ng-doc-ui-kit-observables.ts"],"sourcesContent":["import {NgDocSubscribable} from '@ng-doc/ui-kit/types';\nimport {Observable, Subscriber, Unsubscribable} from 'rxjs';\n\n/**\n * @param subscribable\n */\nexport function fromSubscribe<T>(subscribable: NgDocSubscribable<T>): Observable<T> {\n\treturn new Observable<T>((observer: Subscriber<T>) => {\n\t\tconst subscription: Unsubscribable = subscribable.subscribe(\n\t\t\t(next: T) => observer.next(next),\n\t\t\t(error: unknown) => observer.error(error),\n\t\t\t() => observer.complete(),\n\t\t);\n\t\treturn () => subscription.unsubscribe();\n\t});\n}\n","import type { Observable, OperatorFunction } from 'rxjs';\nimport { of } from 'rxjs';\nimport { catchError, map, startWith, switchMap, tap } from 'rxjs/operators';\n\nexport type StatedObservable<T, E = Error> = Observable<ObservableState<T, E>>;\n\nexport interface ObservableState<T, E = Error> {\n\tresult: T | null;\n\terror: E | null;\n\tpending: boolean;\n}\n\n/**\n *\n * @param retry\n */\nexport function observableState<T, E = Error>(\n\tretry?: Observable<unknown>,\n): OperatorFunction<T, ObservableState<T, E>> {\n\treturn (source: Observable<T>) => {\n\t\tlet state: ObservableState<T, E> = {\n\t\t\tresult: null,\n\t\t\terror: null,\n\t\t\tpending: false,\n\t\t};\n\n\t\treturn (retry ? retry.pipe(startWith(null)) : of(null)).pipe(\n\t\t\tswitchMap(() =>\n\t\t\t\tsource.pipe(\n\t\t\t\t\t// Map result of observable\n\t\t\t\t\tmap((result: T) => ({ result, pending: false })),\n\t\t\t\t\t// Map error of observable\n\t\t\t\t\tcatchError((error: E) => of({ result: null, error, pending: false })),\n\t\t\t\t\t// Start from pending state and clear error\n\t\t\t\t\tstartWith({ error: null, pending: true }),\n\t\t\t\t\t// Merge the current state with new state\n\t\t\t\t\ttap(\n\t\t\t\t\t\t(updatedState: Partial<ObservableState<T, E>>) =>\n\t\t\t\t\t\t\t(state = { ...state, ...updatedState }),\n\t\t\t\t\t),\n\t\t\t\t\tmap(() => state),\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t};\n}\n","import { inject, NgZone } from '@angular/core';\nimport {\n  MonoTypeOperatorFunction,\n  Observable,\n  Observer,\n  Operator,\n  pipe,\n  Subscriber,\n  TeardownLogic,\n} from 'rxjs';\n\nclass NgDocZoneDetachSourceOperator<T> implements Operator<T, T> {\n  constructor(private readonly ngZone: NgZone) {}\n\n  call(observer: Observer<T>, source: Observable<T>): TeardownLogic {\n    return this.ngZone.runOutsideAngular(() => source.subscribe(observer));\n  }\n}\n\n/**\n *\n * @param ngZone\n */\nfunction zoneDetachSource<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n  return (source: Observable<T>) => source.lift(new NgDocZoneDetachSourceOperator<T>(ngZone));\n}\n\n/**\n *\n * @param ngZone\n */\nfunction zoneDetach<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n  return (source: Observable<T>) =>\n    new Observable((subscriber: Subscriber<T>) =>\n      source.subscribe({\n        next: (value: T) => ngZone.runOutsideAngular(() => subscriber.next(value)),\n        error: (error: unknown) => ngZone.runOutsideAngular(() => subscriber.error(error)),\n        complete: () => ngZone.runOutsideAngular(() => subscriber.complete()),\n      }),\n    );\n}\n\n/**\n *\n * @param ngZone\n */\nexport function ngDocZoneAttach<T>(ngZone?: NgZone): MonoTypeOperatorFunction<T> {\n  ngZone = ngZone || inject(NgZone);\n\n  return (source: Observable<T>) =>\n    new Observable((subscriber: Subscriber<T>) =>\n      source.subscribe({\n        next: (value: T) => ngZone.run(() => subscriber.next(value)),\n        error: (error: unknown) => ngZone.run(() => subscriber.error(error)),\n        complete: () => ngZone.run(() => subscriber.complete()),\n      }),\n    );\n}\n\n/**\n *\n * @param ngZone\n */\nexport function ngDocZoneDetach<T>(ngZone?: NgZone): MonoTypeOperatorFunction<T> {\n  ngZone = ngZone || inject(NgZone);\n\n  return pipe(zoneDetach(ngZone), zoneDetachSource(ngZone));\n}\n\n/**\n *\n * @param ngZone\n */\nexport function ngDocZoneOptimize<T>(ngZone?: NgZone): MonoTypeOperatorFunction<T> {\n  ngZone = ngZone || inject(NgZone);\n\n  return pipe(zoneDetach(ngZone), zoneDetachSource(ngZone), ngDocZoneAttach(ngZone));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}