import * as i0 from '@angular/core'; import { PipeTransform, OnDestroy, ChangeDetectorRef } from '@angular/core'; import { RxStrategyNames } from '@rx-angular/cdk/render-strategies'; import { Observable, NextObserver, ObservableInput } from 'rxjs'; /** * @Pipe RxPush * * @description * * The push pipe serves as a drop-in replacement for angulars built-in async pipe. * Just like the *rxLet Directive, it leverages a * [RenderStrategy](https://rx-angular.io/docs/cdk/render-strategies) * under the hood which takes care of optimizing the ChangeDetection of your component. The rendering behavior can be * configured per RxPush instance using either a strategy name or provide a * `RxComponentInput` config. * * Usage in the template * * ```html * * * ``` * * Using different strategies * * ```html * * * ``` * * Provide a config object * * ```html * * * ``` * * Other Features: * * - lazy rendering (see * [LetDirective](https://github.com/rx-angular/rx-angular/tree/main/libs/template/docs/api/let-directive.md)) * - Take observables or promises, retrieve their values and render the value to the template * - a unified/structured way of handling null, undefined or error * - distinct same values in a row skip not needed re-renderings * * @usageNotes * * ```html * {{observable$ | push}} * {{o}} * * ``` * * @publicApi */ declare class RxPush implements PipeTransform, OnDestroy { private cdRef; /** @internal */ private strategyProvider; /** @internal */ private ngZone; /** * @internal * This is typed as `any` because the type cannot be inferred * without a class-level generic argument, which was removed to * fix https://github.com/rx-angular/rx-angular/pull/684 */ private renderedValue; /** @internal */ private subscription; /** @internal */ private readonly templateObserver; private readonly templateValues$; /** @internal */ private readonly strategyHandler; /** @internal */ private patchZone; /** @internal */ private _renderCallback; constructor(cdRef: ChangeDetectorRef); transform(potentialObservable: null, config?: RxStrategyNames | Observable, renderCallback?: NextObserver): null; transform(potentialObservable: undefined, config?: RxStrategyNames | Observable, renderCallback?: NextObserver): undefined; transform(potentialObservable: ObservableInput | U, config?: RxStrategyNames | Observable, renderCallback?: NextObserver): U; transform(potentialObservable: ObservableInput, config?: PushInput): U; /** @internal */ ngOnDestroy(): void; /** @internal */ private setPatchZone; /** @internal */ private handleChangeDetection; /** @internal */ private render; /** @internal */ private hasInitialValue; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } interface PushInput { strategy?: RxStrategyNames | Observable; renderCallback?: NextObserver; patchZone?: boolean; } export { RxPush };