import { bufferWithTime } from "./buffer" import { map } from "./map" import { Scope } from "./abstractions" import { GenericTransformOp, GenericTransformOpScoped } from "./transform" import { transformChanges } from "./transformchanges" export function throttle(delay: number): GenericTransformOp export function throttle( delay: number, scope: Scope ): GenericTransformOpScoped export function throttle(delay: number, scope?: Scope): any { return transformChanges( ["throttle", [delay]], (changes) => map((values: any) => values[values.length - 1])( bufferWithTime(delay)(changes) ), scope as any ) }