@react-native-aria/slider 0.2.10 → 0.2.11

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.
Files changed (63) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/commonjs/index.js +0 -2
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/textSelection.js +13 -8
  5. package/lib/commonjs/textSelection.js.map +1 -1
  6. package/lib/commonjs/useMove.js +4 -13
  7. package/lib/commonjs/useMove.js.map +1 -1
  8. package/lib/commonjs/useMove.web.js +5 -27
  9. package/lib/commonjs/useMove.web.js.map +1 -1
  10. package/lib/commonjs/usePanResponder.js +0 -9
  11. package/lib/commonjs/usePanResponder.js.map +1 -1
  12. package/lib/commonjs/useSlider.js +9 -25
  13. package/lib/commonjs/useSlider.js.map +1 -1
  14. package/lib/commonjs/useSlider.web.js +17 -52
  15. package/lib/commonjs/useSlider.web.js.map +1 -1
  16. package/lib/commonjs/useSliderThumb.js +7 -30
  17. package/lib/commonjs/useSliderThumb.js.map +1 -1
  18. package/lib/commonjs/useSliderThumb.web.js +10 -33
  19. package/lib/commonjs/useSliderThumb.web.js.map +1 -1
  20. package/lib/commonjs/utils.js +1 -5
  21. package/lib/commonjs/utils.js.map +1 -1
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/textSelection.js +7 -5
  24. package/lib/module/textSelection.js.map +1 -1
  25. package/lib/module/useMove.js +3 -5
  26. package/lib/module/useMove.js.map +1 -1
  27. package/lib/module/useMove.web.js +6 -24
  28. package/lib/module/useMove.web.js.map +1 -1
  29. package/lib/module/usePanResponder.js +0 -5
  30. package/lib/module/usePanResponder.js.map +1 -1
  31. package/lib/module/useSlider.js +9 -19
  32. package/lib/module/useSlider.js.map +1 -1
  33. package/lib/module/useSlider.web.js +17 -43
  34. package/lib/module/useSlider.web.js.map +1 -1
  35. package/lib/module/useSliderThumb.js +7 -22
  36. package/lib/module/useSliderThumb.js.map +1 -1
  37. package/lib/module/useSliderThumb.web.js +10 -24
  38. package/lib/module/useSliderThumb.web.js.map +1 -1
  39. package/lib/module/utils.js +0 -2
  40. package/lib/module/utils.js.map +1 -1
  41. package/lib/typescript/index.d.ts +1 -0
  42. package/lib/typescript/index.d.ts.map +1 -0
  43. package/lib/typescript/textSelection.d.ts +1 -0
  44. package/lib/typescript/textSelection.d.ts.map +1 -0
  45. package/lib/typescript/useMove.d.ts +1 -0
  46. package/lib/typescript/useMove.d.ts.map +1 -0
  47. package/lib/typescript/useMove.web.d.ts +1 -0
  48. package/lib/typescript/useMove.web.d.ts.map +1 -0
  49. package/lib/typescript/usePanResponder.d.ts +2 -1
  50. package/lib/typescript/usePanResponder.d.ts.map +1 -0
  51. package/lib/typescript/useSlider.d.ts +1 -0
  52. package/lib/typescript/useSlider.d.ts.map +1 -0
  53. package/lib/typescript/useSlider.web.d.ts +1 -0
  54. package/lib/typescript/useSlider.web.d.ts.map +1 -0
  55. package/lib/typescript/useSliderThumb.d.ts +1 -0
  56. package/lib/typescript/useSliderThumb.d.ts.map +1 -0
  57. package/lib/typescript/useSliderThumb.web.d.ts +1 -0
  58. package/lib/typescript/useSliderThumb.web.d.ts.map +1 -0
  59. package/lib/typescript/utils.d.ts +1 -0
  60. package/lib/typescript/utils.d.ts.map +1 -0
  61. package/package.json +8 -4
  62. package/src/useMove.ts +0 -1
  63. package/src/useMove.web.ts +3 -0
@@ -4,41 +4,32 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useSlider = void 0;
7
-
8
7
  var _utils = require("@react-aria/utils");
9
-
10
8
  var _utils2 = require("./utils");
11
-
12
9
  var _react = require("react");
13
-
14
10
  var _interactions = require("@react-aria/interactions");
15
-
16
11
  var _label = require("@react-aria/label");
17
-
18
12
  var _utils3 = require("@react-native-aria/utils");
19
-
20
13
  var _useMove = require("./useMove");
21
-
22
14
  function useSliderWeb(props, state, trackLayout, isReversed) {
23
- var _labelProps$id;
24
-
25
15
  let {
26
16
  labelProps,
27
17
  fieldProps
28
18
  } = (0, _label.useLabel)(props);
29
- let isVertical = props.orientation === 'vertical'; // Attach id of the label to the state so it can be accessed by useSliderThumb.
30
-
31
- _utils2.sliderIds.set(state, (_labelProps$id = labelProps.id) !== null && _labelProps$id !== void 0 ? _labelProps$id : fieldProps.id);
19
+ let isVertical = props.orientation === 'vertical';
32
20
 
21
+ // Attach id of the label to the state so it can be accessed by useSliderThumb.
22
+ _utils2.sliderIds.set(state, labelProps.id ?? fieldProps.id);
33
23
  const direction = (0, _utils3.isRTL)() ? 'rtl' : undefined;
34
24
  let {
35
25
  addGlobalListener,
36
26
  removeGlobalListener
37
- } = (0, _utils.useGlobalListeners)(); // When the user clicks or drags the track, we want the motion to set and drag the
27
+ } = (0, _utils.useGlobalListeners)();
28
+
29
+ // When the user clicks or drags the track, we want the motion to set and drag the
38
30
  // closest thumb. Hence we also need to install useMove() on the track element.
