react-native-skia-gesture 0.2.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +77 -20
  2. package/lib/commonjs/canvas/canvas.js +68 -56
  3. package/lib/commonjs/canvas/canvas.js.map +1 -1
  4. package/lib/commonjs/canvas/context.js +1 -1
  5. package/lib/commonjs/canvas/context.js.map +1 -1
  6. package/lib/commonjs/components/index.js +4 -4
  7. package/lib/commonjs/components/index.js.map +1 -1
  8. package/lib/commonjs/hoc/with-touchable-handler.js +29 -34
  9. package/lib/commonjs/hoc/with-touchable-handler.js.map +1 -1
  10. package/lib/commonjs/hooks/use-gesture-handler.js +11 -5
  11. package/lib/commonjs/hooks/use-gesture-handler.js.map +1 -1
  12. package/lib/commonjs/index.js +1 -1
  13. package/lib/commonjs/index.js.map +1 -1
  14. package/lib/commonjs/utils/get-circle-path.js +2 -0
  15. package/lib/commonjs/utils/get-circle-path.js.map +1 -1
  16. package/lib/commonjs/utils/get-rect-path.js +8 -5
  17. package/lib/commonjs/utils/get-rect-path.js.map +1 -1
  18. package/lib/commonjs/utils/unwrap-animated-value.js +7 -0
  19. package/lib/commonjs/utils/unwrap-animated-value.js.map +1 -1
  20. package/lib/module/canvas/canvas.js +70 -58
  21. package/lib/module/canvas/canvas.js.map +1 -1
  22. package/lib/module/canvas/context.js +1 -1
  23. package/lib/module/canvas/context.js.map +1 -1
  24. package/lib/module/components/index.js +4 -4
  25. package/lib/module/components/index.js.map +1 -1
  26. package/lib/module/hoc/with-touchable-handler.js +28 -34
  27. package/lib/module/hoc/with-touchable-handler.js.map +1 -1
  28. package/lib/module/hooks/use-gesture-handler.js +11 -5
  29. package/lib/module/hooks/use-gesture-handler.js.map +1 -1
  30. package/lib/module/index.js +1 -1
  31. package/lib/module/index.js.map +1 -1
  32. package/lib/module/utils/get-circle-path.js +2 -0
  33. package/lib/module/utils/get-circle-path.js.map +1 -1
  34. package/lib/module/utils/get-rect-path.js +9 -6
  35. package/lib/module/utils/get-rect-path.js.map +1 -1
  36. package/lib/module/utils/unwrap-animated-value.js +7 -0
  37. package/lib/module/utils/unwrap-animated-value.js.map +1 -1
  38. package/lib/typescript/canvas/canvas.d.ts +7 -2
  39. package/lib/typescript/canvas/canvas.d.ts.map +1 -1
  40. package/lib/typescript/canvas/context.d.ts +6 -5
  41. package/lib/typescript/canvas/context.d.ts.map +1 -1
  42. package/lib/typescript/components/index.d.ts +2 -2
  43. package/lib/typescript/components/index.d.ts.map +1 -1
  44. package/lib/typescript/hoc/with-touchable-handler.d.ts +7 -9
  45. package/lib/typescript/hoc/with-touchable-handler.d.ts.map +1 -1
  46. package/lib/typescript/hooks/use-gesture-handler.d.ts +7 -8
  47. package/lib/typescript/hooks/use-gesture-handler.d.ts.map +1 -1
  48. package/lib/typescript/index.d.ts +1 -1
  49. package/lib/typescript/index.d.ts.map +1 -1
  50. package/lib/typescript/utils/get-circle-path.d.ts.map +1 -1
  51. package/lib/typescript/utils/get-rect-path.d.ts.map +1 -1
  52. package/lib/typescript/utils/unwrap-animated-value.d.ts +2 -1
  53. package/lib/typescript/utils/unwrap-animated-value.d.ts.map +1 -1
  54. package/package.json +6 -4
  55. package/src/canvas/canvas.tsx +109 -81
  56. package/src/canvas/context.tsx +19 -10
  57. package/src/components/index.ts +5 -4
  58. package/src/hoc/with-touchable-handler.tsx +40 -35
  59. package/src/hooks/use-gesture-handler.ts +25 -16
  60. package/src/index.ts +1 -1
  61. package/src/utils/get-circle-path.ts +1 -0
  62. package/src/utils/get-rect-path.ts +11 -6
  63. package/src/utils/unwrap-animated-value.ts +9 -1
package/README.md CHANGED
@@ -4,10 +4,6 @@ React Native Skia Gesture 🤌🏽
4
4
 
5
5
  _A detection system for React Native Skia components._
6
6
 
7
- <div align="center">
8
- <img src="https://github.com/enzomanuelmangano/react-native-skia-gesture/blob/main/.assets/example.gif" title="react-native-skia-gesture">
9
- </div>
10
-
11
7
  ### Motivation
12
8
 
