@everwhen/temporal
Version:
34 lines (33 loc) • 1.46 kB
TypeScript
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;
}