import { AccessorT, Observer, Accessor } from "./observer"; import { max } from "./max"; import { min } from "./min"; function _extent(): Observer { const minFO = min(); const maxFO = max(); return { observe: (value: number, idx: number) => { minFO.observe(value, idx); maxFO.observe(value, idx); }, peek: () => [minFO.peek(), maxFO.peek()] }; } export type ExtentAccessor = AccessorT; export function extent(): Observer; export function extent(callbackFn: ExtentAccessor): Observer; export function extent(callbackFn?: ExtentAccessor): Observer | Observer { return callbackFn ? Accessor(_extent, callbackFn) : _extent(); }