@react-native-aria/slider 0.2.9 → 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.
- package/CHANGELOG.md +8 -0
- 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 +24 -22
- 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 +17 -52
- package/lib/commonjs/useSlider.web.js.map +1 -1
- package/lib/commonjs/useSliderThumb.js +12 -33
- 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 +23 -16
- 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 +17 -43
- package/lib/module/useSlider.web.js.map +1 -1
- package/lib/module/useSliderThumb.js +13 -26
- 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 +20 -12
- package/src/useMove.web.ts +3 -0
- package/src/useSliderThumb.ts +10 -7
@@ -5,26 +5,25 @@ import { setInteractionModality } from '@react-aria/interactions';
|
|
5
5
|
import { useLabel } from '@react-aria/label';
|
6
6
|
import { mapDomPropsToRN, isRTL } from '@react-native-aria/utils';
|
7
7
|
import { useMove } from './useMove';
|
8
|
-
|
9
8
|
function useSliderWeb(props, state, trackLayout, isReversed) {
|
10
|
-
var _labelProps$id;
|
11
|
-
|
12
9
|
let {
|
13
10
|
labelProps,
|
14
11
|
fieldProps
|
15
12
|
} = useLabel(props);
|
16
|
-
let isVertical = props.orientation === 'vertical';
|
13
|
+
let isVertical = props.orientation === 'vertical';
|
17
14
|
|
18
|
-
|
15
|
+
// Attach id of the label to the state so it can be accessed by useSliderThumb.
|
16
|
+
sliderIds.set(state, labelProps.id ?? fieldProps.id);
|
19
17
|
const direction = isRTL() ? 'rtl' : undefined;
|
20
18
|
let {
|
21
19
|
addGlobalListener,
|
22
20
|
removeGlobalListener
|
23
|
-
} = useGlobalListeners();
|
21
|
+
} = useGlobalListeners();
|
22
|
+
|
23
|
+
// When the user clicks or drags the track, we want the motion to set and drag the
|
24
24
|
// closest thumb. Hence we also need to install useMove() on the track element.
|
25
25
|
// Here, we keep track of which index is the "closest" to the drag start point.
|
26
26
|
// It is set onMouseDown/onTouchDown; see trackProps below.
|
27
|
-
|
28
27
|
const realTimeTrackDraggingIndex = useRef(null);
|
29
28
|
const stateRef = useRef(null);
|
30
29
|
stateRef.current = state;
|
@@ -36,19 +35,15 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
36
35
|
onMoveStart() {
|
37
36
|
currentPosition.current = null;
|
38
37
|
},
|
39
|
-
|
40
38
|
onMove({
|
41
39
|
deltaX,
|
42
40
|
deltaY
|
43
41
|
}) {
|
44
42
|
let size = isVertical ? trackLayout.height : trackLayout.width;
|
45
|
-
|
46
43
|
if (currentPosition.current == null) {
|
47
44
|
currentPosition.current = stateRef.current.getThumbPercent(realTimeTrackDraggingIndex.current) * size;
|
48
45
|
}
|
49
|
-
|
50
46
|
let delta = isVertical ? deltaY : deltaX;
|
51
|
-
|
52
47
|
if (reverseX) {
|
53
48
|
if (!isVertical) {
|
54
49
|
delta = -delta;
|
@@ -58,35 +53,29 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
58
53
|
delta = -delta;
|
59
54
|
}
|
60
55
|
}
|
61
|
-
|
62
56
|
currentPosition.current += delta;
|
63
|
-
|
64
57
|
if (realTimeTrackDraggingIndex.current != null) {
|
65
58
|
const percent = clamp(currentPosition.current / size, 0, 1);
|
66
59
|
stateRef.current.setThumbPercent(realTimeTrackDraggingIndex.current, percent);
|
67
60
|
}
|
68
61
|
},
|
69
|
-
|
70
62
|
onMoveEnd() {
|
71
63
|
if (realTimeTrackDraggingIndex.current != null) {
|
72
64
|
stateRef.current.setThumbDragging(realTimeTrackDraggingIndex.current, false);
|
73
65
|
realTimeTrackDraggingIndex.current = null;
|
74
66
|
}
|
75
67
|
}
|
76
|
-
|
77
68
|
});
|
78
69
|
let currentPointer = useRef(undefined);
|
79
|
-
|
80
70
|
let onDownTrack = (e, id, clientX, clientY) => {
|
81
71
|
// We only trigger track-dragging if the user clicks on the track itself and nothing is currently being dragged.
|
82
72
|
if (!props.isDisabled && state.values.every((_, i) => !state.isThumbDragging(i))) {
|
83
|
-
let size = isVertical ? trackLayout.height : trackLayout.width;
|
84
|
-
|
73
|
+
let size = isVertical ? trackLayout.height : trackLayout.width;
|
74
|
+
// Find the closest thumb
|
85
75
|
const trackPosition = trackLayout[isVertical ? 'top' : 'left'];
|
86
76
|
const clickPosition = isVertical ? clientY : clientX;
|
87
77
|
const offset = clickPosition - trackPosition;
|
88
78
|
let percent = offset / size;
|
89
|
-
|
90
79
|
if (reverseX) {
|
91
80
|
if (!isVertical) {
|
92
81
|
percent = 1 - percent;
|
@@ -96,12 +85,11 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
96
85
|
percent = 1 - percent;
|
97
86
|
}
|
98
87
|
}
|
88
|
+
let value = state.getPercentValue(percent);
|
99
89
|
|
100
|
-
|
101
|
-
|
90
|
+
// to find the closet thumb we split the array based on the first thumb position to the "right/end" of the click.
|
102
91
|
let closestThumb;
|
103
92
|
let split = state.values.findIndex(v => value - v < 0);
|
104
|
-
|
105
93
|
if (split === 0) {
|
106
94
|
// If the index is zero then the closetThumb is the first one
|
107
95
|
closestThumb = split;
|
@@ -110,16 +98,16 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
110
98
|
closestThumb = state.values.length - 1;
|
111
99
|
} else {
|
112
100
|
let lastLeft = state.values[split - 1];
|
113
|
-
let firstRight = state.values[split];
|
114
|
-
|
101
|
+
let firstRight = state.values[split];
|
102
|
+
// Pick the last left/start thumb, unless they are stacked on top of each other, then pick the right/end one
|
115
103
|
if (Math.abs(lastLeft - value) < Math.abs(firstRight - value)) {
|
116
104
|
closestThumb = split - 1;
|
117
105
|
} else {
|
118
106
|
closestThumb = split;
|
119
107
|
}
|
120
|
-
}
|
121
|
-
|
108
|
+
}
|
122
109
|
|
110
|
+
// Confirm that the found closest thumb is editable, not disabled, and move it
|
123
111
|
if (closestThumb >= 0 && state.isThumbEditable(closestThumb)) {
|
124
112
|
// Don't unfocus anything
|
125
113
|
e.preventDefault();
|
@@ -136,41 +124,33 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
136
124
|
}
|
137
125
|
}
|
138
126
|
};
|
139
|
-
|
140
127
|
let onUpTrack = e => {
|
141
|
-
var _e$
|
142
|
-
|
143
|
-
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;
|
144
|
-
|
128
|
+
var _e$changedTouches;
|
129
|
+
let id = e.pointerId ?? ((_e$changedTouches = e.changedTouches) === null || _e$changedTouches === void 0 ? void 0 : _e$changedTouches[0].identifier);
|
145
130
|
if (id === currentPointer.current) {
|
146
131
|
if (realTimeTrackDraggingIndex.current != null) {
|
147
132
|
state.setThumbDragging(realTimeTrackDraggingIndex.current, false);
|
148
133
|
realTimeTrackDraggingIndex.current = null;
|
149
134
|
}
|
150
|
-
|
151
135
|
removeGlobalListener(window, 'mouseup', onUpTrack, false);
|
152
136
|
removeGlobalListener(window, 'touchend', onUpTrack, false);
|
153
137
|
removeGlobalListener(window, 'pointerup', onUpTrack, false);
|
154
138
|
}
|
155
139
|
};
|
156
|
-
|
157
140
|
if (labelProps.htmlFor) {
|
158
141
|
// Ideally the `for` attribute should point to the first thumb, but VoiceOver on iOS
|
159
142
|
// causes this to override the `aria-labelledby` on the thumb. This causes the first
|
160
143
|
// thumb to only be announced as the slider label rather than its individual name as well.
|
161
144
|
// See https://bugs.webkit.org/show_bug.cgi?id=172464.
|
162
145
|
delete labelProps.htmlFor;
|
163
|
-
|
164
146
|
labelProps.onClick = () => {
|
165
147
|
var _document$getElementB;
|
166
|
-
|
167
148
|
// Safari does not focus <input type="range"> elements when clicking on an associated <label>,
|
168
149
|
// so do it manually. In addition, make sure we show the focus ring.
|
169
|
-
(_document$getElementB = document.getElementById(getSliderThumbId(state, 0))) === null || _document$getElementB === void 0
|
150
|
+
(_document$getElementB = document.getElementById(getSliderThumbId(state, 0))) === null || _document$getElementB === void 0 || _document$getElementB.focus();
|
170
151
|
setInteractionModality('keyboard');
|
171
152
|
};
|
172
153
|
}
|
173
|
-
|
174
154
|
return {
|
175
155
|
labelProps,
|
176
156
|
// The root element of the Slider will have role="group" to group together
|
@@ -185,22 +165,17 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
185
165
|
if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
|
186
166
|
return;
|
187
167
|
}
|
188
|
-
|
189
168
|
onDownTrack(e, undefined, e.clientX, e.clientY);
|
190
169
|
},
|
191
|
-
|
192
170
|
onPointerDown(e) {
|
193
171
|
if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {
|
194
172
|
return;
|
195
173
|
}
|
196
|
-
|
197
174
|
onDownTrack(e, e.pointerId, e.clientX, e.clientY);
|
198
175
|
},
|
199
|
-
|
200
176
|
onTouchStart(e) {
|
201
177
|
onDownTrack(e, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY);
|
202
178
|
}
|
203
|
-
|
204
179
|
}, moveProps),
|
205
180
|
outputProps: {
|
206
181
|
'htmlFor': state.values.map((_, index) => getSliderThumbId(state, index)).join(' '),
|
@@ -208,7 +183,6 @@ function useSliderWeb(props, state, trackLayout, isReversed) {
|
|
208
183
|
}
|
209
184
|
};
|
210
185
|
}
|
211
|
-
|
212
186
|
export const useSlider = (props, state, ref, isReversed) => {
|
213
187
|
let {
|
214
188
|
groupProps: webGroupProps,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["useSlider.web.ts"],"names":["clamp","mergeProps","useGlobalListeners","getSliderThumbId","sliderIds","useRef","setInteractionModality","useLabel","mapDomPropsToRN","isRTL","useMove","useSliderWeb","props","state","trackLayout","isReversed","labelProps","fieldProps","isVertical","orientation","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":["clamp","mergeProps","useGlobalListeners","getSliderThumbId","sliderIds","useRef","setInteractionModality","useLabel","mapDomPropsToRN","isRTL","useMove","useSliderWeb","props","state","trackLayout","isReversed","labelProps","fieldProps","isVertical","orientation","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","_e$changedTouches","pointerId","changedTouches","identifier","htmlFor","onClick","_document$getElementB","document","getElementById","focus","groupProps","role","trackProps","onMouseDown","button","altKey","ctrlKey","metaKey","onPointerDown","pointerType","onTouchStart","outputProps","map","index","join","useSlider","ref","webGroupProps","rest"],"sourceRoot":"../../src","sources":["useSlider.web.ts"],"mappings":"AACA,SAASA,KAAK,EAAEC,UAAU,EAAEC,kBAAkB,QAAQ,mBAAmB;AACzE,SAASC,gBAAgB,EAAEC,SAAS,QAAQ,SAAS;AACrD,SAAgBC,MAAM,QAAQ,OAAO;AACrC,SAASC,sBAAsB,QAAQ,0BAA0B;AAEjE,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,eAAe,EAAEC,KAAK,QAAQ,0BAA0B;AACjE,SAASC,OAAO,QAAQ,WAAW;AAgBnC,SAASC,YAAYA,CACnBC,KAAsB,EACtBC,KAAkB,EAClBC,WAOC,EACDC,UAAoB,EACR;EACZ,IAAI;IAAEC,UAAU;IAAEC;EAAW,CAAC,GAAGV,QAAQ,CAACK,KAAK,CAAC;EAEhD,IAAIM,UAAU,GAAGN,KAAK,CAACO,WAAW,KAAK,UAAU;;EAEjD;EACAf,SAAS,CAACgB,GAAG,CAACP,KAAK,EAAEG,UAAU,CAACK,EAAE,IAAIJ,UAAU,CAACI,EAAE,CAAC;EAEpD,MAAMC,SAAS,GAAGb,KAAK,CAAC,CAAC,GAAG,KAAK,GAAGc,SAAS;EAE7C,IAAI;IAAEC,iBAAiB;IAAEC;EAAqB,CAAC,GAAGvB,kBAAkB,CAAC,CAAC;;EAEtE;EACA;EACA;EACA;EACA,MAAMwB,0BAA0B,GAAGrB,MAAM,CAAgB,IAAI,CAAC;EAE9D,MAAMsB,QAAQ,GAAGtB,MAAM,CAAc,IAAI,CAAC;EAC1CsB,QAAQ,CAACC,OAAO,GAAGf,KAAK;EACxB,MAAMgB,QAAQ,GAAGd,UAAU,IAAIO,SAAS,KAAK,KAAK;EAElD,MAAMQ,eAAe,GAAGzB,MAAM,CAAS,IAAI,CAAC;EAC5C,MAAM;IAAE0B;EAAU,CAAC,GAAGrB,OAAO,CAAC;IAC5BsB,WAAWA,CAAA,EAAG;MACZF,eAAe,CAACF,OAAO,GAAG,IAAI;IAChC,CAAC;IACDK,MAAMA,CAAC;MAAEC,MAAM;MAAEC;IAAO,CAAC,EAAE;MACzB,IAAIC,IAAI,GAAGlB,UAAU,GAAGJ,WAAW,CAACuB,MAAM,GAAGvB,WAAW,CAACwB,KAAK;MAE9D,IAAIR,eAAe,CAACF,OAAO,IAAI,IAAI,EAAE;QACnCE,eAAe,CAACF,OAAO,GACrBD,QAAQ,CAACC,OAAO,CAACW,eAAe,CAACb,0BAA0B,CAACE,OAAO,CAAC,GACpEQ,IAAI;MACR;MAEA,IAAII,KAAK,GAAGtB,UAAU,GAAGiB,MAAM,GAAGD,MAAM;MACxC,IAAIL,QAAQ,EAAE;QACZ,IAAI,CAACX,UAAU,EAAE;UACfsB,KAAK,GAAG,CAACA,KAAK;QAChB;MACF,CAAC,MAAM;QACL,IAAItB,UAAU,EAAE;UACdsB,KAAK,GAAG,CAACA,KAAK;QAChB;MACF;MAEAV,eAAe,CAACF,OAAO,IAAIY,KAAK;MAEhC,IAAId,0BAA0B,CAACE,OAAO,IAAI,IAAI,EAAE;QAC9C,MAAMa,OAAO,GAAGzC,KAAK,CAAC8B,eAAe,CAACF,OAAO,GAAGQ,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3DT,QAAQ,CAACC,OAAO,CAACc,eAAe,CAC9BhB,0BAA0B,CAACE,OAAO,EAClCa,OACF,CAAC;MACH;IACF,CAAC;IACDE,SAASA,CAAA,EAAG;MACV,IAAIjB,0BAA0B,CAACE,OAAO,IAAI,IAAI,EAAE;QAC9CD,QAAQ,CAACC,OAAO,CAACgB,gBAAgB,CAC/BlB,0BAA0B,CAACE,OAAO,EAClC,KACF,CAAC;QACDF,0BAA0B,CAACE,OAAO,GAAG,IAAI;MAC3C;IACF;EACF,CAAC,CAAC;EAEF,IAAIiB,cAAc,GAAGxC,MAAM,CAA4BkB,SAAS,CAAC;EACjE,IAAIuB,WAAW,GAAGA,CAChBC,CAAgB,EAChB1B,EAAU,EACV2B,OAAe,EACfC,OAAe,KACZ;IACH;IACA,IACE,CAACrC,KAAK,CAACsC,UAAU,IACjBrC,KAAK,CAACsC,MAAM,CAACC,KAAK,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK,CAACzC,KAAK,CAAC0C,eAAe,CAACD,CAAC,CAAC,CAAC,EACvD;MACA,IAAIlB,IAAI,GAAGlB,UAAU,GAAGJ,WAAW,CAACuB,MAAM,GAAGvB,WAAW,CAACwB,KAAK;MAC9D;MACA,MAAMkB,aAAa,GAAG1C,WAAW,CAACI,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;MAC9D,MAAMuC,aAAa,GAAGvC,UAAU,GAAG+B,OAAO,GAAGD,OAAO;MACpD,MAAMU,MAAM,GAAGD,aAAa,GAAGD,aAAa;MAC5C,IAAIf,OAAO,GAAGiB,MAAM,GAAGtB,IAAI;MAC3B,IAAIP,QAAQ,EAAE;QACZ,IAAI,CAACX,UAAU,EAAE;UACfuB,OAAO,GAAG,CAAC,GAAGA,OAAO;QACvB;MACF,CAAC,MAAM;QACL,IAAIvB,UAAU,EAAE;UACduB,OAAO,GAAG,CAAC,GAAGA,OAAO;QACvB;MACF;MACA,IAAIkB,KAAK,GAAG9C,KAAK,CAAC+C,eAAe,CAACnB,OAAO,CAAC;;MAE1C;MACA,IAAIoB,YAAY;MAChB,IAAIC,KAAK,GAAGjD,KAAK,CAACsC,MAAM,CAACY,SAAS,CAAEC,CAAC,IAAKL,KAAK,GAAGK,CAAC,GAAG,CAAC,CAAC;MACxD,IAAIF,KAAK,KAAK,CAAC,EAAE;QACf;QACAD,YAAY,GAAGC,KAAK;MACtB,CAAC,MAAM,IAAIA,KAAK,KAAK,CAAC,CAAC,EAAE;QACvB;QACAD,YAAY,GAAGhD,KAAK,CAACsC,MAAM,CAACc,MAAM,GAAG,CAAC;MACxC,CAAC,MAAM;QACL,IAAIC,QAAQ,GAAGrD,KAAK,CAACsC,MAAM,CAACW,KAAK,GAAG,CAAC,CAAC;QACtC,IAAIK,UAAU,GAAGtD,KAAK,CAACsC,MAAM,CAACW,KAAK,CAAC;QACpC;QACA,IAAIM,IAAI,CAACC,GAAG,CAACH,QAAQ,GAAGP,KAAK,CAAC,GAAGS,IAAI,CAACC,GAAG,CAACF,UAAU,GAAGR,KAAK,CAAC,EAAE;UAC7DE,YAAY,GAAGC,KAAK,GAAG,CAAC;QAC1B,CAAC,MAAM;UACLD,YAAY,GAAGC,KAAK;QACtB;MACF;;MAEA;MACA,IAAID,YAAY,IAAI,CAAC,IAAIhD,KAAK,CAACyD,eAAe,CAACT,YAAY,CAAC,EAAE;QAC5D;QACAd,CAAC,CAACwB,cAAc,CAAC,CAAC;QAElB7C,0BAA0B,CAACE,OAAO,GAAGiC,YAAY;QACjDhD,KAAK,CAAC2D,eAAe,CAACX,YAAY,CAAC;QACnChB,cAAc,CAACjB,OAAO,GAAGP,EAAE;QAE3BR,KAAK,CAAC+B,gBAAgB,CAAClB,0BAA0B,CAACE,OAAO,EAAE,IAAI,CAAC;QAChEf,KAAK,CAAC4D,aAAa,CAACZ,YAAY,EAAEF,KAAK,CAAC;QAExCnC,iBAAiB,CAACkD,MAAM,EAAE,SAAS,EAAEC,SAAS,EAAE,KAAK,CAAC;QACtDnD,iBAAiB,CAACkD,MAAM,EAAE,UAAU,EAAEC,SAAS,EAAE,KAAK,CAAC;QACvDnD,iBAAiB,CAACkD,MAAM,EAAE,WAAW,EAAEC,SAAS,EAAE,KAAK,CAAC;MAC1D,CAAC,MAAM;QACLjD,0BAA0B,CAACE,OAAO,GAAG,IAAI;MAC3C;IACF;EACF,CAAC;EAED,IAAI+C,SAAS,GAAI5B,CAAC,IAAK;IAAA,IAAA6B,iBAAA;IACrB,IAAIvD,EAAE,GAAG0B,CAAC,CAAC8B,SAAS,MAAAD,iBAAA,GAAI7B,CAAC,CAAC+B,cAAc,cAAAF,iBAAA,uBAAhBA,iBAAA,CAAmB,CAAC,CAAC,CAACG,UAAU;IACxD,IAAI1D,EAAE,KAAKwB,cAAc,CAACjB,OAAO,EAAE;MACjC,IAAIF,0BAA0B,CAACE,OAAO,IAAI,IAAI,EAAE;QAC9Cf,KAAK,CAAC+B,gBAAgB,CAAClB,0BAA0B,CAACE,OAAO,EAAE,KAAK,CAAC;QACjEF,0BAA0B,CAACE,OAAO,GAAG,IAAI;MAC3C;MAEAH,oBAAoB,CAACiD,MAAM,EAAE,SAAS,EAAEC,SAAS,EAAE,KAAK,CAAC;MACzDlD,oBAAoB,CAACiD,MAAM,EAAE,UAAU,EAAEC,SAAS,EAAE,KAAK,CAAC;MAC1DlD,oBAAoB,CAACiD,MAAM,EAAE,WAAW,EAAEC,SAAS,EAAE,KAAK,CAAC;IAC7D;EACF,CAAC;EAED,IAAI3D,UAAU,CAACgE,OAAO,EAAE;IACtB;IACA;IACA;IACA;IACA,OAAOhE,UAAU,CAACgE,OAAO;IACzBhE,UAAU,CAACiE,OAAO,GAAG,MAAM;MAAA,IAAAC,qBAAA;MACzB;MACA;MACA,CAAAA,qBAAA,GAAAC,QAAQ,CAACC,cAAc,CAACjF,gBAAgB,CAACU,KAAK,EAAE,CAAC,CAAC,CAAC,cAAAqE,qBAAA,eAAnDA,qBAAA,CAAqDG,KAAK,CAAC,CAAC;MAC5D/E,sBAAsB,CAAC,UAAU,CAAC;IACpC,CAAC;EACH;EAEA,OAAO;IACLU,UAAU;IACV;IACA;IACA;IACAsE,UAAU,EAAE;MACVC,IAAI,EAAE,OAAO;MACb,GAAGtE;IACL,CAAC;IACDuE,UAAU,EAAEvF,UAAU,CACpB;MACEwF,WAAWA,CAAC1C,CAAgC,EAAE;QAC5C,IAAIA,CAAC,CAAC2C,MAAM,KAAK,CAAC,IAAI3C,CAAC,CAAC4C,MAAM,IAAI5C,CAAC,CAAC6C,OAAO,IAAI7C,CAAC,CAAC8C,OAAO,EAAE;UACxD;QACF;QACA/C,WAAW,CAACC,CAAC,EAAExB,SAAS,EAAEwB,CAAC,CAACC,OAAO,EAAED,CAAC,CAACE,OAAO,CAAC;MACjD,CAAC;MACD6C,aAAaA,CAAC/C,CAAkC,EAAE;QAChD,IACEA,CAAC,CAACgD,WAAW,KAAK,OAAO,KACxBhD,CAAC,CAAC2C,MAAM,KAAK,CAAC,IAAI3C,CAAC,CAAC4C,MAAM,IAAI5C,CAAC,CAAC6C,OAAO,IAAI7C,CAAC,CAAC8C,OAAO,CAAC,EACtD;UACA;QACF;QACA/C,WAAW,CAACC,CAAC,EAAEA,CAAC,CAAC8B,SAAS,EAAE9B,CAAC,CAACC,OAAO,EAAED,CAAC,CAACE,OAAO,CAAC;MACnD,CAAC;MACD+C,YAAYA,CAACjD,CAAgC,EAAE;QAC7CD,WAAW,CACTC,CAAC,EACDA,CAAC,CAAC+B,cAAc,CAAC,CAAC,CAAC,CAACC,UAAU,EAC9BhC,CAAC,CAAC+B,cAAc,CAAC,CAAC,CAAC,CAAC9B,OAAO,EAC3BD,CAAC,CAAC+B,cAAc,CAAC,CAAC,CAAC,CAAC7B,OACtB,CAAC;MACH;IACF,CAAC,EACDlB,SACF,CAAC;IACDkE,WAAW,EAAE;MACX,SAAS,EAAEpF,KAAK,CAACsC,MAAM,CACpB+C,GAAG,CAAC,CAAC7C,CAAC,EAAE8C,KAAK,KAAKhG,gBAAgB,CAACU,KAAK,EAAEsF,KAAK,CAAC,CAAC,CACjDC,IAAI,CAAC,GAAG,CAAC;MACZ,WAAW,EAAE;IACf;EACF,CAAC;AACH;AAEA,OAAO,MAAMC,SAAS,GAAGA,CACvBzF,KAAU,EACVC,KAAU,EACVyF,GAAQ,EACRvF,UAAoB,KACjB;EACH,IAAI;IAAEuE,UAAU,EAAEiB,aAAa;IAAE,GAAGC;EAAK,CAAC,GAAG7F,YAAY,CACvDC,KAAK,EACLC,KAAK,EACLyF,GAAG,EACHvF,UACF,CAAC;EACD,IAAIuE,UAAU,GAAG9E,eAAe,CAAC+F,aAAa,CAAC;EAC/C,IAAIvF,UAAU,GAAGR,eAAe,CAACgG,IAAI,CAACxF,UAAU,CAAC;EACjD,OAAO;IAAEsE,UAAU;IAAE,GAAGkB,IAAI;IAAExF;EAAW,CAAC;AAC5C,CAAC"}
|
@@ -1,10 +1,9 @@
|
|
1
1
|
import { clamp } from '@react-aria/utils';
|
2
2
|
import { getSliderThumbId, sliderIds } from './utils';
|
3
|
-
import { useRef } from 'react';
|
3
|
+
import { useRef, useState } from 'react';
|
4
4
|
import { useLabel } from '@react-aria/label';
|
5
5
|
import { useMove } from './useMove';
|
6
6
|
import { isRTL } from '@react-native-aria/utils';
|
7
|
-
|
8
7
|
/**
|
9
8
|
* Provides behavior and accessibility for a thumb of a slider component.
|
10
9
|
*
|
@@ -12,8 +11,6 @@ import { isRTL } from '@react-native-aria/utils';
|
|
12
11
|
* @param state Slider state, created via `useSliderState`.
|
13
12
|
*/
|
14
13
|
export function useSliderThumb(opts, state, isReversed) {
|
15
|
-
var _opts$ariaLabelledby;
|
16
|
-
|
17
14
|
let {
|
18
15
|
index,
|
19
16
|
isDisabled,
|
@@ -25,34 +22,33 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
25
22
|
const {
|
26
23
|
labelProps,
|
27
24
|
fieldProps
|
28
|
-
} = useLabel({
|
25
|
+
} = useLabel({
|
26
|
+
...opts,
|
29
27
|
'id': getSliderThumbId(state, index),
|
30
|
-
'aria-labelledby': `${labelId} ${
|
28
|
+
'aria-labelledby': `${labelId} ${opts['aria-labelledby'] ?? ''}`.trim()
|
31
29
|
});
|
32
30
|
const stateRef = useRef(null);
|
33
31
|
stateRef.current = state;
|
34
32
|
let reverseX = isReversed || direction === 'rtl';
|
35
33
|
let currentPosition = useRef(null);
|
34
|
+
const [startPosition, setStartPosition] = useState(0);
|
36
35
|
let {
|
37
36
|
moveProps
|
38
37
|
} = useMove({
|
39
38
|
onMoveStart() {
|
40
|
-
currentPosition.current = null;
|
41
39
|
state.setThumbDragging(index, true);
|
40
|
+
let size = isVertical ? trackLayout.height : trackLayout.width;
|
41
|
+
setStartPosition(stateRef.current.getThumbPercent(index) * size);
|
42
42
|
},
|
43
|
-
|
44
43
|
onMove({
|
45
44
|
deltaX,
|
46
45
|
deltaY
|
47
46
|
}) {
|
48
47
|
let size = isVertical ? trackLayout.height : trackLayout.width;
|
49
|
-
|
50
48
|
if (currentPosition.current == null) {
|
51
49
|
currentPosition.current = stateRef.current.getThumbPercent(index) * size;
|
52
50
|
}
|
53
|
-
|
54
51
|
let delta = isVertical ? deltaY : deltaX;
|
55
|
-
|
56
52
|
if (reverseX) {
|
57
53
|
if (!isVertical) {
|
58
54
|
delta = -delta;
|
@@ -62,43 +58,34 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
62
58
|
delta = -delta;
|
63
59
|
}
|
64
60
|
}
|
65
|
-
|
66
|
-
|
67
|
-
stateRef.current.setThumbPercent(index, clamp(currentPosition.current / size, 0, 1));
|
61
|
+
const position = startPosition + delta;
|
62
|
+
stateRef.current.setThumbPercent(index, clamp(position / size, 0, 1));
|
68
63
|
},
|
69
|
-
|
70
64
|
onMoveEnd() {
|
71
65
|
state.setThumbDragging(index, false);
|
72
66
|
}
|
73
|
-
|
74
67
|
});
|
75
68
|
state.setThumbEditable(index, !isDisabled);
|
76
|
-
|
77
69
|
const onAccessibilityAction = event => {
|
78
|
-
var _ref, _ref2;
|
79
|
-
|
80
70
|
const max = state.getThumbMinValue(index);
|
81
71
|
const min = state.getThumbMaxValue(index);
|
82
72
|
const value = state.getThumbValue(index);
|
83
|
-
const incrementValue = Math.min(
|
84
|
-
const decrementValue = Math.max(
|
85
|
-
|
73
|
+
const incrementValue = Math.min(value + state.step ?? 1, max);
|
74
|
+
const decrementValue = Math.max(value - state.step ?? 1, min);
|
86
75
|
switch (event.nativeEvent.actionName) {
|
87
76
|
case 'increment':
|
88
77
|
state.setThumbValue(index, incrementValue);
|
89
78
|
break;
|
90
|
-
|
91
79
|
case 'decrement':
|
92
80
|
state.setThumbValue(index, decrementValue);
|
93
81
|
break;
|
94
|
-
|
95
82
|
default:
|
96
83
|
break;
|
97
84
|
}
|
98
85
|
};
|
99
|
-
|
100
86
|
return {
|
101
|
-
inputProps: {
|
87
|
+
inputProps: {
|
88
|
+
...fieldProps,
|
102
89
|
'disabled': isDisabled,
|
103
90
|
'role': 'adjustable',
|
104
91
|
'aria-value': {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["clamp","getSliderThumbId","sliderIds","useRef","useState","useLabel","useMove","isRTL","useSliderThumb","opts","state","isReversed","index","isDisabled","trackLayout","isVertical","orientation","direction","undefined","labelId","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"],"sourceRoot":"../../src","sources":["useSliderThumb.ts"],"mappings":"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"}
|
@@ -5,7 +5,6 @@ import { useFocusable } from '@react-aria/focus';
|
|
5
5
|
import { useLabel } from '@react-aria/label';
|
6
6
|
import { useMove } from './useMove';
|
7
7
|
import { isRTL } from '@react-native-aria/utils';
|
8
|
-
|
9
8
|
/**
|
10
9
|
* Provides behavior and accessibility for a thumb of a slider component.
|
11
10
|
*
|
@@ -13,8 +12,6 @@ import { isRTL } from '@react-native-aria/utils';
|
|
13
12
|
* @param state Slider state, created via `useSliderState`.
|
14
13
|
*/
|
15
14
|
export function useSliderThumb(opts, state, isReversed) {
|
16
|
-
var _opts$ariaLabelledby;
|
17
|
-
|
18
15
|
let {
|
19
16
|
index,
|
20
17
|
isRequired,
|
@@ -33,9 +30,10 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
33
30
|
const {
|
34
31
|
labelProps,
|
35
32
|
fieldProps
|
36
|
-
} = useLabel({
|
33
|
+
} = useLabel({
|
34
|
+
...opts,
|
37
35
|
'id': getSliderThumbId(state, index),
|
38
|
-
'aria-labelledby': `${labelId} ${
|
36
|
+
'aria-labelledby': `${labelId} ${opts['aria-labelledby'] ?? ''}`.trim()
|
39
37
|
});
|
40
38
|
const value = state.values[index];
|
41
39
|
const focusInput = useCallback(() => {
|
@@ -60,18 +58,15 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
60
58
|
currentPosition.current = null;
|
61
59
|
state.setThumbDragging(index, true);
|
62
60
|
},
|
63
|
-
|
64
61
|
onMove({
|
65
62
|
deltaX,
|
66
63
|
deltaY,
|
67
64
|
pointerType
|
68
65
|
}) {
|
69
66
|
let size = isVertical ? trackLayout.height : trackLayout.width;
|
70
|
-
|
71
67
|
if (currentPosition.current == null) {
|
72
68
|
currentPosition.current = stateRef.current.getThumbPercent(index) * size;
|
73
69
|
}
|
74
|
-
|
75
70
|
if (pointerType === 'keyboard') {
|
76
71
|
// (invert left/right according to language direction) + (according to vertical)
|
77
72
|
let delta = ((reverseX ? -deltaX : deltaX) + (reverseX ? deltaY : -deltaY)) * stateRef.current.step;
|
@@ -79,7 +74,6 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
79
74
|
stateRef.current.setThumbValue(index, stateRef.current.getThumbValue(index) + delta);
|
80
75
|
} else {
|
81
76
|
let delta = isVertical ? deltaY : deltaX;
|
82
|
-
|
83
77
|
if (reverseX) {
|
84
78
|
if (!isVertical) {
|
85
79
|
delta = -delta;
|
@@ -89,18 +83,16 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
89
83
|
delta = -delta;
|
90
84
|
}
|
91
85
|
}
|
92
|
-
|
93
86
|
currentPosition.current += delta;
|
94
87
|
stateRef.current.setThumbPercent(index, clamp(currentPosition.current / size, 0, 1));
|
95
88
|
}
|
96
89
|
},
|
97
|
-
|
98
90
|
onMoveEnd() {
|
99
91
|
state.setThumbDragging(index, false);
|
100
92
|
}
|
93
|
+
});
|
101
94
|
|
102
|
-
|
103
|
-
|
95
|
+
// Immediately register editability with the state
|
104
96
|
state.setThumbEditable(index, !isDisabled);
|
105
97
|
const {
|
106
98
|
focusableProps
|
@@ -109,7 +101,6 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
109
101
|
onBlur: () => state.setFocusedThumb(undefined)
|
110
102
|
}), inputRef);
|
111
103
|
let currentPointer = useRef(undefined);
|
112
|
-
|
113
104
|
let onDown = id => {
|
114
105
|
focusInput();
|
115
106
|
currentPointer.current = id;
|
@@ -118,12 +109,9 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
118
109
|
addGlobalListener(window, 'touchend', onUp, false);
|
119
110
|
addGlobalListener(window, 'pointerup', onUp, false);
|
120
111
|
};
|
121
|
-
|
122
112
|
let onUp = e => {
|
123
|
-
var _e$
|
124
|
-
|
125
|
-
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;
|
126
|
-
|
113
|
+
var _e$changedTouches;
|
114
|
+
let id = e.pointerId ?? ((_e$changedTouches = e.changedTouches) === null || _e$changedTouches === void 0 ? void 0 : _e$changedTouches[0].identifier);
|
127
115
|
if (id === currentPointer.current) {
|
128
116
|
focusInput();
|
129
117
|
state.setThumbDragging(index, false);
|
@@ -131,12 +119,12 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
131
119
|
removeGlobalListener(window, 'touchend', onUp, false);
|
132
120
|
removeGlobalListener(window, 'pointerup', onUp, false);
|
133
121
|
}
|
134
|
-
};
|
122
|
+
};
|
123
|
+
|
124
|
+
// We install mouse handlers for the drag motion on the thumb div, but
|
135
125
|
// not the key handler for moving the thumb with the slider. Instead,
|
136
126
|
// we focus the range input, and let the browser handle the keyboard
|
137
127
|
// interactions; we then listen to input's onChange to update state.
|
138
|
-
|
139
|
-
|
140
128
|
return {
|
141
129
|
inputProps: mergeProps(focusableProps, fieldProps, {
|
142
130
|
'type': 'range',
|
@@ -160,14 +148,12 @@ export function useSliderThumb(opts, state, isReversed) {
|
|
160
148
|
if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
|
161
149
|
return;
|
162
150
|
}
|
163
|
-
|
164
151
|
onDown();
|
165
152
|
},
|
166
153
|
onPointerDown: e => {
|
167
154
|
if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
|
168
155
|
return;
|
169
156
|
}
|
170
|
-
|
171
157
|
onDown(e.pointerId);
|
172
158
|
},
|
173
159
|
onTouchStart: e => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["useSliderThumb.web.ts"],"names":["clamp","focusWithoutScrolling","mergeProps","useGlobalListeners","getSliderThumbId","sliderIds","useCallback","useEffect","useRef","useFocusable","useLabel","useMove","isRTL","useSliderThumb","opts","state","isReversed","index","isRequired","isDisabled","validationState","trackLayout","inputRef","isVertical","orientation","direction","undefined","addGlobalListener","removeGlobalListener","labelId","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":["clamp","focusWithoutScrolling","mergeProps","useGlobalListeners","getSliderThumbId","sliderIds","useCallback","useEffect","useRef","useFocusable","useLabel","useMove","isRTL","useSliderThumb","opts","state","isReversed","index","isRequired","isDisabled","validationState","trackLayout","inputRef","isVertical","orientation","direction","undefined","addGlobalListener","removeGlobalListener","labelId","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","_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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"}
|
package/lib/module/utils.js
CHANGED
package/lib/module/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["sliderIds","WeakMap","getSliderThumbId","state","index","id","get","Error"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"AAEA,OAAO,MAAMA,SAAS,GAAG,IAAIC,OAAO,CAAsB,CAAC;AAE3D,OAAO,SAASC,gBAAgBA,CAACC,KAAkB,EAAEC,KAAa,EAAE;EAClE,IAAIC,EAAE,GAAGL,SAAS,CAACM,GAAG,CAACH,KAAK,CAAC;EAC7B,IAAI,CAACE,EAAE,EAAE;IACP,MAAM,IAAIE,KAAK,CAAC,sBAAsB,CAAC;EACzC;EAEA,OAAQ,GAAEF,EAAG,IAAGD,KAAM,EAAC;AACzB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|