first commit
This commit is contained in:
119
frontend/node_modules/@rc-component/mini-decimal/lib/NumberDecimal.js
generated
vendored
Normal file
119
frontend/node_modules/@rc-component/mini-decimal/lib/NumberDecimal.js
generated
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
||||
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
||||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
||||
var _numberUtil = require("./numberUtil");
|
||||
/**
|
||||
* We can remove this when IE not support anymore
|
||||
*/
|
||||
var NumberDecimal = /*#__PURE__*/function () {
|
||||
function NumberDecimal(value) {
|
||||
(0, _classCallCheck2.default)(this, NumberDecimal);
|
||||
(0, _defineProperty2.default)(this, "origin", '');
|
||||
(0, _defineProperty2.default)(this, "number", void 0);
|
||||
(0, _defineProperty2.default)(this, "empty", void 0);
|
||||
if ((0, _numberUtil.isEmpty)(value)) {
|
||||
this.empty = true;
|
||||
return;
|
||||
}
|
||||
this.origin = String(value);
|
||||
this.number = Number(value);
|
||||
}
|
||||
(0, _createClass2.default)(NumberDecimal, [{
|
||||
key: "negate",
|
||||
value: function negate() {
|
||||
return new NumberDecimal(-this.toNumber());
|
||||
}
|
||||
}, {
|
||||
key: "add",
|
||||
value: function add(value) {
|
||||
if (this.isInvalidate()) {
|
||||
return new NumberDecimal(value);
|
||||
}
|
||||
var target = Number(value);
|
||||
if (Number.isNaN(target)) {
|
||||
return this;
|
||||
}
|
||||
var number = this.number + target;
|
||||
|
||||
// [Legacy] Back to safe integer
|
||||
if (number > Number.MAX_SAFE_INTEGER) {
|
||||
return new NumberDecimal(Number.MAX_SAFE_INTEGER);
|
||||
}
|
||||
if (number < Number.MIN_SAFE_INTEGER) {
|
||||
return new NumberDecimal(Number.MIN_SAFE_INTEGER);
|
||||
}
|
||||
var maxPrecision = Math.max((0, _numberUtil.getNumberPrecision)(this.number), (0, _numberUtil.getNumberPrecision)(target));
|
||||
return new NumberDecimal(number.toFixed(maxPrecision));
|
||||
}
|
||||
}, {
|
||||
key: "multi",
|
||||
value: function multi(value) {
|
||||
var target = Number(value);
|
||||
if (this.isInvalidate() || Number.isNaN(target)) {
|
||||
return new NumberDecimal(NaN);
|
||||
}
|
||||
var number = this.number * target;
|
||||
|
||||
// [Legacy] Back to safe integer
|
||||
if (number > Number.MAX_SAFE_INTEGER) {
|
||||
return new NumberDecimal(Number.MAX_SAFE_INTEGER);
|
||||
}
|
||||
if (number < Number.MIN_SAFE_INTEGER) {
|
||||
return new NumberDecimal(Number.MIN_SAFE_INTEGER);
|
||||
}
|
||||
var maxPrecision = Math.max((0, _numberUtil.getNumberPrecision)(this.number), (0, _numberUtil.getNumberPrecision)(target));
|
||||
return new NumberDecimal(number.toFixed(maxPrecision));
|
||||
}
|
||||
}, {
|
||||
key: "isEmpty",
|
||||
value: function isEmpty() {
|
||||
return this.empty;
|
||||
}
|
||||
}, {
|
||||
key: "isNaN",
|
||||
value: function isNaN() {
|
||||
return Number.isNaN(this.number);
|
||||
}
|
||||
}, {
|
||||
key: "isInvalidate",
|
||||
value: function isInvalidate() {
|
||||
return this.isEmpty() || this.isNaN();
|
||||
}
|
||||
}, {
|
||||
key: "equals",
|
||||
value: function equals(target) {
|
||||
return this.toNumber() === (target === null || target === void 0 ? void 0 : target.toNumber());
|
||||
}
|
||||
}, {
|
||||
key: "lessEquals",
|
||||
value: function lessEquals(target) {
|
||||
return this.add(target.negate().toString()).toNumber() <= 0;
|
||||
}
|
||||
}, {
|
||||
key: "toNumber",
|
||||
value: function toNumber() {
|
||||
return this.number;
|
||||
}
|
||||
}, {
|
||||
key: "toString",
|
||||
value: function toString() {
|
||||
var safe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
||||
if (!safe) {
|
||||
return this.origin;
|
||||
}
|
||||
if (this.isInvalidate()) {
|
||||
return '';
|
||||
}
|
||||
return (0, _numberUtil.num2str)(this.number);
|
||||
}
|
||||
}]);
|
||||
return NumberDecimal;
|
||||
}();
|
||||
exports.default = NumberDecimal;
|
||||
Reference in New Issue
Block a user