@react-native-aria/slider 0.2.10 → 0.2.12
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/lib/commonjs/index.js +0 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/textSelection.js +13 -8
- package/lib/commonjs/textSelection.js.map +1 -1
- package/lib/commonjs/useMove.js +4 -13
- package/lib/commonjs/useMove.js.map +1 -1
- package/lib/commonjs/useMove.web.js +5 -27
- package/lib/commonjs/useMove.web.js.map +1 -1
- package/lib/commonjs/usePanResponder.js +0 -9
- package/lib/commonjs/usePanResponder.js.map +1 -1
- package/lib/commonjs/useSlider.js +9 -25
- package/lib/commonjs/useSlider.js.map +1 -1
- package/lib/commonjs/useSlider.web.js +20 -52
- package/lib/commonjs/useSlider.web.js.map +1 -1
- package/lib/commonjs/useSliderThumb.js +7 -30
- package/lib/commonjs/useSliderThumb.js.map +1 -1
- package/lib/commonjs/useSliderThumb.web.js +10 -33
- package/lib/commonjs/useSliderThumb.web.js.map +1 -1
- package/lib/commonjs/utils.js +1 -5
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/textSelection.js +7 -5
- package/lib/module/textSelection.js.map +1 -1
- package/lib/module/useMove.js +3 -5
- package/lib/module/useMove.js.map +1 -1
- package/lib/module/useMove.web.js +6 -24
- package/lib/module/useMove.web.js.map +1 -1
- package/lib/module/usePanResponder.js +0 -5
- package/lib/module/usePanResponder.js.map +1 -1
- package/lib/module/useSlider.js +9 -19
- package/lib/module/useSlider.js.map +1 -1
- package/lib/module/useSlider.web.js +20 -43
- package/lib/module/useSlider.web.js.map +1 -1
- package/lib/module/useSliderThumb.js +7 -22
- package/lib/module/useSliderThumb.js.map +1 -1
- package/lib/module/useSliderThumb.web.js +10 -24
- package/lib/module/useSliderThumb.web.js.map +1 -1
- package/lib/module/utils.js +0 -2
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/textSelection.d.ts +1 -0
- package/lib/typescript/textSelection.d.ts.map +1 -0
- package/lib/typescript/useMove.d.ts +1 -0
- package/lib/typescript/useMove.d.ts.map +1 -0
- package/lib/typescript/useMove.web.d.ts +1 -0
- package/lib/typescript/useMove.web.d.ts.map +1 -0
- package/lib/typescript/usePanResponder.d.ts +2 -1
- package/lib/typescript/usePanResponder.d.ts.map +1 -0
- package/lib/typescript/useSlider.d.ts +1 -0
- package/lib/typescript/useSlider.d.ts.map +1 -0
- package/lib/typescript/useSlider.web.d.ts +1 -0
- package/lib/typescript/useSlider.web.d.ts.map +1 -0
- package/lib/typescript/useSliderThumb.d.ts +1 -0
- package/lib/typescript/useSliderThumb.d.ts.map +1 -0
- package/lib/typescript/useSliderThumb.web.d.ts +1 -0
- package/lib/typescript/useSliderThumb.web.d.ts.map +1 -0
- package/lib/typescript/utils.d.ts +1 -0
- package/lib/typescript/utils.d.ts.map +1 -0
- package/package.json +8 -4
- package/src/useMove.ts +0 -1
- package/src/useMove.web.ts +3 -0
- package/src/useSlider.web.ts +3 -1
- package/babel.config.js +0 -3
- package/scripts/bootstrap.js +0 -24
- package/tsconfig.build.json +0 -5
@@ -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';
|
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)();
|
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;
|
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
|
-
|
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];
|
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
|
-
}
|
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,36 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
150
130
|
}
|
151
131
|
}
|
152
132
|
};
|
153
|
-
|
154
133
|
let onUpTrack = e => {
|
155
|
-
var _e$
|
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
146
|
|
171
|
-
|
147
|
+
//@ts-ignore
|
148
|
+
if (labelProps.htmlFor !== undefined) {
|
172
149
|
// Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS
|
173
150
|
// causes this to override the `aria-labelledby` on the thumb. This causes the first
|
174
151
|
// thumb to only be announced as the slider label rather than its individual name as well.
|
175
152
|
// See https://bugs.webkit.org/show_bug.cgi?id=172464.
|
153
|
+
//@ts-ignore
|
176
154
|
delete labelProps.htmlFor;
|
177
|
-
|
178
155
|
labelProps.onClick = () => {
|
179
156
|
var _document$getElementB;
|
180
|
-
|
181
157
|
// Safari does not focus <input type="range"> elements when clicking on an associated <label>,
|
182
158
|
// 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
|
159
|
+
(_document$getElementB = document.getElementById((0, _utils2.getSliderThumbId)(state, 0))) === null || _document$getElementB === void 0 || _document$getElementB.focus();
|
184
160
|
(0, _interactions.setInteractionModality)('keyboard');
|
185
161
|
};
|
186
162
|
}
|
187
|
-
|
188
163
|
return {
|
189
164
|
labelProps,
|
190
165
|
// The root element of the Slider will have role="group" to group together
|
@@ -199,22 +174,17 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
199
174
|
if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
|
200
175
|
return;
|
201
176
|
}
|
202
|
-
|
203
177
|
onDownTrack(e, undefined, e.clientX, e.clientY);
|
204
178
|
},
|
205
|
-
|
206
179
|
onPointerDown(e) {
|
207
180
|
if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {
|
208
181
|
return;
|
209
182
|
}
|
210
|
-
|
211
183
|
onDownTrack(e, e.pointerId, e.clientX, e.clientY);
|
212
184
|
},
|
213
|
-
|
214
185
|
onTouchStart(e) {
|
215
186
|
onDownTrack(e, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY);
|
216
187
|
}
|
217
|
-
|
218
188
|
}, moveProps),
|
219
189
|
outputProps: {
|
220
190
|
'htmlFor': state.values.map((_, index) => (0, _utils2.getSliderThumbId)(state, index)).join(' '),
|
@@ -222,7 +192,6 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
222
192
|
}
|
223
193
|
};
|
224
194
|
}
|
225
|
-
|
226
195
|
const useSlider = (props, state, ref, isReversed) => {
|
227
196
|
let {
|
228
197
|
groupProps: webGroupProps,
|
@@ -236,6 +205,5 @@ const useSlider = (props, state, ref, isReversed) => {
|
|
236
205
|
labelProps
|
237
206
|
};
|
238
207
|
};
|
239
|
-
|
240
208
|
exports.useSlider = useSlider;
|
241
209
|
//# 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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","ignoreList":[]}
|
@@ -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)({
|
31
|
+
} = (0, _label.useLabel)({
|
32
|
+
...opts,
|
43
33
|
'id': (0, _utils2.getSliderThumbId)(state, index),
|
44
|
-
'aria-labelledby': `${labelId} ${
|
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(
|
100
|
-
const decrementValue = Math.max(
|
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: {
|
93
|
+
inputProps: {
|
94
|
+
...fieldProps,
|
118
95
|
'disabled': isDisabled,
|
119
96
|
'role': 'adjustable',
|
120
97
|
'aria-value': {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
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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","ignoreList":[]}
|
@@ -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)({
|
39
|
+
} = (0, _label.useLabel)({
|
40
|
+
...opts,
|
52
41
|
'id': (0, _utils2.getSliderThumbId)(state, index),
|
53
|
-
'aria-labelledby': `${labelId} ${
|
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
|
-
|
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$
|
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
|
-
};
|
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 => {
|