{"version":3,"file":"react-ranger.mjs","sources":["../src/index.js"],"sourcesContent":["import React from 'react'\n\nconst getBoundingClientRect = element => {\n  const rect = element.getBoundingClientRect()\n  return {\n    left: Math.ceil(rect.left),\n    width: Math.ceil(rect.width),\n  }\n}\n\nconst sortNumList = arr => [...arr].sort((a, b) => Number(a) - Number(b))\n\nconst useGetLatest = val => {\n  const ref = React.useRef(val)\n  ref.current = val\n  return React.useCallback(() => ref.current, [])\n}\n\nconst linearInterpolator = {\n  getPercentageForValue: (val, min, max) => {\n    return Math.max(0, Math.min(100, ((val - min) / (max - min)) * 100))\n  },\n  getValueForClientX: (clientX, trackDims, min, max) => {\n    const { left, width } = trackDims\n    const percentageValue = (clientX - left) / width\n    const value = (max - min) * percentageValue\n    return value + min\n  },\n}\n\nexport function useRanger({\n  interpolator = linearInterpolator,\n  tickSize = 10,\n  values,\n  min,\n  max,\n  ticks: controlledTicks,\n  steps,\n  onChange,\n  onDrag,\n  stepSize,\n}) {\n  const [activeHandleIndex, setActiveHandleIndex] = React.useState(null)\n  const [tempValues, setTempValues] = React.useState()\n\n  const getLatest = useGetLatest({\n    activeHandleIndex,\n    onChange,\n    onDrag,\n    values,\n    tempValues,\n  })\n\n  const trackElRef = React.useRef()\n\n  const getValueForClientX = React.useCallback(\n    clientX => {\n      const trackDims = getBoundingClientRect(trackElRef.current)\n      return interpolator.getValueForClientX(clientX, trackDims, min, max)\n    },\n    [interpolator, max, min]\n  )\n\n  const getNextStep = React.useCallback(\n    (val, direction) => {\n      if (steps) {\n        let currIndex = steps.indexOf(val)\n        let nextIndex = currIndex + direction\n        if (nextIndex >= 0 && nextIndex < steps.length) {\n          return steps[nextIndex]\n        } else {\n          return val\n        }\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          if (typeof stepSize === 'undefined') {\n            throw new Error(\n              'Warning: The option `stepSize` is expected in `useRanger`, but its value is `undefined`'\n            )\n          }\n        }\n        let nextVal = val + stepSize * direction\n        if (nextVal >= min && nextVal <= max) {\n          return nextVal\n        } else {\n          return val\n        }\n      }\n    },\n    [max, min, stepSize, steps]\n  )\n\n  const roundToStep = React.useCallback(\n    val => {\n      let left = min\n      let right = max\n      if (steps) {\n        steps.forEach(step => {\n          if (step <= val && step > left) {\n            left = step\n          }\n          if (step >= val && step < right) {\n            right = step\n          }\n        })\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          if (typeof stepSize === 'undefined') {\n            throw new Error(\n              'Warning: The option `stepSize` is expected in `useRanger`, but its value is `undefined`'\n            )\n          }\n        }\n        while (left < val && left + stepSize < val) {\n          left += stepSize\n        }\n\n        right = Math.min(left + stepSize, max)\n      }\n\n      if (val - left < right - val) {\n        return left\n      }\n      return right\n    },\n    [max, min, stepSize, steps]\n  )\n\n  const handleDrag = React.useCallback(\n    e => {\n      const { activeHandleIndex, onDrag } = getLatest()\n      const clientX =\n        e.type === 'touchmove' ? e.changedTouches[0].clientX : e.clientX\n      const newValue = getValueForClientX(clientX)\n      const newRoundedValue = roundToStep(newValue)\n\n      const newValues = [\n        ...values.slice(0, activeHandleIndex),\n        newRoundedValue,\n        ...values.slice(activeHandleIndex + 1),\n      ]\n\n      if (onDrag) {\n        onDrag(newValues)\n      } else {\n        setTempValues(newValues)\n      }\n    },\n    [getLatest, getValueForClientX, roundToStep, values]\n  )\n\n  const handleKeyDown = React.useCallback(\n    (e, i) => {\n      const { values, onChange = () => {} } = getLatest()\n      // Left Arrow || Right Arrow\n      if (e.keyCode === 37 || e.keyCode === 39) {\n        setActiveHandleIndex(i)\n        const direction = e.keyCode === 37 ? -1 : 1\n        const newValue = getNextStep(values[i], direction)\n        const newValues = [\n          ...values.slice(0, i),\n          newValue,\n          ...values.slice(i + 1),\n        ]\n        const sortedValues = sortNumList(newValues)\n        onChange(sortedValues)\n      }\n    },\n    [getLatest, getNextStep]\n  )\n\n  const handlePress = React.useCallback(\n    (e, i) => {\n      setActiveHandleIndex(i)\n\n      const handleRelease = e => {\n        const {\n          tempValues,\n          values,\n          onChange = () => {},\n          onDrag = () => {},\n        } = getLatest()\n\n        document.removeEventListener('mousemove', handleDrag)\n        document.removeEventListener('touchmove', handleDrag)\n        document.removeEventListener('mouseup', handleRelease)\n        document.removeEventListener('touchend', handleRelease)\n        const sortedValues = sortNumList(tempValues || values)\n        onChange(sortedValues)\n        onDrag(sortedValues)\n        setActiveHandleIndex(null)\n        setTempValues()\n      }\n\n      document.addEventListener('mousemove', handleDrag)\n      document.addEventListener('touchmove', handleDrag)\n      document.addEventListener('mouseup', handleRelease)\n      document.addEventListener('touchend', handleRelease)\n    },\n    [getLatest, handleDrag]\n  )\n\n  const getPercentageForValue = React.useCallback(\n    val => interpolator.getPercentageForValue(val, min, max),\n    [interpolator, max, min]\n  )\n\n  // Build the ticks\n  const ticks = React.useMemo(() => {\n    let ticks = controlledTicks || steps\n\n    if (!ticks) {\n      ticks = [min]\n      while (ticks[ticks.length - 1] < max - tickSize) {\n        ticks.push(ticks[ticks.length - 1] + tickSize)\n      }\n      ticks.push(max)\n    }\n\n    return ticks.map((value, i) => ({\n      value,\n      getTickProps: ({ key = i, style = {}, ...rest } = {}) => ({\n        key,\n        style: {\n          position: 'absolute',\n          width: 0,\n          left: `${getPercentageForValue(value)}%`,\n          transform: `translateX(-50%)`,\n          ...style,\n        },\n        ...rest,\n      }),\n    }))\n  }, [controlledTicks, getPercentageForValue, max, min, steps, tickSize])\n\n  const segments = React.useMemo(() => {\n    const sortedValues = sortNumList(tempValues || values)\n\n    return [...sortedValues, max].map((value, i) => ({\n      value,\n      getSegmentProps: ({ key = i, style = {}, ...rest } = {}) => {\n        const left = getPercentageForValue(\n          sortedValues[i - 1] ? sortedValues[i - 1] : min\n        )\n        const width = getPercentageForValue(value) - left\n        return {\n          key,\n          style: {\n            position: 'absolute',\n            left: `${left}%`,\n            width: `${width}%`,\n            ...style,\n          },\n          ...rest,\n        }\n      },\n    }))\n  }, [getPercentageForValue, max, min, tempValues, values])\n\n  const handles = React.useMemo(\n    () =>\n      (tempValues || values).map((value, i) => ({\n        value,\n        active: i === activeHandleIndex,\n        getHandleProps: ({\n          key = i,\n          ref,\n          innerRef = () => {},\n          onKeyDown,\n          onMouseDown,\n          onTouchStart,\n          style = {},\n          ...rest\n        } = {}) => ({\n          key,\n          onKeyDown: e => {\n            e.persist()\n            handleKeyDown(e, i)\n            if (onKeyDown) onKeyDown(e)\n          },\n          onMouseDown: e => {\n            e.persist()\n            handlePress(e, i)\n            if (onMouseDown) onMouseDown(e)\n          },\n          onTouchStart: e => {\n            e.persist()\n            handlePress(e, i)\n            if (onTouchStart) onTouchStart(e)\n          },\n          role: 'slider',\n          'aria-valuemin': min,\n          'aria-valuemax': max,\n          'aria-valuenow': value,\n          style: {\n            position: 'absolute',\n            top: '50%',\n            left: `${getPercentageForValue(value)}%`,\n            zIndex: i === activeHandleIndex ? '1' : '0',\n            transform: 'translate(-50%, -50%)',\n            ...style,\n          },\n          ...rest,\n        }),\n      })),\n    [\n      activeHandleIndex,\n      getPercentageForValue,\n      handleKeyDown,\n      handlePress,\n      min,\n      max,\n      tempValues,\n      values,\n    ]\n  )\n\n  const getTrackProps = ({ style = {}, ref, ...rest } = {}) => {\n    return {\n      ref: el => {\n        trackElRef.current = el\n        if (ref) {\n          if (typeof ref === 'function') {\n            ref(el)\n          } else {\n            ref.current = el\n          }\n        }\n      },\n      style: {\n        position: 'relative',\n        userSelect: 'none',\n        ...style,\n      },\n      ...rest,\n    }\n  }\n\n  return {\n    activeHandleIndex,\n    getTrackProps,\n    ticks,\n    segments,\n    handles,\n  }\n}\n"],"names":["getBoundingClientRect","element","rect","left","Math","ceil","width","sortNumList","arr","sort","a","b","Number","useGetLatest","val","ref","React","useRef","current","useCallback","linearInterpolator","getPercentageForValue","min","max","getValueForClientX","clientX","trackDims","percentageValue","value","useRanger","interpolator","tickSize","values","controlledTicks","ticks","steps","onChange","onDrag","stepSize","useState","activeHandleIndex","setActiveHandleIndex","tempValues","setTempValues","getLatest","trackElRef","getNextStep","direction","currIndex","indexOf","nextIndex","length","process","env","NODE_ENV","Error","nextVal","roundToStep","right","forEach","step","handleDrag","e","type","changedTouches","newValue","newRoundedValue","newValues","slice","handleKeyDown","i","keyCode","sortedValues","handlePress","handleRelease","document","removeEventListener","addEventListener","useMemo","push","map","getTickProps","key","style","rest","position","transform","segments","getSegmentProps","handles","active","getHandleProps","innerRef","onKeyDown","onMouseDown","onTouchStart","persist","role","top","zIndex","getTrackProps","el","userSelect"],"mappings":"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"}