UNPKG

@bokeh/bokehjs

Version:

Interactive, novel data visualization

108 lines 2.76 kB
import { equals } from "./util/eq"; import * as arrayable from "./util/arrayable"; export class Uniform { static __name__ = "Uniform"; is_Scalar() { return this.is_scalar; } is_Vector() { return !this.is_scalar; } } export class UniformScalar extends Uniform { value; length; static __name__ = "UniformScalar"; is_scalar = true; constructor(value, length) { super(); this.value = value; this.length = length; } get(_i) { return this.value; } *[Symbol.iterator]() { const { length, value } = this; for (let i = 0; i < length; i++) { yield value; } } select(indices) { return new UniformScalar(this.value, indices.count); } [equals](that, cmp) { return cmp.eq(this.length, that.length) && cmp.eq(this.value, that.value); } map(fn) { return new UniformScalar(fn(this.value), this.length); } unique() { return [this.value]; } } export class UniformVector extends Uniform { array; static __name__ = "UniformVector"; is_scalar = false; length; constructor(array) { super(); this.array = array; this.length = this.array.length; } get(i) { return this.array[i]; } *[Symbol.iterator]() { yield* this.array; } select(indices) { const array = indices.select(this.array); return new this.constructor(array); } [equals](that, cmp) { return cmp.eq(this.length, that.length) && cmp.eq(this.array, that.array); } map(fn) { return new UniformVector(arrayable.map(this.array, fn)); } unique() { return [...new Set(this.array)]; } } export class ColorUniformVector extends UniformVector { array; static __name__ = "ColorUniformVector"; _view; constructor(array) { super(array); this.array = array; this._view = new DataView(array.buffer); } get(i) { return this._view.getUint32(4 * i); } *[Symbol.iterator]() { const n = this.length; for (let i = 0; i < n; i++) { yield this.get(i); } } copy_buffer() { return this.array.buffer.slice(); } } export function min(u) { return u.is_Scalar() ? u.value : arrayable.min(u.array); } export function max(u) { return u.is_Scalar() ? u.value : arrayable.max(u.array); } export function some(u, predicate) { return u.is_Scalar() ? predicate(u.value) : arrayable.some(u.array, predicate); } export function every(u, predicate) { return u.is_Scalar() ? predicate(u.value) : arrayable.every(u.array, predicate); } //# sourceMappingURL=uniforms.js.map