@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.
Files changed (64) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/commonjs/index.js +0 -2
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/textSelection.js +13 -8
  5. package/lib/commonjs/textSelection.js.map +1 -1
  6. package/lib/commonjs/useMove.js +24 -22
  7. package/lib/commonjs/useMove.js.map +1 -1
  8. package/lib/commonjs/useMove.web.js +5 -27
  9. package/lib/commonjs/useMove.web.js.map +1 -1
  10. package/lib/commonjs/usePanResponder.js +0 -9
  11. package/lib/commonjs/usePanResponder.js.map +1 -1
  12. package/lib/commonjs/useSlider.js +9 -25
  13. package/lib/commonjs/useSlider.js.map +1 -1
  14. package/lib/commonjs/useSlider.web.js +17 -52
  15. package/lib/commonjs/useSlider.web.js.map +1 -1
  16. package/lib/commonjs/useSliderThumb.js +12 -33
  17. package/lib/commonjs/useSliderThumb.js.map +1 -1
  18. package/lib/commonjs/useSliderThumb.web.js +10 -33
  19. package/lib/commonjs/useSliderThumb.web.js.map +1 -1
  20. package/lib/commonjs/utils.js +1 -5
  21. package/lib/commonjs/utils.js.map +1 -1
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/textSelection.js +7 -5
  24. package/lib/module/textSelection.js.map +1 -1
  25. package/lib/module/useMove.js +23 -16
  26. package/lib/module/useMove.js.map +1 -1
  27. package/lib/module/useMove.web.js +6 -24
  28. package/lib/module/useMove.web.js.map +1 -1
  29. package/lib/module/usePanResponder.js +0 -5
  30. package/lib/module/usePanResponder.js.map +1 -1
  31. package/lib/module/useSlider.js +9 -19
  32. package/lib/module/useSlider.js.map +1 -1
  33. package/lib/module/useSlider.web.js +17 -43
  34. package/lib/module/useSlider.web.js.map +1 -1
  35. package/lib/module/useSliderThumb.js +13 -26
  36. package/lib/module/useSliderThumb.js.map +1 -1
  37. package/lib/module/useSliderThumb.web.js +10 -24
  38. package/lib/module/useSliderThumb.web.js.map +1 -1
  39. package/lib/module/utils.js +0 -2
  40. package/lib/module/utils.js.map +1 -1
  41. package/lib/typescript/index.d.ts +1 -0
  42. package/lib/typescript/index.d.ts.map +1 -0
  43. package/lib/typescript/textSelection.d.ts +1 -0
  44. package/lib/typescript/textSelection.d.ts.map +1 -0
  45. package/lib/typescript/useMove.d.ts +1 -0
  46. package/lib/typescript/useMove.d.ts.map +1 -0
  47. package/lib/typescript/useMove.web.d.ts +1 -0
  48. package/lib/typescript/useMove.web.d.ts.map +1 -0
  49. package/lib/typescript/usePanResponder.d.ts +2 -1
  50. package/lib/typescript/usePanResponder.d.ts.map +1 -0
  51. package/lib/typescript/useSlider.d.ts +1 -0
  52. package/lib/typescript/useSlider.d.ts.map +1 -0
  53. package/lib/typescript/useSlider.web.d.ts +1 -0
  54. package/lib/typescript/useSlider.web.d.ts.map +1 -0
  55. package/lib/typescript/useSliderThumb.d.ts +1 -0
  56. package/lib/typescript/useSliderThumb.d.ts.map +1 -0
  57. package/lib/typescript/useSliderThumb.web.d.ts +1 -0
  58. package/lib/typescript/useSliderThumb.web.d.ts.map +1 -0
  59. package/lib/typescript/utils.d.ts +1 -0
  60. package/lib/typescript/utils.d.ts.map +1 -0
  61. package/package.json +8 -4
  62. package/src/useMove.ts +20 -12
  63. package/src/useMove.web.ts +3 -0
  64. package/src/useSliderThumb.ts +10 -7
package/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # @react-native-aria/slider
2
+
3
+ ## 0.2.11
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @react-native-aria/utils@0.2.11
@@ -15,8 +15,6 @@ Object.defineProperty(exports, "useSliderThumb", {
15
15
  return _useSliderThumb.useSliderThumb;
16
16
  }
17
17
  });
18
-
19
18
  var _useSlider = require("./useSlider");
20
-
21
19
  var _useSliderThumb = require("./useSliderThumb");
