@react-aria/slider 3.1.2-nightly.3359 → 3.1.2-nightly.3368

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -5,28 +5,12 @@ var $coMqq$reactarialabel = require("@react-aria/label");
5
5
  var $coMqq$reactariai18n = require("@react-aria/i18n");
6
6
  var $coMqq$reactariafocus = require("@react-aria/focus");
7
7
 
8
- function $parcel$exportWildcard(dest, source) {
9
- Object.keys(source).forEach(function(key) {
10
- if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
11
- return;
12
- }
13
-
14
- Object.defineProperty(dest, key, {
15
- enumerable: true,
16
- get: function get() {
17
- return source[key];
18
- }
19
- });
20
- });
21
-
22
- return dest;
23
- }
24
8
  function $parcel$export(e, n, v, s) {
25
9
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
26
10
  }
27
- var $481f97d830e3ede6$exports = {};
28
11
 
29
- $parcel$export($481f97d830e3ede6$exports, "useSlider", () => $481f97d830e3ede6$export$56b2c08e277f365);
12
+ $parcel$export(module.exports, "useSlider", () => $481f97d830e3ede6$export$56b2c08e277f365);
13
+ $parcel$export(module.exports, "useSliderThumb", () => $5eb806b626475377$export$8d15029008292ae);
30
14
 
31
15
  const $28db8d634be2fa58$export$7a8d2b02c9371cbf = new WeakMap();
