@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
package/CHANGELOG.md
ADDED
package/lib/commonjs/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["_useSlider","require","_useSliderThumb"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA"}
|
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.disableTextSelection = disableTextSelection;
|
7
7
|
exports.restoreTextSelection = restoreTextSelection;
|
8
|
-
|
9
8
|
var _utils = require("@react-aria/utils");
|
10
|
-
|
11
9
|
/*
|
12
10
|
* Copyright 2020 Adobe. All rights reserved.
|
13
11
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
@@ -19,28 +17,36 @@ var _utils = require("@react-aria/utils");
|
|
19
17
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
20
18
|
* governing permissions and limitations under the License.
|
21
19
|
*/
|
20
|
+
|
21
|
+
// Safari on iOS starts selecting text on long press. The only way to avoid this, it seems,
|
22
|
+
// is to add user-select: none to the entire page. Adding it to the pressable element prevents
|
23
|
+
// that element from being selected, but nearby elements may still receive selection. We add
|
24
|
+
// user-select: none on touch start, and remove it again on touch end to prevent this.
|
25
|
+
// This must be implemented using global state to avoid race conditions between multiple elements.
|
26
|
+
|
27
|
+
// There are three possible states due to the delay before removing user-select: none after
|
28
|
+
// pointer up. The 'default' state always transitions to the 'disabled' state, which transitions
|
29
|
+
// to 'restoring'. The 'restoring' state can either transition back to 'disabled' or 'default'.
|
30
|
+
|
22
31
|
let state = 'default';
|
23
32
|
let savedUserSelect = '';
|
24
|
-
|
25
33
|
function disableTextSelection() {
|
26
34
|
if (state === 'default') {
|
27
35
|
savedUserSelect = document.documentElement.style.webkitUserSelect;
|
28
36
|
document.documentElement.style.webkitUserSelect = 'none';
|
29
37
|
}
|
30
|
-
|
31
38
|
state = 'disabled';
|
32
39
|
}
|
33
|
-
|
34
40
|
function restoreTextSelection() {
|
35
41
|
// If the state is already default, there's nothing to do.
|
36
42
|
// If it is restoring, then there's no need to queue a second restore.
|
37
43
|
if (state !== 'disabled') {
|
38
44
|
return;
|
39
45
|
}
|
46
|
+
state = 'restoring';
|
40
47
|
|
41
|
-
|
48
|
+
// There appears to be a delay on iOS where selection still might occur
|
42
49
|
// after pointer up, so wait a bit before removing user-select.
|
43
|
-
|
44
50
|
setTimeout(() => {
|
45
51
|
// Wait for any CSS transitions to complete so we don't recompute style
|
46
52
|
// for the whole page in the middle of the animation and cause jank.
|
@@ -50,7 +56,6 @@ function restoreTextSelection() {
|
|
50
56
|
if (document.documentElement.style.webkitUserSelect === 'none') {
|
51
57
|
document.documentElement.style.webkitUserSelect = savedUserSelect || '';
|
52
58
|
}
|
53
|
-
|
54
59
|
savedUserSelect = '';
|
55
60
|
state = 'default';
|
56
61
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["_utils","require","state","savedUserSelect","disableTextSelection","document","documentElement","style","webkitUserSelect","restoreTextSelection","setTimeout","runAfterTransition"],"sourceRoot":"../../src","sources":["textSelection.ts"],"mappings":";;;;;;;AAYA,IAAAA,MAAA,GAAAC,OAAA;AAZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAGA,IAAIC,KAAY,GAAG,SAAS;AAC5B,IAAIC,eAAe,GAAG,EAAE;AAEjB,SAASC,oBAAoBA,CAAA,EAAG;EACrC,IAAIF,KAAK,KAAK,SAAS,EAAE;IACvBC,eAAe,GAAGE,QAAQ,CAACC,eAAe,CAACC,KAAK,CAACC,gBAAgB;IACjEH,QAAQ,CAACC,eAAe,CAACC,KAAK,CAACC,gBAAgB,GAAG,MAAM;EAC1D;EAEAN,KAAK,GAAG,UAAU;AACpB;AAEO,SAASO,oBAAoBA,CAAA,EAAG;EACrC;EACA;EACA,IAAIP,KAAK,KAAK,UAAU,EAAE;IACxB;EACF;EAEAA,KAAK,GAAG,WAAW;;EAEnB;EACA;EACAQ,UAAU,CAAC,MAAM;IACf;IACA;IACA,IAAAC,yBAAkB,EAAC,MAAM;MACvB;MACA,IAAIT,KAAK,KAAK,WAAW,EAAE;QACzB,IAAIG,QAAQ,CAACC,eAAe,CAACC,KAAK,CAACC,gBAAgB,KAAK,MAAM,EAAE;UAC9DH,QAAQ,CAACC,eAAe,CAACC,KAAK,CAACC,gBAAgB,GAC7CL,eAAe,IAAI,EAAE;QACzB;QAEAA,eAAe,GAAG,EAAE;QACpBD,KAAK,GAAG,SAAS;MACnB;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,GAAG,CAAC;AACT"}
|
package/lib/commonjs/useMove.js
CHANGED
@@ -4,13 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.useMove = useMove;
|
7
|
-
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
9
|
-
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
10
8
|
var _reactNative = require("react-native");
|
11
|
-
|
12
|
-
function
|
13
|
-
|
9
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
10
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
14
11
|
/*
|
15
12
|
* Copyright 2020 Adobe. All rights reserved.
|
16
13
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
@@ -34,39 +31,44 @@ function useMove(props) {
|
|
34
31
|
onMove,
|
35
32
|
onMoveEnd
|
36
33
|
} = props;
|
37
|
-
|
38
|
-
const
|
34
|
+
const [initialMoveX, setInitialMoveX] = (0, _react.useState)(0);
|
35
|
+
const [initialMoveY, setInitialMoveY] = (0, _react.useState)(0);
|
36
|
+
const panResponder = _react.default.useMemo(() => _reactNative.PanResponder.create({
|
39
37
|
onMoveShouldSetPanResponderCapture: _event => {
|
40
38
|
return true;
|
41
39
|
},
|
42
|
-
onPanResponderGrant: _evt => {
|
43
|
-
onMoveStart === null || onMoveStart === void 0
|
40
|
+
onPanResponderGrant: (_evt, gestureState) => {
|
41
|
+
onMoveStart === null || onMoveStart === void 0 || onMoveStart({
|
44
42
|
type: 'movestart',
|
45
43
|
pointerType: 'touch'
|
46
44
|
});
|
45
|
+
setInitialMoveX(gestureState.moveX);
|
46
|
+
setInitialMoveY(gestureState.moveY);
|
47
47
|
},
|
48
48
|
onPanResponderMove: (_event, gestureState) => {
|
49
|
-
|
49
|
+
const deltaX = gestureState.moveX - initialMoveX;
|
50
|
+
const deltaY = gestureState.moveY - initialMoveY;
|
51
|
+
if (deltaX === 0 && deltaY === 0) {
|
50
52
|
return;
|
51
53
|
}
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
54
|
+
if (deltaX) {
|
55
|
+
onMove({
|
56
|
+
type: 'move',
|
57
|
+
pointerType: 'touch',
|
58
|
+
deltaX: deltaX,
|
59
|
+
deltaY: deltaY
|
60
|
+
});
|
61
|
+
}
|
59
62
|
},
|
60
63
|
onPanResponderRelease: () => {
|
61
|
-
onMoveEnd === null || onMoveEnd === void 0
|
64
|
+
onMoveEnd === null || onMoveEnd === void 0 || onMoveEnd({
|
62
65
|
type: 'moveend',
|
63
66
|
pointerType: 'touch'
|
64
67
|
});
|
65
68
|
}
|
66
|
-
}), [onMove, onMoveEnd, onMoveStart]);
|
67
|
-
|
69
|
+
}), [onMove, onMoveEnd, onMoveStart, initialMoveX, initialMoveY]);
|
68
70
|
return {
|
69
|
-
moveProps:
|
71
|
+
moveProps: panResponder.panHandlers
|
70
72
|
};
|
71
73
|
}
|
72
74
|
//# sourceMappingURL=useMove.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","useMove","props","onMoveStart","onMove","onMoveEnd","initialMoveX","setInitialMoveX","useState","initialMoveY","setInitialMoveY","panResponder","React","useMemo","PanResponder","create","onMoveShouldSetPanResponderCapture","_event","onPanResponderGrant","_evt","gestureState","type","pointerType","moveX","moveY","onPanResponderMove","deltaX","deltaY","onPanResponderRelease","moveProps","panHandlers"],"sourceRoot":"../../src","sources":["useMove.ts"],"mappings":"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"}
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.useMove = useMove;
|
7
|
-
|
8
7
|
var _textSelection = require("./textSelection");
|
9
|
-
|
10
8
|
var _react = require("react");
|
11
|
-
|
12
9
|
var _utils = require("@react-aria/utils");
|
13
|
-
|
14
10
|
/*
|
15
11
|
* Copyright 2020 Adobe. All rights reserved.
|
16
12
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
@@ -45,25 +41,23 @@ function useMove(props) {
|
|
45
41
|
} = (0, _utils.useGlobalListeners)();
|
46
42
|
let moveProps = (0, _react.useMemo)(() => {
|
47
43
|
let moveProps = {};
|
48
|
-
|
49
44
|
let start = () => {
|
50
45
|
(0, _textSelection.disableTextSelection)();
|
51
46
|
state.current.didMove = false;
|
52
47
|
};
|
53
|
-
|
54
48
|
let move = (pointerType, deltaX, deltaY) => {
|
55
49
|
if (deltaX === 0 && deltaY === 0) {
|
56
50
|
return;
|
57
51
|
}
|
58
|
-
|
59
52
|
if (!state.current.didMove) {
|
60
53
|
state.current.didMove = true;
|
61
|
-
|
54
|
+
// @ts-ignore
|
55
|
+
onMoveStart === null || onMoveStart === void 0 || onMoveStart({
|
62
56
|
type: 'movestart',
|
63
57
|
pointerType
|
64
58
|
});
|
65
59
|
}
|
66
|
-
|
60
|
+
// @ts-ignore
|
67
61
|
onMove({
|
68
62
|
type: 'move',
|
69
63
|
pointerType,
|
@@ -71,18 +65,16 @@ function useMove(props) {
|
|
71
65
|
deltaY: deltaY
|
72
66
|
});
|
73
67
|
};
|
74
|
-
|
75
68
|
let end = pointerType => {
|
76
69
|
(0, _textSelection.restoreTextSelection)();
|
77
|
-
|
78
70
|
if (state.current.didMove) {
|
79
|
-
|
71
|
+
// @ts-ignore
|
72
|
+
onMoveEnd === null || onMoveEnd === void 0 || onMoveEnd({
|
80
73
|
type: 'moveend',
|
81
74
|
pointerType
|
82
75
|
});
|
83
76
|
}
|
84
77
|
};
|
85
|
-
|
86
78
|
if (typeof PointerEvent !== 'undefined') {
|
87
79
|
let onMouseMove = e => {
|
88
80
|
if (e.button === 0) {
|
@@ -93,7 +85,6 @@ function useMove(props) {
|
|
93
85
|
};
|
94
86
|
}
|
95
87
|
};
|
96
|
-
|
97
88
|
let onMouseUp = e => {
|
98
89
|
if (e.button === 0) {
|
99
90
|
end('mouse');
|
@@ -101,7 +92,6 @@ function useMove(props) {
|
|
101
92
|
removeGlobalListener(window, 'mouseup', onMouseUp, false);
|
102
93
|
}
|
103
94
|
};
|
104
|
-
|
105
95
|
moveProps.onMouseDown = e => {
|
106
96
|
if (e.button === 0) {
|
107
97
|
start();
|
@@ -115,13 +105,11 @@ function useMove(props) {
|
|
115
105
|
addGlobalListener(window, 'mouseup', onMouseUp, false);
|
116
106
|
}
|
117
107
|
};
|
118
|
-
|
119
108
|
let onTouchMove = e => {
|
120
109
|
// @ts-ignore
|
121
110
|
let touch = [...e.changedTouches].findIndex(({
|
122
111
|
identifier
|
123
112
|
}) => identifier === state.current.id);
|
124
|
-
|
125
113
|
if (touch >= 0) {
|
126
114
|
let {
|
127
115
|
pageX,
|
@@ -134,13 +122,11 @@ function useMove(props) {
|
|
134
122
|
};
|
135
123
|
}
|
136
124
|
};
|
137
|
-
|
138
125
|
let onTouchEnd = e => {
|
139
126
|
// @ts-ignore
|
140
127
|
let touch = [...e.changedTouches].findIndex(({
|
141
128
|
identifier
|
142
129
|
}) => identifier === state.current.id);
|
143
|
-
|
144
130
|
if (touch >= 0) {
|
145
131
|
end('touch');
|
146
132
|
state.current.id = null;
|
@@ -149,12 +135,10 @@ function useMove(props) {
|
|
149
135
|
removeGlobalListener(window, 'touchcancel', onTouchEnd);
|
150
136
|
}
|
151
137
|
};
|
152
|
-
|
153
138
|
moveProps.onTouchStart = e => {
|
154
139
|
if (e.changedTouches.length === 0 || state.current.id != null) {
|
155
140
|
return;
|
156
141
|
}
|
157
|
-
|
158
142
|
let {
|
159
143
|
pageX,
|
160
144
|
pageY,
|
@@ -173,13 +157,11 @@ function useMove(props) {
|
|
173
157
|
addGlobalListener(window, 'touchcancel', onTouchEnd, false);
|
174
158
|
};
|
175
159
|
}
|
176
|
-
|
177
160
|
let triggerKeyboardMove = (deltaX, deltaY) => {
|
178
161
|
start();
|
179
162
|
move('keyboard', deltaX, deltaY);
|
180
163
|
end('keyboard');
|
181
164
|
};
|
182
|
-
|
183
165
|
moveProps.onKeyDown = e => {
|
184
166
|
switch (e.key) {
|
185
167
|
case 'Left':
|
@@ -188,21 +170,18 @@ function useMove(props) {
|
|
188
170
|
e.stopPropagation();
|
189
171
|
triggerKeyboardMove(-1, 0);
|
190
172
|
break;
|
191
|
-
|
192
173
|
case 'Right':
|
193
174
|
case 'ArrowRight':
|
194
175
|
e.preventDefault();
|
195
176
|
e.stopPropagation();
|
196
177
|
triggerKeyboardMove(1, 0);
|
197
178
|
break;
|
198
|
-
|
199
179
|
case 'Up':
|
200
180
|
case 'ArrowUp':
|
201
181
|
e.preventDefault();
|
202
182
|
e.stopPropagation();
|
203
183
|
triggerKeyboardMove(0, -1);
|
204
184
|
break;
|
205
|
-
|
206
185
|
case 'Down':
|
207
186
|
case 'ArrowDown':
|
208
187
|
e.preventDefault();
|
@@ -211,7 +190,6 @@ function useMove(props) {
|
|
211
190
|
break;
|
212
191
|
}
|
213
192
|
};
|
214
|
-
|
215
193
|
return moveProps;
|
216
194
|
}, [state, onMoveStart, onMove, onMoveEnd, addGlobalListener, removeGlobalListener]);
|
217
195
|
return {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["useMove.web.ts"],"names":["useMove","props","onMoveStart","onMove","onMoveEnd","state","didMove","lastPosition","id","addGlobalListener","removeGlobalListener","moveProps","start","current","move","pointerType","deltaX","deltaY","type","end","PointerEvent","onMouseMove","e","button","pageX","pageY","onMouseUp","window","onMouseDown","stopPropagation","preventDefault","onTouchMove","touch","changedTouches","findIndex","identifier","onTouchEnd","onTouchStart","length","triggerKeyboardMove","onKeyDown","key"],"mappings":";;;;;;;AAYA;;AAEA;;AACA;;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACO,SAASA,OAAT,CAAiBC,KAAjB,EAAgD;AACrD,MAAI;AAAEC,IAAAA,WAAF;AAAeC,IAAAA,MAAf;AAAuBC,IAAAA;AAAvB,MAAqCH,KAAzC;AAEA,MAAII,KAAK,GAAG,mBAIT;AAAEC,IAAAA,OAAO,EAAE,KAAX;AAAkBC,IAAAA,YAAY,EAAE,IAAhC;AAAsCC,IAAAA,EAAE,EAAE;AAA1C,GAJS,CAAZ;AAMA,MAAI;AAAEC,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAA8C,gCAAlD;AAEA,MAAIC,SAAS,GAAG,oBAAQ,MAAM;AAC5B,QAAIA,SAAsC,GAAG,EAA7C;;AAEA,QAAIC,KAAK,GAAG,MAAM;AAChB;AACAP,MAAAA,KAAK,CAACQ,OAAN,CAAcP,OAAd,GAAwB,KAAxB;AACD,KAHD;;AAIA,QAAIQ,IAAI,GAAG,CAACC,WAAD,EAA2BC,MAA3B,EAA2CC,MAA3C,KAA8D;AACvE,UAAID,MAAM,KAAK,CAAX,IAAgBC,MAAM,KAAK,CAA/B,EAAkC;AAChC;AACD;;AAED,UAAI,CAACZ,KAAK,CAACQ,OAAN,CAAcP,OAAnB,EAA4B;AAC1BD,QAAAA,KAAK,CAACQ,OAAN,CAAcP,OAAd,GAAwB,IAAxB;AACAJ,QAAAA,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAG;AACZgB,UAAAA,IAAI,EAAE,WADM;AAEZH,UAAAA;AAFY,SAAH,CAAX;AAID;;AACDZ,MAAAA,MAAM,CAAC;AACLe,QAAAA,IAAI,EAAE,MADD;AAELH,QAAAA,WAFK;AAGLC,QAAAA,MAAM,EAAEA,MAHH;AAILC,QAAAA,MAAM,EAAEA;AAJH,OAAD,CAAN;AAMD,KAlBD;;AAmBA,QAAIE,GAAG,GAAIJ,WAAD,IAA8B;AACtC;;AACA,UAAIV,KAAK,CAACQ,OAAN,CAAcP,OAAlB,EAA2B;AACzBF,QAAAA,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAG;AACVc,UAAAA,IAAI,EAAE,SADI;AAEVH,UAAAA;AAFU,SAAH,CAAT;AAID;AACF,KARD;;AAUA,QAAI,OAAOK,YAAP,KAAwB,WAA5B,EAAyC;AACvC,UAAIC,WAAW,GAAIC,CAAD,IAAmB;AACnC,YAAIA,CAAC,CAACC,MAAF,KAAa,CAAjB,EAAoB;AAClBT,UAAAA,IAAI,CACF,OADE,EAEFQ,CAAC,CAACE,KAAF,GAAUnB,KAAK,CAACQ,OAAN,CAAcN,YAAd,CAA2BiB,KAFnC,EAGFF,CAAC,CAACG,KAAF,GAAUpB,KAAK,CAACQ,OAAN,CAAcN,YAAd,CAA2BkB,KAHnC,CAAJ;AAKApB,UAAAA,KAAK,CAACQ,OAAN,CAAcN,YAAd,GAA6B;AAAEiB,YAAAA,KAAK,EAAEF,CAAC,CAACE,KAAX;AAAkBC,YAAAA,KAAK,EAAEH,CAAC,CAACG;AAA3B,WAA7B;AACD;AACF,OATD;;AAUA,UAAIC,SAAS,GAAIJ,CAAD,IAAmB;AACjC,YAAIA,CAAC,CAACC,MAAF,KAAa,CAAjB,EAAoB;AAClBJ,UAAAA,GAAG,CAAC,OAAD,CAAH;AACAT,UAAAA,oBAAoB,CAACiB,MAAD,EAAS,WAAT,EAAsBN,WAAtB,EAAmC,KAAnC,CAApB;AACAX,UAAAA,oBAAoB,CAACiB,MAAD,EAAS,SAAT,EAAoBD,SAApB,EAA+B,KAA/B,CAApB;AACD;AACF,OAND;;AAOAf,MAAAA,SAAS,CAACiB,WAAV,GAAyBN,CAAD,IAAyB;AAC/C,YAAIA,CAAC,CAACC,MAAF,KAAa,CAAjB,EAAoB;AAClBX,UAAAA,KAAK;AACLU,UAAAA,CAAC,CAACO,eAAF;AACAP,UAAAA,CAAC,CAACQ,cAAF;AACAzB,UAAAA,KAAK,CAACQ,OAAN,CAAcN,YAAd,GAA6B;AAAEiB,YAAAA,KAAK,EAAEF,CAAC,CAACE,KAAX;AAAkBC,YAAAA,KAAK,EAAEH,CAAC,CAACG;AAA3B,WAA7B;AACAhB,UAAAA,iBAAiB,CAACkB,MAAD,EAAS,WAAT,EAAsBN,WAAtB,EAAmC,KAAnC,CAAjB;AACAZ,UAAAA,iBAAiB,CAACkB,MAAD,EAAS,SAAT,EAAoBD,SAApB,EAA+B,KAA/B,CAAjB;AACD;AACF,OATD;;AAWA,UAAIK,WAAW,GAAIT,CAAD,IAAmB;AACnC;AACA,YAAIU,KAAK,GAAG,CAAC,GAAGV,CAAC,CAACW,cAAN,EAAsBC,SAAtB,CACV,CAAC;AAAEC,UAAAA;AAAF,SAAD,KAAoBA,UAAU,KAAK9B,KAAK,CAACQ,OAAN,CAAcL,EADvC,CAAZ;;AAGA,YAAIwB,KAAK,IAAI,CAAb,EAAgB;AACd,cAAI;AAAER,YAAAA,KAAF;AAASC,YAAAA;AAAT,cAAmBH,CAAC,CAACW,cAAF,CAAiBD,KAAjB,CAAvB;AACAlB,UAAAA,IAAI,CACF,OADE,EAEFU,KAAK,GAAGnB,KAAK,CAACQ,OAAN,CAAcN,YAAd,CAA2BiB,KAFjC,EAGFC,KAAK,GAAGpB,KAAK,CAACQ,OAAN,CAAcN,YAAd,CAA2BkB,KAHjC,CAAJ;AAKApB,UAAAA,KAAK,CAACQ,OAAN,CAAcN,YAAd,GAA6B;AAAEiB,YAAAA,KAAF;AAASC,YAAAA;AAAT,WAA7B;AACD;AACF,OAdD;;AAeA,UAAIW,UAAU,GAAId,CAAD,IAAmB;AAClC;AACA,YAAIU,KAAK,GAAG,CAAC,GAAGV,CAAC,CAACW,cAAN,EAAsBC,SAAtB,CACV,CAAC;AAAEC,UAAAA;AAAF,SAAD,KAAoBA,UAAU,KAAK9B,KAAK,CAACQ,OAAN,CAAcL,EADvC,CAAZ;;AAGA,YAAIwB,KAAK,IAAI,CAAb,EAAgB;AACdb,UAAAA,GAAG,CAAC,OAAD,CAAH;AACAd,UAAAA,KAAK,CAACQ,OAAN,CAAcL,EAAd,GAAmB,IAAnB;AACAE,UAAAA,oBAAoB,CAACiB,MAAD,EAAS,WAAT,EAAsBI,WAAtB,CAApB;AACArB,UAAAA,oBAAoB,CAACiB,MAAD,EAAS,UAAT,EAAqBS,UAArB,CAApB;AACA1B,UAAAA,oBAAoB,CAACiB,MAAD,EAAS,aAAT,EAAwBS,UAAxB,CAApB;AACD;AACF,OAZD;;AAaAzB,MAAAA,SAAS,CAAC0B,YAAV,GAA0Bf,CAAD,IAAyB;AAChD,YAAIA,CAAC,CAACW,cAAF,CAAiBK,MAAjB,KAA4B,CAA5B,IAAiCjC,KAAK,CAACQ,OAAN,CAAcL,EAAd,IAAoB,IAAzD,EAA+D;AAC7D;AACD;;AAED,YAAI;AAAEgB,UAAAA,KAAF;AAASC,UAAAA,KAAT;AAAgBU,UAAAA;AAAhB,YAA+Bb,CAAC,CAACW,cAAF,CAAiB,CAAjB,CAAnC;AACArB,QAAAA,KAAK;AACLU,QAAAA,CAAC,CAACO,eAAF;AACAP,QAAAA,CAAC,CAACQ,cAAF;AACAzB,QAAAA,KAAK,CAACQ,OAAN,CAAcN,YAAd,GAA6B;AAAEiB,UAAAA,KAAF;AAASC,UAAAA;AAAT,SAA7B;AACApB,QAAAA,KAAK,CAACQ,OAAN,CAAcL,EAAd,GAAmB2B,UAAnB;AACA1B,QAAAA,iBAAiB,CAACkB,MAAD,EAAS,WAAT,EAAsBI,WAAtB,EAAmC,KAAnC,CAAjB;AACAtB,QAAAA,iBAAiB,CAACkB,MAAD,EAAS,UAAT,EAAqBS,UAArB,EAAiC,KAAjC,CAAjB;AACA3B,QAAAA,iBAAiB,CAACkB,MAAD,EAAS,aAAT,EAAwBS,UAAxB,EAAoC,KAApC,CAAjB;AACD,OAdD;AAeD;;AAED,QAAIG,mBAAmB,GAAG,CAACvB,MAAD,EAAiBC,MAAjB,KAAoC;AAC5DL,MAAAA,KAAK;AACLE,MAAAA,IAAI,CAAC,UAAD,EAAaE,MAAb,EAAqBC,MAArB,CAAJ;AACAE,MAAAA,GAAG,CAAC,UAAD,CAAH;AACD,KAJD;;AAMAR,IAAAA,SAAS,CAAC6B,SAAV,GAAuBlB,CAAD,IAAO;AAC3B,cAAQA,CAAC,CAACmB,GAAV;AACE,aAAK,MAAL;AACA,aAAK,WAAL;AACEnB,UAAAA,CAAC,CAACQ,cAAF;AACAR,UAAAA,CAAC,CAACO,eAAF;AACAU,UAAAA,mBAAmB,CAAC,CAAC,CAAF,EAAK,CAAL,CAAnB;AACA;;AACF,aAAK,OAAL;AACA,aAAK,YAAL;AACEjB,UAAAA,CAAC,CAACQ,cAAF;AACAR,UAAAA,CAAC,CAACO,eAAF;AACAU,UAAAA,mBAAmB,CAAC,CAAD,EAAI,CAAJ,CAAnB;AACA;;AACF,aAAK,IAAL;AACA,aAAK,SAAL;AACEjB,UAAAA,CAAC,CAACQ,cAAF;AACAR,UAAAA,CAAC,CAACO,eAAF;AACAU,UAAAA,mBAAmB,CAAC,CAAD,EAAI,CAAC,CAAL,CAAnB;AACA;;AACF,aAAK,MAAL;AACA,aAAK,WAAL;AACEjB,UAAAA,CAAC,CAACQ,cAAF;AACAR,UAAAA,CAAC,CAACO,eAAF;AACAU,UAAAA,mBAAmB,CAAC,CAAD,EAAI,CAAJ,CAAnB;AACA;AAxBJ;AA0BD,KA3BD;;AA6BA,WAAO5B,SAAP;AACD,GAlJe,EAkJb,CACDN,KADC,EAEDH,WAFC,EAGDC,MAHC,EAIDC,SAJC,EAKDK,iBALC,EAMDC,oBANC,CAlJa,CAAhB;AA2JA,SAAO;AAAEC,IAAAA;AAAF,GAAP;AACD","sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { disableTextSelection, restoreTextSelection } from './textSelection';\nimport { MoveEvents, PointerType } from '@react-types/shared';\nimport React, { HTMLAttributes, useMemo, useRef } from 'react';\nimport { useGlobalListeners } from '@react-aria/utils';\n\ninterface MoveResult {\n /** Props to spread on the target element. */\n moveProps: HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Handles move interactions across mouse, touch, and keyboard, including dragging with\n * the mouse or touch, and using the arrow keys. Normalizes behavior across browsers and\n * platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useMove(props: MoveEvents): MoveResult {\n let { onMoveStart, onMove, onMoveEnd } = props;\n\n let state = useRef<{\n didMove: boolean;\n lastPosition: { pageX: number; pageY: number } | null;\n id: number | null;\n }>({ didMove: false, lastPosition: null, id: null });\n\n let { addGlobalListener, removeGlobalListener } = useGlobalListeners();\n\n let moveProps = useMemo(() => {\n let moveProps: HTMLAttributes<HTMLElement> = {};\n\n let start = () => {\n disableTextSelection();\n state.current.didMove = false;\n };\n let move = (pointerType: PointerType, deltaX: number, deltaY: number) => {\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n\n if (!state.current.didMove) {\n state.current.didMove = true;\n onMoveStart?.({\n type: 'movestart',\n pointerType,\n });\n }\n onMove({\n type: 'move',\n pointerType,\n deltaX: deltaX,\n deltaY: deltaY,\n });\n };\n let end = (pointerType: PointerType) => {\n restoreTextSelection();\n if (state.current.didMove) {\n onMoveEnd?.({\n type: 'moveend',\n pointerType,\n });\n }\n };\n\n if (typeof PointerEvent !== 'undefined') {\n let onMouseMove = (e: MouseEvent) => {\n if (e.button === 0) {\n move(\n 'mouse',\n e.pageX - state.current.lastPosition.pageX,\n e.pageY - state.current.lastPosition.pageY\n );\n state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };\n }\n };\n let onMouseUp = (e: MouseEvent) => {\n if (e.button === 0) {\n end('mouse');\n removeGlobalListener(window, 'mousemove', onMouseMove, false);\n removeGlobalListener(window, 'mouseup', onMouseUp, false);\n }\n };\n moveProps.onMouseDown = (e: React.MouseEvent) => {\n if (e.button === 0) {\n start();\n e.stopPropagation();\n e.preventDefault();\n state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };\n addGlobalListener(window, 'mousemove', onMouseMove, false);\n addGlobalListener(window, 'mouseup', onMouseUp, false);\n }\n };\n\n let onTouchMove = (e: TouchEvent) => {\n // @ts-ignore\n let touch = [...e.changedTouches].findIndex(\n ({ identifier }) => identifier === state.current.id\n );\n if (touch >= 0) {\n let { pageX, pageY } = e.changedTouches[touch];\n move(\n 'touch',\n pageX - state.current.lastPosition.pageX,\n pageY - state.current.lastPosition.pageY\n );\n state.current.lastPosition = { pageX, pageY };\n }\n };\n let onTouchEnd = (e: TouchEvent) => {\n // @ts-ignore\n let touch = [...e.changedTouches].findIndex(\n ({ identifier }) => identifier === state.current.id\n );\n if (touch >= 0) {\n end('touch');\n state.current.id = null;\n removeGlobalListener(window, 'touchmove', onTouchMove);\n removeGlobalListener(window, 'touchend', onTouchEnd);\n removeGlobalListener(window, 'touchcancel', onTouchEnd);\n }\n };\n moveProps.onTouchStart = (e: React.TouchEvent) => {\n if (e.changedTouches.length === 0 || state.current.id != null) {\n return;\n }\n\n let { pageX, pageY, identifier } = e.changedTouches[0];\n start();\n e.stopPropagation();\n e.preventDefault();\n state.current.lastPosition = { pageX, pageY };\n state.current.id = identifier;\n addGlobalListener(window, 'touchmove', onTouchMove, false);\n addGlobalListener(window, 'touchend', onTouchEnd, false);\n addGlobalListener(window, 'touchcancel', onTouchEnd, false);\n };\n }\n\n let triggerKeyboardMove = (deltaX: number, deltaY: number) => {\n start();\n move('keyboard', deltaX, deltaY);\n end('keyboard');\n };\n\n moveProps.onKeyDown = (e) => {\n switch (e.key) {\n case 'Left':\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n triggerKeyboardMove(-1, 0);\n break;\n case 'Right':\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n triggerKeyboardMove(1, 0);\n break;\n case 'Up':\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n triggerKeyboardMove(0, -1);\n break;\n case 'Down':\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n triggerKeyboardMove(0, 1);\n break;\n }\n };\n\n return moveProps;\n }, [\n state,\n onMoveStart,\n onMove,\n onMoveEnd,\n addGlobalListener,\n removeGlobalListener,\n ]);\n\n return { moveProps };\n}\n"]}
|
1
|
+
{"version":3,"names":["_textSelection","require","_react","_utils","useMove","props","onMoveStart","onMove","onMoveEnd","state","useRef","didMove","lastPosition","id","addGlobalListener","removeGlobalListener","useGlobalListeners","moveProps","useMemo","start","disableTextSelection","current","move","pointerType","deltaX","deltaY","type","end","restoreTextSelection","PointerEvent","onMouseMove","e","button","pageX","pageY","onMouseUp","window","onMouseDown","stopPropagation","preventDefault","onTouchMove","touch","changedTouches","findIndex","identifier","onTouchEnd","onTouchStart","length","triggerKeyboardMove","onKeyDown","key"],"sourceRoot":"../../src","sources":["useMove.web.ts"],"mappings":"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"}
|
@@ -4,30 +4,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.usePanResponder = void 0;
|
7
|
-
|
8
7
|
var _reactNative = require("react-native");
|
9
|
-
|
10
8
|
const usePanResponder = props => {
|
11
9
|
const _handleStartShouldSetPanResponder = () => {
|
12
10
|
return true;
|
13
11
|
};
|
14
|
-
|
15
12
|
const _handleMoveShouldSetPanResponder = () => {
|
16
13
|
return true;
|
17
14
|
};
|
18
|
-
|
19
15
|
const _handlePanResponderMove = (e, gestureState) => {
|
20
16
|
props.onMove(e, gestureState);
|
21
17
|
};
|
22
|
-
|
23
18
|
const _handlePanResponderEnd = () => {
|
24
19
|
props.onMoveEnd();
|
25
20
|
};
|
26
|
-
|
27
21
|
const _handlePanResponderGrant = () => {
|
28
22
|
props.onMoveStart();
|
29
23
|
};
|
30
|
-
|
31
24
|
const panResponder = _reactNative.PanResponder.create({
|
32
25
|
onStartShouldSetPanResponder: _handleStartShouldSetPanResponder,
|
33
26
|
onMoveShouldSetPanResponder: _handleMoveShouldSetPanResponder,
|
@@ -36,9 +29,7 @@ const usePanResponder = props => {
|
|
36
29
|
onPanResponderRelease: _handlePanResponderEnd,
|
37
30
|
onPanResponderTerminate: _handlePanResponderEnd
|
38
31
|
});
|
39
|
-
|
40
32
|
return panResponder;
|
41
33
|
};
|
42
|
-
|
43
34
|
exports.usePanResponder = usePanResponder;
|
44
35
|
//# sourceMappingURL=usePanResponder.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["_reactNative","require","usePanResponder","props","_handleStartShouldSetPanResponder","_handleMoveShouldSetPanResponder","_handlePanResponderMove","e","gestureState","onMove","_handlePanResponderEnd","onMoveEnd","_handlePanResponderGrant","onMoveStart","panResponder","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","onPanResponderRelease","onPanResponderTerminate","exports"],"sourceRoot":"../../src","sources":["usePanResponder.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,eAAe,GAAIC,KAAU,IAAK;EAC7C,MAAMC,iCAAiC,GAAGA,CAAA,KAAM;IAC9C,OAAO,IAAI;EACb,CAAC;EAED,MAAMC,gCAAgC,GAAGA,CAAA,KAAM;IAC7C,OAAO,IAAI;EACb,CAAC;EAED,MAAMC,uBAAuB,GAAGA,CAACC,CAAS,EAAEC,YAAoB,KAAK;IACnEL,KAAK,CAACM,MAAM,CAACF,CAAC,EAAEC,YAAY,CAAC;EAC/B,CAAC;EAED,MAAME,sBAAsB,GAAGA,CAAA,KAAM;IACnCP,KAAK,CAACQ,SAAS,CAAC,CAAC;EACnB,CAAC;EAED,MAAMC,wBAAwB,GAAGA,CAAA,KAAM;IACrCT,KAAK,CAACU,WAAW,CAAC,CAAC;EACrB,CAAC;EAED,MAAMC,YAAY,GAAGC,yBAAY,CAACC,MAAM,CAAC;IACvCC,4BAA4B,EAAEb,iCAAiC;IAC/Dc,2BAA2B,EAAEb,gCAAgC;IAC7Dc,mBAAmB,EAAEP,wBAAwB;IAC7CQ,kBAAkB,EAAEd,uBAAuB;IAC3Ce,qBAAqB,EAAEX,sBAAsB;IAC7CY,uBAAuB,EAAEZ;EAC3B,CAAC,CAAC;EAEF,OAAOI,YAAY;AACrB,CAAC;AAACS,OAAA,CAAArB,eAAA,GAAAA,eAAA"}
|
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.useSlider = useSlider;
|
7
|
-
|
8
7
|
var _utils = require("./utils");
|
9
|
-
|
10
8
|
var _react = require("react");
|
11
|
-
|
12
9
|
var _label = require("@react-aria/label");
|
13
|
-
|
14
10
|
var _utils2 = require("@react-native-aria/utils");
|
15
|
-
|
16
11
|
/**
|
17
12
|
* Provides the behavior and accessibility implementation for a slider component representing one or more values.
|
18
13
|
*
|
@@ -24,30 +19,23 @@ var _utils2 = require("@react-native-aria/utils");
|
|
24
19
|
* the track.
|
25
20
|
*/
|
26
21
|
function useSlider(props, state, trackLayout, isReversed) {
|
27
|
-
var _labelProps$id;
|
28
|
-
|
29
22
|
let {
|
30
23
|
labelProps,
|
31
24
|
fieldProps
|
32
25
|
} = (0, _label.useLabel)(props);
|
33
26
|
let isVertical = props.orientation === 'vertical';
|
34
|
-
|
35
|
-
_utils.sliderIds.set(state, (_labelProps$id = labelProps.id) !== null && _labelProps$id !== void 0 ? _labelProps$id : fieldProps.id);
|
36
|
-
|
27
|
+
_utils.sliderIds.set(state, labelProps.id ?? fieldProps.id);
|
37
28
|
let currentPointer = (0, _react.useRef)(undefined);
|
38
|
-
|
39
29
|
let onDownTrack = (e, id, clientX, clientY) => {
|
40
30
|
const direction = (0, _utils2.isRTL)() ? 'rtl' : undefined;
|
41
31
|
const reverseX = isReversed || direction === 'rtl';
|
42
|
-
|
43
32
|
if (!props.isDisabled && state.values.every((_, i) => !state.isThumbDragging(i))) {
|
44
|
-
let size = isVertical ? trackLayout.height : trackLayout.width;
|
45
|
-
|
33
|
+
let size = isVertical ? trackLayout.height : trackLayout.width;
|
34
|
+
// Find the closest thumb
|
46
35
|
const trackPosition = trackLayout[isVertical ? 'y' : 'x'];
|
47
36
|
const clickPosition = isVertical ? clientY : clientX;
|
48
37
|
const offset = clickPosition - trackPosition;
|
49
38
|
let percent = offset / size;
|
50
|
-
|
51
39
|
if (reverseX) {
|
52
40
|
if (!isVertical) {
|
53
41
|
percent = 1 - percent;
|
@@ -57,12 +45,10 @@ function useSlider(props, state, trackLayout, isReversed) {
|
|
57
45
|
percent = 1 - percent;
|
58
46
|
}
|
59
47
|
}
|
60
|
-
|
61
|
-
|
62
|
-
|
48
|
+
let value = state.getPercentValue(percent);
|
49
|
+
// to find the closet thumb we split the array based on the first thumb position to the "right/end" of the click.
|
63
50
|
let closestThumb;
|
64
51
|
let split = state.values.findIndex(v => value - v < 0);
|
65
|
-
|
66
52
|
if (split === 0) {
|
67
53
|
// If the index is zero then the closetThumb is the first one
|
68
54
|
closestThumb = split;
|
@@ -71,16 +57,15 @@ function useSlider(props, state, trackLayout, isReversed) {
|
|
71
57
|
closestThumb = state.values.length - 1;
|
72
58
|
} else {
|
73
59
|
let lastLeft = state.values[split - 1];
|
74
|
-
let firstRight = state.values[split];
|
75
|
-
|
60
|
+
let firstRight = state.values[split];
|
61
|
+
// Pick the last left/start thumb, unless they are stacked on top of each other, then pick the right/end one
|
76
62
|
if (Math.abs(lastLeft - value) < Math.abs(firstRight - value)) {
|
77
63
|
closestThumb = split - 1;
|
78
64
|
} else {
|
79
65
|
closestThumb = split;
|
80
66
|
}
|
81
|
-
}
|
82
|
-
|
83
|
-
|
67
|
+
}
|
68
|
+
// Confirm that the found closest thumb is editable, not disabled, and move it
|
84
69
|
if (closestThumb >= 0 && state.isThumbEditable(closestThumb)) {
|
85
70
|
// Don't unfocus anything
|
86
71
|
e.preventDefault();
|
@@ -92,7 +77,6 @@ function useSlider(props, state, trackLayout, isReversed) {
|
|
92
77
|
}
|
93
78
|
}
|
94
79
|
};
|
95
|
-
|
96
80
|
return {
|
97
81
|
labelProps,
|
98
82
|
groupProps: {},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["_utils","require","_react","_label","_utils2","useSlider","props","state","trackLayout","isReversed","labelProps","fieldProps","useLabel","isVertical","orientation","sliderIds","set","id","currentPointer","useRef","undefined","onDownTrack","e","clientX","clientY","direction","isRTL","reverseX","isDisabled","values","every","_","i","isThumbDragging","size","height","width","trackPosition","clickPosition","offset","percent","value","getPercentValue","closestThumb","split","findIndex","v","length","lastLeft","firstRight","Math","abs","isThumbEditable","preventDefault","setFocusedThumb","current","setThumbDragging","setThumbValue","groupProps","trackProps","onPress","locationX","locationY","nativeEvent","outputProps"],"sourceRoot":"../../src","sources":["useSlider.ts"],"mappings":"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"}
|