13
9
  React Native Skia, provides many declarative APIs for building screens using React Components. However, [Skia components are not real components, but abstract representations of a part of a drawing](https://github.com/Shopify/react-native-skia/issues/513#issuecomment-1290126304).
@@ -15,45 +11,57 @@ Therefore direct interactions with individual Skia components can only be achiev
15
11
 
16
12
  This package, simply provides a set of APIs to be able to interact directly with individual components.
17
13
 
14
+
15
+ <a href="https://github.com/enzomanuelmangano/react-native-skia-gesture">
16
+ <img src="https://raw.githubusercontent.com/enzomanuelmangano/react-native-skia-gesture/main/.assets/demo.gif" title="react-native-skia-gesture">
17
+ </a>
18
+
19
+
18
20
  ## Installation
19
21
 
20
- **You need to have already installed [@shopify/react-native-skia (>= 0.1.157)](https://shopify.github.io/react-native-skia/docs/getting-started/installation)**
22
+ **You need to have already installed [@shopify/react-native-skia (>= 0.1.221)](https://shopify.github.io/react-native-skia/docs/getting-started/installation)**
21
23
 
22
- Open a Terminal in your project's folder and install the library using `yarn`:
24
+ ### Since v0.3.0
25
+
26
+ You need to install Reanimated (v3.0.0+) and Gesture Handler (v2.0.0+)
23
27
 
24
28
  ```sh
25
- yarn add react-native-skia-gesture
29
+ yarn add react-native-reanimated react-native-gesture-handler
26
30
  ```
27
31
 
28
- or with `npm`:
32
+ ### Install Skia Gesture
33
+
34
+ Open a Terminal in your project's folder and then install the library using `yarn`:
29
35
 
30
36
  ```sh
31
- npm install react-native-skia-gesture
37
+ yarn add react-native-skia-gesture
32
38
  ```
33
39
 
34
40
  ## Usage
35
41
 
36
42
  ```jsx
37
43
  import {
38
- useValue,
39
- } from '@shopify/react-native-skia';
44
+ useSharedValue,
45
+ } from 'react-native-reanimated';
40
46
 
41
47
  import Touchable, {
42
48
  useGestureHandler,
43
49
  } from 'react-native-skia-gesture';
44
50
 
45
51
  export default function App() {
46
- const cx = useValue(100);
47
- const cy = useValue(100);
52
+ const cx = useSharedValue(100);
53
+ const cy = useSharedValue(100);
48
54
 
49
55
  const circleGesture = useGestureHandler<{ x: number; y: number }>({
50
56
  onStart: (_, context) => {
51
- context.x = cx.current;
52
- context.y = cy.current;
57
+ 'worklet'; // Remember the 'worklet' keyword
58
+ context.x = cx.value;
59
+ context.y = cy.value;
53
60
  },
54
61
  onActive: ({ translationX, translationY }, context) => {
55
- cx.current = context.x + translationX;
56
- cy.current = context.y + translationY;
62
+ 'worklet';
63
+ cx.value = context.x + translationX;
64
+ cy.value = context.y + translationY;
57
65
  },
58
66
  });
59
67
 
@@ -69,9 +77,9 @@ If the element is a **Circle**, **Rect**, **RoundedRect**, or a **Path** the pac
69
77
 
70
78
  ```jsx
71
79
  ...
72
- const touchablePath = useComputedValue(() => {
80
+ const touchablePath = useDerivedValue(() => {
73
81
  const path = new Path();
74
- path.addCircle(cx.current, cy.current, 50);
82
+ path.addCircle(cx.value, cy.value, 50);
75
83
  return path;
76
84
  }, [cx, cy]);
77
85
 
@@ -83,6 +91,40 @@ return (
83
91
  ...
84
92
  ```
85
93
 
94
+ ### Run the Gestures on JS thread
95
+
96
+ You might want to run the gestures on the JS thread (but it's not recommended).
97
+ However it could be useful if you want to slowly migrate from the v0.2.0 to the v0.3.0.
98
+
99
+ To handle that you need to define the panGesture and pass it to the Touchable.Canvas
100
+
101
+ ```jsx
102
+ import { Gesture } from 'react-native-gesture-handler';
103
+
104
+ ...
105
+
106
+ const panGesture = Gesture.Pan().runOnJS(true)
107
+
108
+ const circleGesture = useGestureHandler<{ x: number; y: number }>({
109
+ // You can avoid the 'worklet' keyword if you are running the gesture on JS thread
110
+ onStart: (_, context) => {
111
+ context.x = cx.value;
112
+ context.y = cy.value;
113
+ },
114
+ onActive: ({ translationX, translationY }, context) => {
115
+ cx.value = context.x + translationX;
116
+ cy.value = context.y + translationY;
117
+ },
118
+ });
119
+
120
+ return (
121
+ <Touchable.Canvas style={styles.fill} panGesture={panGesture}>
122
+ <Touchable.Circle cx={cx} cy={cy} r={50} color="red" {...circleGesture} />
123
+ </Touchable.Canvas>
124
+ );
125
+
126
+ ```
127
+
86
128
  ## Ingredients
87
129
 
88
130
  ### `Canvas`
@@ -93,13 +135,28 @@ It's simply a Wrapper of Skia's Canvas.
93
135
 
94
136
  ### `withTouchableHandler`
95
137
 
96
- It's a HOC with which to wrap all Skia components with which you want to interact directly.
138
+ It's a HOC with which to wrap all Skia components with which you want to interact directly. You will need to pass a `touchablePath` to the component.
97
139
 
98
140
  ```jsx
99
141
  import { Image } from '@shopify/react-native-skia';
100
142
  import { withTouchableHandler } from 'react-native-skia-gesture';
101
143
 
102
144
  const TouchableImage = withTouchableHandler(Image);
145
+ const touchablePath = Skia.Path.Make().addCircle(x, y, 50);
146
+
147
+ return (
148
+ <Touchable.Canvas style={styles.fill}>
149
+ <TouchableImage
150
+ image={image}
151
+ x={x}
152
+ y={y}
153
+ width={50}
154
+ height={50}
155
+ touchablePath={touchablePath}
156
+ {...circleGesture}
157
+ />
158
+ </Touchable.Canvas>
159
+ );
103
160
  ```
104
161
 
105
162
  ---
@@ -6,75 +6,87 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Canvas = void 0;
7
7
  var _reactNativeSkia = require("@shopify/react-native-skia");
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
10
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
9
11
  var _context = require("./context");
10
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
13
- const Canvas = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
14
+ const AnimatedSkiaCanvas = _reactNativeReanimated.default.createAnimatedComponent(_reactNativeSkia.Canvas);
15
+ const Canvas = _ref => {
14
16
  let {
15
17
  children,
16
- onTouch,
18
+ panGesture = _reactNativeGestureHandler.Gesture.Pan(),
19
+ timeoutBeforeCollectingRefs = 100,
17
20
  ...props
18
21
  } = _ref;
19
- const touchableRefs = (0, _reactNativeSkia.useValue)({});
20
- const activeKey = (0, _reactNativeSkia.useValue)([]);
21
- const touchHandler = (0, _reactNativeSkia.useMultiTouchHandler)({
22
- onStart: event => {
23
- const keys = Object.keys(touchableRefs.current);
24
- for (let i = 0; i < keys.length; i++) {
25
- const key = keys[i];
26
- const touchableItem = touchableRefs.current[key];
27
- if (touchableItem !== null && touchableItem !== void 0 && touchableItem.isPointInPath(event)) {
28
- var _touchableItem$onStar;
29
- activeKey.current.push(`${key}__${event.id}`);
30
- (_touchableItem$onStar = touchableItem.onStart) === null || _touchableItem$onStar === void 0 ? void 0 : _touchableItem$onStar.call(touchableItem, event);
31
- return;
32
- }
33
- }
34
- },
35
- onActive: event => {
36
- var _activatedKey$split, _touchableItem$onActi;
37
- const activatedKey = activeKey.current.find(key => key.includes(event.id.toString()));
38
- if (!activatedKey) {
39
- return;
40
- }
41
- const indexedKey = (_activatedKey$split = activatedKey.split('__')) === null || _activatedKey$split === void 0 ? void 0 : _activatedKey$split[0];
42
- if (!indexedKey) {
43
- return;
44
- }
45
- const touchableItem = touchableRefs.current[indexedKey];
46
- return touchableItem === null || touchableItem === void 0 ? void 0 : (_touchableItem$onActi = touchableItem.onActive) === null || _touchableItem$onActi === void 0 ? void 0 : _touchableItem$onActi.call(touchableItem, event);
47
- },
48
- onEnd: event => {
49
- var _activatedKey$split2, _touchableItem$onEnd;
50
- const activatedKey = activeKey.current.find(key => key.includes(event.id.toString()));
51
- if (!activatedKey) {
52
- return;
53
- }
54
- const indexedKey = (_activatedKey$split2 = activatedKey.split('__')) === null || _activatedKey$split2 === void 0 ? void 0 : _activatedKey$split2[0];
55
- if (!indexedKey) {
56
- return;
22
+ // Instead of value, provide a subscribe method and reload the refs
23
+ const touchableRefs = (0, _react.useMemo)(() => {
24
+ return {
25
+ value: {}
26
+ };
27
+ }, []);
28
+ const activeKey = (0, _reactNativeReanimated.useSharedValue)([]);
29
+
30
+ // This must be improved, it's a hack to wait for the refs to be loaded
31
+ const [loadedRefs, prepareLoadedRefs] = (0, _react.useState)({});
32
+ const ref = (0, _react.useRef)();
33
+ (0, _react.useEffect)(() => {
34
+ ref.current = setTimeout(() => {
35
+ prepareLoadedRefs(touchableRefs.value);
36
+ }, timeoutBeforeCollectingRefs);
37
+ return () => {
38
+ clearTimeout(ref.current);
39
+ };
40
+ // eslint-disable-next-line react-hooks/exhaustive-deps
41
+ }, [timeoutBeforeCollectingRefs]);
42
+ const mainGesture = panGesture.onBegin(event => {
43
+ const keys = Object.keys(loadedRefs);
44
+ for (let i = 0; i < keys.length; i++) {
45
+ const key = keys[i];
46
+ const touchableItem = loadedRefs[key];
47
+ const isPointInPath = touchableItem === null || touchableItem === void 0 ? void 0 : touchableItem.isPointInPath(event);
48
+ if (isPointInPath && touchableItem !== null && touchableItem !== void 0 && touchableItem.onStart) {
49
+ var _touchableItem$onStar;
50
+ activeKey.value.push(`${key}__${event.handlerTag}`);
51
+ (_touchableItem$onStar = touchableItem.onStart) === null || _touchableItem$onStar === void 0 ? void 0 : _touchableItem$onStar.call(touchableItem, event);
57
52
  }
58
- const touchableItem = touchableRefs.current[indexedKey];
59
- activeKey.current = activeKey.current.filter(key => !key.includes(event.id.toString()));
60
- return touchableItem === null || touchableItem === void 0 ? void 0 : (_touchableItem$onEnd = touchableItem.onEnd) === null || _touchableItem$onEnd === void 0 ? void 0 : _touchableItem$onEnd.call(touchableItem, event);
61
53
  }
62
- }, [touchableRefs, activeKey]);
54
+ }).onUpdate(event => {
55
+ var _activatedKey$split, _touchableItem$onActi;
56
+ const activatedKey = activeKey.value.find(key => key.includes(event.handlerTag.toString()));
57
+ if (!activatedKey) {
58
+ return;
59
+ }
60
+ const indexedKey = (_activatedKey$split = activatedKey.split('__')) === null || _activatedKey$split === void 0 ? void 0 : _activatedKey$split[0];
61
+ if (!indexedKey) {
62
+ return;
63
+ }
64
+ const touchableItem = loadedRefs[indexedKey];
65
+ return touchableItem === null || touchableItem === void 0 ? void 0 : (_touchableItem$onActi = touchableItem.onActive) === null || _touchableItem$onActi === void 0 ? void 0 : _touchableItem$onActi.call(touchableItem, event);
66
+ }).onFinalize(event => {
67
+ var _activatedKey$split2, _touchableItem$onEnd;
68
+ const activatedKey = activeKey.value.find(key => key.includes(event.handlerTag.toString()));
69
+ if (!activatedKey) {
70
+ return;
71
+ }
72
+ const indexedKey = (_activatedKey$split2 = activatedKey.split('__')) === null || _activatedKey$split2 === void 0 ? void 0 : _activatedKey$split2[0];
73
+ if (!indexedKey) {
74
+ return;
75
+ }
76
+ const touchableItem = loadedRefs[indexedKey];
77
+ activeKey.value = activeKey.value.filter(key => !key.includes(event.handlerTag.toString()));
78
+ return touchableItem === null || touchableItem === void 0 ? void 0 : (_touchableItem$onEnd = touchableItem.onEnd) === null || _touchableItem$onEnd === void 0 ? void 0 : _touchableItem$onEnd.call(touchableItem, event);
79
+ });
63
80
  (0, _react.useEffect)(() => {
64
81
  return () => {
65
- touchableRefs.current = {};
82
+ touchableRefs.value = {};
66
83
  };
67
84
  }, [touchableRefs]);
68
- return /*#__PURE__*/_react.default.createElement(_reactNativeSkia.Canvas, _extends({
69
- ref: ref
70
- }, props, {
71
- onTouch: touchInfo => {
72
- touchHandler(touchInfo);
73
- return onTouch === null || onTouch === void 0 ? void 0 : onTouch(touchInfo);
74
- }
75
- }), /*#__PURE__*/_react.default.createElement(_context.TouchHandlerContext.Provider, {
85
+ return /*#__PURE__*/_react.default.createElement(_reactNativeGestureHandler.GestureDetector, {
86
+ gesture: mainGesture
87
+ }, /*#__PURE__*/_react.default.createElement(AnimatedSkiaCanvas, props, /*#__PURE__*/_react.default.createElement(_context.TouchHandlerContext.Provider, {
76
88
  value: touchableRefs
77
- }, children));
78
- });
89
+ }, children)));
90
+ };
79
91
  exports.Canvas = Canvas;
80
92
  //# sourceMappingURL=canvas.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Canvas","React","forwardRef","ref","children","onTouch","props","touchableRefs","useValue","activeKey","touchHandler","useMultiTouchHandler","onStart","event","keys","Object","current","i","length","key","touchableItem","isPointInPath","push","id","onActive","activatedKey","find","includes","toString","indexedKey","split","onEnd","filter","useEffect","touchInfo"],"sourceRoot":"../../src","sources":["canvas.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["AnimatedSkiaCanvas","Animated","createAnimatedComponent","SkiaCanvas","Canvas","children","panGesture","Gesture","Pan","timeoutBeforeCollectingRefs","props","touchableRefs","useMemo","value","activeKey","useSharedValue","loadedRefs","prepareLoadedRefs","useState","ref","useRef","useEffect","current","setTimeout","clearTimeout","mainGesture","onBegin","event","keys","Object","i","length","key","touchableItem","isPointInPath","onStart","push","handlerTag","onUpdate","activatedKey","find","includes","toString","indexedKey","split","onActive","onFinalize","filter","onEnd"],"sourceRoot":"../../src","sources":["canvas.tsx"],"mappings":"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"}
@@ -8,7 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
9
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
10
  const TouchHandlerContext = /*#__PURE__*/_react.default.createContext({
11
- current: {}
11
+ value: {}
12
12
  });
13
13
  exports.TouchHandlerContext = TouchHandlerContext;
14
14
  const useTouchHandlerContext = () => {
@@ -1 +1 @@
1
- {"version":3,"names":["TouchHandlerContext","React","createContext","current","useTouchHandlerContext","useContext"],"sourceRoot":"../../src","sources":["context.tsx"],"mappings":";;;;;;AAKA;AAA0C;AAAA;AAa1C,MAAMA,mBAAmB,gBAAGC,cAAK,CAACC,aAAa,CAA8B;EAC3EC,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAAC;AAEH,MAAMC,sBAAsB,GAAG,MAAM;EACnC,OAAO,IAAAC,iBAAU,EAACL,mBAAmB,CAAC;AACxC,CAAC;AAAC"}
1
+ {"version":3,"names":["TouchHandlerContext","React","createContext","value","useTouchHandlerContext","useContext"],"sourceRoot":"../../src","sources":["context.tsx"],"mappings":";;;;;;AAAA;AAA0C;AAAA;AA2B1C,MAAMA,mBAAmB,gBAAGC,cAAK,CAACC,aAAa,CAA8B;EAC3EC,KAAK,EAAE,CAAC;AACV,CAAC,CAAC;AAAC;AAEH,MAAMC,sBAAsB,GAAG,MAAM;EACnC,OAAO,IAAAC,iBAAU,EAACL,mBAAmB,CAAC;AACxC,CAAC;AAAC"}
@@ -13,12 +13,12 @@ exports.RoundedRect = exports.Rect = exports.Path = exports.Circle = void 0;
13
13
  var _reactNativeSkia = require("@shopify/react-native-skia");
14
14
  var _hoc = require("../hoc");
15
15
  var _canvas = require("../canvas");
16
- const Circle = (0, _hoc.withTouchableHandler)(_reactNativeSkia.Circle);
16
+ const Circle = (0, _hoc.withTouchableHandler)(_reactNativeSkia.Circle, 'Circle');
17
17
  exports.Circle = Circle;
18
- const RoundedRect = (0, _hoc.withTouchableHandler)(_reactNativeSkia.RoundedRect);
18
+ const RoundedRect = (0, _hoc.withTouchableHandler)(_reactNativeSkia.RoundedRect, 'RoundedRect');
19
19
  exports.RoundedRect = RoundedRect;
20
- const Rect = (0, _hoc.withTouchableHandler)(_reactNativeSkia.Rect);
20
+ const Rect = (0, _hoc.withTouchableHandler)(_reactNativeSkia.Rect, 'Rect');
21
21
  exports.Rect = Rect;
22
- const Path = (0, _hoc.withTouchableHandler)(_reactNativeSkia.Path);
22
+ const Path = (0, _hoc.withTouchableHandler)(_reactNativeSkia.Path, 'Path');
23
23
  exports.Path = Path;
24
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Circle","withTouchableHandler","SkiaCircle","RoundedRect","SkiaRoundedRect","Rect","SkiaRect","Path","SkiaPath"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;AAAA;AAMA;AAEA;AAEO,MAAMA,MAAM,GAAG,IAAAC,yBAAoB,EAACC,uBAAU,CAAC;AAAC;AAChD,MAAMC,WAAW,GAAG,IAAAF,yBAAoB,EAACG,4BAAe,CAAC;AAAC;AAC1D,MAAMC,IAAI,GAAG,IAAAJ,yBAAoB,EAACK,qBAAQ,CAAC;AAAC;AAC5C,MAAMC,IAAI,GAAG,IAAAN,yBAAoB,EAACO,qBAAQ,CAAC;AAAC"}
1
+ {"version":3,"names":["Circle","withTouchableHandler","SkiaCircle","RoundedRect","SkiaRoundedRect","Rect","SkiaRect","Path","SkiaPath"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;AAAA;AAOA;AAEA;AAEO,MAAMA,MAAM,GAAG,IAAAC,yBAAoB,EAACC,uBAAU,EAAE,QAAQ,CAAC;AAAC;AAC1D,MAAMC,WAAW,GAAG,IAAAF,yBAAoB,EAACG,4BAAe,EAAE,aAAa,CAAC;AAAC;AACzE,MAAMC,IAAI,GAAG,IAAAJ,yBAAoB,EAACK,qBAAQ,EAAE,MAAM,CAAC;AAAC;AACpD,MAAMC,IAAI,GAAG,IAAAN,yBAAoB,EAACO,qBAAQ,EAAE,MAAM,CAAC;AAAC"}
@@ -3,14 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.withTouchableHandler = void 0;
7
- var _reactNativeSkia = require("@shopify/react-native-skia");
6
+ exports.withTouchableHandler = exports.getSkiaPath = void 0;
8
7
  var _react = require("react");
8
+ var _context = require("../canvas/context");
9
9
  var _getCirclePath = require("../utils/get-circle-path");
10
10
  var _getRectPath = require("../utils/get-rect-path");
11
11
  var _unwrapAnimatedValue = require("../utils/unwrap-animated-value");
12
- var _context = require("../canvas/context");
13
12
  const getSkiaPath = (key, props) => {
13
+ 'worklet';
14
+
14
15
  const unwrappedProps = (0, _unwrapAnimatedValue.unwrapAnimatedValueObject)(props);
15
16
  switch (key) {
16
17
  case 'Circle':
@@ -25,7 +26,8 @@ const getSkiaPath = (key, props) => {
25
26
  return null;
26
27
  }
27
28
  };
28
- const withTouchableHandler = Component => {
29
+ exports.getSkiaPath = getSkiaPath;
30
+ const withTouchableHandler = (Component, componentName) => {
29
31
  return _ref => {
30
32
  let {
31
33
  onStart: onStartProp,
@@ -36,59 +38,52 @@ const withTouchableHandler = Component => {
36
38
  } = _ref;
37
39
  const id = (0, _react.useId)();
38
40
  const ref = (0, _context.useTouchHandlerContext)();
39
- const startingPoint = (0, _reactNativeSkia.useValue)(null);
40
41
  const onStart = (0, _react.useCallback)(event => {
41
- startingPoint.current = {
42
- x: event.x,
43
- y: event.y
44
- };
42
+ 'worklet';
43
+
45
44
  return onStartProp === null || onStartProp === void 0 ? void 0 : onStartProp(event);
46
- }, [onStartProp, startingPoint]);
45
+ }, [onStartProp]);
47
46
  const onActive = (0, _react.useCallback)(event => {
48
- var _startingPoint$curren, _startingPoint$curren2;
49
- const translationX = event.x - (((_startingPoint$curren = startingPoint.current) === null || _startingPoint$curren === void 0 ? void 0 : _startingPoint$curren.x) ?? 0);
50
- const translationY = event.y - (((_startingPoint$curren2 = startingPoint.current) === null || _startingPoint$curren2 === void 0 ? void 0 : _startingPoint$curren2.y) ?? 0);
51
- return onActiveProp === null || onActiveProp === void 0 ? void 0 : onActiveProp({
52
- ...event,
53
- translationX,
54
- translationY
55
- });
56
- }, [onActiveProp, startingPoint]);
47
+ 'worklet';
48
+
49
+ return onActiveProp === null || onActiveProp === void 0 ? void 0 : onActiveProp(event);
50
+ }, [onActiveProp]);
57
51
  const onEnd = (0, _react.useCallback)(event => {
58
- var _startingPoint$curren3, _startingPoint$curren4;
59
- const translationX = event.x - (((_startingPoint$curren3 = startingPoint.current) === null || _startingPoint$curren3 === void 0 ? void 0 : _startingPoint$curren3.x) ?? 0);
60
- const translationY = event.y - (((_startingPoint$curren4 = startingPoint.current) === null || _startingPoint$curren4 === void 0 ? void 0 : _startingPoint$curren4.y) ?? 0);
61
- return onEndProp === null || onEndProp === void 0 ? void 0 : onEndProp({
62
- ...event,
63
- translationX,
64
- translationY
65
- });
66
- }, [onEndProp, startingPoint]);
52
+ 'worklet';
53
+
54
+ return onEndProp === null || onEndProp === void 0 ? void 0 : onEndProp(event);
55
+ }, [onEndProp]);
67
56
  const isPointInPath = (0, _react.useCallback)(point => {
57
+ 'worklet';
58
+
68
59
  if (touchablePath) {
69
60
  return (0, _unwrapAnimatedValue.unwrapAnimatedValue)(touchablePath).contains(point.x, point.y);
70
61
  }
71
- const path = getSkiaPath(Component.name, props);
62
+ if (!componentName) return false;
63
+ const path = getSkiaPath(componentName, props);
72
64
  if (!path) {
73
65
  throw Error('No touchablePath provided');
74
66
  }
75
67
  return path.contains(point.x, point.y);
76
68
  }, [props, touchablePath]);
77
69
  (0, _react.useEffect)(() => {
78
- ref.current = {
70
+ ref.value = {
79
71
  [`id:${id}`]: {
80
72
  isPointInPath,
81
73
  onStart,
82
74
  onActive,
83
75
  onEnd
84
76
  },
85
- ...ref.current
77
+ ...ref.value
86
78
  };
79
+ // eslint-disable-next-line react-hooks/exhaustive-deps
80
+ }, [id, isPointInPath, onActive, onEnd, onStart]);
81
+ (0, _react.useEffect)(() => {
87
82
  return () => {
88
- var _ref$current;
89
- (_ref$current = ref.current) === null || _ref$current === void 0 ? true : delete _ref$current[id];
83
+ var _ref$value;
84
+ (_ref$value = ref.value) === null || _ref$value === void 0 ? true : delete _ref$value[`id:${id}`];
90
85
  };
91
- }, [id, isPointInPath, onActive, onEnd, onStart, ref, touchablePath]);
86
+ }, [id, props, ref, touchablePath]);
92
87
  return Component(props);
93
88
  };
94
89
  };
@@ -1 +1 @@
1
- {"version":3,"names":["getSkiaPath","key","props","unwrappedProps","unwrapAnimatedValueObject","getCirclePath","getRectPath","getRoundedRectPath","path","withTouchableHandler","Component","onStart","onStartProp","onActive","onActiveProp","onEnd","onEndProp","touchablePath","id","useId","ref","useTouchHandlerContext","startingPoint","useValue","useCallback","event","current","x","y","translationX","translationY","isPointInPath","point","unwrapAnimatedValue","contains","name","Error","useEffect"],"sourceRoot":"../../src","sources":["with-touchable-handler.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["getSkiaPath","key","props","unwrappedProps","unwrapAnimatedValueObject","getCirclePath","getRectPath","getRoundedRectPath","path","withTouchableHandler","Component","componentName","onStart","onStartProp","onActive","onActiveProp","onEnd","onEndProp","touchablePath","id","useId","ref","useTouchHandlerContext","useCallback","event","isPointInPath","point","unwrapAnimatedValue","contains","x","y","Error","useEffect","value"],"sourceRoot":"../../src","sources":["with-touchable-handler.tsx"],"mappings":"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"}
@@ -4,26 +4,32 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useGestureHandler = void 0;
7
- var _reactNativeSkia = require("@shopify/react-native-skia");
8
7
  var _react = require("react");
8
+ var _reactNativeReanimated = require("react-native-reanimated");
9
9
  const useGestureHandler = gestureHandlers => {
10
10
  const {
11
11
  onStart,
12
12
  onActive,
13
13
  onEnd
14
14
  } = gestureHandlers;
15
- const context = (0, _reactNativeSkia.useValue)({});
15
+ const context = (0, _reactNativeReanimated.useSharedValue)({});
16
16
  const handleStart = (0, _react.useCallback)(touchInfo => {
17
+ 'worklet';
18
+
17
19
  if (!onStart) return;
18
- return onStart(touchInfo, context.current);
20
+ return onStart(touchInfo, context.value);
19
21
  }, [context, onStart]);
20
22
  const handleActive = (0, _react.useCallback)(extendedTouchInfo => {
23
+ 'worklet';
24
+
21
25
  if (!onActive) return;
22
- return onActive(extendedTouchInfo, context.current);
26
+ return onActive(extendedTouchInfo, context.value);
23
27
  }, [context, onActive]);
24
28
  const handleEnd = (0, _react.useCallback)(extendedTouchInfo => {
29
+ 'worklet';
30
+
25
31
  if (!onEnd) return;
26
- return onEnd(extendedTouchInfo, context.current);
32
+ return onEnd(extendedTouchInfo, context.value);
27
33
  }, [context, onEnd]);
28
34
  return {
29
35
  onStart: handleStart,
@@ -1 +1 @@
1
- {"version":3,"names":["useGestureHandler","gestureHandlers","onStart","onActive","onEnd","context","useValue","handleStart","useCallback","touchInfo","current","handleActive","extendedTouchInfo","handleEnd"],"sourceRoot":"../../src","sources":["use-gesture-handler.ts"],"mappings":";;;;;;AAAA;AAKA;AAeA,MAAMA,iBAAiB,GACrBC,eAAqD,IAClD;EACH,MAAM;IAAEC,OAAO;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGH,eAAe;EAEpD,MAAMI,OAAO,GAAG,IAAAC,yBAAQ,EAAc,CAAC,CAAC,CAAQ;EAEhD,MAAMC,WAAW,GAAG,IAAAC,kBAAW,EAC5BC,SAAoB,IAAK;IACxB,IAAI,CAACP,OAAO,EAAE;IACd,OAAOA,OAAO,CAACO,SAAS,EAAEJ,OAAO,CAACK,OAAO,CAAC;EAC5C,CAAC,EACD,CAACL,OAAO,EAAEH,OAAO,CAAC,CACnB;EAED,MAAMS,YAAY,GAAG,IAAAH,kBAAW,EAC7BI,iBAAsD,IAAK;IAC1D,IAAI,CAACT,QAAQ,EAAE;IACf,OAAOA,QAAQ,CAACS,iBAAiB,EAAEP,OAAO,CAACK,OAAO,CAAC;EACrD,CAAC,EACD,CAACL,OAAO,EAAEF,QAAQ,CAAC,CACpB;EAED,MAAMU,SAAS,GAAG,IAAAL,kBAAW,EAC1BI,iBAAsD,IAAK;IAC1D,IAAI,CAACR,KAAK,EAAE;IACZ,OAAOA,KAAK,CAACQ,iBAAiB,EAAEP,OAAO,CAACK,OAAO,CAAC;EAClD,CAAC,EACD,CAACL,OAAO,EAAED,KAAK,CAAC,CACjB;EAED,OAAO;IACLF,OAAO,EAAEK,WAAW;IACpBJ,QAAQ,EAAEQ,YAAY;IACtBP,KAAK,EAAES;EACT,CAAC;AACH,CAAC;AAAC"}
1
+ {"version":3,"names":["useGestureHandler","gestureHandlers","onStart","onActive","onEnd","context","useSharedValue","handleStart","useCallback","touchInfo","value","handleActive","extendedTouchInfo","handleEnd"],"sourceRoot":"../../src","sources":["use-gesture-handler.ts"],"mappings":";;;;;;AAAA;AACA;AAuBA,MAAMA,iBAAiB,GACrBC,eAAqD,IAClD;EACH,MAAM;IAAEC,OAAO;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGH,eAAe;EAEpD,MAAMI,OAAO,GAAG,IAAAC,qCAAc,EAAc,CAAC,CAAC,CAAQ;EAEtD,MAAMC,WAAW,GAAG,IAAAC,kBAAW,EAC5BC,SAAiE,IAAK;IACrE,SAAS;;IACT,IAAI,CAACP,OAAO,EAAE;IACd,OAAOA,OAAO,CAACO,SAAS,EAAEJ,OAAO,CAACK,KAAK,CAAC;EAC1C,CAAC,EACD,CAACL,OAAO,EAAEH,OAAO,CAAC,CACnB;EAED,MAAMS,YAAY,GAAG,IAAAH,kBAAW,EAC7BI,iBAAoE,IAAK;IACxE,SAAS;;IACT,IAAI,CAACT,QAAQ,EAAE;IACf,OAAOA,QAAQ,CAACS,iBAAiB,EAAEP,OAAO,CAACK,KAAK,CAAC;EACnD,CAAC,EACD,CAACL,OAAO,EAAEF,QAAQ,CAAC,CACpB;EAED,MAAMU,SAAS,GAAG,IAAAL,kBAAW,EAEzBI,iBAAyE,IACtE;IACH,SAAS;;IACT,IAAI,CAACR,KAAK,EAAE;IACZ,OAAOA,KAAK,CAACQ,iBAAiB,EAAEP,OAAO,CAACK,KAAK,CAAC;EAChD,CAAC,EACD,CAACL,OAAO,EAAED,KAAK,CAAC,CACjB;EAED,OAAO;IACLF,OAAO,EAAEK,WAAW;IACpBJ,QAAQ,EAAEQ,YAAY;IACtBP,KAAK,EAAES;EACT,CAAC;AACH,CAAC;AAAC"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  var _exportNames = {};
7
7
  exports.default = void 0;
8
+ var Touchable = _interopRequireWildcard(require("./components"));
8
9
  var _hoc = require("./hoc");
9
10
  Object.keys(_hoc).forEach(function (key) {
10
11
  if (key === "default" || key === "__esModule") return;
@@ -29,7 +30,6 @@ Object.keys(_useGestureHandler).forEach(function (key) {
29
30
  }
30
31
  });
31
32
  });
32
- var Touchable = _interopRequireWildcard(require("./components"));
33
33
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
34
34
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
35
  var _default = Touchable;
@@ -1 +1 @@
1
- {"version":3,"names":["Touchable"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;AAAA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAA0C;AAAA;AAAA,eAE3BA,SAAS;AAAA"}
1
+ {"version":3,"names":["Touchable"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAA4C;AAAA;AAAA,eAE7BA,SAAS;AAAA"}
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getCirclePath = void 0;
7
7
  var _reactNativeSkia = require("@shopify/react-native-skia");
8
8
  const getCirclePath = _ref => {
9
+ 'worklet';
10
+
9
11
  let {
10
12
  cx,
11
13
  cy,
@@ -1 +1 @@
1
- {"version":3,"names":["getCirclePath","cx","cy","r","Skia","Path","Make","addCircle"],"sourceRoot":"../../src","sources":["get-circle-path.ts"],"mappings":";;;;;;AAAA;AAIO,MAAMA,aAAa,GAAG,QAAwC;EAAA,IAAvC;IAAEC,EAAE;IAAEC,EAAE;IAAEC;EAAuB,CAAC;EAC9D,OAAOC,qBAAI,CAACC,IAAI,CAACC,IAAI,EAAE,CAACC,SAAS,CAACN,EAAE,EAAEC,EAAE,EAAEC,CAAC,CAAC;AAC9C,CAAC;AAAC"}
1
+ {"version":3,"names":["getCirclePath","cx","cy","r","Skia","Path","Make","addCircle"],"sourceRoot":"../../src","sources":["get-circle-path.ts"],"mappings":";;;;;;AAAA;AAIO,MAAMA,aAAa,GAAG,QAAwC;EACnE,SAAS;;EAAC,IADkB;IAAEC,EAAE;IAAEC,EAAE;IAAEC;EAAuB,CAAC;EAE9D,OAAOC,qBAAI,CAACC,IAAI,CAACC,IAAI,EAAE,CAACC,SAAS,CAACN,EAAE,EAAEC,EAAE,EAAEC,CAAC,CAAC;AAC9C,CAAC;AAAC"}