@zxh19890103/wik
Version:
The world-class JavaScript library for building large-scale digital warehouse both on 2D and 3D.
48 lines (47 loc) • 1.73 kB
TypeScript
import { EventEmitter } from 'eventemitter3';
import { WithEmitter } from '../../model/basic/Emitter';
import { IList } from './IList';
export interface Core<E extends string = string> extends WithEmitter<E> {
}
export declare abstract class Core<E extends string = string> extends EventEmitter<E> {
assign(pairs: string | Record<string, any>, value?: any): void;
}
export declare abstract class CoreList<M = any, E extends string = never> extends Core<E | CoreListEventType> implements IList<M> {
readonly items: Set<M>;
readonly index: Map<string, M>;
size: number;
protected isBatching: boolean;
[Symbol.iterator](): Generator<M, void, unknown>;
constructor(items?: M[]);
add(item: M): void;
protected _add(item: M): void;
addRange(...items: M[]): void;
addArr(items: M[]): void;
remove(item?: M): void;
protected _remove(item: M): void;
removeById(key: string): void;
removeRange(...items: M[]): void;
removeArr(items: M[]): void;
clear(): void;
protected _clear(): void;
update(item: M): void;
updateRange(...items: M[]): void;
has(key: string | M): boolean;
find(key: string): M;
query(predicate: (item: M) => boolean): M[];
map<R>(project: (m: M) => R): R[];
filter(pipe: (m: M) => boolean): M[];
abstract create(...args: any[]): M;
/**
* key to item.
*/
abstract itemKey: string;
}
export interface CoreList<M = any, E extends string = never> {
onItemAdd(item: M): void;
onItemRemove(item: M): void;
onItemUpdate(item: M, data: any): void;
onClear(): void;
}
type CoreListEventType = 'add' | 'remove' | 'update' | 'add.r' | 'remove.r' | 'update.r' | 'size' | 'clear';
export {};