INNER CODE UNIT · TypeScript
rubberBandClamp
pavelbabenko/react-native-awesome-gallery · src/utils/clamping.ts:7
export const rubberBandClamp = (x: number, coeff: number, dim: number) => {
'worklet';
return (1.0 - 1.0 / ((x * coeff) / dim + 1.0)) * dim;
};
export const withRubberBandClamp = (
x: number,
coeff: number,
dim: number,
limits: [number, number]
) => {
'worklet';
let clampedX = clamp(x, limits[0], limits[1]);
let diff = Math.abs(x - clampedX);
let sign = clampedX > x ? -1 : 1;
return clampedX + sign * rubberBandClamp(diff, coeff, dim);