39
31
  // Here, we keep track of which index is the "closest" to the drag start point.
40
32
  // It is set onMouseDown/onTouchDown; see trackProps below.
41
-
42
33
  const realTimeTrackDraggingIndex = (0, _react.useRef)(null);
43
34
  const stateRef = (0, _react.useRef)(null);
44
35
  stateRef.current = state;
@@ -50,19 +41,15 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
50
41
  onMoveStart() {
51
42
  currentPosition.current = null;
52
43
  },
53
-
54
44
  onMove({
55
45
  deltaX,
56
46
  deltaY
57
47
  }) {
58
48
  let size = isVertical ? trackLayout.height : trackLayout.width;
59
-
60
49
  if (currentPosition.current == null) {
61
50
  currentPosition.current = stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) * size;
62
51
  }
63
-
64
52
  let delta = isVertical ? deltaY : deltaX;
65
-
66
53
  if (reverseX) {
67
54
  if (!isVertical) {
68
55
  delta = -delta;
@@ -72,35 +59,29 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
72
59
  delta = -delta;
73
60
  }
74
61
  }
75
-
76
62
  currentPosition.current += delta;
77
-
78
63
  if (realTimeTrackDraggingIndex.current != null) {
79
64
  const percent = (0, _utils.clamp)(currentPosition.current / size, 0, 1);
80
65
  stateRef.current.setThumbPercent(realTimeTrackDraggingIndex.current, percent);
81
66
  }
82
67
  },
83
-
84
68
  onMoveEnd() {
85
69
  if (realTimeTrackDraggingIndex.current != null) {
86
70
  stateRef.current.setThumbDragging(realTimeTrackDraggingIndex.current, false);
87
71
  realTimeTrackDraggingIndex.current = null;
88
72
  }
89
73
  }
90
-
91
74
  });
92
75
  let currentPointer = (0, _react.useRef)(undefined);
93
-
94
76
  let onDownTrack = (e, id, clientX, clientY) => {
95
77
  // We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.
96
78
  if (!props.isDisabled && state.values.every((_, i) => !state.isThumbDragging(i))) {
97
- let size = isVertical ? trackLayout.height : trackLayout.width; // Find the closest thumb
98
-
79
+ let size = isVertical ? trackLayout.height : trackLayout.width;
80
+ // Find the closest thumb
99
81
  const trackPosition = trackLayout[isVertical ? 'top' : 'left'];
100
82
  const clickPosition = isVertical ? clientY : clientX;
101
83
  const offset = clickPosition - trackPosition;
102
84
  let percent = offset / size;
103
-
104
85
  if (reverseX) {
105
86
  if (!isVertical) {
106
87
  percent = 1 - percent;
@@ -110,12 +91,11 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
110
91
  percent = 1 - percent;
111
92
  }
112
93
  }
94
+ let value = state.getPercentValue(percent);
113
95
 
114
- let value = state.getPercentValue(percent); // to find the closet thumb we split the array based on the first thumb position to the "right/end" of the click.
115
-
96
+ // to find the closet thumb we split the array based on the first thumb position to the "right/end" of the click.
116
97
  let closestThumb;
117
98
  let split = state.values.findIndex(v => value - v < 0);
118
-
119
99
  if (split === 0) {
120
100
  // If the index is zero then the closetThumb is the first one
121
101
  closestThumb = split;
@@ -124,16 +104,16 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
124
104
  closestThumb = state.values.length - 1;
125
105
  } else {
126
106
  let lastLeft = state.values[split - 1];
127
- let firstRight = state.values[split]; // Pick the last left/start thumb, unless they are stacked on top of each other, then pick the right/end one
128
-
107
+ let firstRight = state.values[split];
108
+ // Pick the last left/start thumb, unless they are stacked on top of each other, then pick the right/end one
129
109
  if (Math.abs(lastLeft - value) < Math.abs(firstRight - value)) {
130
110
  closestThumb = split - 1;
131
111
  } else {
132
112
  closestThumb = split;
133
113
  }
134
- } // Confirm that the found closest thumb is editable, not disabled, and move it
135
-
114
+ }
136
115
 
116
+ // Confirm that the found closest thumb is editable, not disabled, and move it
137
117
  if (closestThumb >= 0 && state.isThumbEditable(closestThumb)) {
138
118
  // Don't unfocus anything
139
119
  e.preventDefault();
@@ -150,41 +130,33 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
150
130
  }
151
131
  }
152
132
  };
