@ng-doc/ui-kit
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
1 lines • 7.28 kB
Source Map (JSON)
{"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 return new Observable<T>((observer: Subscriber<T>) => {\n const subscription: Unsubscribable = subscribable.subscribe(\n (next: T) => observer.next(next),\n (error: unknown) => observer.error(error),\n () => observer.complete(),\n );\n return () => subscription.unsubscribe();\n });\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":";;;;AAGA;;AAEG;AACG,SAAU,aAAa,CAAI,YAAkC,EAAA;AACjE,IAAA,OAAO,IAAI,UAAU,CAAI,CAAC,QAAuB,KAAI;AACnD,QAAA,MAAM,YAAY,GAAmB,YAAY,CAAC,SAAS,CACzD,CAAC,IAAO,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAChC,CAAC,KAAc,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EACzC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAC1B;AACD,QAAA,OAAO,MAAM,YAAY,CAAC,WAAW,EAAE;AACzC,IAAA,CAAC,CAAC;AACJ;;ACHA;;;AAGG;AACG,SAAU,eAAe,CAC9B,KAA2B,EAAA;IAE3B,OAAO,CAAC,MAAqB,KAAI;AAChC,QAAA,IAAI,KAAK,GAA0B;AAClC,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,OAAO,EAAE,KAAK;SACd;AAED,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAC3D,SAAS,CAAC,MACT,MAAM,CAAC,IAAI;;AAEV,QAAA,GAAG,CAAC,CAAC,MAAS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;;QAEhD,UAAU,CAAC,CAAC,KAAQ,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;;QAErE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;AAEzC,QAAA,GAAG,CACF,CAAC,YAA4C,MAC3C,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC,CACxC,EACD,GAAG,CAAC,MAAM,KAAK,CAAC,CAChB,CACD,CACD;AACF,IAAA,CAAC;AACF;;AClCA,MAAM,6BAA6B,CAAA;AACjC,IAAA,WAAA,CAA6B,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IAAW;IAE9C,IAAI,CAAC,QAAqB,EAAE,MAAqB,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxE;AACD;AAED;;;AAGG;AACH,SAAS,gBAAgB,CAAI,MAAc,EAAA;AACzC,IAAA,OAAO,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,6BAA6B,CAAI,MAAM,CAAC,CAAC;AAC7F;AAEA;;;AAGG;AACH,SAAS,UAAU,CAAI,MAAc,EAAA;AACnC,IAAA,OAAO,CAAC,MAAqB,KAC3B,IAAI,UAAU,CAAC,CAAC,UAAyB,KACvC,MAAM,CAAC,SAAS,CAAC;AACf,QAAA,IAAI,EAAE,CAAC,KAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1E,QAAA,KAAK,EAAE,CAAC,KAAc,KAAK,MAAM,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClF,QAAA,QAAQ,EAAE,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AACtE,KAAA,CAAC,CACH;AACL;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAI,MAAe,EAAA;AAChD,IAAA,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;AAEjC,IAAA,OAAO,CAAC,MAAqB,KAC3B,IAAI,UAAU,CAAC,CAAC,UAAyB,KACvC,MAAM,CAAC,SAAS,CAAC;AACf,QAAA,IAAI,EAAE,CAAC,KAAQ,KAAK,MAAM,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,KAAK,EAAE,CAAC,KAAc,KAAK,MAAM,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpE,QAAA,QAAQ,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxD,KAAA,CAAC,CACH;AACL;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAI,MAAe,EAAA;AAChD,IAAA,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;AAEjC,IAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC3D;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAAI,MAAe,EAAA;AAClD,IAAA,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;AAEjC,IAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;AACpF;;AC7EA;;AAEG;;;;"}