devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
78 lines (76 loc) • 2.31 kB
JavaScript
/**
* DevExtreme (cjs/__internal/viz/translators/translator1d.js)
* Version: 25.2.5
* Build date: Fri Feb 20 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Translator1D = Translator1D;
const _Number = Number;
function Translator1D() {
this.setDomain(arguments[0], arguments[1]).setCodomain(arguments[2], arguments[3]).setInverted(false)
}
Translator1D.prototype = {
constructor: Translator1D,
setDomain(domain1, domain2) {
this._domain1 = _Number(domain1);
this._domain2 = _Number(domain2);
this._domainDelta = this._domain2 - this._domain1;
return this
},
setCodomain(codomain1, codomain2) {
this._codomain1 = _Number(codomain1);
this._codomain2 = _Number(codomain2);
this._codomainDelta = this._codomain2 - this._codomain1;
return this
},
setInverted(state) {
this.inverted = state
},
getDomain() {
return [this._domain1, this._domain2]
},
getCodomain() {
return [this._codomain1, this._codomain2]
},
getDomainStart() {
return this._domain1
},
getDomainEnd() {
return this._domain2
},
getCodomainStart() {
return this._codomain1
},
getCodomainEnd() {
return this._codomain2
},
getDomainRange() {
return this._domainDelta
},
getCodomainRange() {
return this._codomainDelta
},
translate(value) {
let ratio = (_Number(value) - this._domain1) / this._domainDelta;
this.inverted && (ratio = 1 - ratio);
return ratio >= 0 && ratio <= 1 ? this._codomain1 + ratio * this._codomainDelta : NaN
},
adjust(value) {
const ratio = (_Number(value) - this._domain1) / this._domainDelta;
let result = NaN;
if (ratio < 0) {
result = this._domain1
} else if (ratio > 1) {
result = this._domain2
} else if (ratio >= 0 && ratio <= 1) {
result = _Number(value)
}
return result
}
};