UNPKG

@ablestack/rdo

Version:

A library to facilitate building and running graphs of Reactive Domain Objects - connecting JSON data sources to reactive client applications

55 lines (54 loc) 2.76 kB
import { IGlobalNodeOptions, INodeSyncOptions, IRdoCollectionNodeWrapper, ISourceNodeWrapper, ISyncChildNode, NodeTypeInfo } from '../..'; import { EventEmitter } from '../../infrastructure/event-emitter'; import { MutableNodeCache } from '../../infrastructure/mutable-node-cache'; import { IEqualityComparer, IRdoInternalNodeWrapper, NodeReplaceHandler, NodeAddHandler, NodeDeleteHandler } from '../../types'; import { NodeChange } from '../../types/event-types'; import { RdoInternalNWBase } from './rdo-internal-nw-base'; export declare abstract class RdoCollectionNWBase<S, D> extends RdoInternalNWBase<S, D> implements IRdoCollectionNodeWrapper<S, D> { private _equalityComparer; constructor({ typeInfo, key, mutableNodeCache, wrappedParentRdoNode, wrappedSourceNode, defaultEqualityComparer, syncChildNode, matchingNodeOptions, globalNodeOptions, targetedOptionMatchersArray, eventEmitter, }: { typeInfo: NodeTypeInfo; key: string | number | undefined; mutableNodeCache: MutableNodeCache; wrappedParentRdoNode: IRdoInternalNodeWrapper<S, D> | undefined; wrappedSourceNode: ISourceNodeWrapper<S, D>; defaultEqualityComparer: IEqualityComparer; syncChildNode: ISyncChildNode; matchingNodeOptions: INodeSyncOptions<any, any> | undefined; globalNodeOptions: IGlobalNodeOptions | undefined; targetedOptionMatchersArray: Array<INodeSyncOptions<any, any>>; eventEmitter: EventEmitter<NodeChange>; }); protected get equalityComparer(): IEqualityComparer; /** */ protected handleAddElement({ index, collectionKey, newItem, newSourceElement, addHandler }: { addHandler: NodeAddHandler<D>; index: number; collectionKey: string | number; newItem: any; newSourceElement: S; }): boolean; /** */ protected handleReplaceOrUpdate({ replaceHandler, index, collectionKey, lastElementKey, nextElementKey, origItem, newSourceElement, previousSourceElement, }: { replaceHandler: NodeReplaceHandler<D>; index: number; collectionKey: string | number; lastElementKey: string | number; nextElementKey: string | number; origItem: any; newSourceElement: S; previousSourceElement: S; }): { changed: boolean; newItem: any; }; /** */ protected handleDeleteElement({ deleteHandler, index, collectionKey, rdoToDelete, previousSourceElement }: { deleteHandler: NodeDeleteHandler<D>; index?: number; collectionKey: string | number; rdoToDelete: any; previousSourceElement: S; }): boolean; abstract elements(): Iterable<D>; }