{"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;AAkCM,MAAM,0DAAS,CAAA,GAAA,sCAAI,EAAE,UAAU,CAAC,SAAS,OAAO,KAA0B,EAAE,GAAiC;IAClH,IAAI,YAAC,QAAQ,eAAE,WAAW,SAAE,KAAK,gBAAE,YAAY,YAAE,QAAQ,cAAE,UAAU,iBAAE,aAAa,iBAAE,aAAa,EAAE,GAAG,YAAW,GAAG;IAEtH,IAAI,YAA+C;QACjD,GAAG,UAAU;QACb,iDAAiD;QACjD,OAAO,SAAS,OAAO;YAAC;SAAM,GAAG;QACjC,cAAc,gBAAgB,OAAO;YAAC;SAAa,GAAG;QACtD,UAAU,CAAC;YACT,WAAW,CAAC,CAAC,EAAE;QACjB;QACA,aAAa,CAAC;YACZ,cAAc,CAAC,CAAC,EAAE;QACpB;QACA,eAAe,gBAAgB,CAAC,CAAC,EAAE,GAAK,cAAc,KAAK;IAC7D;IAEA,IAAI,aAAC,SAAS,EAAC,GAAG,CAAA,GAAA,sCAAQ;IAE1B,qBACE,0DAAC,CAAA,GAAA,oCAAS;QACP,GAAG,SAAS;QACb,KAAK;QACL,SAAS;YACP,2BAA2B,YAAY,cAAc;QACvD;QACA,OACE,aAAa;QACb;YAAC,oCAAoC,iBAAiB,CAAC,mBAAmB,EAAE,cAAc,QAAQ,UAAU,OAAO,EAAE,EAAE,cAAc,IAAI,CAAC,MAAM,CAAC,CAAC;QAAA;OAEnJ,CAAC,YAAC,QAAQ,YAAE,QAAQ,SAAE,KAAK,EAA2B;QACrD,aAAa,cAAc,OAAO,CAAA,GAAA,2CAAI,EAAE,YAAY,MAAM,gBAAgB,CAAC,IAAI,MAAM,gBAAgB,CAAC,MAAM;QAC5G,IAAI,eAAe,cAAc,QAAQ,UAAU;QAEnD,IAAI,2BACF,0DAAC;YACC,WAAW,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;YAC9B,OAAO;gBACL,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC3C,wFAAwF;gBACxF,mBAAmB;gBACnB,4DAA4D;gBAC5D,qCAAqC;gBACrC,IAAI;gBACJ,aAAa;gBACb,oCAAoC,GAAG,AAAC,IAAI,MAAM,eAAe,CAAC,KAAM,IAAI,CAAC,CAAC;gBAC9E,wCAAwC,cAAc,QAAQ,MAAM;YACtE;;QAEJ,IAAI,2BACF,0DAAC;YACC,WAAW,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;YAC9B,OAAO;gBACL,OAAO,GAAG,AAAC,CAAA,IAAI,MAAM,eAAe,CAAC,EAAC,IAAK,IAAI,CAAC,CAAC;gBACjD,aAAa;gBACb,oCAAoC,GAAG,AAAC,IAAK,CAAA,IAAI,MAAM,eAAe,CAAC,EAAC,IAAM,IAAI,CAAC,CAAC;gBACpF,wCAAwC,cAAc,QAAQ,SAAS;YACzE;;QAGJ,IAAI,cAAyB;QAC7B,IAAI,YAAY,cAAc,MAAM;YAClC,IAAI,QAAQ,MAAM,eAAe,CAAC,KAAK,MAAM,eAAe,CAAC;YAC7D,IAAI,kBAAkB,QAAQ;YAC9B,IAAI,SAAS,kBAAkB,MAAM,eAAe,CAAC,cAAc,MAAM,eAAe,CAAC;YACzF,4BACE,0DAAC;gBACC,WAAW,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG,wBAAwB;oBAAC,+BAA+B;gBAAe;gBACrG,OAAO;oBACL,CAAC,aAAa,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC;oBAClC,OAAO,GAAG,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;gBACpC;;QAEN;QAEA,qBACE,sHACG,0BACD,0DAAC,CAAA,GAAA,qCAAU;YACT,OAAO;YACP,YAAY,MAAM,UAAU;YAC5B,UAAU;YACV,UAAU;YACV,OAAO;YACP,MAAM,MAAM,IAAI;YAChB,MAAM,MAAM,IAAI;YACjB,aACA;IAGP;AAGN","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 {SliderBase, SliderBaseChildArguments, SliderBaseProps, SpectrumBarSliderBase} 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   * @see https://spectrum.adobe.com/page/slider/#Fill.\n   */\n  isFilled?: boolean,\n  /**\n   * The offset from which to start the fill.\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 right/left, ...trackGradient)`.\n   * @example trackGradient={['red', 'green']}\n   * @example trackGradient={['red 20%', 'green 40%']}\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 and lower bounds to the range are invariable.\n */\nexport const Slider = React.forwardRef(function Slider(props: SpectrumSliderProps, ref: FocusableRef<HTMLDivElement>) {\n  let {onChange, onChangeEnd, value, defaultValue, isFilled, fillOffset, trackGradient, getValueLabel, ...otherProps} = 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': trackGradient && `linear-gradient(to ${direction === 'ltr' ? 'right' : 'left'}, ${trackGradient.join(', ')})`}\n      }>\n      {({trackRef, inputRef, state}: SliderBaseChildArguments) => {\n        fillOffset = fillOffset != null ? clamp(fillOffset, state.getThumbMinValue(0), state.getThumbMaxValue(0)) : 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        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        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 ? state.getValuePercent(fillOffset) : state.getThumbPercent(0);\n          filledTrack = (\n            <div\n              className={classNames(styles, 'spectrum-Slider-fill', {'spectrum-Slider-fill--right': isRightOfOffset})}\n              style={{\n                [cssDirection]: `${offset * 100}%`,\n                width: `${Math.abs(width) * 100}%`\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            {filledTrack}\n            {upperTrack}\n          </>\n        );\n      }}\n    </SliderBase>\n  );\n});\n"],"names":[],"version":3,"file":"Slider.cjs.map"}