@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering.
137 lines • 5.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizeSides = exports.parseCssNumeric = exports.normalizePercentage = exports.isPercentage = exports.random = exports.mod = exports.isNumeric = exports.parseInt = exports.toSafeInteger = exports.toInteger = exports.toNumber = exports.toFinite = exports.inRange = exports.clamp = exports.isSafeInteger = exports.isInteger = exports.isFinite = exports.isNumber = exports.isNaN = void 0;
var lodash_es_1 = require("lodash-es");
Object.defineProperty(exports, "isNaN", { enumerable: true, get: function () { return lodash_es_1.isNaN; } });
Object.defineProperty(exports, "isNumber", { enumerable: true, get: function () { return lodash_es_1.isNumber; } });
Object.defineProperty(exports, "isFinite", { enumerable: true, get: function () { return lodash_es_1.isFinite; } });
Object.defineProperty(exports, "isInteger", { enumerable: true, get: function () { return lodash_es_1.isInteger; } });
Object.defineProperty(exports, "isSafeInteger", { enumerable: true, get: function () { return lodash_es_1.isSafeInteger; } });
Object.defineProperty(exports, "clamp", { enumerable: true, get: function () { return lodash_es_1.clamp; } });
Object.defineProperty(exports, "inRange", { enumerable: true, get: function () { return lodash_es_1.inRange; } });
Object.defineProperty(exports, "toFinite", { enumerable: true, get: function () { return lodash_es_1.toFinite; } });
Object.defineProperty(exports, "toNumber", { enumerable: true, get: function () { return lodash_es_1.toNumber; } });
Object.defineProperty(exports, "toInteger", { enumerable: true, get: function () { return lodash_es_1.toInteger; } });
Object.defineProperty(exports, "toSafeInteger", { enumerable: true, get: function () { return lodash_es_1.toSafeInteger; } });
Object.defineProperty(exports, "parseInt", { enumerable: true, get: function () { return lodash_es_1.parseInt; } });
var lang_1 = require("../lang/lang");
Object.defineProperty(exports, "isNumeric", { enumerable: true, get: function () { return lang_1.isNumeric; } });
/**
* Returns the remainder of division of `n` by `m`. You should use this
* instead of the built-in operation as the built-in operation does not
* properly handle negative numbers.
*/
function mod(n, m) {
return ((n % m) + m) % m;
}
exports.mod = mod;
function random(lower, upper) {
if (upper == null) {
upper = lower == null ? 1 : lower; // eslint-disable-line
lower = 0; // eslint-disable-line
}
else if (upper < lower) {
var tmp = lower;
lower = upper; // eslint-disable-line
upper = tmp; // eslint-disable-line
}
return Math.floor(Math.random() * (upper - lower + 1) + lower);
}
exports.random = random;
function isPercentage(val) {
return typeof val === 'string' && val.slice(-1) === '%';
}
exports.isPercentage = isPercentage;
function normalizePercentage(num, ref) {
if (num == null) {
return 0;
}
var raw;
if (typeof num === 'string') {
raw = parseFloat(num);
if (isPercentage(num)) {
raw /= 100;
if (Number.isFinite(raw)) {
return raw * ref;
}
}
}
else {
raw = num;
}
if (!Number.isFinite(raw)) {
return 0;
}
if (raw > 0 && raw < 1) {
return raw * ref;
}
return raw;
}
exports.normalizePercentage = normalizePercentage;
function parseCssNumeric(val, units) {
function getUnit(regexp) {
var matches = new RegExp("(?:\\d+(?:\\.\\d+)*)(" + regexp + ")$").exec(val);
if (!matches) {
return null;
}
return matches[1];
}
var number = parseFloat(val);
if (Number.isNaN(number)) {
return null;
}
// determine the unit
var regexp;
if (units == null) {
// accept any unit, as well as no unit
regexp = '[A-Za-z]*';
}
else if (Array.isArray(units)) {
if (units.length === 0) {
return null;
}
regexp = units.join('|');
}
else if (typeof units === 'string') {
regexp = units;
}
var unit = getUnit(regexp);
if (unit === null) {
return null;
}
return {
unit: unit,
value: number,
};
}
exports.parseCssNumeric = parseCssNumeric;
function normalizeSides(box) {
if (typeof box === 'object') {
var left = 0;
var top_1 = 0;
var right = 0;
var bottom = 0;
if (box.vertical != null && Number.isFinite(box.vertical)) {
top_1 = bottom = box.vertical;
}
if (box.horizontal != null && Number.isFinite(box.horizontal)) {
right = left = box.horizontal;
}
if (box.left != null && Number.isFinite(box.left))
left = box.left;
if (box.top != null && Number.isFinite(box.top))
top_1 = box.top;
if (box.right != null && Number.isFinite(box.right))
right = box.right;
if (box.bottom != null && Number.isFinite(box.bottom))
bottom = box.bottom;
return { top: top_1, right: right, bottom: bottom, left: left };
}
var val = 0;
if (box != null && Number.isFinite(box)) {
val = box;
}
return { top: val, right: val, bottom: val, left: val };
}
exports.normalizeSides = normalizeSides;
//# sourceMappingURL=number.js.map