22
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export { useSlider } from './useSlider';\nexport { useSliderThumb } from './useSliderThumb';\n"]}
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
- state = 'restoring'; // There appears to be a delay on iOS where selection still might occur
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,"sources":["textSelection.ts"],"names":["state","savedUserSelect","disableTextSelection","document","documentElement","style","webkitUserSelect","restoreTextSelection","setTimeout"],"mappings":";;;;;;;;AAYA;;AAZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAeA,IAAIA,KAAY,GAAG,SAAnB;AACA,IAAIC,eAAe,GAAG,EAAtB;;AAEO,SAASC,oBAAT,GAAgC;AACrC,MAAIF,KAAK,KAAK,SAAd,EAAyB;AACvBC,IAAAA,eAAe,GAAGE,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,gBAAjD;AACAH,IAAAA,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,gBAA/B,GAAkD,MAAlD;AACD;;AAEDN,EAAAA,KAAK,GAAG,UAAR;AACD;;AAEM,SAASO,oBAAT,GAAgC;AACrC;AACA;AACA,MAAIP,KAAK,KAAK,UAAd,EAA0B;AACxB;AACD;;AAEDA,EAAAA,KAAK,GAAG,WAAR,CAPqC,CASrC;AACA;;AACAQ,EAAAA,UAAU,CAAC,MAAM;AACf;AACA;AACA,mCAAmB,MAAM;AACvB;AACA,UAAIR,KAAK,KAAK,WAAd,EAA2B;AACzB,YAAIG,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,gBAA/B,KAAoD,MAAxD,EAAgE;AAC9DH,UAAAA,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,gBAA/B,GACEL,eAAe,IAAI,EADrB;AAED;;AAEDA,QAAAA,eAAe,GAAG,EAAlB;AACAD,QAAAA,KAAK,GAAG,SAAR;AACD;AACF,KAXD;AAYD,GAfS,EAeP,GAfO,CAAV;AAgBD","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 { runAfterTransition } from '@react-aria/utils';\n\n// Safari on iOS starts selecting text on long press. The only way to avoid this, it seems,\n// is to add user-select: none to the entire page. Adding it to the pressable element prevents\n// that element from being selected, but nearby elements may still receive selection. We add\n// user-select: none on touch start, and remove it again on touch end to prevent this.\n// This must be implemented using global state to avoid race conditions between multiple elements.\n\n// There are three possible states due to the delay before removing user-select: none after\n// pointer up. The 'default' state always transitions to the 'disabled' state, which transitions\n// to 'restoring'. The 'restoring' state can either transition back to 'disabled' or 'default'.\ntype State = 'default' | 'disabled' | 'restoring';\n\nlet state: State = 'default';\nlet savedUserSelect = '';\n\nexport function disableTextSelection() {\n if (state === 'default') {\n savedUserSelect = document.documentElement.style.webkitUserSelect;\n document.documentElement.style.webkitUserSelect = 'none';\n }\n\n state = 'disabled';\n}\n\nexport function restoreTextSelection() {\n // If the state is already default, there's nothing to do.\n // If it is restoring, then there's no need to queue a second restore.\n if (state !== 'disabled') {\n return;\n }\n\n state = 'restoring';\n\n // There appears to be a delay on iOS where selection still might occur\n // after pointer up, so wait a bit before removing user-select.\n setTimeout(() => {\n // Wait for any CSS transitions to complete so we don't recompute style\n // for the whole page in the middle of the animation and cause jank.\n runAfterTransition(() => {\n // Avoid race conditions\n if (state === 'restoring') {\n if (document.documentElement.style.webkitUserSelect === 'none') {\n document.documentElement.style.webkitUserSelect =\n savedUserSelect || '';\n }\n\n savedUserSelect = '';\n state = 'default';\n }\n });\n }, 300);\n}\n"]}
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"}
@@ -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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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 panResponter = _react.default.useMemo(() => _reactNative.PanResponder.create({
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 ? void 0 : onMoveStart({
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
- if (gestureState.dx === 0 && gestureState.dy === 0) {
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
- onMove({
54
- type: 'move',
55
- pointerType: 'touch',
56
- deltaX: gestureState.dx,
57
- deltaY: gestureState.dy
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 ? void 0 : onMoveEnd({
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: panResponter.panHandlers
71
+ moveProps: panResponder.panHandlers
70
72
  };
71
73
  }
72
74
  //# sourceMappingURL=useMove.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useMove.ts"],"names":["useMove","props","onMoveStart","onMove","onMoveEnd","panResponter","React","useMemo","PanResponder","create","onMoveShouldSetPanResponderCapture","_event","onPanResponderGrant","_evt","type","pointerType","onPanResponderMove","gestureState","dx","dy","deltaX","deltaY","onPanResponderRelease","moveProps","panHandlers"],"mappings":";;;;;;;AAYA;;AACA;;;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACO,SAASA,OAAT,CAAiBC,KAAjB,EAAyC;AAC9C,MAAI;AAAEC,IAAAA,WAAF;AAAeC,IAAAA,MAAf;AAAuBC,IAAAA;AAAvB,MAAqCH,KAAzC;;AAEA,QAAMI,YAAY,GAAGC,eAAMC,OAAN,CACnB,MACEC,0BAAaC,MAAb,CAAoB;AAClBC,IAAAA,kCAAkC,EAAGC,MAAD,IAAY;AAC9C,aAAO,IAAP;AACD,KAHiB;AAIlBC,IAAAA,mBAAmB,EAAGC,IAAD,IAAU;AAC7BX,MAAAA,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAG;AACZY,QAAAA,IAAI,EAAE,WADM;AAEZC,QAAAA,WAAW,EAAE;AAFD,OAAH,CAAX;AAID,KATiB;AAUlBC,IAAAA,kBAAkB,EAAE,CAACL,MAAD,EAASM,YAAT,KAA0B;AAC5C,UAAIA,YAAY,CAACC,EAAb,KAAoB,CAApB,IAAyBD,YAAY,CAACE,EAAb,KAAoB,CAAjD,EAAoD;AAClD;AACD;;AAEDhB,MAAAA,MAAM,CAAC;AACLW,QAAAA,IAAI,EAAE,MADD;AAELC,QAAAA,WAAW,EAAE,OAFR;AAGLK,QAAAA,MAAM,EAAEH,YAAY,CAACC,EAHhB;AAILG,QAAAA,MAAM,EAAEJ,YAAY,CAACE;AAJhB,OAAD,CAAN;AAMD,KArBiB;AAsBlBG,IAAAA,qBAAqB,EAAE,MAAM;AAC3BlB,MAAAA,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAG;AACVU,QAAAA,IAAI,EAAE,SADI;AAEVC,QAAAA,WAAW,EAAE;AAFH,OAAH,CAAT;AAID;AA3BiB,GAApB,CAFiB,EA+BnB,CAACZ,MAAD,EAASC,SAAT,EAAoBF,WAApB,CA/BmB,CAArB;;AAkCA,SAAO;AAAEqB,IAAAA,SAAS,EAAElB,YAAY,CAACmB;AAA1B,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 React from 'react';\nimport { PanResponder } from 'react-native';\n\ninterface MoveResult {\n /** Props to spread on the target element. */\n moveProps: any;\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: any): MoveResult {\n let { onMoveStart, onMove, onMoveEnd } = props;\n\n const panResponter = React.useMemo(\n () =>\n PanResponder.create({\n onMoveShouldSetPanResponderCapture: (_event) => {\n return true;\n },\n onPanResponderGrant: (_evt) => {\n onMoveStart?.({\n type: 'movestart',\n pointerType: 'touch',\n });\n },\n onPanResponderMove: (_event, gestureState) => {\n if (gestureState.dx === 0 && gestureState.dy === 0) {\n return;\n }\n\n onMove({\n type: 'move',\n pointerType: 'touch',\n deltaX: gestureState.dx,\n deltaY: gestureState.dy,\n });\n },\n onPanResponderRelease: () => {\n onMoveEnd?.({\n type: 'moveend',\n pointerType: 'touch',\n });\n },\n }),\n [onMove, onMoveEnd, onMoveStart]\n );\n\n return { moveProps: panResponter.panHandlers };\n}\n"]}
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
- onMoveStart === null || onMoveStart === void 0 ? void 0 : onMoveStart({
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
- onMoveEnd === null || onMoveEnd === void 0 ? void 0 : onMoveEnd({
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":"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","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,"sources":["usePanResponder.ts"],"names":["usePanResponder","props","_handleStartShouldSetPanResponder","_handleMoveShouldSetPanResponder","_handlePanResponderMove","e","gestureState","onMove","_handlePanResponderEnd","onMoveEnd","_handlePanResponderGrant","onMoveStart","panResponder","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","onPanResponderRelease","onPanResponderTerminate"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,eAAe,GAAIC,KAAD,IAAgB;AAC7C,QAAMC,iCAAiC,GAAG,MAAM;AAC9C,WAAO,IAAP;AACD,GAFD;;AAIA,QAAMC,gCAAgC,GAAG,MAAM;AAC7C,WAAO,IAAP;AACD,GAFD;;AAIA,QAAMC,uBAAuB,GAAG,CAACC,CAAD,EAAYC,YAAZ,KAAqC;AACnEL,IAAAA,KAAK,CAACM,MAAN,CAAaF,CAAb,EAAgBC,YAAhB;AACD,GAFD;;AAIA,QAAME,sBAAsB,GAAG,MAAM;AACnCP,IAAAA,KAAK,CAACQ,SAAN;AACD,GAFD;;AAIA,QAAMC,wBAAwB,GAAG,MAAM;AACrCT,IAAAA,KAAK,CAACU,WAAN;AACD,GAFD;;AAIA,QAAMC,YAAY,GAAGC,0BAAaC,MAAb,CAAoB;AACvCC,IAAAA,4BAA4B,EAAEb,iCADS;AAEvCc,IAAAA,2BAA2B,EAAEb,gCAFU;AAGvCc,IAAAA,mBAAmB,EAAEP,wBAHkB;AAIvCQ,IAAAA,kBAAkB,EAAEd,uBAJmB;AAKvCe,IAAAA,qBAAqB,EAAEX,sBALgB;AAMvCY,IAAAA,uBAAuB,EAAEZ;AANc,GAApB,CAArB;;AASA,SAAOI,YAAP;AACD,CA/BM","sourcesContent":["import { PanResponder } from 'react-native';\n\nexport const usePanResponder = (props: any) => {\n const _handleStartShouldSetPanResponder = () => {\n return true;\n };\n\n const _handleMoveShouldSetPanResponder = () => {\n return true;\n };\n\n const _handlePanResponderMove = (e: Object, gestureState: Object) => {\n props.onMove(e, gestureState);\n };\n\n const _handlePanResponderEnd = () => {\n props.onMoveEnd();\n };\n\n const _handlePanResponderGrant = () => {\n props.onMoveStart();\n };\n\n const panResponder = PanResponder.create({\n onStartShouldSetPanResponder: _handleStartShouldSetPanResponder,\n onMoveShouldSetPanResponder: _handleMoveShouldSetPanResponder,\n onPanResponderGrant: _handlePanResponderGrant,\n onPanResponderMove: _handlePanResponderMove,\n onPanResponderRelease: _handlePanResponderEnd,\n onPanResponderTerminate: _handlePanResponderEnd,\n });\n\n return panResponder;\n};\n"]}
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; // Find the closest thumb
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
- let value = state.getPercentValue(percent); // to find the closet thumb we split the array based on the first thumb position to the "right/end" of the click.
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]; // Pick the last left/start thumb, unless they are stacked on top of each other, then pick the right/end one
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
- } // Confirm that the found closest thumb is editable, not disabled, and move it
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,"sources":["useSlider.ts"],"names":["useSlider","props","state","trackLayout","isReversed","labelProps","fieldProps","isVertical","orientation","sliderIds","set","id","currentPointer","undefined","onDownTrack","e","clientX","clientY","direction","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"],"mappings":"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","sourcesContent":["import { sliderIds } from './utils';\nimport { AriaSliderProps } from '@react-types/slider';\nimport React, { useRef } from 'react';\nimport { SliderState } from '@react-stately/slider';\nimport { useLabel } from '@react-aria/label';\nimport { isRTL } from '@react-native-aria/utils';\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\n/**\n * Provides the behavior and accessibility implementation for a slider component representing one or more values.\n *\n * @param props Props for the slider.\n * @param state State for the slider, as returned by `useSliderState`.\n * @param trackRef Ref for the \"track\" element. The width of this element provides the \"length\"\n * of the track -- the span of one dimensional space that the slider thumb can be. It also\n * accepts click and drag motions, so that the closest thumb will follow clicks and drags on\n * the track.\n */\nexport function useSlider(\n props: AriaSliderProps,\n state: SliderState,\n trackLayout: any,\n isReversed?: boolean\n): SliderAria {\n let { labelProps, fieldProps } = useLabel(props);\n\n let isVertical = props.orientation === 'vertical';\n\n sliderIds.set(state, labelProps.id ?? fieldProps.id);\n let currentPointer = useRef<number | null | undefined>(undefined);\n\n let onDownTrack = (\n e: React.UIEvent,\n id: number,\n clientX: number,\n clientY: number\n ) => {\n const direction = isRTL() ? 'rtl' : undefined;\n const reverseX = isReversed || direction === 'rtl';\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 ? 'y' : 'x'];\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 // 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 // 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 state.setFocusedThumb(closestThumb);\n currentPointer.current = id;\n state.setThumbDragging(closestThumb, true);\n state.setThumbValue(closestThumb, value);\n state.setThumbDragging(closestThumb, false);\n }\n }\n };\n\n return {\n labelProps,\n groupProps: {},\n trackProps: {\n onPress: (e: any) => {\n const { locationX, locationY } = e.nativeEvent;\n onDownTrack(e, undefined, locationX, locationY);\n },\n },\n outputProps: {},\n };\n}\n"]}
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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"}