react-native-skia-gesture 0.1.6 → 0.1.7

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/README.md CHANGED
@@ -10,7 +10,7 @@ _A detection system for React Native Skia components._
10
10
 
11
11
  ### Motivation
12
12
 
13
- 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). Therefore, they do not contain any information about location.
13
+ 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).
14
14
  Therefore direct interactions with individual Skia components can only be achieved indirectly from the Canvas (trying to figure out if the point on the screen that was clicked is within the element we want to interact with).
15
15
 
16
16
  This package, simply provides a set of APIs to be able to interact directly with individual components.
@@ -35,18 +35,13 @@ npm install react-native-skia-gesture
35
35
 
36
36
  ```jsx
37
37
  import {
38
- Circle,
39
38
  useValue,
40
39
  } from '@shopify/react-native-skia';
41
40
 
42
- import {
43
- withTouchableHandler,
44
- Canvas,
41
+ import Touchable, {
45
42
  useGestureHandler,
46
43
  } from 'react-native-skia-gesture';
47
44
 
48
- const TouchableCircle = withTouchableHandler(Circle);
49
-
50
45
  export default function App() {
51
46
  const cx = useValue(100);
52
47
  const cy = useValue(100);
@@ -63,14 +58,14 @@ export default function App() {
63
58
  });
64
59
 
65
60
  return (
66
- <Canvas style={styles.fill}>
67
- <TouchableCircle cx={cx} cy={cy} r={50} color="red" {...circleGesture} />
68
- </Canvas>
61
+ <Touchable.Canvas style={styles.fill}>
62
+ <Touchable.Circle cx={cx} cy={cy} r={50} color="red" {...circleGesture} />
63
+ </Touchable.Canvas>
69
64
  );
70
65
  }
71
66
  ```
72
67
 
73
- If the element is a **Circle**, **Rect** or **RoundedRect**, the package will automatically derive its **touchablePath**. Alternatively it will have to be passed as a parameter to the TouchableComponent.
68
+ If the element is a **Circle**, **Rect**, **RoundedRect**, or a **Path** the package will automatically derive its **touchablePath**. Alternatively it will have to be passed as a parameter to the TouchableComponent.
74
69
 
75
70
  ```jsx
76
71
  ...
@@ -81,9 +76,9 @@ const touchablePath = useComputedValue(() => {
81
76
  }, [cx, cy]);
82
77
 
83
78
  return (
84
- <Canvas style={styles.fill}>
85
- <TouchableCircle cx={cx} cy={cy} r={50} color="red" touchablePath={touchablePath} {...circleGesture} />
86
- </Canvas>
79
+ <Touchable.Canvas style={styles.fill}>
80
+ <Touchable.Circle cx={cx} cy={cy} r={50} color="red" touchablePath={touchablePath} {...circleGesture} />
81
+ </Touchable.Canvas>
87
82
  );
88
83
  ...
89
84
  ```
@@ -100,6 +95,13 @@ It's simply a Wrapper of Skia's Canvas.
100
95
 
101
96
  It's a HOC with which to wrap all Skia components with which you want to interact directly.
102
97
 
98
+ ```jsx
99
+ import { Image } from '@shopify/react-native-skia';
100
+ import { withTouchableHandler } from 'react-native-skia-gesture';
101
+
102
+ const TouchableImage = withTouchableHandler(Image);
103
+ ```
104
+
103
105
  ---
104
106
 
105
107
  ### `useGestureHandler`
@@ -17,8 +17,8 @@ const Canvas = _ref => {
17
17
  ...props
18
18
  } = _ref;
19
19
  const touchableRefs = (0, _reactNativeSkia.useValue)({});