32
16
  function $28db8d634be2fa58$export$68e648cbec363a18(state, index) {
@@ -62,7 +46,8 @@ function $481f97d830e3ede6$export$56b2c08e277f365(props, state, trackRef) {
62
46
  currentPosition.current = null;
63
47
  },
64
48
  onMove ({ deltaX: deltaX , deltaY: deltaY }) {
65
- let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;
49
+ let { height: height , width: width } = trackRef.current.getBoundingClientRect();
50
+ let size = isVertical ? height : width;
66
51
  if (currentPosition.current == null) currentPosition.current = stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) * size;
67
52
  let delta = isVertical ? deltaY : deltaX;
68
53
  if (isVertical || reverseX) delta = -delta;
@@ -84,9 +69,10 @@ function $481f97d830e3ede6$export$56b2c08e277f365(props, state, trackRef) {
84
69
  // We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.
85
70
  if (trackRef.current && !props.isDisabled && state.values.every((_, i)=>!state.isThumbDragging(i)
86
71
  )) {
87
- let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;
72
+ let { height: height , width: width , top: top , left: left } = trackRef.current.getBoundingClientRect();
73
+ let size = isVertical ? height : width;
88
74
  // Find the closest thumb
89
- const trackPosition = trackRef.current.getBoundingClientRect()[isVertical ? 'top' : 'left'];
75
+ const trackPosition = isVertical ? top : left;
90
76
  const clickPosition = isVertical ? clientY : clientX;
91
77
  const offset = clickPosition - trackPosition;
92
78
  let percent = offset / size;
@@ -134,7 +120,7 @@ function $481f97d830e3ede6$export$56b2c08e277f365(props, state, trackRef) {
134
120
  removeGlobalListener(window, 'pointerup', onUpTrack, false);
135
121
  }
136
122
  };
137
- if (labelProps.htmlFor) {
123
+ if ('htmlFor' in labelProps && labelProps.htmlFor) {
138
124
  // Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS
139
125
  // causes this to override the `aria-labelledby` on the thumb. This causes the first
140
126
  // thumb to only be announced as the slider label rather than its individual name as well.
@@ -183,9 +169,6 @@ function $481f97d830e3ede6$export$56b2c08e277f365(props, state, trackRef) {
183
169
  }
184
170
 
185
171
 
186
- var $5eb806b626475377$exports = {};
187
-
188
- $parcel$export($5eb806b626475377$exports, "useSliderThumb", () => $5eb806b626475377$export$8d15029008292ae);
189
172
 
190
173
 
191
174
 
@@ -259,7 +242,8 @@ function $5eb806b626475377$export$8d15029008292ae(opts, state) {
259
242
  },
260
243
  onMove ({ deltaX: deltaX , deltaY: deltaY , pointerType: pointerType , shiftKey: shiftKey }) {
261
244
  const { getThumbPercent: getThumbPercent , setThumbPercent: setThumbPercent , decrementThumb: decrementThumb , incrementThumb: incrementThumb , step: step , pageSize: pageSize } = stateRef.current;
262
- let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;
245
+ let { width: width , height: height } = trackRef.current.getBoundingClientRect();
246
+ let size = isVertical ? height : width;
263
247
  if (currentPosition.current == null) currentPosition.current = getThumbPercent(index) * size;
264
248
  if (pointerType === 'keyboard') {
265
249
  if (deltaX > 0 && reverseX || deltaX < 0 && !reverseX || deltaY > 0) decrementThumb(index, shiftKey ? pageSize : step);
@@ -358,8 +342,6 @@ function $5eb806b626475377$export$8d15029008292ae(opts, state) {
358
342
  }
359
343
 
360
344
 
361
- $parcel$exportWildcard(module.exports, $481f97d830e3ede6$exports);
362
- $parcel$exportWildcard(module.exports, $5eb806b626475377$exports);
363
345
 
364
346
 
365
347
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-aria/slider/src/index.ts","packages/@react-aria/slider/src/useSlider.ts","packages/@react-aria/slider/src/utils.ts","packages/@react-aria/slider/src/useSliderThumb.ts"],"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\nexport * from './useSlider';\nexport * from './useSliderThumb';\n","/*\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 {AriaSliderProps} from '@react-types/slider';\nimport {clamp, mergeProps, useGlobalListeners} from '@react-aria/utils';\nimport {getSliderThumbId, sliderIds} from './utils';\nimport React, {HTMLAttributes, LabelHTMLAttributes, OutputHTMLAttributes, RefObject, useRef} from 'react';\nimport {setInteractionModality, useMove} from '@react-aria/interactions';\nimport {SliderState} from '@react-stately/slider';\nimport {useLabel} from '@react-aria/label';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SliderAria {\n /** Props for the label element. */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>,\n\n /** Props for the root element of the slider component; groups slider inputs. */\n groupProps: HTMLAttributes<HTMLElement>,\n\n /** Props for the track element. */\n trackProps: HTMLAttributes<HTMLElement>,\n\n /** Props for the output element, displaying the value of the slider thumbs. */\n outputProps: OutputHTMLAttributes<HTMLOutputElement>\n}\n\n/**\n * Provides the behavior and accessibility implementation for a slider component representing one or more values.\n *\n * @param props Props for the slider.\n * @param state State for the slider, as returned by `useSliderState`.\n * @param trackRef Ref for the \"track\" element. The width of this element provides the \"length\"\n * of the track -- the span of one dimensional space that the slider thumb can be. It also\n * accepts click and drag motions, so that the closest thumb will follow clicks and drags on\n * the track.\n */\nexport function useSlider(\n props: AriaSliderProps,\n state: SliderState,\n trackRef: RefObject<HTMLElement>\n): SliderAria {\n let {labelProps, fieldProps} = useLabel(props);\n\n let isVertical = props.orientation === 'vertical';\n\n // Attach id of the label to the state so it can be accessed by useSliderThumb.\n sliderIds.set(state, labelProps.id ?? fieldProps.id);\n\n let {direction} = useLocale();\n\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n // When the user clicks or drags the track, we want the motion to set and drag the\n // closest thumb. Hence we also need to install useMove() on the track element.\n // Here, we keep track of which index is the \"closest\" to the drag start point.\n // It is set onMouseDown/onTouchDown; see trackProps below.\n const realTimeTrackDraggingIndex = useRef<number | null>(null);\n\n const stateRef = useRef<SliderState>(null);\n stateRef.current = state;\n const reverseX = direction === 'rtl';\n const currentPosition = useRef<number>(null);\n const {moveProps} = useMove({\n onMoveStart() {\n currentPosition.current = null;\n },\n onMove({deltaX, deltaY}) {\n let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;\n\n if (currentPosition.current == null) {\n currentPosition.current = stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) * size;\n }\n\n let delta = isVertical ? deltaY : deltaX;\n if (isVertical || reverseX) {\n delta = -delta;\n }\n\n currentPosition.current += delta;\n\n if (realTimeTrackDraggingIndex.current != null && trackRef.current) {\n const percent = clamp(currentPosition.current / size, 0, 1);\n stateRef.current.setThumbPercent(realTimeTrackDraggingIndex.current, percent);\n }\n },\n onMoveEnd() {\n if (realTimeTrackDraggingIndex.current != null) {\n stateRef.current.setThumbDragging(realTimeTrackDraggingIndex.current, false);\n realTimeTrackDraggingIndex.current = null;\n }\n }\n });\n\n let currentPointer = useRef<number | null | undefined>(undefined);\n let onDownTrack = (e: React.UIEvent, id: number, clientX: number, clientY: number) => {\n // We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.\n if (trackRef.current && !props.isDisabled && state.values.every((_, i) => !state.isThumbDragging(i))) {\n let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;\n // Find the closest thumb\n const trackPosition = trackRef.current.getBoundingClientRect()[isVertical ? 'top' : 'left'];\n const clickPosition = isVertical ? clientY : clientX;\n const offset = clickPosition - trackPosition;\n let percent = offset / size;\n if (direction === 'rtl' || isVertical) {\n percent = 1 - percent;\n }\n let value = state.getPercentValue(percent);\n\n // to find the closet thumb we split the array based on the first thumb position to the \"right/end\" of the click.\n let closestThumb;\n let split = state.values.findIndex(v => value - v < 0);\n if (split === 0) { // If the index is zero then the closetThumb is the first one\n closestThumb = split;\n } else if (split === -1) { // If no index is found they've clicked past all the thumbs\n closestThumb = state.values.length - 1;\n } else {\n let lastLeft = state.values[split - 1];\n let firstRight = state.values[split];\n // Pick the last left/start thumb, unless they are stacked on top of each other, then pick the right/end one\n if (Math.abs(lastLeft - value) < Math.abs(firstRight - value)) {\n closestThumb = split - 1;\n } else {\n closestThumb = split;\n }\n }\n\n // Confirm that the found closest thumb is editable, not disabled, and move it\n if (closestThumb >= 0 && state.isThumbEditable(closestThumb)) {\n // Don't unfocus anything\n e.preventDefault();\n\n realTimeTrackDraggingIndex.current = closestThumb;\n state.setFocusedThumb(closestThumb);\n currentPointer.current = id;\n\n state.setThumbDragging(realTimeTrackDraggingIndex.current, true);\n state.setThumbValue(closestThumb, value);\n\n addGlobalListener(window, 'mouseup', onUpTrack, false);\n addGlobalListener(window, 'touchend', onUpTrack, false);\n addGlobalListener(window, 'pointerup', onUpTrack, false);\n } else {\n realTimeTrackDraggingIndex.current = null;\n }\n }\n };\n\n let onUpTrack = (e) => {\n let id = e.pointerId ?? e.changedTouches?.[0].identifier;\n if (id === currentPointer.current) {\n if (realTimeTrackDraggingIndex.current != null) {\n state.setThumbDragging(realTimeTrackDraggingIndex.current, false);\n realTimeTrackDraggingIndex.current = null;\n }\n\n removeGlobalListener(window, 'mouseup', onUpTrack, false);\n removeGlobalListener(window, 'touchend', onUpTrack, false);\n removeGlobalListener(window, 'pointerup', onUpTrack, false);\n }\n };\n\n if (labelProps.htmlFor) {\n // Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS\n // causes this to override the `aria-labelledby` on the thumb. This causes the first\n // thumb to only be announced as the slider label rather than its individual name as well.\n // See https://bugs.webkit.org/show_bug.cgi?id=172464.\n delete labelProps.htmlFor;\n labelProps.onClick = () => {\n // Safari does not focus <input type=\"range\"> elements when clicking on an associated <label>,\n // so do it manually. In addition, make sure we show the focus ring.\n document.getElementById(getSliderThumbId(state, 0))?.focus();\n setInteractionModality('keyboard');\n };\n }\n\n return {\n labelProps,\n // The root element of the Slider will have role=\"group\" to group together\n // all the thumb inputs in the Slider. The label of the Slider will\n // be used to label the group.\n groupProps: {\n role: 'group',\n ...fieldProps\n },\n trackProps: mergeProps({\n onMouseDown(e: React.MouseEvent<HTMLElement>) {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDownTrack(e, undefined, e.clientX, e.clientY);\n },\n onPointerDown(e: React.PointerEvent<HTMLElement>) {\n if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {\n return;\n }\n onDownTrack(e, e.pointerId, e.clientX, e.clientY);\n },\n onTouchStart(e: React.TouchEvent<HTMLElement>) { onDownTrack(e, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY); },\n style: {\n position: 'relative',\n touchAction: 'none'\n }\n }, moveProps),\n outputProps: {\n htmlFor: state.values.map((_, index) => getSliderThumbId(state, index)).join(' '),\n 'aria-live': 'off'\n }\n };\n}\n","import {SliderState} from '@react-stately/slider';\n\nexport const sliderIds = new WeakMap<SliderState, string>();\n\nexport function getSliderThumbId(state: SliderState, index: number) {\n let id = sliderIds.get(state);\n if (!id) {\n throw new Error('Unknown slider state');\n }\n\n return `${id}-${index}`;\n}\n","import {AriaSliderThumbProps} from '@react-types/slider';\nimport {clamp, focusWithoutScrolling, mergeProps, useGlobalListeners} from '@react-aria/utils';\nimport {getSliderThumbId, sliderIds} from './utils';\nimport React, {ChangeEvent, HTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, RefObject, useCallback, useEffect, useRef} from 'react';\nimport {SliderState} from '@react-stately/slider';\nimport {useFocusable} from '@react-aria/focus';\nimport {useKeyboard, useMove} from '@react-aria/interactions';\nimport {useLabel} from '@react-aria/label';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SliderThumbAria {\n /** Props for the root thumb element; handles the dragging motion. */\n thumbProps: HTMLAttributes<HTMLElement>,\n\n /** Props for the visually hidden range input element. */\n inputProps: InputHTMLAttributes<HTMLInputElement>,\n\n /** Props for the label element for this thumb (optional). */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>,\n\n /** Whether this thumb is currently being dragged. */\n isDragging: boolean,\n /** Whether the thumb is currently focused. */\n isFocused: boolean,\n /** Whether the thumb is disabled. */\n isDisabled: boolean\n}\n\ninterface SliderThumbOptions extends AriaSliderThumbProps {\n /** A ref to the track element. */\n trackRef: RefObject<HTMLElement>,\n /** A ref to the thumb input element. */\n inputRef: RefObject<HTMLInputElement>\n}\n\n/**\n * Provides behavior and accessibility for a thumb of a slider component.\n *\n * @param opts Options for this Slider thumb.\n * @param state Slider state, created via `useSliderState`.\n */\nexport function useSliderThumb(\n opts: SliderThumbOptions,\n state: SliderState\n): SliderThumbAria {\n let {\n index,\n isRequired,\n validationState,\n trackRef,\n inputRef,\n orientation = state.orientation\n } = opts;\n\n let isDisabled = opts.isDisabled || state.isDisabled;\n let isVertical = orientation === 'vertical';\n\n let {direction} = useLocale();\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n let labelId = sliderIds.get(state);\n const {labelProps, fieldProps} = useLabel({\n ...opts,\n id: getSliderThumbId(state, index),\n 'aria-labelledby': `${labelId} ${opts['aria-labelledby'] ?? ''}`.trim()\n });\n\n const value = state.values[index];\n\n const focusInput = useCallback(() => {\n if (inputRef.current) {\n focusWithoutScrolling(inputRef.current);\n }\n }, [inputRef]);\n\n const isFocused = state.focusedThumb === index;\n\n useEffect(() => {\n if (isFocused) {\n focusInput();\n }\n }, [isFocused, focusInput]);\n\n const stateRef = useRef<SliderState>(null);\n stateRef.current = state;\n let reverseX = direction === 'rtl';\n let currentPosition = useRef<number>(null);\n\n let {keyboardProps} = useKeyboard({\n onKeyDown(e) {\n let {\n getThumbMaxValue,\n getThumbMinValue,\n decrementThumb,\n incrementThumb,\n setThumbValue,\n setThumbDragging,\n pageSize\n } = stateRef.current;\n // these are the cases that useMove or useSlider don't handle\n if (!/^(PageUp|PageDown|Home|End)$/.test(e.key)) {\n e.continuePropagation();\n return;\n }\n // same handling as useMove, stopPropagation to prevent useSlider from handling the event as well.\n e.preventDefault();\n // remember to set this so that onChangeEnd is fired\n setThumbDragging(index, true);\n switch (e.key) {\n case 'PageUp':\n incrementThumb(index, pageSize);\n break;\n case 'PageDown':\n decrementThumb(index, pageSize);\n break;\n case 'Home':\n setThumbValue(index, getThumbMinValue(index));\n break;\n case 'End':\n setThumbValue(index, getThumbMaxValue(index));\n break;\n }\n setThumbDragging(index, false);\n }\n });\n\n let {moveProps} = useMove({\n onMoveStart() {\n currentPosition.current = null;\n stateRef.current.setThumbDragging(index, true);\n },\n onMove({deltaX, deltaY, pointerType, shiftKey}) {\n const {\n getThumbPercent,\n setThumbPercent,\n decrementThumb,\n incrementThumb,\n step,\n pageSize\n } = stateRef.current;\n let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;\n\n if (currentPosition.current == null) {\n currentPosition.current = getThumbPercent(index) * size;\n }\n if (pointerType === 'keyboard') {\n if ((deltaX > 0 && reverseX) || (deltaX < 0 && !reverseX) || deltaY > 0) {\n decrementThumb(index, shiftKey ? pageSize : step);\n } else {\n incrementThumb(index, shiftKey ? pageSize : step);\n }\n } else {\n let delta = isVertical ? deltaY : deltaX;\n if (isVertical || reverseX) {\n delta = -delta;\n }\n\n currentPosition.current += delta;\n setThumbPercent(index, clamp(currentPosition.current / size, 0, 1));\n }\n },\n onMoveEnd() {\n stateRef.current.setThumbDragging(index, false);\n }\n });\n\n // Immediately register editability with the state\n state.setThumbEditable(index, !isDisabled);\n\n const {focusableProps} = useFocusable(\n mergeProps(opts, {\n onFocus: () => state.setFocusedThumb(index),\n onBlur: () => state.setFocusedThumb(undefined)\n }),\n inputRef\n );\n\n let currentPointer = useRef<number | undefined>(undefined);\n let onDown = (id?: number) => {\n focusInput();\n currentPointer.current = id;\n state.setThumbDragging(index, true);\n\n addGlobalListener(window, 'mouseup', onUp, false);\n addGlobalListener(window, 'touchend', onUp, false);\n addGlobalListener(window, 'pointerup', onUp, false);\n\n };\n\n let onUp = (e) => {\n let id = e.pointerId ?? e.changedTouches?.[0].identifier;\n if (id === currentPointer.current) {\n focusInput();\n state.setThumbDragging(index, false);\n removeGlobalListener(window, 'mouseup', onUp, false);\n removeGlobalListener(window, 'touchend', onUp, false);\n removeGlobalListener(window, 'pointerup', onUp, false);\n }\n };\n\n let thumbPosition = state.getThumbPercent(index);\n if (isVertical || direction === 'rtl') {\n thumbPosition = 1 - thumbPosition;\n }\n\n let interactions = !isDisabled ? mergeProps(\n keyboardProps,\n moveProps,\n {\n onMouseDown: (e: React.MouseEvent<HTMLElement>) => {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDown();\n },\n onPointerDown: (e: React.PointerEvent<HTMLElement>) => {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDown(e.pointerId);\n },\n onTouchStart: (e: React.TouchEvent<HTMLElement>) => {onDown(e.changedTouches[0].identifier);}\n }\n ) : {};\n\n // We install mouse handlers for the drag motion on the thumb div, but\n // not the key handler for moving the thumb with the slider. Instead,\n // we focus the range input, and let the browser handle the keyboard\n // interactions; we then listen to input's onChange to update state.\n return {\n inputProps: mergeProps(focusableProps, fieldProps, {\n type: 'range',\n tabIndex: !isDisabled ? 0 : undefined,\n min: state.getThumbMinValue(index),\n max: state.getThumbMaxValue(index),\n step: state.step,\n value: value,\n disabled: isDisabled,\n 'aria-orientation': orientation,\n 'aria-valuetext': state.getThumbValueLabel(index),\n 'aria-required': isRequired || undefined,\n 'aria-invalid': validationState === 'invalid' || undefined,\n 'aria-errormessage': opts['aria-errormessage'],\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n stateRef.current.setThumbValue(index, parseFloat(e.target.value));\n }\n }),\n thumbProps: {\n ...interactions,\n style: {\n position: 'absolute',\n [isVertical ? 'top' : 'left']: `${thumbPosition * 100}%`,\n transform: 'translate(-50%, -50%)',\n touchAction: 'none'\n }\n },\n labelProps,\n isDragging: state.isThumbDragging(index),\n isDisabled,\n isFocused\n };\n}\n"],"names":[],"version":3,"file":"main.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-aria/slider/src/index.ts","packages/@react-aria/slider/src/useSlider.ts","packages/@react-aria/slider/src/utils.ts","packages/@react-aria/slider/src/useSliderThumb.ts"],"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 */\nexport {useSlider} from './useSlider';\nexport {useSliderThumb} from './useSliderThumb';\n","/*\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 {AriaSliderProps} from '@react-types/slider';\nimport {clamp, mergeProps, useGlobalListeners} from '@react-aria/utils';\nimport {DOMAttributes} from '@react-types/shared';\nimport {getSliderThumbId, sliderIds} from './utils';\nimport React, {LabelHTMLAttributes, OutputHTMLAttributes, RefObject, useRef} from 'react';\nimport {setInteractionModality, useMove} from '@react-aria/interactions';\nimport {SliderState} from '@react-stately/slider';\nimport {useLabel} from '@react-aria/label';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SliderAria {\n /** Props for the label element. */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>,\n\n /** Props for the root element of the slider component; groups slider inputs. */\n groupProps: DOMAttributes,\n\n /** Props for the track element. */\n trackProps: DOMAttributes,\n\n /** Props for the output element, displaying the value of the slider thumbs. */\n outputProps: OutputHTMLAttributes<HTMLOutputElement>\n}\n\n/**\n * Provides the behavior and accessibility implementation for a slider component representing one or more values.\n *\n * @param props Props for the slider.\n * @param state State for the slider, as returned by `useSliderState`.\n * @param trackRef Ref for the \"track\" element. The width of this element provides the \"length\"\n * of the track -- the span of one dimensional space that the slider thumb can be. It also\n * accepts click and drag motions, so that the closest thumb will follow clicks and drags on\n * the track.\n */\nexport function useSlider(\n props: AriaSliderProps,\n state: SliderState,\n trackRef: RefObject<Element>\n): SliderAria {\n let {labelProps, fieldProps} = useLabel(props);\n\n let isVertical = props.orientation === 'vertical';\n\n // Attach id of the label to the state so it can be accessed by useSliderThumb.\n sliderIds.set(state, labelProps.id ?? fieldProps.id);\n\n let {direction} = useLocale();\n\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n // When the user clicks or drags the track, we want the motion to set and drag the\n // closest thumb. Hence we also need to install useMove() on the track element.\n // Here, we keep track of which index is the \"closest\" to the drag start point.\n // It is set onMouseDown/onTouchDown; see trackProps below.\n const realTimeTrackDraggingIndex = useRef<number | null>(null);\n\n const stateRef = useRef<SliderState>(null);\n stateRef.current = state;\n const reverseX = direction === 'rtl';\n const currentPosition = useRef<number>(null);\n const {moveProps} = useMove({\n onMoveStart() {\n currentPosition.current = null;\n },\n onMove({deltaX, deltaY}) {\n let {height, width} = trackRef.current.getBoundingClientRect();\n let size = isVertical ? height : width;\n\n if (currentPosition.current == null) {\n currentPosition.current = stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) * size;\n }\n\n let delta = isVertical ? deltaY : deltaX;\n if (isVertical || reverseX) {\n delta = -delta;\n }\n\n currentPosition.current += delta;\n\n if (realTimeTrackDraggingIndex.current != null && trackRef.current) {\n const percent = clamp(currentPosition.current / size, 0, 1);\n stateRef.current.setThumbPercent(realTimeTrackDraggingIndex.current, percent);\n }\n },\n onMoveEnd() {\n if (realTimeTrackDraggingIndex.current != null) {\n stateRef.current.setThumbDragging(realTimeTrackDraggingIndex.current, false);\n realTimeTrackDraggingIndex.current = null;\n }\n }\n });\n\n let currentPointer = useRef<number | null | undefined>(undefined);\n let onDownTrack = (e: React.UIEvent, id: number, clientX: number, clientY: number) => {\n // We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.\n if (trackRef.current && !props.isDisabled && state.values.every((_, i) => !state.isThumbDragging(i))) {\n let {height, width, top, left} = trackRef.current.getBoundingClientRect();\n let size = isVertical ? height : width;\n // Find the closest thumb\n const trackPosition = isVertical ? top : left;\n const clickPosition = isVertical ? clientY : clientX;\n const offset = clickPosition - trackPosition;\n let percent = offset / size;\n if (direction === 'rtl' || isVertical) {\n percent = 1 - percent;\n }\n let value = state.getPercentValue(percent);\n\n // to find the closet thumb we split the array based on the first thumb position to the \"right/end\" of the click.\n let closestThumb;\n let split = state.values.findIndex(v => value - v < 0);\n if (split === 0) { // If the index is zero then the closetThumb is the first one\n closestThumb = split;\n } else if (split === -1) { // If no index is found they've clicked past all the thumbs\n closestThumb = state.values.length - 1;\n } else {\n let lastLeft = state.values[split - 1];\n let firstRight = state.values[split];\n // Pick the last left/start thumb, unless they are stacked on top of each other, then pick the right/end one\n if (Math.abs(lastLeft - value) < Math.abs(firstRight - value)) {\n closestThumb = split - 1;\n } else {\n closestThumb = split;\n }\n }\n\n // Confirm that the found closest thumb is editable, not disabled, and move it\n if (closestThumb >= 0 && state.isThumbEditable(closestThumb)) {\n // Don't unfocus anything\n e.preventDefault();\n\n realTimeTrackDraggingIndex.current = closestThumb;\n state.setFocusedThumb(closestThumb);\n currentPointer.current = id;\n\n state.setThumbDragging(realTimeTrackDraggingIndex.current, true);\n state.setThumbValue(closestThumb, value);\n\n addGlobalListener(window, 'mouseup', onUpTrack, false);\n addGlobalListener(window, 'touchend', onUpTrack, false);\n addGlobalListener(window, 'pointerup', onUpTrack, false);\n } else {\n realTimeTrackDraggingIndex.current = null;\n }\n }\n };\n\n let onUpTrack = (e) => {\n let id = e.pointerId ?? e.changedTouches?.[0].identifier;\n if (id === currentPointer.current) {\n if (realTimeTrackDraggingIndex.current != null) {\n state.setThumbDragging(realTimeTrackDraggingIndex.current, false);\n realTimeTrackDraggingIndex.current = null;\n }\n\n removeGlobalListener(window, 'mouseup', onUpTrack, false);\n removeGlobalListener(window, 'touchend', onUpTrack, false);\n removeGlobalListener(window, 'pointerup', onUpTrack, false);\n }\n };\n\n if ('htmlFor' in labelProps && labelProps.htmlFor) {\n // Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS\n // causes this to override the `aria-labelledby` on the thumb. This causes the first\n // thumb to only be announced as the slider label rather than its individual name as well.\n // See https://bugs.webkit.org/show_bug.cgi?id=172464.\n delete labelProps.htmlFor;\n labelProps.onClick = () => {\n // Safari does not focus <input type=\"range\"> elements when clicking on an associated <label>,\n // so do it manually. In addition, make sure we show the focus ring.\n document.getElementById(getSliderThumbId(state, 0))?.focus();\n setInteractionModality('keyboard');\n };\n }\n\n return {\n labelProps,\n // The root element of the Slider will have role=\"group\" to group together\n // all the thumb inputs in the Slider. The label of the Slider will\n // be used to label the group.\n groupProps: {\n role: 'group',\n ...fieldProps\n },\n trackProps: mergeProps({\n onMouseDown(e: React.MouseEvent) {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDownTrack(e, undefined, e.clientX, e.clientY);\n },\n onPointerDown(e: React.PointerEvent) {\n if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {\n return;\n }\n onDownTrack(e, e.pointerId, e.clientX, e.clientY);\n },\n onTouchStart(e: React.TouchEvent) { onDownTrack(e, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY); },\n style: {\n position: 'relative',\n touchAction: 'none'\n }\n }, moveProps),\n outputProps: {\n htmlFor: state.values.map((_, index) => getSliderThumbId(state, index)).join(' '),\n 'aria-live': 'off'\n }\n };\n}\n","import {SliderState} from '@react-stately/slider';\n\nexport const sliderIds = new WeakMap<SliderState, string>();\n\nexport function getSliderThumbId(state: SliderState, index: number) {\n let id = sliderIds.get(state);\n if (!id) {\n throw new Error('Unknown slider state');\n }\n\n return `${id}-${index}`;\n}\n","import {AriaSliderThumbProps} from '@react-types/slider';\nimport {clamp, focusWithoutScrolling, mergeProps, useGlobalListeners} from '@react-aria/utils';\nimport {DOMAttributes} from '@react-types/shared';\nimport {getSliderThumbId, sliderIds} from './utils';\nimport React, {ChangeEvent, InputHTMLAttributes, LabelHTMLAttributes, RefObject, useCallback, useEffect, useRef} from 'react';\nimport {SliderState} from '@react-stately/slider';\nimport {useFocusable} from '@react-aria/focus';\nimport {useKeyboard, useMove} from '@react-aria/interactions';\nimport {useLabel} from '@react-aria/label';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SliderThumbAria {\n /** Props for the root thumb element; handles the dragging motion. */\n thumbProps: DOMAttributes,\n\n /** Props for the visually hidden range input element. */\n inputProps: InputHTMLAttributes<HTMLInputElement>,\n\n /** Props for the label element for this thumb (optional). */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>,\n\n /** Whether this thumb is currently being dragged. */\n isDragging: boolean,\n /** Whether the thumb is currently focused. */\n isFocused: boolean,\n /** Whether the thumb is disabled. */\n isDisabled: boolean\n}\n\ninterface SliderThumbOptions extends AriaSliderThumbProps {\n /** A ref to the track element. */\n trackRef: RefObject<Element>,\n /** A ref to the thumb input element. */\n inputRef: RefObject<HTMLInputElement>\n}\n\n/**\n * Provides behavior and accessibility for a thumb of a slider component.\n *\n * @param opts Options for this Slider thumb.\n * @param state Slider state, created via `useSliderState`.\n */\nexport function useSliderThumb(\n opts: SliderThumbOptions,\n state: SliderState\n): SliderThumbAria {\n let {\n index,\n isRequired,\n validationState,\n trackRef,\n inputRef,\n orientation = state.orientation\n } = opts;\n\n let isDisabled = opts.isDisabled || state.isDisabled;\n let isVertical = orientation === 'vertical';\n\n let {direction} = useLocale();\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n let labelId = sliderIds.get(state);\n const {labelProps, fieldProps} = useLabel({\n ...opts,\n id: getSliderThumbId(state, index),\n 'aria-labelledby': `${labelId} ${opts['aria-labelledby'] ?? ''}`.trim()\n });\n\n const value = state.values[index];\n\n const focusInput = useCallback(() => {\n if (inputRef.current) {\n focusWithoutScrolling(inputRef.current);\n }\n }, [inputRef]);\n\n const isFocused = state.focusedThumb === index;\n\n useEffect(() => {\n if (isFocused) {\n focusInput();\n }\n }, [isFocused, focusInput]);\n\n const stateRef = useRef<SliderState>(null);\n stateRef.current = state;\n let reverseX = direction === 'rtl';\n let currentPosition = useRef<number>(null);\n\n let {keyboardProps} = useKeyboard({\n onKeyDown(e) {\n let {\n getThumbMaxValue,\n getThumbMinValue,\n decrementThumb,\n incrementThumb,\n setThumbValue,\n setThumbDragging,\n pageSize\n } = stateRef.current;\n // these are the cases that useMove or useSlider don't handle\n if (!/^(PageUp|PageDown|Home|End)$/.test(e.key)) {\n e.continuePropagation();\n return;\n }\n // same handling as useMove, stopPropagation to prevent useSlider from handling the event as well.\n e.preventDefault();\n // remember to set this so that onChangeEnd is fired\n setThumbDragging(index, true);\n switch (e.key) {\n case 'PageUp':\n incrementThumb(index, pageSize);\n break;\n case 'PageDown':\n decrementThumb(index, pageSize);\n break;\n case 'Home':\n setThumbValue(index, getThumbMinValue(index));\n break;\n case 'End':\n setThumbValue(index, getThumbMaxValue(index));\n break;\n }\n setThumbDragging(index, false);\n }\n });\n\n let {moveProps} = useMove({\n onMoveStart() {\n currentPosition.current = null;\n stateRef.current.setThumbDragging(index, true);\n },\n onMove({deltaX, deltaY, pointerType, shiftKey}) {\n const {\n getThumbPercent,\n setThumbPercent,\n decrementThumb,\n incrementThumb,\n step,\n pageSize\n } = stateRef.current;\n let {width, height} = trackRef.current.getBoundingClientRect();\n let size = isVertical ? height : width;\n\n if (currentPosition.current == null) {\n currentPosition.current = getThumbPercent(index) * size;\n }\n if (pointerType === 'keyboard') {\n if ((deltaX > 0 && reverseX) || (deltaX < 0 && !reverseX) || deltaY > 0) {\n decrementThumb(index, shiftKey ? pageSize : step);\n } else {\n incrementThumb(index, shiftKey ? pageSize : step);\n }\n } else {\n let delta = isVertical ? deltaY : deltaX;\n if (isVertical || reverseX) {\n delta = -delta;\n }\n\n currentPosition.current += delta;\n setThumbPercent(index, clamp(currentPosition.current / size, 0, 1));\n }\n },\n onMoveEnd() {\n stateRef.current.setThumbDragging(index, false);\n }\n });\n\n // Immediately register editability with the state\n state.setThumbEditable(index, !isDisabled);\n\n const {focusableProps} = useFocusable(\n mergeProps(opts, {\n onFocus: () => state.setFocusedThumb(index),\n onBlur: () => state.setFocusedThumb(undefined)\n }),\n inputRef\n );\n\n let currentPointer = useRef<number | undefined>(undefined);\n let onDown = (id?: number) => {\n focusInput();\n currentPointer.current = id;\n state.setThumbDragging(index, true);\n\n addGlobalListener(window, 'mouseup', onUp, false);\n addGlobalListener(window, 'touchend', onUp, false);\n addGlobalListener(window, 'pointerup', onUp, false);\n\n };\n\n let onUp = (e) => {\n let id = e.pointerId ?? e.changedTouches?.[0].identifier;\n if (id === currentPointer.current) {\n focusInput();\n state.setThumbDragging(index, false);\n removeGlobalListener(window, 'mouseup', onUp, false);\n removeGlobalListener(window, 'touchend', onUp, false);\n removeGlobalListener(window, 'pointerup', onUp, false);\n }\n };\n\n let thumbPosition = state.getThumbPercent(index);\n if (isVertical || direction === 'rtl') {\n thumbPosition = 1 - thumbPosition;\n }\n\n let interactions = !isDisabled ? mergeProps(\n keyboardProps,\n moveProps,\n {\n onMouseDown: (e: React.MouseEvent) => {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDown();\n },\n onPointerDown: (e: React.PointerEvent) => {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDown(e.pointerId);\n },\n onTouchStart: (e: React.TouchEvent) => {onDown(e.changedTouches[0].identifier);}\n }\n ) : {};\n\n // We install mouse handlers for the drag motion on the thumb div, but\n // not the key handler for moving the thumb with the slider. Instead,\n // we focus the range input, and let the browser handle the keyboard\n // interactions; we then listen to input's onChange to update state.\n return {\n inputProps: mergeProps(focusableProps, fieldProps, {\n type: 'range',\n tabIndex: !isDisabled ? 0 : undefined,\n min: state.getThumbMinValue(index),\n max: state.getThumbMaxValue(index),\n step: state.step,\n value: value,\n disabled: isDisabled,\n 'aria-orientation': orientation,\n 'aria-valuetext': state.getThumbValueLabel(index),\n 'aria-required': isRequired || undefined,\n 'aria-invalid': validationState === 'invalid' || undefined,\n 'aria-errormessage': opts['aria-errormessage'],\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n stateRef.current.setThumbValue(index, parseFloat(e.target.value));\n }\n }),\n thumbProps: {\n ...interactions,\n style: {\n position: 'absolute',\n [isVertical ? 'top' : 'left']: `${thumbPosition * 100}%`,\n transform: 'translate(-50%, -50%)',\n touchAction: 'none'\n }\n },\n labelProps,\n isDragging: state.isThumbDragging(index),\n isDisabled,\n isFocused\n };\n}\n"],"names":[],"version":3,"file":"main.js.map"}
package/dist/module.js CHANGED
@@ -5,12 +5,6 @@ import {useLabel as $fA3fN$useLabel} from "@react-aria/label";
5
5
  import {useLocale as $fA3fN$useLocale} from "@react-aria/i18n";
6
6
  import {useFocusable as $fA3fN$useFocusable} from "@react-aria/focus";
7
7
 
8
- function $parcel$export(e, n, v, s) {
9
- Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
10
- }
11
- var $bcca50147b47f54d$exports = {};
12
-
13
- $parcel$export($bcca50147b47f54d$exports, "useSlider", () => $bcca50147b47f54d$export$56b2c08e277f365);
14
8
 
15
9
  const $aa519ee6cf463259$export$7a8d2b02c9371cbf = new WeakMap();
16
10
  function $aa519ee6cf463259$export$68e648cbec363a18(state, index) {
@@ -46,7 +40,8 @@ function $bcca50147b47f54d$export$56b2c08e277f365(props, state, trackRef) {
46
40
  currentPosition.current = null;
47
41
  },
48
42
  onMove ({ deltaX: deltaX , deltaY: deltaY }) {
49
- let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;
43
+ let { height: height , width: width } = trackRef.current.getBoundingClientRect();
44
+ let size = isVertical ? height : width;
50
45
  if (currentPosition.current == null) currentPosition.current = stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) * size;
51
46
  let delta = isVertical ? deltaY : deltaX;
52
47
  if (isVertical || reverseX) delta = -delta;
@@ -68,9 +63,10 @@ function $bcca50147b47f54d$export$56b2c08e277f365(props, state, trackRef) {
68
63
  // We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.
69
64
  if (trackRef.current && !props.isDisabled && state.values.every((_, i)=>!state.isThumbDragging(i)
70
65
  )) {
71
- let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;
66
+ let { height: height , width: width , top: top , left: left } = trackRef.current.getBoundingClientRect();
67
+ let size = isVertical ? height : width;
72
68
  // Find the closest thumb
73
- const trackPosition = trackRef.current.getBoundingClientRect()[isVertical ? 'top' : 'left'];
69
+ const trackPosition = isVertical ? top : left;
74
70
  const clickPosition = isVertical ? clientY : clientX;
75
71
  const offset = clickPosition - trackPosition;
76
72
  let percent = offset / size;
@@ -118,7 +114,7 @@ function $bcca50147b47f54d$export$56b2c08e277f365(props, state, trackRef) {
118
114
  removeGlobalListener(window, 'pointerup', onUpTrack, false);
119
115
  }
120
116
  };
121
- if (labelProps.htmlFor) {
117
+ if ('htmlFor' in labelProps && labelProps.htmlFor) {
122
118
  // Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS
123
119
  // causes this to override the `aria-labelledby` on the thumb. This causes the first
124
120
  // thumb to only be announced as the slider label rather than its individual name as well.
@@ -167,9 +163,6 @@ function $bcca50147b47f54d$export$56b2c08e277f365(props, state, trackRef) {
167
163
  }
168
164
 
169
165
 
170
- var $47b897dc8cdb026b$exports = {};
171
-
172
- $parcel$export($47b897dc8cdb026b$exports, "useSliderThumb", () => $47b897dc8cdb026b$export$8d15029008292ae);
173
166
 
174
167
 
175
168
 
@@ -243,7 +236,8 @@ function $47b897dc8cdb026b$export$8d15029008292ae(opts, state) {
243
236
  },
244
237
  onMove ({ deltaX: deltaX , deltaY: deltaY , pointerType: pointerType , shiftKey: shiftKey }) {
245
238
  const { getThumbPercent: getThumbPercent , setThumbPercent: setThumbPercent , decrementThumb: decrementThumb , incrementThumb: incrementThumb , step: step , pageSize: pageSize } = stateRef.current;
246
- let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;
239
+ let { width: width , height: height } = trackRef.current.getBoundingClientRect();
240
+ let size = isVertical ? height : width;
247
241
  if (currentPosition.current == null) currentPosition.current = getThumbPercent(index) * size;
248
242
  if (pointerType === 'keyboard') {
249
243
  if (deltaX > 0 && reverseX || deltaX < 0 && !reverseX || deltaY > 0) decrementThumb(index, shiftKey ? pageSize : step);
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-aria/slider/src/index.ts","packages/@react-aria/slider/src/useSlider.ts","packages/@react-aria/slider/src/utils.ts","packages/@react-aria/slider/src/useSliderThumb.ts"],"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\nexport * from './useSlider';\nexport * from './useSliderThumb';\n","/*\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 {AriaSliderProps} from '@react-types/slider';\nimport {clamp, mergeProps, useGlobalListeners} from '@react-aria/utils';\nimport {getSliderThumbId, sliderIds} from './utils';\nimport React, {HTMLAttributes, LabelHTMLAttributes, OutputHTMLAttributes, RefObject, useRef} from 'react';\nimport {setInteractionModality, useMove} from '@react-aria/interactions';\nimport {SliderState} from '@react-stately/slider';\nimport {useLabel} from '@react-aria/label';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SliderAria {\n /** Props for the label element. */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>,\n\n /** Props for the root element of the slider component; groups slider inputs. */\n groupProps: HTMLAttributes<HTMLElement>,\n\n /** Props for the track element. */\n trackProps: HTMLAttributes<HTMLElement>,\n\n /** Props for the output element, displaying the value of the slider thumbs. */\n outputProps: OutputHTMLAttributes<HTMLOutputElement>\n}\n\n/**\n * Provides the behavior and accessibility implementation for a slider component representing one or more values.\n *\n * @param props Props for the slider.\n * @param state State for the slider, as returned by `useSliderState`.\n * @param trackRef Ref for the \"track\" element. The width of this element provides the \"length\"\n * of the track -- the span of one dimensional space that the slider thumb can be. It also\n * accepts click and drag motions, so that the closest thumb will follow clicks and drags on\n * the track.\n */\nexport function useSlider(\n props: AriaSliderProps,\n state: SliderState,\n trackRef: RefObject<HTMLElement>\n): SliderAria {\n let {labelProps, fieldProps} = useLabel(props);\n\n let isVertical = props.orientation === 'vertical';\n\n // Attach id of the label to the state so it can be accessed by useSliderThumb.\n sliderIds.set(state, labelProps.id ?? fieldProps.id);\n\n let {direction} = useLocale();\n\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n // When the user clicks or drags the track, we want the motion to set and drag the\n // closest thumb. Hence we also need to install useMove() on the track element.\n // Here, we keep track of which index is the \"closest\" to the drag start point.\n // It is set onMouseDown/onTouchDown; see trackProps below.\n const realTimeTrackDraggingIndex = useRef<number | null>(null);\n\n const stateRef = useRef<SliderState>(null);\n stateRef.current = state;\n const reverseX = direction === 'rtl';\n const currentPosition = useRef<number>(null);\n const {moveProps} = useMove({\n onMoveStart() {\n currentPosition.current = null;\n },\n onMove({deltaX, deltaY}) {\n let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;\n\n if (currentPosition.current == null) {\n currentPosition.current = stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) * size;\n }\n\n let delta = isVertical ? deltaY : deltaX;\n if (isVertical || reverseX) {\n delta = -delta;\n }\n\n currentPosition.current += delta;\n\n if (realTimeTrackDraggingIndex.current != null && trackRef.current) {\n const percent = clamp(currentPosition.current / size, 0, 1);\n stateRef.current.setThumbPercent(realTimeTrackDraggingIndex.current, percent);\n }\n },\n onMoveEnd() {\n if (realTimeTrackDraggingIndex.current != null) {\n stateRef.current.setThumbDragging(realTimeTrackDraggingIndex.current, false);\n realTimeTrackDraggingIndex.current = null;\n }\n }\n });\n\n let currentPointer = useRef<number | null | undefined>(undefined);\n let onDownTrack = (e: React.UIEvent, id: number, clientX: number, clientY: number) => {\n // We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.\n if (trackRef.current && !props.isDisabled && state.values.every((_, i) => !state.isThumbDragging(i))) {\n let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;\n // Find the closest thumb\n const trackPosition = trackRef.current.getBoundingClientRect()[isVertical ? 'top' : 'left'];\n const clickPosition = isVertical ? clientY : clientX;\n const offset = clickPosition - trackPosition;\n let percent = offset / size;\n if (direction === 'rtl' || isVertical) {\n percent = 1 - percent;\n }\n let value = state.getPercentValue(percent);\n\n // to find the closet thumb we split the array based on the first thumb position to the \"right/end\" of the click.\n let closestThumb;\n let split = state.values.findIndex(v => value - v < 0);\n if (split === 0) { // If the index is zero then the closetThumb is the first one\n closestThumb = split;\n } else if (split === -1) { // If no index is found they've clicked past all the thumbs\n closestThumb = state.values.length - 1;\n } else {\n let lastLeft = state.values[split - 1];\n let firstRight = state.values[split];\n // Pick the last left/start thumb, unless they are stacked on top of each other, then pick the right/end one\n if (Math.abs(lastLeft - value) < Math.abs(firstRight - value)) {\n closestThumb = split - 1;\n } else {\n closestThumb = split;\n }\n }\n\n // Confirm that the found closest thumb is editable, not disabled, and move it\n if (closestThumb >= 0 && state.isThumbEditable(closestThumb)) {\n // Don't unfocus anything\n e.preventDefault();\n\n realTimeTrackDraggingIndex.current = closestThumb;\n state.setFocusedThumb(closestThumb);\n currentPointer.current = id;\n\n state.setThumbDragging(realTimeTrackDraggingIndex.current, true);\n state.setThumbValue(closestThumb, value);\n\n addGlobalListener(window, 'mouseup', onUpTrack, false);\n addGlobalListener(window, 'touchend', onUpTrack, false);\n addGlobalListener(window, 'pointerup', onUpTrack, false);\n } else {\n realTimeTrackDraggingIndex.current = null;\n }\n }\n };\n\n let onUpTrack = (e) => {\n let id = e.pointerId ?? e.changedTouches?.[0].identifier;\n if (id === currentPointer.current) {\n if (realTimeTrackDraggingIndex.current != null) {\n state.setThumbDragging(realTimeTrackDraggingIndex.current, false);\n realTimeTrackDraggingIndex.current = null;\n }\n\n removeGlobalListener(window, 'mouseup', onUpTrack, false);\n removeGlobalListener(window, 'touchend', onUpTrack, false);\n removeGlobalListener(window, 'pointerup', onUpTrack, false);\n }\n };\n\n if (labelProps.htmlFor) {\n // Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS\n // causes this to override the `aria-labelledby` on the thumb. This causes the first\n // thumb to only be announced as the slider label rather than its individual name as well.\n // See https://bugs.webkit.org/show_bug.cgi?id=172464.\n delete labelProps.htmlFor;\n labelProps.onClick = () => {\n // Safari does not focus <input type=\"range\"> elements when clicking on an associated <label>,\n // so do it manually. In addition, make sure we show the focus ring.\n document.getElementById(getSliderThumbId(state, 0))?.focus();\n setInteractionModality('keyboard');\n };\n }\n\n return {\n labelProps,\n // The root element of the Slider will have role=\"group\" to group together\n // all the thumb inputs in the Slider. The label of the Slider will\n // be used to label the group.\n groupProps: {\n role: 'group',\n ...fieldProps\n },\n trackProps: mergeProps({\n onMouseDown(e: React.MouseEvent<HTMLElement>) {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDownTrack(e, undefined, e.clientX, e.clientY);\n },\n onPointerDown(e: React.PointerEvent<HTMLElement>) {\n if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {\n return;\n }\n onDownTrack(e, e.pointerId, e.clientX, e.clientY);\n },\n onTouchStart(e: React.TouchEvent<HTMLElement>) { onDownTrack(e, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY); },\n style: {\n position: 'relative',\n touchAction: 'none'\n }\n }, moveProps),\n outputProps: {\n htmlFor: state.values.map((_, index) => getSliderThumbId(state, index)).join(' '),\n 'aria-live': 'off'\n }\n };\n}\n","import {SliderState} from '@react-stately/slider';\n\nexport const sliderIds = new WeakMap<SliderState, string>();\n\nexport function getSliderThumbId(state: SliderState, index: number) {\n let id = sliderIds.get(state);\n if (!id) {\n throw new Error('Unknown slider state');\n }\n\n return `${id}-${index}`;\n}\n","import {AriaSliderThumbProps} from '@react-types/slider';\nimport {clamp, focusWithoutScrolling, mergeProps, useGlobalListeners} from '@react-aria/utils';\nimport {getSliderThumbId, sliderIds} from './utils';\nimport React, {ChangeEvent, HTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, RefObject, useCallback, useEffect, useRef} from 'react';\nimport {SliderState} from '@react-stately/slider';\nimport {useFocusable} from '@react-aria/focus';\nimport {useKeyboard, useMove} from '@react-aria/interactions';\nimport {useLabel} from '@react-aria/label';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SliderThumbAria {\n /** Props for the root thumb element; handles the dragging motion. */\n thumbProps: HTMLAttributes<HTMLElement>,\n\n /** Props for the visually hidden range input element. */\n inputProps: InputHTMLAttributes<HTMLInputElement>,\n\n /** Props for the label element for this thumb (optional). */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>,\n\n /** Whether this thumb is currently being dragged. */\n isDragging: boolean,\n /** Whether the thumb is currently focused. */\n isFocused: boolean,\n /** Whether the thumb is disabled. */\n isDisabled: boolean\n}\n\ninterface SliderThumbOptions extends AriaSliderThumbProps {\n /** A ref to the track element. */\n trackRef: RefObject<HTMLElement>,\n /** A ref to the thumb input element. */\n inputRef: RefObject<HTMLInputElement>\n}\n\n/**\n * Provides behavior and accessibility for a thumb of a slider component.\n *\n * @param opts Options for this Slider thumb.\n * @param state Slider state, created via `useSliderState`.\n */\nexport function useSliderThumb(\n opts: SliderThumbOptions,\n state: SliderState\n): SliderThumbAria {\n let {\n index,\n isRequired,\n validationState,\n trackRef,\n inputRef,\n orientation = state.orientation\n } = opts;\n\n let isDisabled = opts.isDisabled || state.isDisabled;\n let isVertical = orientation === 'vertical';\n\n let {direction} = useLocale();\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n let labelId = sliderIds.get(state);\n const {labelProps, fieldProps} = useLabel({\n ...opts,\n id: getSliderThumbId(state, index),\n 'aria-labelledby': `${labelId} ${opts['aria-labelledby'] ?? ''}`.trim()\n });\n\n const value = state.values[index];\n\n const focusInput = useCallback(() => {\n if (inputRef.current) {\n focusWithoutScrolling(inputRef.current);\n }\n }, [inputRef]);\n\n const isFocused = state.focusedThumb === index;\n\n useEffect(() => {\n if (isFocused) {\n focusInput();\n }\n }, [isFocused, focusInput]);\n\n const stateRef = useRef<SliderState>(null);\n stateRef.current = state;\n let reverseX = direction === 'rtl';\n let currentPosition = useRef<number>(null);\n\n let {keyboardProps} = useKeyboard({\n onKeyDown(e) {\n let {\n getThumbMaxValue,\n getThumbMinValue,\n decrementThumb,\n incrementThumb,\n setThumbValue,\n setThumbDragging,\n pageSize\n } = stateRef.current;\n // these are the cases that useMove or useSlider don't handle\n if (!/^(PageUp|PageDown|Home|End)$/.test(e.key)) {\n e.continuePropagation();\n return;\n }\n // same handling as useMove, stopPropagation to prevent useSlider from handling the event as well.\n e.preventDefault();\n // remember to set this so that onChangeEnd is fired\n setThumbDragging(index, true);\n switch (e.key) {\n case 'PageUp':\n incrementThumb(index, pageSize);\n break;\n case 'PageDown':\n decrementThumb(index, pageSize);\n break;\n case 'Home':\n setThumbValue(index, getThumbMinValue(index));\n break;\n case 'End':\n setThumbValue(index, getThumbMaxValue(index));\n break;\n }\n setThumbDragging(index, false);\n }\n });\n\n let {moveProps} = useMove({\n onMoveStart() {\n currentPosition.current = null;\n stateRef.current.setThumbDragging(index, true);\n },\n onMove({deltaX, deltaY, pointerType, shiftKey}) {\n const {\n getThumbPercent,\n setThumbPercent,\n decrementThumb,\n incrementThumb,\n step,\n pageSize\n } = stateRef.current;\n let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;\n\n if (currentPosition.current == null) {\n currentPosition.current = getThumbPercent(index) * size;\n }\n if (pointerType === 'keyboard') {\n if ((deltaX > 0 && reverseX) || (deltaX < 0 && !reverseX) || deltaY > 0) {\n decrementThumb(index, shiftKey ? pageSize : step);\n } else {\n incrementThumb(index, shiftKey ? pageSize : step);\n }\n } else {\n let delta = isVertical ? deltaY : deltaX;\n if (isVertical || reverseX) {\n delta = -delta;\n }\n\n currentPosition.current += delta;\n setThumbPercent(index, clamp(currentPosition.current / size, 0, 1));\n }\n },\n onMoveEnd() {\n stateRef.current.setThumbDragging(index, false);\n }\n });\n\n // Immediately register editability with the state\n state.setThumbEditable(index, !isDisabled);\n\n const {focusableProps} = useFocusable(\n mergeProps(opts, {\n onFocus: () => state.setFocusedThumb(index),\n onBlur: () => state.setFocusedThumb(undefined)\n }),\n inputRef\n );\n\n let currentPointer = useRef<number | undefined>(undefined);\n let onDown = (id?: number) => {\n focusInput();\n currentPointer.current = id;\n state.setThumbDragging(index, true);\n\n addGlobalListener(window, 'mouseup', onUp, false);\n addGlobalListener(window, 'touchend', onUp, false);\n addGlobalListener(window, 'pointerup', onUp, false);\n\n };\n\n let onUp = (e) => {\n let id = e.pointerId ?? e.changedTouches?.[0].identifier;\n if (id === currentPointer.current) {\n focusInput();\n state.setThumbDragging(index, false);\n removeGlobalListener(window, 'mouseup', onUp, false);\n removeGlobalListener(window, 'touchend', onUp, false);\n removeGlobalListener(window, 'pointerup', onUp, false);\n }\n };\n\n let thumbPosition = state.getThumbPercent(index);\n if (isVertical || direction === 'rtl') {\n thumbPosition = 1 - thumbPosition;\n }\n\n let interactions = !isDisabled ? mergeProps(\n keyboardProps,\n moveProps,\n {\n onMouseDown: (e: React.MouseEvent<HTMLElement>) => {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDown();\n },\n onPointerDown: (e: React.PointerEvent<HTMLElement>) => {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDown(e.pointerId);\n },\n onTouchStart: (e: React.TouchEvent<HTMLElement>) => {onDown(e.changedTouches[0].identifier);}\n }\n ) : {};\n\n // We install mouse handlers for the drag motion on the thumb div, but\n // not the key handler for moving the thumb with the slider. Instead,\n // we focus the range input, and let the browser handle the keyboard\n // interactions; we then listen to input's onChange to update state.\n return {\n inputProps: mergeProps(focusableProps, fieldProps, {\n type: 'range',\n tabIndex: !isDisabled ? 0 : undefined,\n min: state.getThumbMinValue(index),\n max: state.getThumbMaxValue(index),\n step: state.step,\n value: value,\n disabled: isDisabled,\n 'aria-orientation': orientation,\n 'aria-valuetext': state.getThumbValueLabel(index),\n 'aria-required': isRequired || undefined,\n 'aria-invalid': validationState === 'invalid' || undefined,\n 'aria-errormessage': opts['aria-errormessage'],\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n stateRef.current.setThumbValue(index, parseFloat(e.target.value));\n }\n }),\n thumbProps: {\n ...interactions,\n style: {\n position: 'absolute',\n [isVertical ? 'top' : 'left']: `${thumbPosition * 100}%`,\n transform: 'translate(-50%, -50%)',\n touchAction: 'none'\n }\n },\n labelProps,\n isDragging: state.isThumbDragging(index),\n isDisabled,\n isFocused\n };\n}\n"],"names":[],"version":3,"file":"module.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-aria/slider/src/index.ts","packages/@react-aria/slider/src/useSlider.ts","packages/@react-aria/slider/src/utils.ts","packages/@react-aria/slider/src/useSliderThumb.ts"],"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 */\nexport {useSlider} from './useSlider';\nexport {useSliderThumb} from './useSliderThumb';\n","/*\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 {AriaSliderProps} from '@react-types/slider';\nimport {clamp, mergeProps, useGlobalListeners} from '@react-aria/utils';\nimport {DOMAttributes} from '@react-types/shared';\nimport {getSliderThumbId, sliderIds} from './utils';\nimport React, {LabelHTMLAttributes, OutputHTMLAttributes, RefObject, useRef} from 'react';\nimport {setInteractionModality, useMove} from '@react-aria/interactions';\nimport {SliderState} from '@react-stately/slider';\nimport {useLabel} from '@react-aria/label';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SliderAria {\n /** Props for the label element. */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>,\n\n /** Props for the root element of the slider component; groups slider inputs. */\n groupProps: DOMAttributes,\n\n /** Props for the track element. */\n trackProps: DOMAttributes,\n\n /** Props for the output element, displaying the value of the slider thumbs. */\n outputProps: OutputHTMLAttributes<HTMLOutputElement>\n}\n\n/**\n * Provides the behavior and accessibility implementation for a slider component representing one or more values.\n *\n * @param props Props for the slider.\n * @param state State for the slider, as returned by `useSliderState`.\n * @param trackRef Ref for the \"track\" element. The width of this element provides the \"length\"\n * of the track -- the span of one dimensional space that the slider thumb can be. It also\n * accepts click and drag motions, so that the closest thumb will follow clicks and drags on\n * the track.\n */\nexport function useSlider(\n props: AriaSliderProps,\n state: SliderState,\n trackRef: RefObject<Element>\n): SliderAria {\n let {labelProps, fieldProps} = useLabel(props);\n\n let isVertical = props.orientation === 'vertical';\n\n // Attach id of the label to the state so it can be accessed by useSliderThumb.\n sliderIds.set(state, labelProps.id ?? fieldProps.id);\n\n let {direction} = useLocale();\n\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n // When the user clicks or drags the track, we want the motion to set and drag the\n // closest thumb. Hence we also need to install useMove() on the track element.\n // Here, we keep track of which index is the \"closest\" to the drag start point.\n // It is set onMouseDown/onTouchDown; see trackProps below.\n const realTimeTrackDraggingIndex = useRef<number | null>(null);\n\n const stateRef = useRef<SliderState>(null);\n stateRef.current = state;\n const reverseX = direction === 'rtl';\n const currentPosition = useRef<number>(null);\n const {moveProps} = useMove({\n onMoveStart() {\n currentPosition.current = null;\n },\n onMove({deltaX, deltaY}) {\n let {height, width} = trackRef.current.getBoundingClientRect();\n let size = isVertical ? height : width;\n\n if (currentPosition.current == null) {\n currentPosition.current = stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) * size;\n }\n\n let delta = isVertical ? deltaY : deltaX;\n if (isVertical || reverseX) {\n delta = -delta;\n }\n\n currentPosition.current += delta;\n\n if (realTimeTrackDraggingIndex.current != null && trackRef.current) {\n const percent = clamp(currentPosition.current / size, 0, 1);\n stateRef.current.setThumbPercent(realTimeTrackDraggingIndex.current, percent);\n }\n },\n onMoveEnd() {\n if (realTimeTrackDraggingIndex.current != null) {\n stateRef.current.setThumbDragging(realTimeTrackDraggingIndex.current, false);\n realTimeTrackDraggingIndex.current = null;\n }\n }\n });\n\n let currentPointer = useRef<number | null | undefined>(undefined);\n let onDownTrack = (e: React.UIEvent, id: number, clientX: number, clientY: number) => {\n // We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.\n if (trackRef.current && !props.isDisabled && state.values.every((_, i) => !state.isThumbDragging(i))) {\n let {height, width, top, left} = trackRef.current.getBoundingClientRect();\n let size = isVertical ? height : width;\n // Find the closest thumb\n const trackPosition = isVertical ? top : left;\n const clickPosition = isVertical ? clientY : clientX;\n const offset = clickPosition - trackPosition;\n let percent = offset / size;\n if (direction === 'rtl' || isVertical) {\n percent = 1 - percent;\n }\n let value = state.getPercentValue(percent);\n\n // to find the closet thumb we split the array based on the first thumb position to the \"right/end\" of the click.\n let closestThumb;\n let split = state.values.findIndex(v => value - v < 0);\n if (split === 0) { // If the index is zero then the closetThumb is the first one\n closestThumb = split;\n } else if (split === -1) { // If no index is found they've clicked past all the thumbs\n closestThumb = state.values.length - 1;\n } else {\n let lastLeft = state.values[split - 1];\n let firstRight = state.values[split];\n // Pick the last left/start thumb, unless they are stacked on top of each other, then pick the right/end one\n if (Math.abs(lastLeft - value) < Math.abs(firstRight - value)) {\n closestThumb = split - 1;\n } else {\n closestThumb = split;\n }\n }\n\n // Confirm that the found closest thumb is editable, not disabled, and move it\n if (closestThumb >= 0 && state.isThumbEditable(closestThumb)) {\n // Don't unfocus anything\n e.preventDefault();\n\n realTimeTrackDraggingIndex.current = closestThumb;\n state.setFocusedThumb(closestThumb);\n currentPointer.current = id;\n\n state.setThumbDragging(realTimeTrackDraggingIndex.current, true);\n state.setThumbValue(closestThumb, value);\n\n addGlobalListener(window, 'mouseup', onUpTrack, false);\n addGlobalListener(window, 'touchend', onUpTrack, false);\n addGlobalListener(window, 'pointerup', onUpTrack, false);\n } else {\n realTimeTrackDraggingIndex.current = null;\n }\n }\n };\n\n let onUpTrack = (e) => {\n let id = e.pointerId ?? e.changedTouches?.[0].identifier;\n if (id === currentPointer.current) {\n if (realTimeTrackDraggingIndex.current != null) {\n state.setThumbDragging(realTimeTrackDraggingIndex.current, false);\n realTimeTrackDraggingIndex.current = null;\n }\n\n removeGlobalListener(window, 'mouseup', onUpTrack, false);\n removeGlobalListener(window, 'touchend', onUpTrack, false);\n removeGlobalListener(window, 'pointerup', onUpTrack, false);\n }\n };\n\n if ('htmlFor' in labelProps && labelProps.htmlFor) {\n // Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS\n // causes this to override the `aria-labelledby` on the thumb. This causes the first\n // thumb to only be announced as the slider label rather than its individual name as well.\n // See https://bugs.webkit.org/show_bug.cgi?id=172464.\n delete labelProps.htmlFor;\n labelProps.onClick = () => {\n // Safari does not focus <input type=\"range\"> elements when clicking on an associated <label>,\n // so do it manually. In addition, make sure we show the focus ring.\n document.getElementById(getSliderThumbId(state, 0))?.focus();\n setInteractionModality('keyboard');\n };\n }\n\n return {\n labelProps,\n // The root element of the Slider will have role=\"group\" to group together\n // all the thumb inputs in the Slider. The label of the Slider will\n // be used to label the group.\n groupProps: {\n role: 'group',\n ...fieldProps\n },\n trackProps: mergeProps({\n onMouseDown(e: React.MouseEvent) {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDownTrack(e, undefined, e.clientX, e.clientY);\n },\n onPointerDown(e: React.PointerEvent) {\n if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {\n return;\n }\n onDownTrack(e, e.pointerId, e.clientX, e.clientY);\n },\n onTouchStart(e: React.TouchEvent) { onDownTrack(e, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY); },\n style: {\n position: 'relative',\n touchAction: 'none'\n }\n }, moveProps),\n outputProps: {\n htmlFor: state.values.map((_, index) => getSliderThumbId(state, index)).join(' '),\n 'aria-live': 'off'\n }\n };\n}\n","import {SliderState} from '@react-stately/slider';\n\nexport const sliderIds = new WeakMap<SliderState, string>();\n\nexport function getSliderThumbId(state: SliderState, index: number) {\n let id = sliderIds.get(state);\n if (!id) {\n throw new Error('Unknown slider state');\n }\n\n return `${id}-${index}`;\n}\n","import {AriaSliderThumbProps} from '@react-types/slider';\nimport {clamp, focusWithoutScrolling, mergeProps, useGlobalListeners} from '@react-aria/utils';\nimport {DOMAttributes} from '@react-types/shared';\nimport {getSliderThumbId, sliderIds} from './utils';\nimport React, {ChangeEvent, InputHTMLAttributes, LabelHTMLAttributes, RefObject, useCallback, useEffect, useRef} from 'react';\nimport {SliderState} from '@react-stately/slider';\nimport {useFocusable} from '@react-aria/focus';\nimport {useKeyboard, useMove} from '@react-aria/interactions';\nimport {useLabel} from '@react-aria/label';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SliderThumbAria {\n /** Props for the root thumb element; handles the dragging motion. */\n thumbProps: DOMAttributes,\n\n /** Props for the visually hidden range input element. */\n inputProps: InputHTMLAttributes<HTMLInputElement>,\n\n /** Props for the label element for this thumb (optional). */\n labelProps: LabelHTMLAttributes<HTMLLabelElement>,\n\n /** Whether this thumb is currently being dragged. */\n isDragging: boolean,\n /** Whether the thumb is currently focused. */\n isFocused: boolean,\n /** Whether the thumb is disabled. */\n isDisabled: boolean\n}\n\ninterface SliderThumbOptions extends AriaSliderThumbProps {\n /** A ref to the track element. */\n trackRef: RefObject<Element>,\n /** A ref to the thumb input element. */\n inputRef: RefObject<HTMLInputElement>\n}\n\n/**\n * Provides behavior and accessibility for a thumb of a slider component.\n *\n * @param opts Options for this Slider thumb.\n * @param state Slider state, created via `useSliderState`.\n */\nexport function useSliderThumb(\n opts: SliderThumbOptions,\n state: SliderState\n): SliderThumbAria {\n let {\n index,\n isRequired,\n validationState,\n trackRef,\n inputRef,\n orientation = state.orientation\n } = opts;\n\n let isDisabled = opts.isDisabled || state.isDisabled;\n let isVertical = orientation === 'vertical';\n\n let {direction} = useLocale();\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n let labelId = sliderIds.get(state);\n const {labelProps, fieldProps} = useLabel({\n ...opts,\n id: getSliderThumbId(state, index),\n 'aria-labelledby': `${labelId} ${opts['aria-labelledby'] ?? ''}`.trim()\n });\n\n const value = state.values[index];\n\n const focusInput = useCallback(() => {\n if (inputRef.current) {\n focusWithoutScrolling(inputRef.current);\n }\n }, [inputRef]);\n\n const isFocused = state.focusedThumb === index;\n\n useEffect(() => {\n if (isFocused) {\n focusInput();\n }\n }, [isFocused, focusInput]);\n\n const stateRef = useRef<SliderState>(null);\n stateRef.current = state;\n let reverseX = direction === 'rtl';\n let currentPosition = useRef<number>(null);\n\n let {keyboardProps} = useKeyboard({\n onKeyDown(e) {\n let {\n getThumbMaxValue,\n getThumbMinValue,\n decrementThumb,\n incrementThumb,\n setThumbValue,\n setThumbDragging,\n pageSize\n } = stateRef.current;\n // these are the cases that useMove or useSlider don't handle\n if (!/^(PageUp|PageDown|Home|End)$/.test(e.key)) {\n e.continuePropagation();\n return;\n }\n // same handling as useMove, stopPropagation to prevent useSlider from handling the event as well.\n e.preventDefault();\n // remember to set this so that onChangeEnd is fired\n setThumbDragging(index, true);\n switch (e.key) {\n case 'PageUp':\n incrementThumb(index, pageSize);\n break;\n case 'PageDown':\n decrementThumb(index, pageSize);\n break;\n case 'Home':\n setThumbValue(index, getThumbMinValue(index));\n break;\n case 'End':\n setThumbValue(index, getThumbMaxValue(index));\n break;\n }\n setThumbDragging(index, false);\n }\n });\n\n let {moveProps} = useMove({\n onMoveStart() {\n currentPosition.current = null;\n stateRef.current.setThumbDragging(index, true);\n },\n onMove({deltaX, deltaY, pointerType, shiftKey}) {\n const {\n getThumbPercent,\n setThumbPercent,\n decrementThumb,\n incrementThumb,\n step,\n pageSize\n } = stateRef.current;\n let {width, height} = trackRef.current.getBoundingClientRect();\n let size = isVertical ? height : width;\n\n if (currentPosition.current == null) {\n currentPosition.current = getThumbPercent(index) * size;\n }\n if (pointerType === 'keyboard') {\n if ((deltaX > 0 && reverseX) || (deltaX < 0 && !reverseX) || deltaY > 0) {\n decrementThumb(index, shiftKey ? pageSize : step);\n } else {\n incrementThumb(index, shiftKey ? pageSize : step);\n }\n } else {\n let delta = isVertical ? deltaY : deltaX;\n if (isVertical || reverseX) {\n delta = -delta;\n }\n\n currentPosition.current += delta;\n setThumbPercent(index, clamp(currentPosition.current / size, 0, 1));\n }\n },\n onMoveEnd() {\n stateRef.current.setThumbDragging(index, false);\n }\n });\n\n // Immediately register editability with the state\n state.setThumbEditable(index, !isDisabled);\n\n const {focusableProps} = useFocusable(\n mergeProps(opts, {\n onFocus: () => state.setFocusedThumb(index),\n onBlur: () => state.setFocusedThumb(undefined)\n }),\n inputRef\n );\n\n let currentPointer = useRef<number | undefined>(undefined);\n let onDown = (id?: number) => {\n focusInput();\n currentPointer.current = id;\n state.setThumbDragging(index, true);\n\n addGlobalListener(window, 'mouseup', onUp, false);\n addGlobalListener(window, 'touchend', onUp, false);\n addGlobalListener(window, 'pointerup', onUp, false);\n\n };\n\n let onUp = (e) => {\n let id = e.pointerId ?? e.changedTouches?.[0].identifier;\n if (id === currentPointer.current) {\n focusInput();\n state.setThumbDragging(index, false);\n removeGlobalListener(window, 'mouseup', onUp, false);\n removeGlobalListener(window, 'touchend', onUp, false);\n removeGlobalListener(window, 'pointerup', onUp, false);\n }\n };\n\n let thumbPosition = state.getThumbPercent(index);\n if (isVertical || direction === 'rtl') {\n thumbPosition = 1 - thumbPosition;\n }\n\n let interactions = !isDisabled ? mergeProps(\n keyboardProps,\n moveProps,\n {\n onMouseDown: (e: React.MouseEvent) => {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDown();\n },\n onPointerDown: (e: React.PointerEvent) => {\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n onDown(e.pointerId);\n },\n onTouchStart: (e: React.TouchEvent) => {onDown(e.changedTouches[0].identifier);}\n }\n ) : {};\n\n // We install mouse handlers for the drag motion on the thumb div, but\n // not the key handler for moving the thumb with the slider. Instead,\n // we focus the range input, and let the browser handle the keyboard\n // interactions; we then listen to input's onChange to update state.\n return {\n inputProps: mergeProps(focusableProps, fieldProps, {\n type: 'range',\n tabIndex: !isDisabled ? 0 : undefined,\n min: state.getThumbMinValue(index),\n max: state.getThumbMaxValue(index),\n step: state.step,\n value: value,\n disabled: isDisabled,\n 'aria-orientation': orientation,\n 'aria-valuetext': state.getThumbValueLabel(index),\n 'aria-required': isRequired || undefined,\n 'aria-invalid': validationState === 'invalid' || undefined,\n 'aria-errormessage': opts['aria-errormessage'],\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n stateRef.current.setThumbValue(index, parseFloat(e.target.value));\n }\n }),\n thumbProps: {\n ...interactions,\n style: {\n position: 'absolute',\n [isVertical ? 'top' : 'left']: `${thumbPosition * 100}%`,\n transform: 'translate(-50%, -50%)',\n touchAction: 'none'\n }\n },\n labelProps,\n isDragging: state.isThumbDragging(index),\n isDisabled,\n isFocused\n };\n}\n"],"names":[],"version":3,"file":"module.js.map"}
package/dist/types.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import { AriaSliderProps, AriaSliderThumbProps } from "@react-types/slider";
2
- import { HTMLAttributes, LabelHTMLAttributes, OutputHTMLAttributes, RefObject, InputHTMLAttributes } from "react";
2
+ import { DOMAttributes } from "@react-types/shared";
3
+ import { LabelHTMLAttributes, OutputHTMLAttributes, RefObject, InputHTMLAttributes } from "react";
3
4
  import { SliderState } from "@react-stately/slider";
4
5
  interface SliderAria {
5
6
  /** Props for the label element. */
6
7
  labelProps: LabelHTMLAttributes<HTMLLabelElement>;
7
8
  /** Props for the root element of the slider component; groups slider inputs. */
8
- groupProps: HTMLAttributes<HTMLElement>;
9
+ groupProps: DOMAttributes;
9
10
  /** Props for the track element. */
10
- trackProps: HTMLAttributes<HTMLElement>;
11
+ trackProps: DOMAttributes;
11
12
  /** Props for the output element, displaying the value of the slider thumbs. */
12
13
  outputProps: OutputHTMLAttributes<HTMLOutputElement>;
13
14
  }
@@ -21,10 +22,10 @@ interface SliderAria {
21
22
  * accepts click and drag motions, so that the closest thumb will follow clicks and drags on
22
23
  * the track.
23
24
  */
24
- export function useSlider(props: AriaSliderProps, state: SliderState, trackRef: RefObject<HTMLElement>): SliderAria;
25
+ export function useSlider(props: AriaSliderProps, state: SliderState, trackRef: RefObject<Element>): SliderAria;
25
26
  interface SliderThumbAria {
26
27
  /** Props for the root thumb element; handles the dragging motion. */
27
- thumbProps: HTMLAttributes<HTMLElement>;
28
+ thumbProps: DOMAttributes;
28
29
  /** Props for the visually hidden range input element. */
29
30
  inputProps: InputHTMLAttributes<HTMLInputElement>;
30
31
  /** Props for the label element for this thumb (optional). */
@@ -38,7 +39,7 @@ interface SliderThumbAria {
38
39
  }
39
40
  interface SliderThumbOptions extends AriaSliderThumbProps {
40
41
  /** A ref to the track element. */
41
- trackRef: RefObject<HTMLElement>;
42
+ trackRef: RefObject<Element>;
42
43
  /** A ref to the thumb input element. */
43
44
  inputRef: RefObject<HTMLInputElement>;
44
45
  }
@@ -1 +1 @@
1
- {"mappings":";;;ACqBA;IACE,mCAAmC;IACnC,UAAU,EAAE,oBAAoB,gBAAgB,CAAC,CAAC;IAElD,gFAAgF;IAChF,UAAU,EAAE,eAAe,WAAW,CAAC,CAAC;IAExC,mCAAmC;IACnC,UAAU,EAAE,eAAe,WAAW,CAAC,CAAC;IAExC,+EAA+E;IAC/E,WAAW,EAAE,qBAAqB,iBAAiB,CAAC,CAAA;CACrD;AAED;;;;;;;;;GASG;AACH,0BACE,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,UAAU,WAAW,CAAC,GAC/B,UAAU,CAwKZ;AC/MD;IACE,qEAAqE;IACrE,UAAU,EAAE,eAAe,WAAW,CAAC,CAAC;IAExC,yDAAyD;IACzD,UAAU,EAAE,oBAAoB,gBAAgB,CAAC,CAAC;IAElD,6DAA6D;IAC7D,UAAU,EAAE,oBAAoB,gBAAgB,CAAC,CAAC;IAElD,qDAAqD;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,4BAA6B,SAAQ,oBAAoB;IACvD,kCAAkC;IAClC,QAAQ,EAAE,UAAU,WAAW,CAAC,CAAC;IACjC,wCAAwC;IACxC,QAAQ,EAAE,UAAU,gBAAgB,CAAC,CAAA;CACtC;AAED;;;;;GAKG;AACH,+BACE,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,WAAW,GACjB,eAAe,CAyNjB","sources":["packages/@react-aria/slider/src/packages/@react-aria/slider/src/utils.ts","packages/@react-aria/slider/src/packages/@react-aria/slider/src/useSlider.ts","packages/@react-aria/slider/src/packages/@react-aria/slider/src/useSliderThumb.ts","packages/@react-aria/slider/src/packages/@react-aria/slider/src/index.ts","packages/@react-aria/slider/src/index.ts"],"sourcesContent":[null,null,null,null,"/*\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\nexport * from './useSlider';\nexport * from './useSliderThumb';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
1
+ {"mappings":";;;;ACsBA;IACE,mCAAmC;IACnC,UAAU,EAAE,oBAAoB,gBAAgB,CAAC,CAAC;IAElD,gFAAgF;IAChF,UAAU,EAAE,aAAa,CAAC;IAE1B,mCAAmC;IACnC,UAAU,EAAE,aAAa,CAAC;IAE1B,+EAA+E;IAC/E,WAAW,EAAE,qBAAqB,iBAAiB,CAAC,CAAA;CACrD;AAED;;;;;;;;;GASG;AACH,0BACE,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,UAAU,OAAO,CAAC,GAC3B,UAAU,CA0KZ;ACjND;IACE,qEAAqE;IACrE,UAAU,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,UAAU,EAAE,oBAAoB,gBAAgB,CAAC,CAAC;IAElD,6DAA6D;IAC7D,UAAU,EAAE,oBAAoB,gBAAgB,CAAC,CAAC;IAElD,qDAAqD;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,4BAA6B,SAAQ,oBAAoB;IACvD,kCAAkC;IAClC,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;IAC7B,wCAAwC;IACxC,QAAQ,EAAE,UAAU,gBAAgB,CAAC,CAAA;CACtC;AAED;;;;;GAKG;AACH,+BACE,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,WAAW,GACjB,eAAe,CA0NjB","sources":["packages/@react-aria/slider/src/packages/@react-aria/slider/src/utils.ts","packages/@react-aria/slider/src/packages/@react-aria/slider/src/useSlider.ts","packages/@react-aria/slider/src/packages/@react-aria/slider/src/useSliderThumb.ts","packages/@react-aria/slider/src/packages/@react-aria/slider/src/index.ts","packages/@react-aria/slider/src/index.ts"],"sourcesContent":[null,null,null,null,"/*\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 */\nexport {useSlider} from './useSlider';\nexport {useSliderThumb} from './useSliderThumb';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-aria/slider",
3
- "version": "3.1.2-nightly.3359+da520fcc1",
3
+ "version": "3.1.2-nightly.3368+bc1e8f829",
4
4
  "description": "Slider",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
@@ -18,15 +18,16 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@babel/runtime": "^7.6.2",
21
- "@react-aria/focus": "3.0.0-nightly.1659+da520fcc1",
22
- "@react-aria/i18n": "3.0.0-nightly.1659+da520fcc1",
23
- "@react-aria/interactions": "3.0.0-nightly.1659+da520fcc1",
24
- "@react-aria/label": "3.0.0-nightly.1659+da520fcc1",
25
- "@react-aria/utils": "3.0.0-nightly.1659+da520fcc1",
26
- "@react-stately/radio": "3.0.0-nightly.1659+da520fcc1",
27
- "@react-stately/slider": "3.1.2-nightly.3359+da520fcc1",
28
- "@react-types/radio": "3.0.0-nightly.1659+da520fcc1",
29
- "@react-types/slider": "3.1.2-nightly.3359+da520fcc1"
21
+ "@react-aria/focus": "3.0.0-nightly.1668+bc1e8f829",
22
+ "@react-aria/i18n": "3.0.0-nightly.1668+bc1e8f829",
23
+ "@react-aria/interactions": "3.0.0-nightly.1668+bc1e8f829",
24
+ "@react-aria/label": "3.0.0-nightly.1668+bc1e8f829",
25
+ "@react-aria/utils": "3.0.0-nightly.1668+bc1e8f829",
26
+ "@react-stately/radio": "3.0.0-nightly.1668+bc1e8f829",
27
+ "@react-stately/slider": "3.1.2-nightly.3368+bc1e8f829",
28
+ "@react-types/radio": "3.0.0-nightly.1668+bc1e8f829",
29
+ "@react-types/shared": "3.0.0-nightly.1668+bc1e8f829",
30
+ "@react-types/slider": "3.1.2-nightly.3368+bc1e8f829"
30
31
  },
31
32
  "peerDependencies": {
32
33
  "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0"
@@ -34,5 +35,5 @@
34
35
  "publishConfig": {
35
36
  "access": "public"
36
37
  },
37
- "gitHead": "da520fcc159ddc694fd7bdf19cbc485c2e0c6e4b"
38
+ "gitHead": "bc1e8f82922ee0e7d52602efa30ff76dbc4e4708"
38
39
  }
package/src/index.ts CHANGED
@@ -9,6 +9,5 @@
9
9
  * OF ANY KIND, either express or implied. See the License for the specific language
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
-
13
- export * from './useSlider';
14
- export * from './useSliderThumb';
12
+ export {useSlider} from './useSlider';
13
+ export {useSliderThumb} from './useSliderThumb';
package/src/useSlider.ts CHANGED
@@ -12,8 +12,9 @@
12
12
 
13
13
  import {AriaSliderProps} from '@react-types/slider';
14
14
  import {clamp, mergeProps, useGlobalListeners} from '@react-aria/utils';
15
+ import {DOMAttributes} from '@react-types/shared';
15
16
  import {getSliderThumbId, sliderIds} from './utils';
16
- import React, {HTMLAttributes, LabelHTMLAttributes, OutputHTMLAttributes, RefObject, useRef} from 'react';
17
+ import React, {LabelHTMLAttributes, OutputHTMLAttributes, RefObject, useRef} from 'react';
17
18
  import {setInteractionModality, useMove} from '@react-aria/interactions';
18
19
  import {SliderState} from '@react-stately/slider';
19
20
  import {useLabel} from '@react-aria/label';
@@ -24,10 +25,10 @@ interface SliderAria {
24
25
  labelProps: LabelHTMLAttributes<HTMLLabelElement>,
25
26
 
26
27
  /** Props for the root element of the slider component; groups slider inputs. */
27
- groupProps: HTMLAttributes<HTMLElement>,
28
+ groupProps: DOMAttributes,
28
29
 
29
30
  /** Props for the track element. */
30
- trackProps: HTMLAttributes<HTMLElement>,
31
+ trackProps: DOMAttributes,
31
32
 
32
33
  /** Props for the output element, displaying the value of the slider thumbs. */
33
34
  outputProps: OutputHTMLAttributes<HTMLOutputElement>
@@ -46,7 +47,7 @@ interface SliderAria {
46
47
  export function useSlider(
47
48
  props: AriaSliderProps,
48
49
  state: SliderState,
49
- trackRef: RefObject<HTMLElement>
50
+ trackRef: RefObject<Element>
50
51
  ): SliderAria {
51
52
  let {labelProps, fieldProps} = useLabel(props);
52
53
 
@@ -74,7 +75,8 @@ export function useSlider(
74
75
  currentPosition.current = null;
75
76
  },
76
77
  onMove({deltaX, deltaY}) {
77
- let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;
78
+ let {height, width} = trackRef.current.getBoundingClientRect();
79
+ let size = isVertical ? height : width;
78
80
 
79
81
  if (currentPosition.current == null) {
80
82
  currentPosition.current = stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) * size;
@@ -104,9 +106,10 @@ export function useSlider(
104
106
  let onDownTrack = (e: React.UIEvent, id: number, clientX: number, clientY: number) => {
105
107
  // We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.
106
108
  if (trackRef.current && !props.isDisabled && state.values.every((_, i) => !state.isThumbDragging(i))) {
107
- let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;
109
+ let {height, width, top, left} = trackRef.current.getBoundingClientRect();
110
+ let size = isVertical ? height : width;
108
111
  // Find the closest thumb
109
- const trackPosition = trackRef.current.getBoundingClientRect()[isVertical ? 'top' : 'left'];
112
+ const trackPosition = isVertical ? top : left;
110
113
  const clickPosition = isVertical ? clientY : clientX;
111
114
  const offset = clickPosition - trackPosition;
112
115
  let percent = offset / size;
@@ -168,7 +171,7 @@ export function useSlider(
168
171
  }
169
172
  };
170
173
 
171
- if (labelProps.htmlFor) {
174
+ if ('htmlFor' in labelProps && labelProps.htmlFor) {
172
175
  // Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS
173
176
  // causes this to override the `aria-labelledby` on the thumb. This causes the first
174
177
  // thumb to only be announced as the slider label rather than its individual name as well.
@@ -192,19 +195,19 @@ export function useSlider(
192
195
  ...fieldProps
193
196
  },
194
197
  trackProps: mergeProps({
195
- onMouseDown(e: React.MouseEvent<HTMLElement>) {
198
+ onMouseDown(e: React.MouseEvent) {
196
199
  if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
197
200
  return;
198
201
  }
199
202
  onDownTrack(e, undefined, e.clientX, e.clientY);
200
203
  },
201
- onPointerDown(e: React.PointerEvent<HTMLElement>) {
204
+ onPointerDown(e: React.PointerEvent) {
202
205
  if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {
203
206
  return;
204
207
  }
205
208
  onDownTrack(e, e.pointerId, e.clientX, e.clientY);
206
209
  },
207
- onTouchStart(e: React.TouchEvent<HTMLElement>) { onDownTrack(e, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY); },
210
+ onTouchStart(e: React.TouchEvent) { onDownTrack(e, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY); },
208
211
  style: {
209
212
  position: 'relative',
210
213
  touchAction: 'none'
@@ -1,7 +1,8 @@
1
1
  import {AriaSliderThumbProps} from '@react-types/slider';
2
2
  import {clamp, focusWithoutScrolling, mergeProps, useGlobalListeners} from '@react-aria/utils';
3
+ import {DOMAttributes} from '@react-types/shared';
3
4
  import {getSliderThumbId, sliderIds} from './utils';
4
- import React, {ChangeEvent, HTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, RefObject, useCallback, useEffect, useRef} from 'react';
5
+ import React, {ChangeEvent, InputHTMLAttributes, LabelHTMLAttributes, RefObject, useCallback, useEffect, useRef} from 'react';
5
6
  import {SliderState} from '@react-stately/slider';
6
7
  import {useFocusable} from '@react-aria/focus';
7
8
  import {useKeyboard, useMove} from '@react-aria/interactions';
@@ -10,7 +11,7 @@ import {useLocale} from '@react-aria/i18n';
10
11
 
11
12
  interface SliderThumbAria {
12
13
  /** Props for the root thumb element; handles the dragging motion. */
13
- thumbProps: HTMLAttributes<HTMLElement>,
14
+ thumbProps: DOMAttributes,
14
15
 
15
16
  /** Props for the visually hidden range input element. */
16
17
  inputProps: InputHTMLAttributes<HTMLInputElement>,
@@ -28,7 +29,7 @@ interface SliderThumbAria {
28
29
 
29
30
  interface SliderThumbOptions extends AriaSliderThumbProps {
30
31
  /** A ref to the track element. */
31
- trackRef: RefObject<HTMLElement>,
32
+ trackRef: RefObject<Element>,
32
33
  /** A ref to the thumb input element. */
33
34
  inputRef: RefObject<HTMLInputElement>
34
35
  }
@@ -138,7 +139,8 @@ export function useSliderThumb(
138
139
  step,
139
140
  pageSize
140
141
  } = stateRef.current;
141
- let size = isVertical ? trackRef.current.offsetHeight : trackRef.current.offsetWidth;
142
+ let {width, height} = trackRef.current.getBoundingClientRect();
143
+ let size = isVertical ? height : width;
142
144
 
143
145
  if (currentPosition.current == null) {
144
146
  currentPosition.current = getThumbPercent(index) * size;
@@ -207,19 +209,19 @@ export function useSliderThumb(
207
209
  keyboardProps,
208
210
  moveProps,
209
211
  {
210
- onMouseDown: (e: React.MouseEvent<HTMLElement>) => {
212
+ onMouseDown: (e: React.MouseEvent) => {
211
213
  if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
212
214
  return;
213
215
  }
214
216
  onDown();
215
217
  },
216
- onPointerDown: (e: React.PointerEvent<HTMLElement>) => {
218
+ onPointerDown: (e: React.PointerEvent) => {
217
219
  if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
218
220
  return;
219
221
  }
220
222
  onDown(e.pointerId);
221
223
  },
222
- onTouchStart: (e: React.TouchEvent<HTMLElement>) => {onDown(e.changedTouches[0].identifier);}
224
+ onTouchStart: (e: React.TouchEvent) => {onDown(e.changedTouches[0].identifier);}
223
225
  }
224
226
  ) : {};
225
227