UNPKG

@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
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 {};