20
- const activeKey = (0, _reactNativeSkia.useValue)(null);
21
- const touchHandler = (0, _reactNativeSkia.useTouchHandler)({
20
+ const activeKey = (0, _reactNativeSkia.useValue)([]);
21
+ const touchHandler = (0, _reactNativeSkia.useMultiTouchHandler)({
22
22
  onStart: event => {
23
23
  const keys = Object.keys(touchableRefs.current);
24
24
  for (let i = 0; i < keys.length; i++) {
@@ -26,23 +26,37 @@ const Canvas = _ref => {
26
26
  const touchableItem = touchableRefs.current[key];
27
27
  if (touchableItem !== null && touchableItem !== void 0 && touchableItem.isPointInPath(event)) {
28
28
  var _touchableItem$onStar;
29
- activeKey.current = key;
29
+ activeKey.current.push(`${key}__${event.id}`);
30
30
  (_touchableItem$onStar = touchableItem.onStart) === null || _touchableItem$onStar === void 0 ? void 0 : _touchableItem$onStar.call(touchableItem, event);
31
31
  return;
32
32
  }
33
33
  }
34
34
  },
35
35
  onActive: event => {
36
- var _touchableItem$onActi;
37
- if (!activeKey.current) return;
38
- const touchableItem = touchableRefs.current[activeKey.current];
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];
39
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);
40
47
  },
41
48
  onEnd: event => {
42
- var _touchableItem$onEnd;
43
- if (!activeKey.current) return;
44
- const touchableItem = touchableRefs.current[activeKey.current];
45
- activeKey.current = null;
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;
57
+ }
58
+ const touchableItem = touchableRefs.current[indexedKey];
59
+ activeKey.current = activeKey.current.filter(key => !key.includes(event.id.toString()));
46
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);
47
61
  }
48
62
  }, [touchableRefs, activeKey]);
