UNPKG

@thi.ng/viz

Version:

Declarative, functional & multi-format data visualization toolkit based around @thi.ng/hiccup

20 lines (19 loc) 908 B
import { isFunction } from "@thi.ng/checks/is-function"; import { clamp, inRange } from "@thi.ng/math/interval"; const __resolveData = (data, domain) => isFunction(data) ? data(domain) : data; const __valueMapper = ({ scale: scaleX }, { scale: scaleY, domain: [dmin, dmax] }, project = (x) => x) => ([x, y]) => project([scaleX(x), scaleY(clamp(y, dmin, dmax))]); function* processedPoints({ xaxis, yaxis, project }, data, pointOnly = false) { const mapper = __valueMapper(xaxis, yaxis, project); const [dmin, dmax] = xaxis.domain; for (let p of __resolveData(data, xaxis.domain)) { if (!inRange(p[0], dmin, dmax)) continue; yield pointOnly ? mapper(p) : [mapper(p), p]; } } const defSimplePlotFn = (shape) => (data, opts = {}) => (spec) => [shape, opts.attribs || {}, [...processedPoints(spec, data, true)]]; export { __resolveData, __valueMapper, defSimplePlotFn, processedPoints };