UNPKG

@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
"use strict"; 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; }