{"version":3,"file":"Slider.mjs","sources":["../../../../src/components/Slider/Slider.tsx"],"sourcesContent":["'use client'\n\nimport { type CSSProperties, forwardRef, memo } from 'react'\nimport * as React from 'react'\n\nimport * as SliderPrimitive from '@radix-ui/react-slider'\nimport classNames from 'classnames'\n\nimport { cssDimension } from '~/src/utils/style'\n\nimport { Tooltip } from '~/src/components/Tooltip'\n\nimport { type SliderProps } from './Slider.types'\n\nimport styles from './Slider.module.scss'\n\nexport const SLIDER_TEST_ID = 'bezier-slider'\n\nconst SliderGuide = memo<Record<'min' | 'max' | 'value', number>>(\n  function SliderGuide({ min, max, value }) {\n    return (\n      <div\n        className={styles.SliderGuide}\n        style={\n          {\n            '--b-slider-guide-left': `${(value / (max - min)) * 100}%`,\n          } as React.CSSProperties\n        }\n      />\n    )\n  }\n)\n\n/* NOTE: Props are injected at runtime by `SliderPrimitive.Thumb`. */\nconst SliderThumb = forwardRef<\n  HTMLDivElement,\n  Pick<SliderProps, 'disableTooltip'> & React.HTMLAttributes<HTMLDivElement>\n>(function SliderThumb({ disableTooltip, ...rest }, forwardedRef) {\n  const value = rest?.['aria-valuenow']\n\n  if (disableTooltip) {\n    return (\n      <div\n        ref={forwardedRef}\n        className={styles.SliderThumb}\n        {...rest}\n      />\n    )\n  }\n\n  return (\n    <Tooltip\n      content={value}\n      offset={6}\n      placement=\"top-center\"\n      onPointerDownOutside={(e) => e.preventDefault()}\n    >\n      <div\n        ref={forwardedRef}\n        className={styles.SliderThumb}\n        {...rest}\n      />\n    </Tooltip>\n  )\n})\n\n/**\n * An input component where the user selects a value from within a given range.\n * The value of the slider is shown in a tooltip, and in some cases you can add a guide scale.\n * @example\n *\n * ```tsx\n * const [value, setValue] = useState([1])\n * // Controlled\n * <Slider\n *   value={value}\n *   onValueChange={setValue}\n * />\n * // Uncontrolled\n * <Slider defaultValue={[1]} />\n * ```\n */\nexport const Slider = forwardRef<HTMLSpanElement, SliderProps>(function Slider(\n  {\n    className,\n    style,\n    width = 36,\n    guide,\n    defaultValue = [0],\n    value,\n    disabled = false,\n    min = 0,\n    max = 10,\n    step = 1,\n    minStepsBetweenThumbs = 0,\n    dir = 'ltr',\n    disableTooltip = false,\n    ...rest\n  },\n  forwardedRef\n) {\n  const targetValue = value || defaultValue\n\n  return (\n    <SliderPrimitive.Root\n      style={\n        {\n          '--b-slider-width': cssDimension(width),\n          ...style,\n        } as CSSProperties\n      }\n      className={classNames(styles.Slider, className)}\n      ref={forwardedRef}\n      orientation=\"horizontal\"\n      defaultValue={defaultValue}\n      value={value}\n      disabled={disabled}\n      min={min}\n      max={max}\n      step={step}\n      dir={dir}\n      minStepsBetweenThumbs={minStepsBetweenThumbs}\n      data-testid={SLIDER_TEST_ID}\n      {...rest}\n    >\n      <SliderPrimitive.Track className={styles.SliderPrimitiveTrack}>\n        <SliderPrimitive.Range className={styles.SliderPrimitiveRange} />\n\n        {guide && (\n          <div className={styles.GuideContainer}>\n            {guide.map((guideValue) => (\n              <SliderGuide\n                key={`slider-guide-${guideValue}`}\n                min={min}\n                max={max}\n                value={guideValue}\n              />\n            ))}\n          </div>\n        )}\n      </SliderPrimitive.Track>\n\n      {targetValue.map((_, i) => (\n        <SliderPrimitive.Thumb\n          // eslint-disable-next-line react/no-array-index-key\n          key={`slider-thumb-${i}`}\n          asChild\n        >\n          <SliderThumb disableTooltip={disableTooltip} />\n        </SliderPrimitive.Thumb>\n      ))}\n    </SliderPrimitive.Root>\n  )\n})\n"],"names":["SLIDER_TEST_ID","SliderGuide","memo","min","max","value","_jsx","className","styles","style","SliderThumb","forwardRef","disableTooltip","rest","forwardedRef","ref","Tooltip","content","offset","placement","onPointerDownOutside","e","preventDefault","children","Slider","width","guide","defaultValue","disabled","step","minStepsBetweenThumbs","dir","targetValue","_jsxs","SliderPrimitive","cssDimension","classNames","orientation","SliderPrimitiveTrack","SliderPrimitiveRange","GuideContainer","map","guideValue","_","i","asChild"],"mappings":"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"}