mobx
Version: 
Simple, scalable state management.
63 lines (62 loc) • 2.46 kB
TypeScript
import { $mobx, IEnhancer, IListenable, Lambda, IInterceptable, IInterceptor, IAtom } from "../internal";
export type IObservableSetInitialValues<T> = Set<T> | readonly T[];
export type ISetDidChange<T = any> = {
    object: ObservableSet<T>;
    observableKind: "set";
    debugObjectName: string;
    type: "add";
    newValue: T;
} | {
    object: ObservableSet<T>;
    observableKind: "set";
    debugObjectName: string;
    type: "delete";
    oldValue: T;
};
export type ISetWillDeleteChange<T = any> = {
    type: "delete";
    object: ObservableSet<T>;
    oldValue: T;
};
export type ISetWillAddChange<T = any> = {
    type: "add";
    object: ObservableSet<T>;
    newValue: T;
};
export type ISetWillChange<T = any> = ISetWillDeleteChange<T> | ISetWillAddChange<T>;
export declare class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillChange>, IListenable {
    name_: string;
    [$mobx]: {};
    private data_;
    atom_: IAtom;
    changeListeners_: any;
    interceptors_: any;
    dehancer: any;
    enhancer_: (newV: any, oldV: any | undefined) => any;
    constructor(initialData?: IObservableSetInitialValues<T>, enhancer?: IEnhancer<T>, name_?: string);
    private dehanceValue_;
    clear(): void;
    forEach(callbackFn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void;
    get size(): number;
    add(value: T): this;
    delete(value: T): boolean;
    has(value: T): boolean;
    entries(): SetIterator<[T, T]>;
    keys(): SetIterator<T>;
    values(): SetIterator<T>;
    intersection<U>(otherSet: ReadonlySetLike<U> | Set<U>): Set<T & U>;
    union<U>(otherSet: ReadonlySetLike<U> | Set<U>): Set<T | U>;
    difference<U>(otherSet: ReadonlySetLike<U>): Set<T>;
    symmetricDifference<U>(otherSet: ReadonlySetLike<U> | Set<U>): Set<T | U>;
    isSubsetOf(otherSet: ReadonlySetLike<unknown>): boolean;
    isSupersetOf(otherSet: ReadonlySetLike<unknown>): boolean;
    isDisjointFrom(otherSet: ReadonlySetLike<unknown> | Set<unknown>): boolean;
    replace(other: ObservableSet<T> | IObservableSetInitialValues<T>): ObservableSet<T>;
    observe_(listener: (changes: ISetDidChange<T>) => void, fireImmediately?: boolean): Lambda;
    intercept_(handler: IInterceptor<ISetWillChange<T>>): Lambda;
    toJSON(): T[];
    toString(): string;
    [Symbol.iterator](): SetIterator<T>;
    get [Symbol.toStringTag](): string;
}
export declare var isObservableSet: (thing: any) => thing is ObservableSet<any>;