UNPKG

@oleksii-pavlov/ranges

Version:
47 lines (46 loc) 1.69 kB
export class Range { constructor(rangeValues) { this.rangeValues = rangeValues; } getValues() { return this.rangeValues; } within(value) { if (value > this.rangeValues.max) return this.rangeValues.max; if (value < this.rangeValues.min) return this.rangeValues.min; return value; } isGreaterThanMinAndLessThanMax(value) { return value > this.rangeValues.min && value < this.rangeValues.max; } isGreaterThanMinOrEqualAndLessThanMax(value) { return value >= this.rangeValues.min && value < this.rangeValues.max; } isGreaterThanMinAndLessThanMaxOrEqual(value) { return value > this.rangeValues.min && value <= this.rangeValues.max; } isGreaterThanMinOrEqualAndLessThanMaxOrEqual(value) { return value >= this.rangeValues.min && value <= this.rangeValues.max; } getIntersection(rangeValues) { const greaterMin = Math.max(this.rangeValues.min, rangeValues.min); const lowerMax = Math.min(this.rangeValues.max, rangeValues.max); if (greaterMin > lowerMax) return null; return new Range({ min: greaterMin, max: lowerMax }); } isInRangeOf(rangeValues) { return this.rangeValues.min >= rangeValues.min && this.rangeValues.max <= rangeValues.max; } containsRange(rangeValues) { return this.rangeValues.min <= rangeValues.min && this.rangeValues.max >= rangeValues.max; } containsValue(value) { return this.rangeValues.min <= value && this.rangeValues.max >= value; } } export function mapValueToRange(value) { return ({ min: value, max: value }); }