@rx-angular/cdk
Version:
@rx-angular/cdk is a Component Development Kit for ergonomic and highly performant angular applications. It helps to to build Large scale applications, UI libs, state management, rendering systems and much more. Furthermore the unique way of mixing reacti
58 lines (57 loc) • 2.2 kB
TypeScript
import { ChangeDetectorRef, EmbeddedViewRef, ErrorHandler, NgZone, TemplateRef, ViewContainerRef } from '@angular/core';
import { RxNotification } from '@rx-angular/cdk/notifications';
import { RxStrategies } from '@rx-angular/cdk/render-strategies';
import { Observable } from 'rxjs';
export type rxBaseTemplateNames = 'errorTpl' | 'completeTpl' | 'suspenseTpl';
export declare enum RxBaseTemplateNames {
error = "errorTpl",
complete = "completeTpl",
suspense = "suspenseTpl"
}
export declare const enum RxListTemplateChangeType {
insert = 0,
remove = 1,
move = 2,
update = 3,
context = 4
}
export type RxListTemplateChangePayload<T> = [T, number, number?];
export type RxListTemplateChange<T = any> = [
RxListTemplateChangeType,
RxListTemplateChangePayload<T>
];
export type RxListTemplateChanges<T = any> = [
RxListTemplateChange<T>[],
boolean
];
export interface RxViewContext<T> {
$implicit: T;
error: boolean | Error;
complete: boolean;
suspense: boolean;
}
export interface RxRenderAware<T> {
nextStrategy: (nextConfig: string | Observable<string>) => void;
render: (values$: Observable<RxNotification<T>>) => Observable<void>;
}
export interface RxRenderSettings {
cdRef: ChangeDetectorRef;
parent: boolean;
patchZone: NgZone | false;
strategies: RxStrategies<string>;
defaultStrategyName: string;
errorHandler?: ErrorHandler;
}
export type CreateEmbeddedView<C> = (viewContainerRef: ViewContainerRef, patchZone: NgZone | false) => (templateRef: TemplateRef<C>, context?: C, index?: number) => EmbeddedViewRef<C>;
export type CreateViewContext<T, C, U = unknown> = (value: T, computedContext: U) => C;
export type UpdateViewContext<T, C, U = unknown> = (value: T, view: EmbeddedViewRef<C>, computedContext?: U) => void;
export interface RxTemplateSettings<T, C> {
viewContainerRef: ViewContainerRef;
customContext?: (value: T) => Partial<C>;
}
export interface RxListTemplateSettings<T, C, U = unknown> {
viewContainerRef: ViewContainerRef;
createViewContext: CreateViewContext<T, C, U>;
updateViewContext: UpdateViewContext<T, C, U>;
initialTemplateRef?: TemplateRef<C>;
}