timered-counter
Version:
Make the value change more vivid and natural
94 lines • 2.21 kB
JavaScript
import { Decimal } from 'decimal.js';
import { isString } from 'remeda';
const numberRegex = /^-?\d+(\.\d+)?$/;
const DecimalJsAdapter = (config = { precision: 1e3 }) => {
const InnerDecimal = Decimal.clone(config);
return {
create(value) {
if (isString(value) && !numberRegex.test(value))
value = 0;
return new InnerDecimal(value);
},
add(a, b) {
return a.plus(b);
},
sub(a, b) {
return a.minus(b);
},
mul(a, b) {
return a.times(b);
},
div(a, b) {
return a.div(b);
},
compare(a, b) {
return a.cmp(b);
},
eq(a, b) {
return a.eq(b);
},
gt(a, b) {
return a.gt(b);
},
gte(a, b) {
return a.gte(b);
},
lt(a, b) {
return a.lt(b);
},
lte(a, b) {
return a.lte(b);
},
isInteger(a) {
return a.isInteger();
},
isNegative(a) {
return a.isNegative();
},
isPositive(a) {
return a.isPositive();
},
isZero(a) {
return a.isZero();
},
isNaN(a) {
return a.isNaN();
},
isFinite(a) {
return a.isFinite();
},
abs(a) {
return a.abs();
},
ceil(a) {
return a.ceil();
},
floor(a) {
return a.floor();
},
round(a) {
return a.round();
},
max(a, b) {
return InnerDecimal.max(a, b);
},
min(a, b) {
return InnerDecimal.min(a, b);
},
toNumber(a) {
return a.toNumber();
},
toString(a) {
return a.toFixed();
},
};
};
export function register(counterAdapter, config) {
counterAdapter.registerNumberAdapter(['decimal.js', 'decimal-js', 'decimaljs'], () => DecimalJsAdapter(config));
}
export { DecimalJsAdapter };
export default {
register,
DecimalJsAdapter,
};
//# sourceMappingURL=decimal-js.js.map