153
-
154
133
  let onUpTrack = e => {
155
- var _e$pointerId, _e$changedTouches;
156
-
157
- let id = (_e$pointerId = e.pointerId) !== null && _e$pointerId !== void 0 ? _e$pointerId : (_e$changedTouches = e.changedTouches) === null || _e$changedTouches === void 0 ? void 0 : _e$changedTouches[0].identifier;
158
-
134
+ var _e$changedTouches;
135
+ let id = e.pointerId ?? ((_e$changedTouches = e.changedTouches) === null || _e$changedTouches === void 0 ? void 0 : _e$changedTouches[0].identifier);
159
136
  if (id === currentPointer.current) {
160
137
  if (realTimeTrackDraggingIndex.current != null) {
161
138
  state.setThumbDragging(realTimeTrackDraggingIndex.current, false);
162
139
  realTimeTrackDraggingIndex.current = null;
163
140
  }
164
-
165
141
  removeGlobalListener(window, 'mouseup', onUpTrack, false);
166
142
  removeGlobalListener(window, 'touchend', onUpTrack, false);
167
143
  removeGlobalListener(window, 'pointerup', onUpTrack, false);
168
144
  }
169
145
  };
170
-
171
146
  if (labelProps.htmlFor) {
172
147
  // Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS
173
148
  // causes this to override the `aria-labelledby` on the thumb. This causes the first
174
149
  // thumb to only be announced as the slider label rather than its individual name as well.
175
150
  // See https://bugs.webkit.org/show_bug.cgi?id=172464.
176
151
  delete labelProps.htmlFor;
177
-
178
152
  labelProps.onClick = () => {
179
153
  var _document$getElementB;
180
-
181
154
  // Safari does not focus <input type="range"> elements when clicking on an associated <label>,
182
155
  // so do it manually. In addition, make sure we show the focus ring.
183
- (_document$getElementB = document.getElementById((0, _utils2.getSliderThumbId)(state, 0))) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.focus();
156
+ (_document$getElementB = document.getElementById((0, _utils2.getSliderThumbId)(state, 0))) === null || _document$getElementB === void 0 || _document$getElementB.focus();
184
157
  (0, _interactions.setInteractionModality)('keyboard');
185
158
  };
186
159
  }
187
-
188
160
  return {
189
161
  labelProps,
190
162
  // The root element of the Slider will have role="group" to group together
@@ -199,22 +171,17 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
199
171
  if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
200
172
  return;
201
173
  }
202
-
203
174
  onDownTrack(e, undefined, e.clientX, e.clientY);
204
175
  },
205
-
206
176
  onPointerDown(e) {
207
177
  if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {
208
178
  return;
209
179
  }
210
-
211
180
  onDownTrack(e, e.pointerId, e.clientX, e.clientY);
212
181
  },
213
-
214
182
  onTouchStart(e) {
215
183
  onDownTrack(e, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY);
216
184
  }
217
-
218
185
  }, moveProps),
219
186
  outputProps: {
220
187
  'htmlFor': state.values.map((_, index) => (0, _utils2.getSliderThumbId)(state, index)).join(' '),
@@ -222,7 +189,6 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
222
189
  }
223
190
  };
224
191
  }
