{"version":3,"file":"index.cjs","names":["SliderPrimitive","Input","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","AlertCircle"],"sources":["../../../src/components/Slider/Slider.tsx","../../../src/components/Slider/SliderBlock.tsx"],"sourcesContent":["import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport clsx from \"clsx\";\nimport { forwardRef, ReactNode, useMemo, useState } from \"react\";\n\nconst formatNumber = (num: number | undefined): string => {\n  if (num === undefined) {\n    return \"\";\n  }\n  // format number to k, m, b\n  if (num >= 1000) {\n    return new Intl.NumberFormat(\"en-US\", {\n      notation: \"compact\",\n      compactDisplay: \"short\",\n    })\n      .format(num)\n      .toLowerCase();\n  }\n  return String(num);\n};\n\nexport interface SliderProps\n  extends Omit<\n    React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n    \"value\" | \"defaultValue\"\n  > {\n  variant: \"continuous\" | \"discrete\";\n  min: number;\n  max: number;\n  step?: number;\n  disabled?: boolean;\n  value?: number[];\n  defaultValue?: number[];\n  className?: string;\n  style?: React.CSSProperties;\n  leftContent?: ReactNode;\n  rightContent?: ReactNode;\n}\n\nexport const Slider = forwardRef<React.ComponentRef<typeof SliderPrimitive.Root>, SliderProps>(\n  (\n    {\n      variant,\n      min,\n      max,\n      step,\n      disabled,\n      value,\n      defaultValue,\n      onValueChange,\n      className,\n      style,\n      leftContent,\n      rightContent,\n      ...props\n    },\n    ref,\n  ) => {\n    // used to show the correct value on thumb\n    const [internalValue, setInternalValue] = useState(\n      defaultValue && defaultValue.length > 0 ? defaultValue : [min],\n    );\n\n    const isControlled = value !== undefined;\n    const valueToShow = isControlled ? value : internalValue;\n\n    const isRange = valueToShow && valueToShow.length > 1;\n\n    const thumbs = useMemo(() => {\n      const thumbClass = \"openui-slider-thumb-handle\";\n      const valueIndicatorClass = \"openui-slider-thumb-value\";\n\n      if (isRange) {\n        return (\n          <>\n            {valueToShow?.map((v, i) => (\n              <SliderPrimitive.Thumb key={i} className=\"openui-slider-thumb\">\n                <div className={thumbClass}>\n                  <div className=\"openui-slider-thumb-handle-inner\">\n                    <div className=\"openui-slider-thumb-handle-inner-dot\" />\n                  </div>\n                  {!disabled && <div className={valueIndicatorClass}>{formatNumber(v)}</div>}\n                </div>\n              </SliderPrimitive.Thumb>\n            ))}\n          </>\n        );\n      }\n\n      return (\n        <SliderPrimitive.Thumb className=\"openui-slider-thumb\">\n          <div className={thumbClass}>\n            <div className=\"openui-slider-thumb-handle-inner\">\n              <div className=\"openui-slider-thumb-handle-inner-dot\" />\n            </div>\n            {!disabled && (\n              <div className={valueIndicatorClass}>{formatNumber(valueToShow?.[0])}</div>\n            )}\n          </div>\n        </SliderPrimitive.Thumb>\n      );\n    }, [disabled, valueToShow, isRange]);\n\n    const renderDots = () => {\n      if (variant === \"discrete\" && step) {\n        const numSteps = Math.floor((max - min) / step);\n        const currentValue = valueToShow?.[0] ?? min;\n\n        return Array.from({ length: numSteps + 1 }, (_, index) => {\n          const value = min + step * index;\n          const position = ((value - min) / (max - min)) * 100;\n          const isActive = isRange\n            ? value >= (valueToShow?.[0] ?? min) && value <= (valueToShow?.[1] ?? max)\n            : value <= currentValue;\n\n          return (\n            <div\n              key={value}\n              className={clsx(\"openui-slider-dots-dot\", {\n                \"openui-slider-dots-dot--active\": isActive,\n              })}\n              style={{ left: `${position}%` }}\n            />\n          );\n        });\n      }\n      return null;\n    };\n\n    return (\n      <div className=\"openui-slider-wrapper\">\n        {leftContent && <div className=\"openui-slider-left-content\">{leftContent}</div>}\n        <div className=\"openui-slider-container-wrapper\">\n          <div className=\"openui-slider-container\">\n            <SliderPrimitive.Root\n              ref={ref}\n              className={clsx(\n                \"openui-slider-root\",\n                { \"openui-slider--disabled\": disabled },\n                className,\n              )}\n              {...props}\n              min={min}\n              max={max}\n              step={step}\n              value={valueToShow}\n              onValueChange={(val) => {\n                if (!isControlled) {\n                  setInternalValue(val);\n                }\n                onValueChange?.(val);\n              }}\n              minStepsBetweenThumbs={1}\n              disabled={disabled}\n              key={variant}\n              style={style}\n            >\n              <SliderPrimitive.Track className=\"openui-slider-track\">\n                <SliderPrimitive.Range\n                  className={clsx(\"openui-slider-range\", {\n                    \"openui-slider-range--at-min\": !isRange && valueToShow?.[0] === min,\n                  })}\n                />\n                {variant === \"discrete\" && renderDots()}\n              </SliderPrimitive.Track>\n              {thumbs}\n            </SliderPrimitive.Root>\n          </div>\n          <div className=\"openui-slider-labels\">\n            <span>{formatNumber(min)}</span>\n            <span>{formatNumber(max)}</span>\n          </div>\n        </div>\n        {rightContent && <div className=\"openui-slider-right-content\">{rightContent}</div>}\n      </div>\n    );\n  },\n);\n","import clsx from \"clsx\";\nimport debounce from \"lodash-es/debounce\";\nimport { AlertCircle } from \"lucide-react\";\nimport { ChangeEvent, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Input } from \"../Input\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../Select\";\nimport { Slider, SliderProps } from \"./Slider\";\n\nexport interface SliderBlockProps extends Omit<SliderProps, \"value\" | \"defaultValue\"> {\n  label: string;\n  defaultValue?: number[];\n}\n\nconst ValueInput = ({\n  value,\n  onChange,\n  error,\n  disabled,\n}: {\n  value: number;\n  onChange: (newValue: number) => void;\n  error: string | undefined;\n  disabled?: boolean;\n}) => {\n  const [inputValue, setInputValue] = useState<string | number>(value);\n  const [isFocused, setIsFocused] = useState(false);\n\n  useEffect(() => {\n    if (!isFocused) {\n      setInputValue(value);\n    }\n  }, [value, isFocused]);\n\n  return (\n    <div className=\"openui-slider-block__validated-input\">\n      <Input\n        type=\"text\"\n        value={inputValue}\n        onChange={(e: ChangeEvent<HTMLInputElement>) => {\n          const { value: newValue } = e.target;\n          setInputValue(newValue);\n\n          if (!isNaN(Number(newValue))) {\n            onChange(Number(newValue));\n          }\n        }}\n        className={clsx(\"openui-slider-block__input\", {\n          \"openui-slider-block__input-error\": error,\n        })}\n        disabled={disabled}\n        onFocus={() => setIsFocused(true)}\n        onBlur={() => setIsFocused(false)}\n      />\n    </div>\n  );\n};\n\nexport const SliderBlock = (props: SliderBlockProps) => {\n  const {\n    label,\n    name,\n    variant,\n    min = 0,\n    max = 100,\n    step,\n    defaultValue,\n    disabled,\n    ...sliderProps\n  } = props;\n\n  const [value, setValue] = useState(defaultValue ?? [min]);\n\n  const { min: minError, max: maxError } = useMemo(() => {\n    const [minValue, maxValue] = value;\n    const checkValue = (v: number) => {\n      if (isNaN(v)) return \"Invalid number\";\n      if (v < min || v > max) return `Value must be between ${min} and ${max}`;\n      return \"\";\n    };\n    const error = { min: checkValue(minValue!), max: checkValue(maxValue!) };\n\n    if (value.length > 1 && minValue! > maxValue!) {\n      error.min = \"Min must be less than max\";\n    }\n\n    return error;\n  }, [value, min, max]);\n\n  const onValueCommitRef = useRef((sliderProps as any)?.onValueCommit);\n  onValueCommitRef.current = (sliderProps as any).onValueCommit;\n\n  const debouncedOnValueCommit = useMemo(\n    () =>\n      debounce((newValue: number[]) => {\n        onValueCommitRef.current?.(newValue);\n      }, 200),\n    [],\n  );\n\n  useEffect(() => {\n    return () => {\n      debouncedOnValueCommit.flush();\n    };\n  }, [debouncedOnValueCommit]);\n\n  const setValueAndCommit = useCallback(\n    (newValue: number[]) => {\n      setValue(newValue);\n      debouncedOnValueCommit(newValue);\n    },\n    [debouncedOnValueCommit],\n  );\n\n  useEffect(() => {\n    setValue(defaultValue ?? [min]);\n  }, [defaultValue, min]);\n\n  const isRange = value.length > 1;\n  const isDiscrete = variant === \"discrete\";\n  const effectiveStep = isDiscrete ? (step ?? 1) : Math.max(1, step ?? 1);\n\n  const controlElements = useMemo(() => {\n    if (isDiscrete) {\n      const allOptions = Array.from(\n        { length: Math.floor((max - min) / effectiveStep) + 1 },\n        (_, i) => min + i * effectiveStep,\n      );\n      return isRange ? (\n        <div className=\"openui-slider-block__controls is-range\">\n          <div className=\"openui-slider-block__validated-select-container\">\n            <Select\n              value={String(value[0])}\n              disabled={disabled}\n              onValueChange={(val) =>\n                setValueAndCommit([Number(val), value[1] ?? max].sort((a, b) => a - b))\n              }\n            >\n              <SelectTrigger>\n                <SelectValue />\n              </SelectTrigger>\n              <SelectContent>\n                {allOptions\n                  .filter((o) => o < (value[1] ?? max))\n                  .map((o) => (\n                    <SelectItem key={o} value={String(o)}>\n                      {String(o)}\n                    </SelectItem>\n                  ))}\n              </SelectContent>\n            </Select>\n            <div className=\"openui-slider-block__separator\" />\n            <Select\n              value={String(value[1])}\n              disabled={disabled}\n              onValueChange={(val) =>\n                setValueAndCommit([value[0] ?? min, Number(val)].sort((a, b) => a - b))\n              }\n            >\n              <SelectTrigger>\n                <SelectValue />\n              </SelectTrigger>\n              <SelectContent>\n                {allOptions\n                  .filter((o) => o > (value[0] ?? min))\n                  .map((o) => (\n                    <SelectItem key={o} value={String(o)}>\n                      {String(o)}\n                    </SelectItem>\n                  ))}\n              </SelectContent>\n            </Select>\n          </div>\n        </div>\n      ) : (\n        <div className=\"openui-slider-block__controls is-single\">\n          <Select\n            value={String(value[0])}\n            disabled={disabled}\n            onValueChange={(val) => setValueAndCommit([Number(val)])}\n          >\n            <SelectTrigger>\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              {allOptions.map((o) => (\n                <SelectItem key={o} value={String(o)}>\n                  {String(o)}\n                </SelectItem>\n              ))}\n            </SelectContent>\n          </Select>\n        </div>\n      );\n    } else {\n      return isRange ? (\n        <div className=\"openui-slider-block__controls openui-slider-block__controls--inputs is-range\">\n          <div className=\"openui-slider-block__validated-input-container\">\n            <ValueInput\n              value={value[0] ?? min}\n              onChange={(newMin) => setValueAndCommit([newMin, value[1] ?? max])}\n              error={minError}\n              disabled={disabled}\n            />\n            <div className=\"openui-slider-block__separator\" />\n            <ValueInput\n              value={value[1] ?? max}\n              onChange={(newMax) => setValueAndCommit([value[0] ?? min, newMax])}\n              error={maxError}\n              disabled={disabled}\n            />\n          </div>\n          {(minError || maxError) && (\n            <div className=\"openui-slider-block__error-message\">\n              <AlertCircle size={14} /> {minError || maxError}\n            </div>\n          )}\n        </div>\n      ) : (\n        <div className=\"openui-slider-block__controls openui-slider-block__controls--inputs is-single\">\n          <ValueInput\n            value={value[0] ?? min}\n            onChange={(newVal) => setValueAndCommit([newVal])}\n            error={minError}\n            disabled={disabled}\n          />\n          {minError && (\n            <div className=\"openui-slider-block__error-message\">\n              <AlertCircle size={14} />\n              {minError}\n            </div>\n          )}\n        </div>\n      );\n    }\n  }, [\n    isDiscrete,\n    isRange,\n    value,\n    min,\n    max,\n    effectiveStep,\n    minError,\n    maxError,\n    disabled,\n    setValueAndCommit,\n  ]);\n\n  const hasError = !isDiscrete && (isRange ? Boolean(minError || maxError) : Boolean(minError));\n\n  return (\n    <div className=\"openui-slider-block\">\n      <div\n        className={clsx(\"openui-slider-block__header\", {\n          \"openui-slider-block__header--with-error\": hasError,\n        })}\n      >\n        <span className=\"openui-slider-block__label\">{label}</span>\n        {controlElements}\n      </div>\n      <div className=\"openui-slider-block__content\">\n        <Slider\n          {...sliderProps}\n          value={value}\n          onValueChange={(v) => {\n            setValueAndCommit([...v].sort((a, b) => a - b));\n          }}\n          min={min}\n          max={max}\n          step={effectiveStep}\n          variant={variant}\n          name={name}\n          disabled={disabled}\n        />\n      </div>\n    </div>\n  );\n};\n"],"mappings":"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"}