UNPKG

@pilotlab/lux-tools

Version:

A luxurious user experience framework, developed by your friends at Pilot.

95 lines 3.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const is_1 = require("@pilotlab/is"); const rangeScaleBase_1 = require("./rangeScaleBase"); class RangeScale extends rangeScaleBase_1.default { constructor(inputMin = 0, inputMax = 1, outputMin = 0, outputMax = 1, ease) { super(inputMin, inputMax, ease); this._outputMin = 0.0; this._outputMax = 0.0; this._isInvert = false; let isInvert = outputMin > outputMax; let outputMinFinal = isInvert ? outputMax : outputMin; let outputMaxFinal = isInvert ? outputMin : outputMax; if (is_1.default.notEmpty(outputMinFinal)) this._outputMin = outputMinFinal; if (is_1.default.notEmpty(outputMaxFinal)) this._outputMax = outputMaxFinal; this._isInvert = isInvert; } static normalize(value, min, max, isConstrain = true, isInvert = false) { let p = (value - min) / (max - min); if (isConstrain) { if (p < 0) p = 0; if (p > 1) p = 1; } if (isInvert) p = 1.0 - p; return p; } static unnormalize(valueNormalized, min, max, isConstrain = true, isInvert = false) { let p = valueNormalized; if (isConstrain) { if (p < 0) p = 0; if (p > 1) p = 1; } if (isInvert) p = 1.0 - p; return (min + (p * (max - min))); } static outputEase(value, min, max, ease) { if (min > max) return ease(value - min, max, min - max, max - min); else return ease(value - min, min, max - min, max - min); } static easeNormalized(value, ease, isInvert = false) { if (isInvert) value = 1.0 - value; return ease(value, 0, 1, 1); } get outputMin() { return this._outputMin; } set outputMin(value) { this._outputMin = value; } get outputMax() { return this._outputMax; } set outputMax(value) { this._outputMax = value; } get isInvert() { return this._isInvert; } set isInvert(value) { this._isInvert = value; } get value() { return this._value; } output(inputValue, isValueNormalized = false, isConstrain = true, isNormalizeReturnValue = false, isInvertReturnValue = false) { if (isValueNormalized) inputValue = this.unnormalizeInput(inputValue, false); if (inputValue === this.p_lastInputRaw) return this._value; this.p_lastInputRaw = inputValue; this.p_checkInputPreviousRaw(inputValue); let p = this.normalizeInput(inputValue, false); let value = this._outputFromNormalized(p); value = this.normalizeOutput(value, isConstrain, isInvertReturnValue); if (is_1.default.notEmpty(this.p_ease)) value = RangeScale.easeNormalized(value, this.p_ease); if (this._isInvert) value = 1.0 - value; this.p_lastInputNormalized = value; if (!isNormalizeReturnValue) value = this.unnormalizeOutput(value); this._value = value; return value; } normalizeOutput(outputUnnormalized, isConstrain = true, isInvert = false) { return RangeScale.normalize(outputUnnormalized, this._outputMin, this._outputMax, isConstrain, isInvert); } unnormalizeOutput(outputNormalized, isConstrain = true, isInvert = false) { return RangeScale.unnormalize(outputNormalized, this._outputMin, this._outputMax, isConstrain, isInvert); } _outputFromNormalized(inputNormalized) { let p = inputNormalized; return (this._outputMin + (p * (this._outputMax - this._outputMin))); } } exports.RangeScale = RangeScale; exports.default = RangeScale; //# sourceMappingURL=rangeScale.js.map