@yamada-ui/slider
Version:
Yamada UI slider components
1 lines • 42.4 kB
Source Map (JSON)
{"version":3,"sources":["../src/range-slider.tsx"],"sourcesContent":["import type {\n CSSUIObject,\n CSSUIProps,\n HTMLProps,\n HTMLUIProps,\n PropGetter,\n RequiredPropGetter,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { Merge } from \"@yamada-ui/utils\"\nimport type { CSSProperties, KeyboardEvent, KeyboardEventHandler } from \"react\"\nimport {\n forwardRef,\n mergeVars,\n omitThemeProps,\n ui,\n useComponentMultiStyle,\n} from \"@yamada-ui/core\"\nimport {\n formControlProperties,\n useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport { useLatestRef } from \"@yamada-ui/use-latest-ref\"\nimport { usePanEvent } from \"@yamada-ui/use-pan-event\"\nimport { useSizes } from \"@yamada-ui/use-size\"\nimport {\n clampNumber,\n createContext,\n cx,\n dataAttr,\n findChild,\n getValidChildren,\n handlerAll,\n includesChildren,\n isArray,\n isEmpty,\n mergeRefs,\n omitChildren,\n percentToValue,\n pickObject,\n roundNumberToStep,\n useCallbackRef,\n useUpdateEffect,\n valueToPercent,\n} from \"@yamada-ui/utils\"\nimport { useCallback, useId, useRef, useState } from \"react\"\nimport { getThumbSize } from \"./slider\"\n\nexport interface UseRangeSliderOptions {\n /**\n * The base `id` to use for the slider.\n */\n id?: string\n /**\n * The name attribute of the hidden `input` field.\n * This is particularly useful in forms.\n */\n name?: [string, string] | string\n /**\n * The minimum distance between slider thumbs.\n * Useful for preventing the thumbs from being too close together.\n *\n * @default 0\n */\n betweenThumbs?: number\n /**\n * The initial value of the slider.\n */\n defaultValue?: [number, number]\n /**\n * If `false`, the slider handle will not capture focus when value changes.\n *\n * @default true\n */\n focusThumbOnChange?: boolean\n /**\n * This is used to format the value so that screen readers\n * can speak out a more human-friendly value.\n *\n * It is used to set the `aria-valuetext` property of the input.\n */\n getAriaValueText?: (value: number) => string | undefined\n /**\n * If `true`, the value will be incremented or decremented in reverse.\n *\n * @deprecated Use `reversed` instead.\n */\n isReversed?: boolean\n /**\n * The maximum allowed value of the slider. Cannot be less than min.\n *\n * @default 100\n */\n max?: number\n /**\n * The minimum allowed value of the slider. Cannot be greater than max.\n *\n * @default 0\n */\n min?: number\n /**\n * The orientation of the slider.\n *\n * @default 'horizontal'\n */\n orientation?: \"horizontal\" | \"vertical\"\n /**\n * If `true`, the value will be incremented or decremented in reverse.\n */\n reversed?: boolean\n /**\n * The step in which increments or decrements have to be made.\n *\n * @default 1\n */\n step?: number\n /**\n * The CSS `box-size` property.\n * Used for calculating the width, height, and percentage of the container element.\n */\n thumbSize?: CSSUIProps[\"boxSize\"]\n /**\n * The value of the slider.\n */\n value?: [number, number]\n /**\n * Function called whenever the slider value changes.\n */\n onChange?: (value: [number, number]) => void\n /**\n * Function called when the user is done selecting a new value.\n */\n onChangeEnd?: (value: [number, number]) => void\n /**\n * Function called when the user starts selecting a new value.\n */\n onChangeStart?: (value: [number, number]) => void\n}\nexport interface UseRangeSliderProps\n extends Merge<HTMLUIProps, FormControlOptions & UseRangeSliderOptions> {}\n\nexport const useRangeSlider = ({\n focusThumbOnChange = true,\n ...props\n}: UseRangeSliderProps) => {\n if (!focusThumbOnChange) props.isReadOnly = true\n\n const uuid = useId()\n const {\n id = uuid,\n name = id,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-valuetext\": ariaValueText,\n betweenThumbs = 0,\n max = 100,\n min = 0,\n defaultValue = [min + (max - min) / 4, max - (max - min) / 4],\n getAriaValueText: getAriaValueTextProp,\n isReversed,\n orientation = \"horizontal\",\n reversed = isReversed,\n step = 1,\n thumbSize: thumbSizeProp,\n value: valueProp,\n onChange,\n onChangeEnd: onChangeEndProp,\n onChangeStart: onChangeStartProp,\n ...rest\n } = useFormControlProps(props)\n\n if (max < min)\n throw new Error(\"Do not assign a number less than 'min' to 'max'\")\n\n const {\n \"aria-readonly\": ariaReadonly,\n disabled,\n readOnly,\n required,\n onBlur,\n onFocus,\n ...formControlProps\n } = pickObject(rest, formControlProperties)\n const [computedValues, setValues] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange,\n })\n const [dragging, setDragging] = useState(false)\n const [focused, setFocused] = useState(false)\n const interactive = !(disabled || readOnly)\n const tenStep = (max - min) / 10\n const oneStep = step || (max - min) / 100\n const spacing = betweenThumbs * step\n const values = computedValues.map((value) =>\n clampNumber(value, min, max),\n ) as [number, number]\n const [startValue, endValue] = values\n const reversedValues = values.map((value) => max - value + min) as [\n number,\n number,\n ]\n const thumbValues = reversed ? reversedValues : values\n const thumbPercents = thumbValues.map((value) =>\n valueToPercent(value, min, max),\n ) as [number, number]\n const valueBounds = [\n { max: endValue - spacing, min },\n { max, min: startValue + spacing },\n ]\n const vertical = orientation === \"vertical\"\n const latestRef = useLatestRef({\n betweenThumbs,\n disabled,\n focusThumbOnChange,\n interactive,\n max,\n min,\n orientation,\n reversed,\n step,\n valueBounds,\n values,\n vertical,\n })\n const activeIndexRef = useRef<number>(-1)\n const eventSourceRef = useRef<\"keyboard\" | \"pointer\" | null>(null)\n const containerRef = useRef<HTMLElement>(null)\n const trackRef = useRef<HTMLElement>(null)\n const thumbSizes = useSizes({\n getNodes: () => {\n const nodes =\n containerRef.current?.querySelectorAll<HTMLElement>(\"[role=slider]\")\n\n return nodes ? Array.from(nodes) : []\n },\n })\n const onChangeStart = useCallbackRef(onChangeStartProp)\n const onChangeEnd = useCallbackRef(onChangeEndProp)\n const getAriaValueText = useCallbackRef(getAriaValueTextProp)\n const getThumbId = useCallback((i: number) => `slider-thumb-${id}-${i}`, [id])\n const getInputId = useCallback((i: number) => `slider-input-${id}-${i}`, [id])\n const getMarkerId = useCallback(\n (i: number) => `slider-marker-${id}-${i}`,\n [id],\n )\n\n usePanEvent(containerRef, {\n onMove: (ev) => {\n const activeIndex = activeIndexRef.current\n const { interactive } = latestRef.current\n\n if (!interactive || activeIndex == -1) return\n\n const pointValue = getValueFromPointer(ev) || 0\n\n constrain(activeIndex, pointValue)\n\n focusThumb(activeIndex)\n },\n onSessionEnd: () => {\n const { interactive, values } = latestRef.current\n\n if (!interactive) return\n\n setDragging(false)\n onChangeEnd(values)\n },\n onSessionStart: (ev) => {\n const { interactive, values } = latestRef.current\n\n if (!interactive) return\n\n setDragging(true)\n\n const pointValue = getValueFromPointer(ev) || 0\n const distances = values.map((value) => Math.abs(value - pointValue)) as [\n number,\n number,\n ]\n const closest = Math.min(...distances)\n\n let i = distances.indexOf(closest)\n\n const thumbsPosition = distances.filter(\n (distance) => distance === closest,\n )\n const isThumbStacked = thumbsPosition.length > 1\n\n if (isThumbStacked && pointValue > values[i]!)\n i = i + thumbsPosition.length - 1\n\n activeIndexRef.current = i\n\n constrain(i, pointValue)\n focusThumb(i)\n\n onChangeStart(values)\n },\n })\n\n const getValueFromPointer = useCallback(\n (ev: any) => {\n if (!trackRef.current) return\n\n const { max, min } = latestRef.current\n\n eventSourceRef.current = \"pointer\"\n\n const { bottom, height, left, width } =\n trackRef.current.getBoundingClientRect()\n const { clientX, clientY } = ev.touches?.[0] ?? ev\n\n const diff = vertical ? bottom - clientY : clientX - left\n\n const length = vertical ? height : width\n\n let percent = diff / length\n\n if (reversed) percent = 1 - percent\n\n let nextValue = percentToValue(percent, min, max)\n\n return nextValue\n },\n [latestRef, vertical, reversed],\n )\n\n const focusThumb = useCallback(\n (i: number) => {\n if (i === -1 || !focusThumbOnChange) return\n\n const id = getThumbId(i)\n\n const el = containerRef.current?.ownerDocument.getElementById(id)\n\n if (el) setTimeout(() => el.focus())\n },\n [focusThumbOnChange, getThumbId],\n )\n\n const constrain = useCallback(\n (i: number, value: number) => {\n const { interactive, valueBounds, values } = latestRef.current\n\n if (!interactive) return\n\n const { max = 100, min = 0 } = valueBounds[i] ?? {}\n\n value = parseFloat(roundNumberToStep(value, min, oneStep))\n value = clampNumber(value, min, max)\n\n const nextValues = [...values] as [number, number]\n\n nextValues[i] = value\n\n setValues(nextValues)\n },\n [latestRef, oneStep, setValues],\n )\n\n const stepUp = useCallback(\n (i: number, step = oneStep) => {\n const { values } = latestRef.current\n\n const value = values[i]!\n\n constrain(i, reversed ? value - step : value + step)\n },\n [constrain, reversed, latestRef, oneStep],\n )\n\n const stepDown = useCallback(\n (i: number, step = oneStep) => {\n const { values } = latestRef.current\n\n const value = values[i]!\n\n constrain(i, reversed ? value + step : value - step)\n },\n [constrain, reversed, latestRef, oneStep],\n )\n\n const reset = useCallback(\n () => setValues(defaultValue as [number, number]),\n [defaultValue, setValues],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLElement>) => {\n const activeIndex = activeIndexRef.current\n const { valueBounds } = latestRef.current\n const { max = 100, min = 0 } = valueBounds[activeIndex] ?? {}\n\n const actions: { [key: string]: KeyboardEventHandler } = {\n ArrowDown: () => stepDown(activeIndex),\n ArrowLeft: () => stepDown(activeIndex),\n ArrowRight: () => stepUp(activeIndex),\n ArrowUp: () => stepUp(activeIndex),\n End: () => constrain(activeIndex, max),\n Home: () => constrain(activeIndex, min),\n PageDown: () => stepDown(activeIndex, tenStep),\n PageUp: () => stepUp(activeIndex, tenStep),\n }\n\n const action = actions[ev.key]\n\n if (!action) return\n\n ev.preventDefault()\n ev.stopPropagation()\n\n action(ev)\n\n eventSourceRef.current = \"keyboard\"\n },\n [constrain, latestRef, stepDown, stepUp, tenStep],\n )\n\n useUpdateEffect(() => {\n const { values } = latestRef.current\n\n if (eventSourceRef.current === \"keyboard\") onChangeEnd(values)\n }, [startValue, endValue, onChangeEnd])\n\n const getContainerProps: PropGetter = useCallback(\n (props = {}, ref = null) => {\n let w: number | string = \"var(--ui-thumb-size)\"\n let h: number | string = \"var(--ui-thumb-size)\"\n\n if (thumbSizes.length) {\n const p = vertical ? \"height\" : \"width\"\n const z = { height: 0, width: 0 }\n const { height, width } =\n thumbSizes.reduce((a = z, b = z) => (a[p] > b[p] ? a : b), z) ?? {}\n\n if (width) w = `${width}px`\n if (height) h = `${height}px`\n }\n\n const paddingStyle = vertical\n ? { paddingLeft: `calc(${w} / 2)`, paddingRight: `calc(${w} / 2)` }\n : { paddingBottom: `calc(${h} / 2)`, paddingTop: `calc(${h} / 2)` }\n\n const style: CSSProperties = {\n ...props.style,\n outline: 0,\n position: \"relative\",\n touchAction: \"none\",\n userSelect: \"none\",\n WebkitTapHighlightColor: \"rgba(0, 0, 0, 0)\",\n ...paddingStyle,\n }\n\n return {\n ...rest,\n ...props,\n id: `slider-container-${id}`,\n ref: mergeRefs(ref, containerRef),\n style,\n tabIndex: -1,\n vars: mergeVars(rest.vars, [\n {\n name: \"thumb-size\",\n token: \"sizes\",\n value: thumbSizeProp,\n __prefix: \"ui\",\n },\n ]),\n }\n },\n [id, vertical, rest, thumbSizeProp, thumbSizes],\n )\n\n const getInputProps: RequiredPropGetter<\n { index: number } & HTMLProps<\"input\">,\n HTMLProps<\"input\">\n > = useCallback(\n ({ index: i, ...props }, ref = null) => ({\n \"aria-readonly\": ariaReadonly,\n ...formControlProps,\n ...props,\n id: getInputId(i),\n ref,\n type: \"hidden\",\n name: isArray(name) ? name[i] : `${name}-${i}`,\n disabled,\n readOnly,\n required,\n value: values[i],\n }),\n [\n ariaReadonly,\n disabled,\n getInputId,\n name,\n readOnly,\n required,\n formControlProps,\n values,\n ],\n )\n\n const getTrackProps: PropGetter = useCallback(\n (props = {}, ref = null) => {\n const style: CSSProperties = {\n ...props.style,\n position: \"absolute\",\n ...(vertical\n ? {\n height: \"100%\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n }\n : {\n top: \"50%\",\n transform: \"translateY(-50%)\",\n width: \"100%\",\n }),\n }\n\n return {\n ...formControlProps,\n ...props,\n id: `slider-track-${id}`,\n ref: mergeRefs(ref, trackRef),\n style,\n }\n },\n [id, vertical, formControlProps],\n )\n\n const getFilledTrackProps: PropGetter = useCallback(\n (props = {}, ref = null) => {\n const n = Math.abs(thumbPercents[1] - thumbPercents[0])\n const s = reversed ? 100 - thumbPercents[0] : thumbPercents[0]\n\n const style: CSSProperties = {\n ...props.style,\n position: \"absolute\",\n ...(vertical\n ? {\n height: `${n}%`,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n ...(reversed ? { top: `${s}%` } : { bottom: `${s}%` }),\n }\n : {\n top: \"50%\",\n transform: \"translateY(-50%)\",\n width: `${n}%`,\n ...(reversed ? { right: `${s}%` } : { left: `${s}%` }),\n }),\n }\n\n return {\n ...formControlProps,\n ...props,\n id: `slider-filled-track-${id}`,\n ref,\n style,\n }\n },\n [id, reversed, vertical, formControlProps, thumbPercents],\n )\n\n const getMarkProps: RequiredPropGetter<\n { value: number } & HTMLProps,\n HTMLProps\n > = useCallback(\n (props, ref = null) => {\n let n = valueToPercent(props.value, min, max)\n n = reversed ? 100 - n : n\n\n const style: CSSProperties = {\n ...props.style,\n pointerEvents: \"none\",\n position: \"absolute\",\n ...(vertical ? { bottom: `${n}%` } : { left: `${n}%` }),\n }\n\n return {\n ...formControlProps,\n ...props,\n id: getMarkerId(props.value),\n ref,\n style,\n \"aria-hidden\": true,\n \"data-highlighted\": dataAttr(\n values[0] <= props.value && props.value <= values[1],\n ),\n \"data-invalid\": dataAttr(props.value < min || max < props.value),\n }\n },\n [getMarkerId, reversed, vertical, max, min, formControlProps, values],\n )\n\n const getThumbProps: RequiredPropGetter<\n { index: number } & HTMLUIProps,\n HTMLUIProps\n > = useCallback(\n ({ index: i, ...props }, ref = null) => {\n const n = thumbPercents[i]\n let w: number | string = \"var(--ui-thumb-size)\"\n let h: number | string = \"var(--ui-thumb-size)\"\n\n if (thumbSizes[i]) {\n w = `${thumbSizes[i]?.width}px`\n h = `${thumbSizes[i]?.height}px`\n }\n\n const bottom = `calc(${n}% - (${h} / 2))`\n const left = `calc(${n}% - (${w} / 2))`\n\n const style: CSSProperties = {\n ...props.style,\n position: \"absolute\",\n touchAction: \"none\",\n userSelect: \"none\",\n ...(vertical ? { bottom } : { left }),\n }\n\n const value = values[i]\n\n if (value == null)\n throw new Error(\n `Cannot find value at index '${i}'. The 'value' or 'defaultValue'`,\n )\n\n return {\n \"aria-label\": ariaLabel ?? \"Slider thumb\",\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-readonly\": ariaReadonly,\n ...formControlProps,\n ...props,\n id: getThumbId(i),\n ref,\n style,\n \"aria-orientation\": orientation,\n \"aria-valuemax\": max,\n \"aria-valuemin\": min,\n \"aria-valuenow\": value,\n \"aria-valuetext\":\n ariaValueText ?? getAriaValueText(value) ?? value.toString(),\n \"data-active\": dataAttr(\n dragging && focusThumbOnChange && activeIndexRef.current === i,\n ),\n role: \"slider\",\n tabIndex: interactive && focusThumbOnChange ? 0 : undefined,\n onBlur: handlerAll(props.onBlur, onBlur, () => {\n activeIndexRef.current = -1\n\n setFocused(false)\n }),\n onFocus: handlerAll(props.onFocus, onFocus, () => {\n activeIndexRef.current = i\n\n setFocused(true)\n }),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }\n },\n [\n thumbPercents,\n thumbSizes,\n vertical,\n values,\n ariaLabel,\n ariaLabelledBy,\n ariaReadonly,\n formControlProps,\n getThumbId,\n orientation,\n max,\n min,\n ariaValueText,\n getAriaValueText,\n dragging,\n focusThumbOnChange,\n interactive,\n onBlur,\n onFocus,\n onKeyDown,\n ],\n )\n\n return {\n dragging,\n focused,\n getInputId,\n getMarkerId,\n getThumbId,\n reset,\n stepDown,\n stepUp,\n values,\n vertical,\n getContainerProps,\n getFilledTrackProps,\n getInputProps,\n getMarkProps,\n getThumbProps,\n getTrackProps,\n }\n}\n\nexport type ReturnUseRangeSliderProps = ReturnType<typeof useRangeSlider>\n\ninterface RangeSliderContext\n extends Pick<\n ReturnUseRangeSliderProps,\n | \"getFilledTrackProps\"\n | \"getInputProps\"\n | \"getMarkProps\"\n | \"getThumbProps\"\n | \"getTrackProps\"\n | \"vertical\"\n >,\n RangeSliderOptions {\n styles: { [key: string]: CSSUIObject | undefined }\n}\n\nconst [RangeSliderProvider, useRangeSliderContext] =\n createContext<RangeSliderContext>({\n name: \"RangeSliderContext\",\n errorMessage: `useRangeSliderContext returned is 'undefined'. Seems you forgot to wrap the components in \"<RangeSlider />\" `,\n })\n\ninterface RangeSliderOptions {\n /**\n * The CSS `color` property. Used in `color` of filled track element.\n */\n filledTrackColor?: CSSUIProps[\"color\"]\n /**\n * The CSS `background` property. Used in `background` of thumb element.\n */\n thumbColor?: CSSUIProps[\"bg\"]\n /**\n * The CSS `box-size` property. Used in `box-size` of thumb element.\n */\n thumbSize?: CSSUIProps[\"boxSize\"]\n /**\n * The CSS `color` property. Used in `color` of track element.\n */\n trackColor?: CSSUIProps[\"color\"]\n /**\n * The CSS `height` property. Used in `height` of track element.\n */\n trackSize?: CSSUIProps[\"h\"]\n /**\n * Props for range slider filled track element.\n */\n filledTrackProps?: RangeSliderFilledTrackProps\n /**\n * Props for range slider input element.\n */\n inputProps?: HTMLUIProps<\"input\">\n /**\n * Props for range slider thumb element.\n */\n thumbProps?: RangeSliderThumbProps\n /**\n * Props for range slider track element.\n */\n trackProps?: RangeSliderTrackProps\n}\n\nexport interface RangeSliderProps\n extends ThemeProps<\"RangeSlider\">,\n UseRangeSliderProps,\n RangeSliderOptions {}\n\n/**\n * `RangeSlider` is a component used for users to select a range of related values.\n *\n * @see Docs https://yamada-ui.com/components/forms/range-slider\n */\nexport const RangeSlider = forwardRef<RangeSliderProps, \"div\">((props, ref) => {\n const [styles, mergedProps] = useComponentMultiStyle(\"RangeSlider\", props)\n const {\n className,\n children,\n filledTrackColor,\n thumbColor,\n thumbSize,\n trackColor,\n trackSize,\n filledTrackProps,\n inputProps,\n thumbProps,\n trackProps,\n ...rest\n } = omitThemeProps(mergedProps)\n const {\n vertical,\n getContainerProps,\n getFilledTrackProps,\n getInputProps,\n getMarkProps,\n getThumbProps,\n getTrackProps,\n } = useRangeSlider({ ...rest, thumbSize: getThumbSize(thumbSize, styles) })\n\n const css: CSSUIObject = { ...styles.container }\n\n const validChildren = getValidChildren(children)\n\n const customRangeSliderTrack = findChild(validChildren, RangeSliderTrack)\n const customRangeSliderStartThumb = findChild(\n validChildren,\n RangeSliderStartThumb,\n )\n const customRangeSliderEndThumb = findChild(\n validChildren,\n RangeSliderEndThumb,\n )\n\n const hasRangeSliderStartThumb = includesChildren(\n validChildren,\n RangeSliderStartThumb,\n )\n const hasRangeSliderEndThumb = includesChildren(\n validChildren,\n RangeSliderEndThumb,\n )\n\n const cloneChildren = !isEmpty(validChildren)\n ? omitChildren(\n validChildren,\n RangeSliderTrack,\n RangeSliderStartThumb,\n RangeSliderEndThumb,\n )\n : children\n\n return (\n <RangeSliderProvider\n value={{\n filledTrackColor,\n styles,\n thumbColor,\n thumbSize,\n trackColor,\n trackSize,\n vertical,\n filledTrackProps,\n getFilledTrackProps,\n getInputProps,\n getMarkProps,\n getThumbProps,\n getTrackProps,\n inputProps,\n thumbProps,\n trackProps,\n }}\n >\n <ui.div\n className={cx(\"ui-slider\", className)}\n __css={css}\n {...getContainerProps({}, ref)}\n >\n {customRangeSliderTrack ?? <RangeSliderTrack />}\n\n {cloneChildren}\n\n {customRangeSliderStartThumb ??\n (!hasRangeSliderStartThumb ? <RangeSliderStartThumb /> : null)}\n {customRangeSliderEndThumb ??\n (!hasRangeSliderEndThumb ? <RangeSliderEndThumb /> : null)}\n </ui.div>\n </RangeSliderProvider>\n )\n})\n\nRangeSlider.displayName = \"RangeSlider\"\nRangeSlider.__ui__ = \"RangeSlider\"\n\nexport interface RangeSliderTrackProps\n extends HTMLUIProps,\n Pick<RangeSliderOptions, \"filledTrackProps\"> {}\n\nexport const RangeSliderTrack = forwardRef<RangeSliderTrackProps, \"div\">(\n ({ className, children, filledTrackProps, ...rest }, ref) => {\n const {\n styles,\n trackColor,\n trackSize,\n vertical,\n getTrackProps,\n trackProps,\n } = useRangeSliderContext()\n\n const css: CSSUIObject = { ...styles.track }\n\n return (\n <ui.div\n className={cx(\"ui-slider__track\", className)}\n __css={css}\n {...getTrackProps(\n {\n ...(trackColor ? { bg: trackColor } : {}),\n ...(trackSize\n ? vertical\n ? { w: trackSize }\n : { h: trackSize }\n : {}),\n ...trackProps,\n ...rest,\n },\n ref,\n )}\n >\n {children ?? <RangeSliderFilledTrack {...filledTrackProps} />}\n </ui.div>\n )\n },\n)\n\nRangeSliderTrack.displayName = \"RangeSliderTrack\"\nRangeSliderTrack.__ui__ = \"RangeSliderTrack\"\n\nexport interface RangeSliderFilledTrackProps extends HTMLUIProps {}\n\nexport const RangeSliderFilledTrack = forwardRef<\n RangeSliderFilledTrackProps,\n \"div\"\n>(({ className, ...rest }, ref) => {\n const { filledTrackColor, styles, filledTrackProps, getFilledTrackProps } =\n useRangeSliderContext()\n\n const css: CSSUIObject = { ...styles.filledTrack }\n\n return (\n <ui.div\n className={cx(\"ui-slider__track-filled\", className)}\n __css={css}\n {...getFilledTrackProps(\n {\n ...(filledTrackColor ? { bg: filledTrackColor } : {}),\n ...filledTrackProps,\n ...rest,\n },\n ref,\n )}\n />\n )\n})\n\nRangeSliderFilledTrack.displayName = \"RangeSliderFilledTrack\"\nRangeSliderFilledTrack.__ui__ = \"RangeSliderFilledTrack\"\n\nexport interface RangeSliderMarkProps extends HTMLUIProps {\n value: number\n}\n\nexport const RangeSliderMark = forwardRef<RangeSliderMarkProps, \"div\">(\n ({ className, ...rest }, ref) => {\n const { styles, getMarkProps } = useRangeSliderContext()\n\n const css: CSSUIObject = {\n alignItems: \"center\",\n display: \"inline-flex\",\n justifyContent: \"center\",\n ...styles.mark,\n }\n\n return (\n <ui.div\n className={cx(\"ui-slider__mark\", className)}\n __css={css}\n {...getMarkProps(rest, ref)}\n />\n )\n },\n)\n\nRangeSliderMark.displayName = \"RangeSliderMark\"\nRangeSliderMark.__ui__ = \"RangeSliderMark\"\n\nexport interface RangeSliderThumbProps extends HTMLUIProps {}\n\nconst RangeSliderThumb = forwardRef<\n { index: number } & RangeSliderThumbProps,\n \"div\"\n>(({ className, children, index, ...rest }, ref) => {\n const {\n styles,\n thumbColor,\n thumbSize,\n getInputProps,\n getThumbProps,\n inputProps,\n thumbProps,\n } = useRangeSliderContext()\n\n const css: CSSUIObject = { ...styles.thumb }\n\n const { children: propChildren } = thumbProps ?? {}\n\n return (\n <ui.div\n className={cx(\"ui-slider__thumb\", className)}\n __css={css}\n {...getThumbProps(\n {\n index,\n ...(thumbColor ? { bg: thumbColor } : {}),\n ...(thumbSize ? { boxSize: thumbSize } : {}),\n ...thumbProps,\n ...rest,\n },\n ref,\n )}\n >\n <ui.input {...getInputProps({ ...inputProps, index }, ref)} />\n {children ?? propChildren}\n </ui.div>\n )\n})\n\nRangeSliderThumb.displayName = \"RangeSliderThumb\"\nRangeSliderThumb.__ui__ = \"RangeSliderThumb\"\n\nexport const RangeSliderStartThumb = forwardRef<RangeSliderThumbProps, \"div\">(\n (rest, ref) => {\n return <RangeSliderThumb ref={ref} index={0} {...rest} />\n },\n)\n\nRangeSliderStartThumb.displayName = \"RangeSliderStartThumb\"\nRangeSliderStartThumb.__ui__ = \"RangeSliderStartThumb\"\n\nexport const RangeSliderEndThumb = forwardRef<RangeSliderThumbProps, \"div\">(\n (rest, ref) => {\n return <RangeSliderThumb ref={ref} index={1} {...rest} />\n },\n)\n\nRangeSliderEndThumb.displayName = \"RangeSliderEndThumb\"\nRangeSliderEndThumb.__ui__ = \"RangeSliderEndThumb\"\n"],"mappings":"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","names":["interactive","values","max","min","id","valueBounds","step","props"]}