UNPKG

@everwhen/temporal

Version:
34 lines (33 loc) 1.46 kB
import { IntervalLike } from '../interval.js'; import { Point } from '../point.js'; import { TemporalNode } from './temporal-node.js'; export declare class TemporalTree<Data, T extends Point = Point> { private root; private _size; constructor(); private _compareIntervals; get(interval: IntervalLike<T>): TemporalNode<Data, T> | undefined; set(interval: IntervalLike<T>, data: Data): TemporalNode<Data, T>; /** * Inserts a new interval into the tree * @param interval The interval to insert * @param data Optional data to associate with the interval * @returns The inserted node */ insert(interval: IntervalLike<T>, data: Data): TemporalNode<Data, T>; delete(interval: IntervalLike<T>): boolean; /** * Traverses the tree and collects results based on a predicate and mapper * @param predicate Function that tests each node for inclusion * @param mapper Function that transforms matching nodes into the desired output type * @param options Traversal options including order * @returns Array of transformed values from nodes that match the predicate */ select<Output = TemporalNode<Data, T>>(predicate: (node: TemporalNode<Data, T>) => boolean, mapper?: (node: TemporalNode<Data, T>) => Output, options?: { order?: 'pre' | 'in' | 'post'; }): Output[]; private _insert; private _rebalance; private _removeNode; get size(): number; }