@base-ui-components/react
Version:
Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.
37 lines (35 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.removeFloatingPointErrors = removeFloatingPointErrors;
exports.toValidatedNumber = toValidatedNumber;
var _formatNumber = require("../../utils/formatNumber");
var _clamp = require("../../utils/clamp");
function removeFloatingPointErrors(value, format = {}) {
return parseFloat((0, _formatNumber.getFormatter)('en-US', {
maximumFractionDigits: format.maximumFractionDigits,
minimumFractionDigits: format.minimumFractionDigits,
useGrouping: false
}).format(value));
}
function toValidatedNumber(value, {
step,
minWithDefault,
maxWithDefault,
minWithZeroDefault,
format
}) {
if (value === null) {
return value;
}
const clampedValue = (0, _clamp.clamp)(value, minWithDefault, maxWithDefault);
// Ensure values are divisible by the step, starting from the min value.
if (step != null) {
const stepsFromMin = (clampedValue - minWithZeroDefault) / step;
const roundedSteps = Math.round(stepsFromMin);
const snappedValue = minWithZeroDefault + roundedSteps * step;
return removeFloatingPointErrors(snappedValue, format);
}
return clampedValue;
}