ohctechv3/.svn/pristine/52/52037ae45bf6f352af339809121aa0ecb1b53552.svn-base

16 lines
627 B
Plaintext
Raw Permalink Normal View History

2024-10-28 15:03:36 +05:30
import { clamp } from '@mui/utils';
export function clampStepwise(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER, stepProp = NaN) {
if (Number.isNaN(stepProp)) {
return clamp(val, min, max);
}
const step = stepProp || 1;
const remainder = val % step;
const positivity = Math.sign(remainder);
if (Math.abs(remainder) > step / 2) {
return clamp(val + positivity * (step - Math.abs(remainder)), min, max);
}
return clamp(val - positivity * Math.abs(remainder), min, max);
}
export function isNumber(val) {
return typeof val === 'number' && !Number.isNaN(val) && Number.isFinite(val);
}