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);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…