UNPKG

@angular-package/range

Version:

The range between minimum and maximum.

354 lines (345 loc) 11.3 kB
import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib'; class Greater extends Number { get [Symbol.toStringTag]() { return 'Greater'; } static create(value) { return new this(value); } static isGreater(value, greaterValue) { return (typeof value === 'object' && value instanceof this && (typeof greaterValue === 'number' ? value.valueOf() === greaterValue : true)); } constructor(value) { super(value); } than(value) { return typeof value === 'number' ? this.valueOf() > value : false; } thanEvery(...values) { return Array.isArray(values) ? values.every((value) => this.valueOf() > value) : false; } thanSome(...values) { return Array.isArray(values) ? values.some((value) => this.valueOf() > value) : false; } valueOf() { return super.valueOf(); } } class Less extends Number { get [Symbol.toStringTag]() { return 'Less'; } static create(value) { return new this(value); } static isLess(value, lessValue) { return (typeof value === 'object' && value instanceof this && (typeof lessValue === 'number' ? value.valueOf() === lessValue : true)); } constructor(value) { super(value); } than(value) { return typeof value === 'number' ? this.valueOf() < value : false; } thanEvery(...values) { return Array.isArray(values) ? values.every((value) => this.valueOf() < value) : false; } thanSome(...values) { return Array.isArray(values) ? values.some((value) => this.valueOf() < value) : false; } valueOf() { return super.valueOf(); } } var _Inequality_greater, _Inequality_less; class Inequality extends Number { constructor(value) { super(value); _Inequality_greater.set(this, void 0); _Inequality_less.set(this, void 0); __classPrivateFieldSet(this, _Inequality_greater, new Greater(value), "f"); __classPrivateFieldSet(this, _Inequality_less, new Less(value), "f"); } get greater() { return __classPrivateFieldGet(this, _Inequality_greater, "f"); } get less() { return __classPrivateFieldGet(this, _Inequality_less, "f"); } isBetween(min, max) { return min < max ? (this.greaterThan(min) && this.lessThan(max)) || min === this.valueOf() || max === this.valueOf() : false; } isBetweenEvery(...ranges) { return ranges.every((range) => this.isBetween(range[0], range[1])); } isBetweenSome(...ranges) { return ranges.some((range) => this.isBetween(range[0], range[1])); } greaterThan(value) { return __classPrivateFieldGet(this, _Inequality_greater, "f").than(value); } greaterThanEvery(...values) { return __classPrivateFieldGet(this, _Inequality_greater, "f").thanEvery(...values); } greaterThanSome(...values) { return __classPrivateFieldGet(this, _Inequality_greater, "f").thanSome(...values); } lessThan(value) { return __classPrivateFieldGet(this, _Inequality_less, "f").than(value); } lessThanEvery(...values) { return __classPrivateFieldGet(this, _Inequality_less, "f").thanEvery(...values); } lessThanSome(...values) { return __classPrivateFieldGet(this, _Inequality_less, "f").thanSome(...values); } } _Inequality_greater = new WeakMap(), _Inequality_less = new WeakMap(); class Maximum extends Inequality { get [Symbol.toStringTag]() { return 'Maximum'; } static create(value) { return new this(value); } static isMaximum(value, max) { return (typeof value === 'object' && value instanceof this && (typeof max === 'number' ? value.valueOf() === max : true)); } constructor(value) { super(value); } valueOf() { return super.valueOf(); } } class Minimum extends Inequality { get [Symbol.toStringTag]() { return 'Minimum'; } static create(value) { return new this(value); } static isMinimum(value, min) { return (typeof value === 'object' && value instanceof this && (typeof min === 'number' ? value.valueOf() : true)); } constructor(value) { super(value); } valueOf() { return super.valueOf(); } } class Number$1 extends Inequality { static create(value) { return new this(value); } static isNumber(value, numberValue) { return (typeof value === 'object' && value instanceof this && (typeof numberValue === 'number' ? value.valueOf() === numberValue : true)); } constructor(value) { super(value); } valueOf() { return super.valueOf(); } } var _Range_maximum, _Range_minimum, _Range_step, _Range_value; class Range { constructor(min, max, value, step = 1) { _Range_maximum.set(this, void 0); _Range_minimum.set(this, void 0); _Range_step.set(this, void 0); _Range_value.set(this, void 0); __classPrivateFieldSet(this, _Range_maximum, new Maximum(max), "f"); __classPrivateFieldSet(this, _Range_minimum, new Minimum(min), "f"); __classPrivateFieldSet(this, _Range_step, step, "f"); this.value = value; Object.defineProperties(this, { min: { value: min, enumerable: true, writable: false, }, max: { value: max, enumerable: true, writable: false, }, }); } get range() { return this.getRange(); } get step() { return __classPrivateFieldGet(this, _Range_step, "f"); } get steps() { return this.getRange().length; } get value() { return __classPrivateFieldGet(this, _Range_value, "f"); } set value(value) { typeof value === 'number' ? this.has(value) && (__classPrivateFieldSet(this, _Range_value, value, "f")) : undefined; } get [(_Range_maximum = new WeakMap(), _Range_minimum = new WeakMap(), _Range_step = new WeakMap(), _Range_value = new WeakMap(), Symbol.toStringTag)]() { return 'Range'; } static create(min, max, value, step) { return new this(min, max, value, step); } static createFrom(numbers, step = 1) { return Range.create(Math.min.apply(0, numbers), Math.max.apply(0, numbers), step); } static createMaximum(value) { return Maximum.create(value); } static createMinimum(value) { return Minimum.create(value); } static isRange(value, min, max, step) { return typeof value === 'object' && value instanceof this ? (typeof min === 'number' ? value.min === min : true) && (typeof max === 'number' ? value.max === max : true) && (typeof step === 'number' ? value.step === step : true) : false; } forEachStep(forEachStep) { this.range.forEach(forEachStep); return this; } getCurrentRange() { return typeof this.value === 'number' ? this.getRange(this.value) : undefined; } getCurrentStep() { return typeof this.value === 'number' ? Math.floor(this.value / __classPrivateFieldGet(this, _Range_step, "f")) : undefined; } getMax() { return __classPrivateFieldGet(this, _Range_maximum, "f").valueOf(); } getMin() { return __classPrivateFieldGet(this, _Range_minimum, "f").valueOf(); } getRange(value = this.max) { const range = []; let current = this.min; while (current <= value) { current <= this.max && range.push(current), (current += __classPrivateFieldGet(this, _Range_step, "f")); } return range; } getRangeOfStep(step) { const range = []; if (step > 0 && step <= this.steps) { for (let value = 0; value < step; value++) { range.push(this.min + value * __classPrivateFieldGet(this, _Range_step, "f")); } } return range; } getValueOfStep(step) { return step > 0 && step <= this.steps ? this.range[step - 1] : undefined; } has(value) { return ((this.minLessThan(value) && this.maxGreaterThan(value)) || value === this.min || value === this.max); } hasEvery(...values) { return values.every((value) => this.has(value)); } hasSome(...values) { return values.some((value) => this.has(value)); } isBetween(min, max) { return min <= max ? this.hasEvery(min, max) : false; } isBetweenEvery(...ranges) { return ranges.every((range) => range[0] <= range[1] ? this.hasEvery(...range) : false); } isBetweenSome(...ranges) { return ranges.some((range) => range[0] <= range[1] ? this.hasEvery(...range) : false); } maxGreaterThan(value) { return __classPrivateFieldGet(this, _Range_maximum, "f").greaterThan(value); } maxLessThan(value) { return __classPrivateFieldGet(this, _Range_maximum, "f").lessThan(value); } minGreaterThan(value) { return __classPrivateFieldGet(this, _Range_minimum, "f").greaterThan(value); } minLessThan(value) { return __classPrivateFieldGet(this, _Range_minimum, "f").lessThan(value); } setValue(value) { this.value = value; return this; } setValueToStep(step) { step > 0 && (this.value = this.getValueOfStep(step)); return this; } stepByStep(callbackFn) { const t = this; callbackFn((function* stepByStep(current = t.min - t.step) { while (current < t.max) { yield (current += t.step); } })(), t.step, t.max); return this; } toArray() { return [__classPrivateFieldGet(this, _Range_minimum, "f").valueOf(), __classPrivateFieldGet(this, _Range_maximum, "f").valueOf()]; } valueDown(stepDecrement = 1) { typeof this.value === 'number' && stepDecrement > 0 && this.setValue(this.value - stepDecrement * __classPrivateFieldGet(this, _Range_step, "f")); return this; } valueOf() { return Object.freeze({ min: __classPrivateFieldGet(this, _Range_minimum, "f").valueOf(), max: __classPrivateFieldGet(this, _Range_maximum, "f").valueOf(), }); } valueUp(stepIncrement = 1) { typeof this.value === 'number' && stepIncrement > 0 && this.setValue(this.value + stepIncrement * __classPrivateFieldGet(this, _Range_step, "f")); return this; } } export { Greater, Inequality, Less, Maximum, Minimum, Number$1 as Number, Range }; //# sourceMappingURL=angular-package-range.mjs.map