@@ -1 +1 @@
1
- {"version":3,"names":["Canvas","children","onTouch","props","touchableRefs","useValue","activeKey","touchHandler","useTouchHandler","onStart","event","keys","Object","current","i","length","key","touchableItem","isPointInPath","onActive","onEnd","useEffect","touchInfo"],"sourceRoot":"../../src","sources":["canvas.tsx"],"mappings":";;;;;;AAAA;AAMA;AACA;AAA6E;AAAA;AAAA;AAE7E,MAAMA,MAA6B,GAAG,QAAqC;EAAA,IAApC;IAAEC,QAAQ;IAAEC,OAAO;IAAE,GAAGC;EAAM,CAAC;EACpE,MAAMC,aAAa,GAAG,IAAAC,yBAAQ,EAAyC,CAAC,CAAC,CAAC;EAE1E,MAAMC,SAAS,GAAG,IAAAD,yBAAQ,EAAgB,IAAI,CAAC;EAE/C,MAAME,YAAY,GAAG,IAAAC,gCAAe,EAClC;IACEC,OAAO,EAAGC,KAAK,IAAK;MAClB,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACP,aAAa,CAACS,OAAO,CAAC;MAC/C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACI,MAAM,EAAED,CAAC,EAAE,EAAE;QACpC,MAAME,GAAG,GAAGL,IAAI,CAACG,CAAC,CAAW;QAC7B,MAAMG,aAAa,GAAGb,aAAa,CAACS,OAAO,CAACG,GAAG,CAAC;QAEhD,IAAIC,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAEC,aAAa,CAACR,KAAK,CAAC,EAAE;UAAA;UACvCJ,SAAS,CAACO,OAAO,GAAGG,GAAG;UACvB,yBAAAC,aAAa,CAACR,OAAO,0DAArB,2BAAAQ,aAAa,EAAWP,KAAK,CAAC;UAC9B;QACF;MACF;IACF,CAAC;IACDS,QAAQ,EAAGT,KAAK,IAAK;MAAA;MACnB,IAAI,CAACJ,SAAS,CAACO,OAAO,EAAE;MACxB,MAAMI,aAAa,GAAGb,aAAa,CAACS,OAAO,CAACP,SAAS,CAACO,OAAO,CAAC;MAC9D,OAAOI,aAAa,aAAbA,aAAa,gDAAbA,aAAa,CAAEE,QAAQ,0DAAvB,2BAAAF,aAAa,EAAaP,KAAK,CAAC;IACzC,CAAC;IACDU,KAAK,EAAGV,KAAK,IAAK;MAAA;MAChB,IAAI,CAACJ,SAAS,CAACO,OAAO,EAAE;MACxB,MAAMI,aAAa,GAAGb,aAAa,CAACS,OAAO,CAACP,SAAS,CAACO,OAAO,CAAC;MAC9DP,SAAS,CAACO,OAAO,GAAG,IAAI;MACxB,OAAOI,aAAa,aAAbA,aAAa,+CAAbA,aAAa,CAAEG,KAAK,yDAApB,0BAAAH,aAAa,EAAUP,KAAK,CAAC;IACtC;EACF,CAAC,EACD,CAACN,aAAa,EAAEE,SAAS,CAAC,CAC3B;EAED,IAAAe,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACXjB,aAAa,CAACS,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,CAACT,aAAa,CAAC,CAAC;EAEnB,oBACE,6BAAC,uBAAU,eACLD,KAAK;IACT,OAAO,EAAGmB,SAAS,IAAK;MACtBf,YAAY,CAACe,SAAS,CAAC;MACvB,OAAOpB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGoB,SAAS,CAAC;IAC7B;EAAE,iBAEF,6BAAC,4BAAmB,CAAC,QAAQ;IAAC,KAAK,EAAElB;EAAc,GAChDH,QAAQ,CACoB,CACpB;AAEjB,CAAC;AAAC"}
1
+ {"version":3,"names":["Canvas","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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"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Canvas", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _canvas.Canvas;
10
+ }
11
+ });
12
+ exports.RoundedRect = exports.Rect = exports.Path = exports.Circle = void 0;
13
+ var _reactNativeSkia = require("@shopify/react-native-skia");
14
+ var _hoc = require("../hoc");
15
+ var _canvas = require("../canvas");
16
+ const Circle = (0, _hoc.withTouchableHandler)(_reactNativeSkia.Circle);
17
+ exports.Circle = Circle;
18
+ const RoundedRect = (0, _hoc.withTouchableHandler)(_reactNativeSkia.RoundedRect);
19
+ exports.RoundedRect = RoundedRect;
20
+ const Rect = (0, _hoc.withTouchableHandler)(_reactNativeSkia.Rect);
21
+ exports.Rect = Rect;
22
+ const Path = (0, _hoc.withTouchableHandler)(_reactNativeSkia.Path);
23
+ exports.Path = Path;
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Circle","withTouchableHandler","SkiaCircle","RoundedRect","SkiaRoundedRect","Rect","SkiaRect","Path","SkiaPath"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;AAAA;AAMA;AAEA;AACO,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"}
@@ -19,6 +19,8 @@ const getSkiaPath = (key, props) => {
19
19
  return (0, _getRectPath.getRectPath)(unwrappedProps);
20
20
  case 'RoundedRect':
21
21
  return (0, _getRectPath.getRoundedRectPath)(unwrappedProps);
22
+ case 'Path':
23
+ return unwrappedProps.path;
22
24
  default:
23
25
  return null;
24
26
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getSkiaPath","key","props","unwrappedProps","unwrapAnimatedValueObject","getCirclePath","getRectPath","getRoundedRectPath","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","path","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","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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"}
@@ -3,20 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var _canvas = require("./canvas");
7
- Object.keys(_canvas).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _canvas[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _canvas[key];
14
- }
15
- });
16
- });
6
+ var _exportNames = {};
7
+ exports.default = void 0;
17
8
  var _hoc = require("./hoc");
