{"mappings":"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","sources":["packages/@adobe/react-spectrum/src/slider/Slider.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {clamp} from 'react-stately/private/utils/number';\nimport {classNames} from '../utils/classNames';\nimport {FocusableRef, InputDOMProps} from '@react-types/shared';\nimport React, {ReactNode} from 'react';\nimport {\n  SliderBase,\n  SliderBaseChildArguments,\n  SliderBaseProps,\n  SpectrumBarSliderBase\n} from './SliderBase';\nimport {SliderThumb} from './SliderThumb';\nimport styles from '@adobe/spectrum-css-temp/components/slider/vars.css';\nimport {useLocale} from 'react-aria/I18nProvider';\n\nexport interface SpectrumSliderProps extends SpectrumBarSliderBase<number>, InputDOMProps {\n  /**\n   * Whether a fill color is shown between the start of the slider and the current value.\n   *\n   * @see https://spectrum.adobe.com/page/slider/#Fill.\n   */\n  isFilled?: boolean;\n  /**\n   * The offset from which to start the fill.\n   *\n   * @see https://spectrum.adobe.com/page/slider/#Fill-start.\n   */\n  fillOffset?: number;\n  /**\n   * The background of the track, specified as the stops for a CSS background: `linear-gradient(to\n   * right/left, ...trackGradient)`.\n   *\n   * @example\n   *   trackGradient={['red', 'green']}\n   *\n   * @example\n   *   trackGradient={['red 20%', 'green 40%']}\n   *\n   * @see https://spectrum.adobe.com/page/slider/#Gradient.\n   */\n  trackGradient?: string[];\n}\n\n/**\n * Sliders allow users to quickly select a value within a range. They should be used when the upper\n * and lower bounds to the range are invariable.\n */\nexport const Slider = React.forwardRef(function Slider(\n  props: SpectrumSliderProps,\n  ref: FocusableRef<HTMLDivElement>\n) {\n  let {\n    onChange,\n    onChangeEnd,\n    value,\n    defaultValue,\n    isFilled,\n    fillOffset,\n    trackGradient,\n    getValueLabel,\n    ...otherProps\n  } = props;\n\n  let baseProps: Omit<SliderBaseProps, 'children'> = {\n    ...otherProps,\n    // Normalize `value: number[]` to `value: number`\n    value: value != null ? [value] : undefined,\n    defaultValue: defaultValue != null ? [defaultValue] : undefined,\n    onChange: (v: number[]): void => {\n      onChange?.(v[0]);\n    },\n    onChangeEnd: (v: number[]): void => {\n      onChangeEnd?.(v[0]);\n    },\n    getValueLabel: getValueLabel ? ([v]) => getValueLabel(v) : undefined\n  };\n\n  let {direction} = useLocale();\n\n  return (\n    <SliderBase\n      {...baseProps}\n      ref={ref}\n      classes={{\n        'spectrum-Slider--filled': isFilled && fillOffset == null\n      }}\n      style={{\n        // @ts-ignore\n        '--spectrum-slider-track-gradient':\n          trackGradient &&\n          `linear-gradient(to ${direction === 'ltr' ? 'right' : 'left'}, ${trackGradient.join(', ')})`\n      }}>\n      {({trackRef, inputRef, state}: SliderBaseChildArguments) => {\n        fillOffset =\n          fillOffset != null\n            ? clamp(fillOffset, state.getThumbMinValue(0), state.getThumbMaxValue(0))\n            : fillOffset;\n        let cssDirection = direction === 'rtl' ? 'right' : 'left';\n\n        let lowerTrack = (\n          <div\n            className={classNames(styles, 'spectrum-Slider-track')}\n            style={{\n              width: `${state.getThumbPercent(0) * 100}%`,\n              // TODO not sure if it has advantages, but this could also be implemented as CSS calc():\n              // .track::before {\n              //    background-size: calc((1/ (var(--width)/100)) * 100%);\n              //    width: calc(var(--width) * 1%)M\n              // }\n              // @ts-ignore\n              '--spectrum-track-background-size': `${(1 / state.getThumbPercent(0)) * 100}%`,\n              '--spectrum-track-background-position': direction === 'ltr' ? '0' : '100%'\n            }}\n          />\n        );\n        let upperTrack = (\n          <div\n            className={classNames(styles, 'spectrum-Slider-track')}\n            style={{\n              width: `${(1 - state.getThumbPercent(0)) * 100}%`,\n              // @ts-ignore\n              '--spectrum-track-background-size': `${(1 / (1 - state.getThumbPercent(0))) * 100}%`,\n              '--spectrum-track-background-position': direction === 'ltr' ? '100%' : '0'\n            }}\n          />\n        );\n\n        let filledTrack: ReactNode = null;\n        if (isFilled && fillOffset != null) {\n          let width = state.getThumbPercent(0) - state.getValuePercent(fillOffset);\n          let isRightOfOffset = width > 0;\n          let offset = isRightOfOffset\n            ? state.getValuePercent(fillOffset)\n            : state.getThumbPercent(0);\n          filledTrack = (\n            <div\n              className={classNames(styles, 'spectrum-Slider-fill', {\n                'spectrum-Slider-fill--right': isRightOfOffset\n              })}\n              style={{\n                [cssDirection]: `${offset * 100}%`,\n                width: `${Math.abs(width) * 100}%`\n              }}\n            />\n          );\n        }\n\n        return (\n          <>\n            {lowerTrack}\n            <SliderThumb\n              index={0}\n              isDisabled={props.isDisabled}\n              trackRef={trackRef}\n              inputRef={inputRef}\n              state={state}\n              name={props.name}\n              form={props.form}\n            />\n            {filledTrack}\n            {upperTrack}\n          </>\n        );\n      }}\n    </SliderBase>\n  );\n});\n"],"names":[],"version":3,"file":"Slider.cjs.map"}