Repository URL to install this package:
|
Version:
2.0.8 ▾
|
export interface IObservableArray<T = any> extends Array<T> {
spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[];
observe(listener: (changeData: IArrayChange<T> | IArraySplice<T>) => void, fireImmediately?: boolean): Lambda;
intercept(handler: IInterceptor<IArrayWillChange<T> | IArrayWillSplice<T>>): Lambda;
clear(): T[];
replace(newItems: T[]): T[];
remove(value: T): boolean;
}
export interface Lambda {
(): void;
name?: string;
}
export declare type IInterceptor<T> = (change: T) => T | null;
export interface IInterceptable<T> {
interceptors: IInterceptor<T>[] | undefined;
intercept(handler: IInterceptor<T>): Lambda;
}
export declare function hasInterceptors(interceptable: IInterceptable<any>): boolean;
export interface IArrayChange<T = any> {
type: 'update';
object: IObservableArray<T>;
index: number;
newValue: T;
oldValue: T;
}
export interface IArraySplice<T = any> {
type: 'splice';
object: IObservableArray<T>;
index: number;
added: T[];
addedCount: number;
removed: T[];
removedCount: number;
}
export interface IArrayWillChange<T = any> {
type: 'update';
object: IObservableArray<T>;
index: number;
newValue: T;
}
export interface IArrayWillSplice<T = any> {
type: 'splice';
object: IObservableArray<T>;
index: number;
added: T[];
removedCount: number;
}
export interface IObservableObject {
'observable-object': IObservableObject;
}
export declare type IObjectDidChange = {
name: string;
object: any;
type: 'add';
newValue: any;
} | {
name: string;
object: any;
type: 'update';
oldValue: any;
newValue: any;
} | {
name: string;
object: any;
type: 'remove';
oldValue: any;
};
export declare type IObjectWillChange = {
object: any;
type: 'update' | 'add';
name: string;
newValue: any;
} | {
object: any;
type: 'remove';
name: string;
};