225
-
226
192
  const useSlider = (props, state, ref, isReversed) => {
227
193
  let {
228
194
  groupProps: webGroupProps,
@@ -236,6 +202,5 @@ const useSlider = (props, state, ref, isReversed) => {
236
202
  labelProps
237
203
  };
238
204
  };
239
-
240
205
  exports.useSlider = useSlider;
241
206
  //# sourceMappingURL=useSlider.web.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useSlider.web.ts"],"names":["useSliderWeb","props","state","trackLayout","isReversed","labelProps","fieldProps","isVertical","orientation","sliderIds","set","id","direction","undefined","addGlobalListener","removeGlobalListener","realTimeTrackDraggingIndex","stateRef","current","reverseX","currentPosition","moveProps","onMoveStart","onMove","deltaX","deltaY","size","height","width","getThumbPercent","delta","percent","setThumbPercent","onMoveEnd","setThumbDragging","currentPointer","onDownTrack","e","clientX","clientY","isDisabled","values","every","_","i","isThumbDragging","trackPosition","clickPosition","offset","value","getPercentValue","closestThumb","split","findIndex","v","length","lastLeft","firstRight","Math","abs","isThumbEditable","preventDefault","setFocusedThumb","setThumbValue","window","onUpTrack","pointerId","changedTouches","identifier","htmlFor","onClick","document","getElementById","focus","groupProps","role","trackProps","onMouseDown","button","altKey","ctrlKey","metaKey","onPointerDown","pointerType","onTouchStart","outputProps","map","index","join","useSlider","ref","webGroupProps","rest"],"mappings":"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","sourcesContent":["import { AriaSliderProps } from '@react-types/slider';\nimport { clamp, mergeProps, useGlobalListeners } from '@react-aria/utils';\nimport { getSliderThumbId, sliderIds } from './utils';\nimport React, { useRef } from 'react';\nimport { setInteractionModality } from '@react-aria/interactions';\nimport { SliderState } from '@react-stately/slider';\nimport { useLabel } from '@react-aria/label';\nimport { mapDomPropsToRN, isRTL } from '@react-native-aria/utils';\nimport { useMove } from './useMove';\n\ninterface SliderAria {\n /** Props for the label element. */\n labelProps: any;\n\n /** Props for the root element of the slider component; groups slider inputs. */\n groupProps: any;\n\n /** Props for the track element. */\n trackProps: any;\n\n /** Props for the output element, displaying the value of the slider thumbs. */\n outputProps: any;\n}\n\nfunction useSliderWeb(\n props: AriaSliderProps,\n state: SliderState,\n trackLayout: {\n height: number;\n width: number;\n top: number;\n left: number;\n x: number;\n y: number;\n },\n isReversed?: boolean\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 const direction = isRTL() ? 'rtl' : undefined;\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 = isReversed || direction === 'rtl';\n\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 ? trackLayout.height : trackLayout.width;\n\n if (currentPosition.current == null) {\n currentPosition.current =\n stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) *\n size;\n }\n\n let delta = isVertical ? deltaY : deltaX;\n if (reverseX) {\n if (!isVertical) {\n delta = -delta;\n }\n } else {\n if (isVertical) {\n delta = -delta;\n }\n }\n\n currentPosition.current += delta;\n\n if (realTimeTrackDraggingIndex.current != null) {\n const percent = clamp(currentPosition.current / size, 0, 1);\n stateRef.current.setThumbPercent(\n realTimeTrackDraggingIndex.current,\n percent\n );\n }\n },\n onMoveEnd() {\n if (realTimeTrackDraggingIndex.current != null) {\n stateRef.current.setThumbDragging(\n realTimeTrackDraggingIndex.current,\n false\n );\n realTimeTrackDraggingIndex.current = null;\n }\n },\n });\n\n let currentPointer = useRef<number | null | undefined>(undefined);\n let onDownTrack = (\n e: React.UIEvent,\n id: number,\n clientX: number,\n clientY: number\n ) => {\n // We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.\n if (\n !props.isDisabled &&\n state.values.every((_, i) => !state.isThumbDragging(i))\n ) {\n let size = isVertical ? trackLayout.height : trackLayout.width;\n // Find the closest thumb\n const trackPosition = trackLayout[isVertical ? 'top' : 'left'];\n const clickPosition = isVertical ? clientY : clientX;\n const offset = clickPosition - trackPosition;\n let percent = offset / size;\n if (reverseX) {\n if (!isVertical) {\n percent = 1 - percent;\n }\n } else {\n if (isVertical) {\n percent = 1 - percent;\n }\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) {\n // If the index is zero then the closetThumb is the first one\n closestThumb = split;\n } else if (split === -1) {\n // 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 {\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 (\n e.pointerType === 'mouse' &&\n (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)\n ) {\n return;\n }\n onDownTrack(e, e.pointerId, e.clientX, e.clientY);\n },\n onTouchStart(e: React.TouchEvent<HTMLElement>) {\n onDownTrack(\n e,\n e.changedTouches[0].identifier,\n e.changedTouches[0].clientX,\n e.changedTouches[0].clientY\n );\n },\n },\n moveProps\n ),\n outputProps: {\n 'htmlFor': state.values\n .map((_, index) => getSliderThumbId(state, index))\n .join(' '),\n 'aria-live': 'off',\n },\n };\n}\n\nexport const useSlider = (\n props: any,\n state: any,\n ref: any,\n isReversed?: boolean\n) => {\n let { groupProps: webGroupProps, ...rest } = useSliderWeb(\n props,\n state,\n ref,\n isReversed\n );\n let groupProps = mapDomPropsToRN(webGroupProps);\n let labelProps = mapDomPropsToRN(rest.labelProps);\n return { groupProps, ...rest, labelProps };\n};\n"]}
1
+ {"version":3,"names":["_utils","require","_utils2","_react","_interactions","_label","_utils3","_useMove","useSliderWeb","props","state","trackLayout","isReversed","labelProps","fieldProps","useLabel","isVertical","orientation","sliderIds","set","id","direction","isRTL","undefined","addGlobalListener","removeGlobalListener","useGlobalListeners","realTimeTrackDraggingIndex","useRef","stateRef","current","reverseX","currentPosition","moveProps","useMove","onMoveStart","onMove","deltaX","deltaY","size","height","width","getThumbPercent","delta","percent","clamp","setThumbPercent","onMoveEnd","setThumbDragging","currentPointer","onDownTrack","e","clientX","clientY","isDisabled","values","every","_","i","isThumbDragging","trackPosition","clickPosition","offset","value","getPercentValue","closestThumb","split","findIndex","v","length","lastLeft","firstRight","Math","abs","isThumbEditable","preventDefault","setFocusedThumb","setThumbValue","window","onUpTrack","_e$changedTouches","pointerId","changedTouches","identifier","htmlFor","onClick","_document$getElementB","document","getElementById","getSliderThumbId","focus","setInteractionModality","groupProps","role","trackProps","mergeProps","onMouseDown","button","altKey","ctrlKey","metaKey","onPointerDown","pointerType","onTouchStart","outputProps","map","index","join","useSlider","ref","webGroupProps","rest","mapDomPropsToRN","exports"],"sourceRoot":"../../src","sources":["useSlider.web.ts"],"mappings":"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"}
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useSliderThumb = useSliderThumb;
7
-
8
7
  var _utils = require("@react-aria/utils");
9
-
10
8
  var _utils2 = require("./utils");
11
-
12
9
  var _react = require("react");
13
-
14
10
  var _label = require("@react-aria/label");
15
-
16
11
  var _useMove = require("./useMove");
17
-
18
12
  var _utils3 = require("@react-native-aria/utils");
19
-
20
13
  /**
21
14
  * Provides behavior and accessibility for a thumb of a slider component.
22
15
  *
@@ -24,8 +17,6 @@ var _utils3 = require("@react-native-aria/utils");
24
17
  * @param state Slider state, created via `useSliderState`.
25
18
  */
26
19
  function useSliderThumb(opts, state, isReversed) {
27
- var _opts$ariaLabelledby;
28
-
29
20
  let {
30
21
  index,
31
22
  isDisabled,
@@ -33,15 +24,14 @@ function useSliderThumb(opts, state, isReversed) {
33
24
  } = opts;
34
25
  let isVertical = opts.orientation === 'vertical';
35
26
  const direction = (0, _utils3.isRTL)() ? 'rtl' : undefined;
36
-
37
27
  let labelId = _utils2.sliderIds.get(state);
38
-
39
28
  const {
40
29
  labelProps,
41
30
  fieldProps
42
- } = (0, _label.useLabel)({ ...opts,
31
+ } = (0, _label.useLabel)({
32
+ ...opts,
43
33
  'id': (0, _utils2.getSliderThumbId)(state, index),
44
- 'aria-labelledby': `${labelId} ${(_opts$ariaLabelledby = opts['aria-labelledby']) !== null && _opts$ariaLabelledby !== void 0 ? _opts$ariaLabelledby : ''}`.trim()
34
+ 'aria-labelledby': `${labelId} ${opts['aria-labelledby'] ?? ''}`.trim()
45
35
  });
46
36
  const stateRef = (0, _react.useRef)(null);
47
37
  stateRef.current = state;
@@ -56,19 +46,15 @@ function useSliderThumb(opts, state, isReversed) {
56
46
  let size = isVertical ? trackLayout.height : trackLayout.width;
57
47
  setStartPosition(stateRef.current.getThumbPercent(index) * size);
58
48
  },
59
-
60
49
  onMove({
61
50
  deltaX,
62
51
  deltaY
63
52
  }) {
64
53
  let size = isVertical ? trackLayout.height : trackLayout.width;
65
-
66
54
  if (currentPosition.current == null) {
67
55
  currentPosition.current = stateRef.current.getThumbPercent(index) * size;
68
56
  }
69
-
70
57
  let delta = isVertical ? deltaY : deltaX;
71
-
72
58
  if (reverseX) {
73
59
  if (!isVertical) {
74
60
  delta = -delta;
@@ -78,43 +64,34 @@ function useSliderThumb(opts, state, isReversed) {
78
64
  delta = -delta;
79
65
  }
80
66
  }
81
-
82
67
  const position = startPosition + delta;
83
68
  stateRef.current.setThumbPercent(index, (0, _utils.clamp)(position / size, 0, 1));
84
69
  },
85
-
86
70
  onMoveEnd() {
87
71
  state.setThumbDragging(index, false);
88
72
  }
89
-
90
73
  });
91
74
  state.setThumbEditable(index, !isDisabled);
92
-
93
75
  const onAccessibilityAction = event => {
94
- var _ref, _ref2;
95
-
96
76
  const max = state.getThumbMinValue(index);
97
77
  const min = state.getThumbMaxValue(index);
98
78
  const value = state.getThumbValue(index);
99
- const incrementValue = Math.min((_ref = value + state.step) !== null && _ref !== void 0 ? _ref : 1, max);
100
- const decrementValue = Math.max((_ref2 = value - state.step) !== null && _ref2 !== void 0 ? _ref2 : 1, min);
101
-
79
+ const incrementValue = Math.min(value + state.step ?? 1, max);
80
+ const decrementValue = Math.max(value - state.step ?? 1, min);
102
81
  switch (event.nativeEvent.actionName) {
103
82
  case 'increment':
104
83
  state.setThumbValue(index, incrementValue);
105
84
  break;
106
-
107
85
  case 'decrement':
108
86
  state.setThumbValue(index, decrementValue);
109
87
  break;
110
-
111
88
  default:
112
89
  break;
113
90
  }
114
91
  };
115
-
116
92
  return {
117
- inputProps: { ...fieldProps,
93
+ inputProps: {
94
+ ...fieldProps,
118
95
  'disabled': isDisabled,
119
96
  'role': 'adjustable',
120
97
  'aria-value': {
@@ -1 +1 @@
1
- {"version":3,"sources":["useSliderThumb.ts"],"names":["useSliderThumb","opts","state","isReversed","index","isDisabled","trackLayout","isVertical","orientation","direction","undefined","labelId","sliderIds","get","labelProps","fieldProps","trim","stateRef","current","reverseX","currentPosition","startPosition","setStartPosition","moveProps","onMoveStart","setThumbDragging","size","height","width","getThumbPercent","onMove","deltaX","deltaY","delta","position","setThumbPercent","onMoveEnd","setThumbEditable","onAccessibilityAction","event","max","getThumbMinValue","min","getThumbMaxValue","value","getThumbValue","incrementValue","Math","step","decrementValue","nativeEvent","actionName","setThumbValue","inputProps","now","name","label","thumbProps"],"mappings":"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","sourcesContent":["import { AriaSliderThumbProps } from '@react-types/slider';\nimport { clamp } from '@react-aria/utils';\nimport { getSliderThumbId, sliderIds } from './utils';\nimport { useRef, useState } from 'react';\nimport { SliderState } from '@react-stately/slider';\nimport { useLabel } from '@react-aria/label';\nimport { useMove } from './useMove';\nimport { isRTL } from '@react-native-aria/utils';\n\ninterface SliderThumbAria {\n /** Props for the root thumb element; handles the dragging motion. */\n thumbProps: any;\n\n /** Props for the visually hidden range input element. */\n inputProps: any;\n\n /** Props for the label element for this thumb (optional). */\n labelProps: any;\n}\n\ninterface SliderThumbOptions extends AriaSliderThumbProps {\n /** A ref to the track element. */\n trackLayout: any;\n /** A ref to the thumb input element. */\n inputRef: any;\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 isReversed?: boolean\n): SliderThumbAria {\n let { index, isDisabled, trackLayout } = opts;\n\n let isVertical = opts.orientation === 'vertical';\n const direction = isRTL() ? 'rtl' : undefined;\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 stateRef = useRef<SliderState>(null);\n stateRef.current = state;\n let reverseX = isReversed || direction === 'rtl';\n let currentPosition = useRef<number>(null);\n\n const [startPosition, setStartPosition] = useState(0);\n\n let { moveProps } = useMove({\n onMoveStart() {\n state.setThumbDragging(index, true);\n let size = isVertical ? trackLayout.height : trackLayout.width;\n setStartPosition(stateRef.current.getThumbPercent(index) * size);\n },\n onMove({ deltaX, deltaY }) {\n let size = isVertical ? trackLayout.height : trackLayout.width;\n\n if (currentPosition.current == null) {\n currentPosition.current =\n stateRef.current.getThumbPercent(index) * size;\n }\n\n let delta = isVertical ? deltaY : deltaX;\n if (reverseX) {\n if (!isVertical) {\n delta = -delta;\n }\n } else {\n if (isVertical) {\n delta = -delta;\n }\n }\n\n const position = startPosition + delta;\n\n stateRef.current.setThumbPercent(index, clamp(position / size, 0, 1));\n },\n onMoveEnd() {\n state.setThumbDragging(index, false);\n },\n });\n\n state.setThumbEditable(index, !isDisabled);\n\n const onAccessibilityAction = (event: any) => {\n const max = state.getThumbMinValue(index);\n const min = state.getThumbMaxValue(index);\n const value = state.getThumbValue(index);\n\n const incrementValue = Math.min(value + state.step ?? 1, max);\n const decrementValue = Math.max(value - state.step ?? 1, min);\n\n switch (event.nativeEvent.actionName) {\n case 'increment':\n state.setThumbValue(index, incrementValue);\n break;\n case 'decrement':\n state.setThumbValue(index, decrementValue);\n break;\n default:\n break;\n }\n };\n\n return {\n inputProps: {\n ...fieldProps,\n 'disabled': isDisabled,\n 'role': 'adjustable',\n 'aria-value': {\n min: state.getThumbMinValue(index),\n max: state.getThumbMaxValue(index),\n now: state.getThumbValue(index),\n },\n 'accessibilityActions': [\n {\n name: 'increment',\n label: 'Increment',\n },\n {\n name: 'decrement',\n label: 'Decrement',\n },\n ],\n onAccessibilityAction,\n },\n thumbProps: !isDisabled ? moveProps : {},\n labelProps,\n };\n}\n"]}
1
+ {"version":3,"names":["_utils","require","_utils2","_react","_label","_useMove","_utils3","useSliderThumb","opts","state","isReversed","index","isDisabled","trackLayout","isVertical","orientation","direction","isRTL","undefined","labelId","sliderIds","get","labelProps","fieldProps","useLabel","getSliderThumbId","trim","stateRef","useRef","current","reverseX","currentPosition","startPosition","setStartPosition","useState","moveProps","useMove","onMoveStart","setThumbDragging","size","height","width","getThumbPercent","onMove","deltaX","deltaY","delta","position","setThumbPercent","clamp","onMoveEnd","setThumbEditable","onAccessibilityAction","event","max","getThumbMinValue","min","getThumbMaxValue","value","getThumbValue","incrementValue","Math","step","decrementValue","nativeEvent","actionName","setThumbValue","inputProps","now","name","label","thumbProps"],"sourceRoot":"../../src","sources":["useSliderThumb.ts"],"mappings":"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"}
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useSliderThumb = useSliderThumb;
7
-
8
7
  var _utils = require("@react-aria/utils");
9
-
10
8
  var _utils2 = require("./utils");
11
-
12
9
  var _react = require("react");
13
-
14
10
  var _focus = require("@react-aria/focus");
15
-
16
11
  var _label = require("@react-aria/label");
17
-
18
12
  var _useMove = require("./useMove");
19
-
20
13
  var _utils3 = require("@react-native-aria/utils");
21
-
22
14
  /**
23
15
  * Provides behavior and accessibility for a thumb of a slider component.
24
16
  *
@@ -26,8 +18,6 @@ var _utils3 = require("@react-native-aria/utils");
26
18
  * @param state Slider state, created via `useSliderState`.
27
19
  */
28
20
  function useSliderThumb(opts, state, isReversed) {
29
- var _opts$ariaLabelledby;
30
-
31
21
  let {
32
22
  index,
33
23
  isRequired,
@@ -42,15 +32,14 @@ function useSliderThumb(opts, state, isReversed) {
42
32
  addGlobalListener,
43
33
  removeGlobalListener
44
34
  } = (0, _utils.useGlobalListeners)();
45
-
46
35
  let labelId = _utils2.sliderIds.get(state);
47
-
48
36
  const {
49
37
  labelProps,
50
38
  fieldProps
51
- } = (0, _label.useLabel)({ ...opts,
39
+ } = (0, _label.useLabel)({
40
+ ...opts,
52
41
  'id': (0, _utils2.getSliderThumbId)(state, index),
53
- 'aria-labelledby': `${labelId} ${(_opts$ariaLabelledby = opts['aria-labelledby']) !== null && _opts$ariaLabelledby !== void 0 ? _opts$ariaLabelledby : ''}`.trim()
42
+ 'aria-labelledby': `${labelId} ${opts['aria-labelledby'] ?? ''}`.trim()
54
43
  });
55
44
  const value = state.values[index];
56
45
  const focusInput = (0, _react.useCallback)(() => {
@@ -75,18 +64,15 @@ function useSliderThumb(opts, state, isReversed) {
75
64
  currentPosition.current = null;
76
65
  state.setThumbDragging(index, true);
77
66
  },
78
-
79
67
  onMove({
80
68
  deltaX,
81
69
  deltaY,
82
70
  pointerType
83
71
  }) {
84
72
  let size = isVertical ? trackLayout.height : trackLayout.width;
85
-
86
73
  if (currentPosition.current == null) {
87
74
  currentPosition.current = stateRef.current.getThumbPercent(index) * size;
88
75
  }
89
-
90
76
  if (pointerType === 'keyboard') {
91
77
  // (invert left/right according to language direction) + (according to vertical)
92
78
  let delta = ((reverseX ? -deltaX : deltaX) + (reverseX ? deltaY : -deltaY)) * stateRef.current.step;
@@ -94,7 +80,6 @@ function useSliderThumb(opts, state, isReversed) {
94
80
  stateRef.current.setThumbValue(index, stateRef.current.getThumbValue(index) + delta);
95
81
  } else {
96
82
  let delta = isVertical ? deltaY : deltaX;
97
-
98
83
  if (reverseX) {
99
84
  if (!isVertical) {
100
85
  delta = -delta;
@@ -104,18 +89,16 @@ function useSliderThumb(opts, state, isReversed) {
104
89
  delta = -delta;
105
90
  }
106
91
  }
107
-
108
92
  currentPosition.current += delta;
109
93
  stateRef.current.setThumbPercent(index, (0, _utils.clamp)(currentPosition.current / size, 0, 1));
110
94
  }
111
95
  },
112
-
113
96
  onMoveEnd() {
114
97
  state.setThumbDragging(index, false);
115
98
  }
99
+ });
116
100
 
117
- }); // Immediately register editability with the state
118
-
101
+ // Immediately register editability with the state
119
102
  state.setThumbEditable(index, !isDisabled);
120
103
  const {
121
104
  focusableProps
@@ -124,7 +107,6 @@ function useSliderThumb(opts, state, isReversed) {
124
107
  onBlur: () => state.setFocusedThumb(undefined)
125
108
  }), inputRef);
126
109
  let currentPointer = (0, _react.useRef)(undefined);
127
-
128
110
  let onDown = id => {
129
111
  focusInput();
130
112
  currentPointer.current = id;
@@ -133,12 +115,9 @@ function useSliderThumb(opts, state, isReversed) {
133
115
  addGlobalListener(window, 'touchend', onUp, false);
134
116
  addGlobalListener(window, 'pointerup', onUp, false);
135
117
  };
136
-
137
118
  let onUp = e => {
138
- var _e$pointerId, _e$changedTouches;
139
-
140
- let id = (_e$pointerId = e.pointerId) !== null && _e$pointerId !== void 0 ? _e$pointerId : (_e$changedTouches = e.changedTouches) === null || _e$changedTouches === void 0 ? void 0 : _e$changedTouches[0].identifier;
141
-
119
+ var _e$changedTouches;
120
+ let id = e.pointerId ?? ((_e$changedTouches = e.changedTouches) === null || _e$changedTouches === void 0 ? void 0 : _e$changedTouches[0].identifier);
142
121
  if (id === currentPointer.current) {
143
122
  focusInput();
144
123
  state.setThumbDragging(index, false);
@@ -146,12 +125,12 @@ function useSliderThumb(opts, state, isReversed) {
146
125
  removeGlobalListener(window, 'touchend', onUp, false);
147
126
  removeGlobalListener(window, 'pointerup', onUp, false);
148
127
  }
149
- }; // We install mouse handlers for the drag motion on the thumb div, but
128
+ };
129
+
130
+ // We install mouse handlers for the drag motion on the thumb div, but
150
131
  // not the key handler for moving the thumb with the slider. Instead,
151
132
  // we focus the range input, and let the browser handle the keyboard
152
133
  // interactions; we then listen to input's onChange to update state.
153
-
154
-
155
134
  return {
156
135
  inputProps: (0, _utils.mergeProps)(focusableProps, fieldProps, {
157
136
  'type': 'range',
@@ -175,14 +154,12 @@ function useSliderThumb(opts, state, isReversed) {
175
154
  if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
176
155
  return;
177
156
  }
178
-
179
157
  onDown();
180
158
  },
181
159
  onPointerDown: e => {
182
160
  if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
183
161
  return;
184
162
  }
185
-
186
163
  onDown(e.pointerId);
187
164
  },
188
165
  onTouchStart: e => {
@@ -1 +1 @@
1
- {"version":3,"sources":["useSliderThumb.web.ts"],"names":["useSliderThumb","opts","state","isReversed","index","isRequired","isDisabled","validationState","trackLayout","inputRef","isVertical","orientation","direction","undefined","addGlobalListener","removeGlobalListener","labelId","sliderIds","get","labelProps","fieldProps","trim","value","values","focusInput","current","isFocused","focusedThumb","stateRef","reverseX","currentPosition","moveProps","onMoveStart","setThumbDragging","onMove","deltaX","deltaY","pointerType","size","height","width","getThumbPercent","delta","step","setThumbValue","getThumbValue","setThumbPercent","onMoveEnd","setThumbEditable","focusableProps","onFocus","setFocusedThumb","onBlur","currentPointer","onDown","id","window","onUp","e","pointerId","changedTouches","identifier","inputProps","getThumbMinValue","getThumbMaxValue","getThumbValueLabel","parseFloat","target","thumbProps","onMouseDown","button","altKey","ctrlKey","metaKey","onPointerDown","onTouchStart"],"mappings":"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","sourcesContent":["import { AriaSliderThumbProps } from '@react-types/slider';\nimport {\n clamp,\n focusWithoutScrolling,\n mergeProps,\n useGlobalListeners,\n} from '@react-aria/utils';\nimport { getSliderThumbId, sliderIds } from './utils';\nimport React, {\n ChangeEvent,\n HTMLAttributes,\n InputHTMLAttributes,\n LabelHTMLAttributes,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport { SliderState } from '@react-stately/slider';\nimport { useFocusable } from '@react-aria/focus';\nimport { useLabel } from '@react-aria/label';\nimport { useMove } from './useMove';\nimport { isRTL } from '@react-native-aria/utils';\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\ninterface SliderThumbOptions extends AriaSliderThumbProps {\n /** A ref to the track element. */\n trackLayout: any;\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 isReversed?: boolean\n): SliderThumbAria {\n let {\n index,\n isRequired,\n isDisabled,\n validationState,\n trackLayout,\n inputRef,\n } = opts;\n\n let isVertical = opts.orientation === 'vertical';\n\n let direction = isRTL() ? 'rtl' : undefined;\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 = isReversed || direction === 'rtl';\n let currentPosition = useRef<number>(null);\n let { moveProps } = useMove({\n onMoveStart() {\n currentPosition.current = null;\n state.setThumbDragging(index, true);\n },\n onMove({ deltaX, deltaY, pointerType }) {\n let size = isVertical ? trackLayout.height : trackLayout.width;\n\n if (currentPosition.current == null) {\n currentPosition.current =\n stateRef.current.getThumbPercent(index) * size;\n }\n if (pointerType === 'keyboard') {\n // (invert left/right according to language direction) + (according to vertical)\n let delta =\n ((reverseX ? -deltaX : deltaX) + (reverseX ? deltaY : -deltaY)) *\n stateRef.current.step;\n currentPosition.current += delta * size;\n stateRef.current.setThumbValue(\n index,\n stateRef.current.getThumbValue(index) + delta\n );\n } else {\n let delta = isVertical ? deltaY : deltaX;\n if (reverseX) {\n if (!isVertical) {\n delta = -delta;\n }\n } else {\n if (isVertical) {\n delta = -delta;\n }\n }\n currentPosition.current += delta;\n stateRef.current.setThumbPercent(\n index,\n clamp(currentPosition.current / size, 0, 1)\n );\n }\n },\n onMoveEnd() {\n state.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 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 // 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': opts.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 state.setThumbValue(index, parseFloat(e.target.value));\n },\n }),\n thumbProps: !isDisabled\n ? mergeProps(moveProps, {\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>) => {\n onDown(e.changedTouches[0].identifier);\n },\n })\n : {},\n labelProps,\n };\n}\n"]}
1
+ {"version":3,"names":["_utils","require","_utils2","_react","_focus","_label","_useMove","_utils3","useSliderThumb","opts","state","isReversed","index","isRequired","isDisabled","validationState","trackLayout","inputRef","isVertical","orientation","direction","isRTL","undefined","addGlobalListener","removeGlobalListener","useGlobalListeners","labelId","sliderIds","get","labelProps","fieldProps","useLabel","getSliderThumbId","trim","value","values","focusInput","useCallback","current","focusWithoutScrolling","isFocused","focusedThumb","useEffect","stateRef","useRef","reverseX","currentPosition","moveProps","useMove","onMoveStart","setThumbDragging","onMove","deltaX","deltaY","pointerType","size","height","width","getThumbPercent","delta","step","setThumbValue","getThumbValue","setThumbPercent","clamp","onMoveEnd","setThumbEditable","focusableProps","useFocusable","mergeProps","onFocus","setFocusedThumb","onBlur","currentPointer","onDown","id","window","onUp","e","_e$changedTouches","pointerId","changedTouches","identifier","inputProps","getThumbMinValue","getThumbMaxValue","getThumbValueLabel","parseFloat","target","thumbProps","onMouseDown","button","altKey","ctrlKey","metaKey","onPointerDown","onTouchStart"],"sourceRoot":"../../src","sources":["useSliderThumb.web.ts"],"mappings":"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"}