@angular-package/range
Version:
The range between minimum and maximum.
354 lines (345 loc) • 11.3 kB
JavaScript
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