18
9
  Object.keys(_hoc).forEach(function (key) {
19
10
  if (key === "default" || key === "__esModule") return;
11
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
12
  if (key in exports && exports[key] === _hoc[key]) return;
21
13
  Object.defineProperty(exports, key, {
22
14
  enumerable: true,
@@ -28,6 +20,7 @@ Object.keys(_hoc).forEach(function (key) {
28
20
  var _useGestureHandler = require("./hooks/use-gesture-handler");
29
21
  Object.keys(_useGestureHandler).forEach(function (key) {
30
22
  if (key === "default" || key === "__esModule") return;
23
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
31
24
  if (key in exports && exports[key] === _useGestureHandler[key]) return;
32
25
  Object.defineProperty(exports, key, {
33
26
  enumerable: true,
@@ -36,4 +29,9 @@ Object.keys(_useGestureHandler).forEach(function (key) {
36
29
  }
37
30
  });
38
31
  });
32
+ var Touchable = _interopRequireWildcard(require("./components"));
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
+ 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
+ var _default = Touchable;
36
+ exports.default = _default;
39
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
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,5 +1,5 @@
1
1
  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); }
2
- import { Canvas as SkiaCanvas, useTouchHandler, useValue } from '@shopify/react-native-skia';
2
+ import { Canvas as SkiaCanvas, useMultiTouchHandler, useValue } from '@shopify/react-native-skia';
3
3
  import React, { useEffect } from 'react';
4
4
  import { TouchHandlerContext } from './context';
5
5
  const Canvas = _ref => {
@@ -9,8 +9,8 @@ const Canvas = _ref => {
9
9
  ...props
10
10
  } = _ref;
11
11
  const touchableRefs = useValue({});
12
- const activeKey = useValue(null);
13
- const touchHandler = useTouchHandler({
12
+ const activeKey = useValue([]);
13
+ const touchHandler = useMultiTouchHandler({
14
14
  onStart: event => {
15
15
  const keys = Object.keys(touchableRefs.current);
16
16
  for (let i = 0; i < keys.length; i++) {
@@ -18,23 +18,37 @@ const Canvas = _ref => {
18
18
  const touchableItem = touchableRefs.current[key];
19
19
  if (touchableItem !== null && touchableItem !== void 0 && touchableItem.isPointInPath(event)) {
20
20
  var _touchableItem$onStar;
21
- activeKey.current = key;
21
+ activeKey.current.push(`${key}__${event.id}`);
22
22
  (_touchableItem$onStar = touchableItem.onStart) === null || _touchableItem$onStar === void 0 ? void 0 : _touchableItem$onStar.call(touchableItem, event);
23
23
  return;
24
24
  }
25
25
  }
26
26
  },
27
27
  onActive: event => {
28
- var _touchableItem$onActi;
29
- if (!activeKey.current) return;
30
- const touchableItem = touchableRefs.current[activeKey.current];
28
+ var _activatedKey$split, _touchableItem$onActi;
29
+ const activatedKey = activeKey.current.find(key => key.includes(event.id.toString()));
30
+ if (!activatedKey) {
31
+ return;
32
+ }
33
+ const indexedKey = (_activatedKey$split = activatedKey.split('__')) === null || _activatedKey$split === void 0 ? void 0 : _activatedKey$split[0];
34
+ if (!indexedKey) {
35
+ return;
36
+ }
37
+ const touchableItem = touchableRefs.current[indexedKey];
31
38
  return touchableItem === null || touchableItem === void 0 ? void 0 : (_touchableItem$onActi = touchableItem.onActive) === null || _touchableItem$onActi === void 0 ? void 0 : _touchableItem$onActi.call(touchableItem, event);
32
39
  },
33
40
  onEnd: event => {
34
- var _touchableItem$onEnd;
35
- if (!activeKey.current) return;
36
- const touchableItem = touchableRefs.current[activeKey.current];
37
- activeKey.current = null;
41
+ var _activatedKey$split2, _touchableItem$onEnd;
42
+ const activatedKey = activeKey.current.find(key => key.includes(event.id.toString()));
43
+ if (!activatedKey) {
44
+ return;
45
+ }
46
+ const indexedKey = (_activatedKey$split2 = activatedKey.split('__')) === null || _activatedKey$split2 === void 0 ? void 0 : _activatedKey$split2[0];
47
+ if (!indexedKey) {
48
+ return;
49
+ }
50
+ const touchableItem = touchableRefs.current[indexedKey];
51
+ activeKey.current = activeKey.current.filter(key => !key.includes(event.id.toString()));
38
52
  return touchableItem === null || touchableItem === void 0 ? void 0 : (_touchableItem$onEnd = touchableItem.onEnd) === null || _touchableItem$onEnd === void 0 ? void 0 : _touchableItem$onEnd.call(touchableItem, event);
39
53
  }
40
54
  }, [touchableRefs, activeKey]);
@@ -1 +1 @@
1
- {"version":3,"names":["Canvas","SkiaCanvas","useTouchHandler","useValue","React","useEffect","TouchHandlerContext","children","onTouch","props","touchableRefs","activeKey","touchHandler","onStart","event","keys","Object","current","i","length","key","touchableItem","isPointInPath","onActive","onEnd","touchInfo"],"sourceRoot":"../../src","sources":["canvas.tsx"],"mappings":";AAAA,SACEA,MAAM,IAAIC,UAAU,EAEpBC,eAAe,EACfC,QAAQ,QACH,4BAA4B;AACnC,OAAOC,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,mBAAmB,QAAqC,WAAW;AAE5E,MAAMN,MAA6B,GAAG,QAAqC;EAAA,IAApC;IAAEO,QAAQ;IAAEC,OAAO;IAAE,GAAGC;EAAM,CAAC;EACpE,MAAMC,aAAa,GAAGP,QAAQ,CAAyC,CAAC,CAAC,CAAC;EAE1E,MAAMQ,SAAS,GAAGR,QAAQ,CAAgB,IAAI,CAAC;EAE/C,MAAMS,YAAY,GAAGV,eAAe,CAClC;IACEW,OAAO,EAAGC,KAAK,IAAK;MAClB,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACL,aAAa,CAACO,OAAO,CAAC;MAC/C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACI,MAAM,EAAED,CAAC,EAAE,EAAE;QACpC,MAAME,GAAG,GAAGL,IAAI,CAACG,CAAC,CAAW;QAC7B,MAAMG,aAAa,GAAGX,aAAa,CAACO,OAAO,CAACG,GAAG,CAAC;QAEhD,IAAIC,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAEC,aAAa,CAACR,KAAK,CAAC,EAAE;UAAA;UACvCH,SAAS,CAACM,OAAO,GAAGG,GAAG;UACvB,yBAAAC,aAAa,CAACR,OAAO,0DAArB,2BAAAQ,aAAa,EAAWP,KAAK,CAAC;UAC9B;QACF;MACF;IACF,CAAC;IACDS,QAAQ,EAAGT,KAAK,IAAK;MAAA;MACnB,IAAI,CAACH,SAAS,CAACM,OAAO,EAAE;MACxB,MAAMI,aAAa,GAAGX,aAAa,CAACO,OAAO,CAACN,SAAS,CAACM,OAAO,CAAC;MAC9D,OAAOI,aAAa,aAAbA,aAAa,gDAAbA,aAAa,CAAEE,QAAQ,0DAAvB,2BAAAF,aAAa,EAAaP,KAAK,CAAC;IACzC,CAAC;IACDU,KAAK,EAAGV,KAAK,IAAK;MAAA;MAChB,IAAI,CAACH,SAAS,CAACM,OAAO,EAAE;MACxB,MAAMI,aAAa,GAAGX,aAAa,CAACO,OAAO,CAACN,SAAS,CAACM,OAAO,CAAC;MAC9DN,SAAS,CAACM,OAAO,GAAG,IAAI;MACxB,OAAOI,aAAa,aAAbA,aAAa,+CAAbA,aAAa,CAAEG,KAAK,yDAApB,0BAAAH,aAAa,EAAUP,KAAK,CAAC;IACtC;EACF,CAAC,EACD,CAACJ,aAAa,EAAEC,SAAS,CAAC,CAC3B;EAEDN,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXK,aAAa,CAACO,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,CAACP,aAAa,CAAC,CAAC;EAEnB,oBACE,oBAAC,UAAU,eACLD,KAAK;IACT,OAAO,EAAGgB,SAAS,IAAK;MACtBb,YAAY,CAACa,SAAS,CAAC;MACvB,OAAOjB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGiB,SAAS,CAAC;IAC7B;EAAE,iBAEF,oBAAC,mBAAmB,CAAC,QAAQ;IAAC,KAAK,EAAEf;EAAc,GAChDH,QAAQ,CACoB,CACpB;AAEjB,CAAC;AAED,SAASP,MAAM"}
1
+ {"version":3,"names":["Canvas","SkiaCanvas","useMultiTouchHandler","useValue","React","useEffect","TouchHandlerContext","children","onTouch","props","touchableRefs","activeKey","touchHandler","onStart","event","keys","Object","current","i","length","key","touchableItem","isPointInPath","push","id","onActive","activatedKey","find","includes","toString","indexedKey","split","onEnd","filter","touchInfo"],"sourceRoot":"../../src","sources":["canvas.tsx"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Circle as SkiaCircle, RoundedRect as SkiaRoundedRect, Rect as SkiaRect, Path as SkiaPath } from '@shopify/react-native-skia';
2
+ import { withTouchableHandler } from '../hoc';
3
+ export { Canvas } from '../canvas';
4
+ export const Circle = withTouchableHandler(SkiaCircle);
5
+ export const RoundedRect = withTouchableHandler(SkiaRoundedRect);
6
+ export const Rect = withTouchableHandler(SkiaRect);
7
+ export const Path = withTouchableHandler(SkiaPath);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Circle","SkiaCircle","RoundedRect","SkiaRoundedRect","Rect","SkiaRect","Path","SkiaPath","withTouchableHandler","Canvas"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SACEA,MAAM,IAAIC,UAAU,EACpBC,WAAW,IAAIC,eAAe,EAC9BC,IAAI,IAAIC,QAAQ,EAChBC,IAAI,IAAIC,QAAQ,QACX,4BAA4B;AACnC,SAASC,oBAAoB,QAAQ,QAAQ;AAE7C,SAASC,MAAM,QAAQ,WAAW;AAClC,OAAO,MAAMT,MAAM,GAAGQ,oBAAoB,CAACP,UAAU,CAAC;AACtD,OAAO,MAAMC,WAAW,GAAGM,oBAAoB,CAACL,eAAe,CAAC;AAChE,OAAO,MAAMC,IAAI,GAAGI,oBAAoB,CAACH,QAAQ,CAAC;AAClD,OAAO,MAAMC,IAAI,GAAGE,oBAAoB,CAACD,QAAQ,CAAC"}
@@ -13,6 +13,8 @@ const getSkiaPath = (key, props) => {
13
13
  return getRectPath(unwrappedProps);
14
14
  case 'RoundedRect':
15
15
  return getRoundedRectPath(unwrappedProps);
16
+ case 'Path':
17
+ return unwrappedProps.path;
16
18
  default:
17
19
  return null;
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useValue","useCallback","useEffect","useId","getCirclePath","getRectPath","getRoundedRectPath","unwrapAnimatedValue","unwrapAnimatedValueObject","useTouchHandlerContext","getSkiaPath","key","props","unwrappedProps","withTouchableHandler","Component","onStart","onStartProp","onActive","onActiveProp","onEnd","onEndProp","touchablePath","id","ref","startingPoint","event","current","x","y","translationX","translationY","isPointInPath","point","contains","path","name","Error"],"sourceRoot":"../../src","sources":["with-touchable-handler.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["useValue","useCallback","useEffect","useId","getCirclePath","getRectPath","getRoundedRectPath","unwrapAnimatedValue","unwrapAnimatedValueObject","useTouchHandlerContext","getSkiaPath","key","props","unwrappedProps","path","withTouchableHandler","Component","onStart","onStartProp","onActive","onActiveProp","onEnd","onEndProp","touchablePath","id","ref","startingPoint","event","current","x","y","translationX","translationY","isPointInPath","point","contains","name","Error"],"sourceRoot":"../../src","sources":["with-touchable-handler.tsx"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- export * from './canvas';
2
1
  export * from './hoc';
3
2
  export * from './hooks/use-gesture-handler';
3
+ import * as Touchable from './components';
4
+ export default Touchable;
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,OAAO;AACrB,cAAc,6BAA6B"}
1
+ {"version":3,"names":["Touchable"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,cAAc,OAAO;AACrB,cAAc,6BAA6B;AAC3C,OAAO,KAAKA,SAAS,MAAM,cAAc;AAEzC,eAAeA,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAGZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAoB,MAAM,OAAO,CAAC;AAGzC,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsDjC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAGZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAoB,MAAM,OAAO,CAAC;AAGzC,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA0EjC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { Canvas } from '../canvas';
2
+ export declare const Circle: ({ onStart: onStartProp, onActive: onActiveProp, onEnd: onEndProp, touchablePath, ...props }: import("@shopify/react-native-skia").AnimatedProps<import("@shopify/react-native-skia").CircleProps, never> & Partial<import("../hoc").TouchableHandlerProps>) => JSX.Element;
3
+ export declare const RoundedRect: ({ onStart: onStartProp, onActive: onActiveProp, onEnd: onEndProp, touchablePath, ...props }: import("@shopify/react-native-skia").AnimatedProps<import("@shopify/react-native-skia").RoundedRectProps, never> & Partial<import("../hoc").TouchableHandlerProps>) => JSX.Element;
4
+ export declare const Rect: ({ onStart: onStartProp, onActive: onActiveProp, onEnd: onEndProp, touchablePath, ...props }: import("@shopify/react-native-skia").AnimatedProps<import("@shopify/react-native-skia").RectProps, never> & Partial<import("../hoc").TouchableHandlerProps>) => JSX.Element;
5
+ export declare const Path: ({ onStart: onStartProp, onActive: onActiveProp, onEnd: onEndProp, touchablePath, ...props }: import("@shopify/react-native-skia").AnimatedProps<import("@shopify/react-native-skia").PathProps, never> & Partial<import("../hoc").TouchableHandlerProps>) => JSX.Element;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,eAAO,MAAM,MAAM,6QAAmC,CAAC;AACvD,eAAO,MAAM,WAAW,kRAAwC,CAAC;AACjE,eAAO,MAAM,IAAI,2QAAiC,CAAC;AACnD,eAAO,MAAM,IAAI,2QAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"with-touchable-handler.d.ts","sourceRoot":"","sources":["../../../src/hoc/with-touchable-handler.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EAGV,MAAM,4BAA4B,CAAC;AAUpC,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,GAAG,eAAe,KAAK,IAAI,CAAC;IACnE,KAAK,EAAE,CAAC,SAAS,EAAE,iBAAiB,GAAG,eAAe,KAAK,IAAI,CAAC;IAChE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF,KAAK,yBAAyB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAC9C,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAiBjC,QAAA,MAAM,oBAAoB,0DAC4B,WAAW,+IA2EhE,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"with-touchable-handler.d.ts","sourceRoot":"","sources":["../../../src/hoc/with-touchable-handler.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EAGV,MAAM,4BAA4B,CAAC;AAUpC,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,GAAG,eAAe,KAAK,IAAI,CAAC;IACnE,KAAK,EAAE,CAAC,SAAS,EAAE,iBAAiB,GAAG,eAAe,KAAK,IAAI,CAAC;IAChE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF,KAAK,yBAAyB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAC9C,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAmBjC,QAAA,MAAM,oBAAoB,0DAC4B,WAAW,+IA2EhE,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,4 +1,5 @@
1
- export * from './canvas';
2
1
  export * from './hoc';
3
2
  export * from './hooks/use-gesture-handler';
3
+ import * as Touchable from './components';
4
+ export default Touchable;
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,6BAA6B,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAE1C,eAAe,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-skia-gesture",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "A detection system for React Native Skia components",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Canvas as SkiaCanvas,
3
3
  CanvasProps,
4
- useTouchHandler,
4
+ useMultiTouchHandler,
5
5
  useValue,
6
6
  } from '@shopify/react-native-skia';
7
7
  import React, { useEffect } from 'react';
@@ -10,9 +10,9 @@ import { TouchHandlerContext, TouchableHandlerContextType } from './context';
10
10
  const Canvas: React.FC<CanvasProps> = ({ children, onTouch, ...props }) => {
11
11
  const touchableRefs = useValue<TouchableHandlerContextType['current']>({});
12
12
 
13
- const activeKey = useValue<string | null>(null);
13
+ const activeKey = useValue<string[]>([]);
14
14
 
15
- const touchHandler = useTouchHandler(
15
+ const touchHandler = useMultiTouchHandler(
16
16
  {
17
17
  onStart: (event) => {
18
18
  const keys = Object.keys(touchableRefs.current);
@@ -21,21 +21,41 @@ const Canvas: React.FC<CanvasProps> = ({ children, onTouch, ...props }) => {
21
21
  const touchableItem = touchableRefs.current[key];
22
22
 
23
23
  if (touchableItem?.isPointInPath(event)) {
24
- activeKey.current = key;
24
+ activeKey.current.push(`${key}__${event.id}`);
25
25
  touchableItem.onStart?.(event);
26
26
  return;
27
27
  }
28
28
  }
29
29
  },
30
30
  onActive: (event) => {
31
- if (!activeKey.current) return;
32
- const touchableItem = touchableRefs.current[activeKey.current];
31
+ const activatedKey = activeKey.current.find((key) =>
32
+ key.includes(event.id.toString())
33
+ );
34
+ if (!activatedKey) {
35
+ return;
36
+ }
37
+ const indexedKey = activatedKey.split('__')?.[0];
38
+ if (!indexedKey) {
39
+ return;
40
+ }
41
+ const touchableItem = touchableRefs.current[indexedKey];
33
42
  return touchableItem?.onActive?.(event);
34
43
  },
35
44
  onEnd: (event) => {
36
- if (!activeKey.current) return;
37
- const touchableItem = touchableRefs.current[activeKey.current];
38
- activeKey.current = null;
45
+ const activatedKey = activeKey.current.find((key) =>
46
+ key.includes(event.id.toString())
47
+ );
48
+ if (!activatedKey) {
49
+ return;
50
+ }
51
+ const indexedKey = activatedKey.split('__')?.[0];
52
+ if (!indexedKey) {
53
+ return;
54
+ }
55
+ const touchableItem = touchableRefs.current[indexedKey];
56
+ activeKey.current = activeKey.current.filter(
57
+ (key) => !key.includes(event.id.toString())
58
+ );
39
59
  return touchableItem?.onEnd?.(event);
40
60
  },
41
61
  },
@@ -0,0 +1,13 @@
1
+ import {
2
+ Circle as SkiaCircle,
3
+ RoundedRect as SkiaRoundedRect,
4
+ Rect as SkiaRect,
5
+ Path as SkiaPath,
6
+ } from '@shopify/react-native-skia';
7
+ import { withTouchableHandler } from '../hoc';
8
+
9
+ export { Canvas } from '../canvas';
10
+ export const Circle = withTouchableHandler(SkiaCircle);
11
+ export const RoundedRect = withTouchableHandler(SkiaRoundedRect);
12
+ export const Rect = withTouchableHandler(SkiaRect);
13
+ export const Path = withTouchableHandler(SkiaPath);
@@ -41,6 +41,8 @@ const getSkiaPath = (key: string, props: any) => {
41
41
  return getRectPath(unwrappedProps);
42
42
  case 'RoundedRect':
43
43
  return getRoundedRectPath(unwrappedProps);
44
+ case 'Path':
45
+ return unwrappedProps.path;
44
46
  default:
45
47
  return null;
46
48
  }
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
- export * from './canvas';
2
1
  export * from './hoc';
3
2
  export * from './hooks/use-gesture-handler';
3
+ import * as Touchable from './components';
4
+
5
+ export default Touchable;