vision-camera-face-detection 1.2.4 → 2.0.0

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 (51) hide show
  1. package/README.md +2 -2
  2. package/android/build.gradle +2 -2
  3. package/ios/FaceHelper.swift +109 -89
  4. package/ios/VisionCameraFaceDetectionModule.swift +2 -8
  5. package/ios/VisionCameraFaceDetectionPlugin.swift +2 -5
  6. package/lib/commonjs/{Camera.cjs → Camera.js} +23 -15
  7. package/lib/commonjs/Camera.js.map +1 -0
  8. package/lib/commonjs/{FaceDetector.cjs → FaceDetector.js} +1 -1
  9. package/lib/commonjs/{Tensor.cjs → Tensor.js} +1 -1
  10. package/lib/commonjs/{index.cjs → index.js} +4 -4
  11. package/lib/module/{Camera.mjs → Camera.js} +29 -19
  12. package/lib/module/Camera.js.map +1 -0
  13. package/lib/module/{FaceDetector.mjs → FaceDetector.js} +3 -1
  14. package/lib/module/FaceDetector.js.map +1 -0
  15. package/lib/module/{Tensor.mjs → Tensor.js} +3 -1
  16. package/lib/module/Tensor.js.map +1 -0
  17. package/lib/module/index.js +6 -0
  18. package/lib/module/index.js.map +1 -0
  19. package/lib/typescript/commonjs/package.json +1 -0
  20. package/lib/typescript/commonjs/src/Camera.d.ts.map +1 -0
  21. package/lib/typescript/commonjs/src/FaceDetector.d.ts.map +1 -0
  22. package/lib/typescript/commonjs/src/Tensor.d.ts.map +1 -0
  23. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  24. package/lib/typescript/module/package.json +1 -0
  25. package/lib/typescript/module/src/Camera.d.ts +17 -0
  26. package/lib/typescript/module/src/Camera.d.ts.map +1 -0
  27. package/lib/typescript/module/src/FaceDetector.d.ts +122 -0
  28. package/lib/typescript/module/src/FaceDetector.d.ts.map +1 -0
  29. package/lib/typescript/module/src/Tensor.d.ts +8 -0
  30. package/lib/typescript/module/src/Tensor.d.ts.map +1 -0
  31. package/lib/typescript/module/src/index.d.ts +4 -0
  32. package/lib/typescript/module/src/index.d.ts.map +1 -0
  33. package/package.json +19 -14
  34. package/src/Camera.tsx +19 -19
  35. package/lib/commonjs/Camera.cjs.map +0 -1
  36. package/lib/module/Camera.mjs.map +0 -1
  37. package/lib/module/FaceDetector.mjs.map +0 -1
  38. package/lib/module/Tensor.mjs.map +0 -1
  39. package/lib/module/index.mjs +0 -4
  40. package/lib/module/index.mjs.map +0 -1
  41. package/lib/typescript/src/Camera.d.ts.map +0 -1
  42. package/lib/typescript/src/FaceDetector.d.ts.map +0 -1
  43. package/lib/typescript/src/Tensor.d.ts.map +0 -1
  44. package/lib/typescript/src/index.d.ts.map +0 -1
  45. /package/lib/commonjs/{FaceDetector.cjs.map → FaceDetector.js.map} +0 -0
  46. /package/lib/commonjs/{Tensor.cjs.map → Tensor.js.map} +0 -0
  47. /package/lib/commonjs/{index.cjs.map → index.js.map} +0 -0
  48. /package/lib/typescript/{src → commonjs/src}/Camera.d.ts +0 -0
  49. /package/lib/typescript/{src → commonjs/src}/FaceDetector.d.ts +0 -0
  50. /package/lib/typescript/{src → commonjs/src}/Tensor.d.ts +0 -0
  51. /package/lib/typescript/{src → commonjs/src}/index.d.ts +0 -0
package/README.md CHANGED
@@ -5,14 +5,14 @@ Plugin Face Detection for Vision Camera 4
5
5
  ## Installation
6
6
 
7
7
  ```sh
8
- npm install vision-camera-face-detection
8
+ npm install @edritech/vision-camera-face-detection
9
9
  ```
10
10
 
11
11
  ## Usage
12
12
 
13
13
 
14
14
  ```js
15
- import { multiply } from 'vision-camera-face-detection';
15
+ import { multiply } from '@edritech/vision-camera-face-detection';
16
16
 
17
17
  // ...
18
18
 
@@ -97,9 +97,9 @@ dependencies {
97
97
  implementation "com.facebook.react:react-native:+"
98
98
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
99
99
  api project(":react-native-vision-camera")
100
- implementation "androidx.annotation:annotation:1.8.0"
100
+ implementation "androidx.annotation:annotation:1.8.2"
101
101
  implementation "androidx.camera:camera-core:1.3.4"
102
- implementation "com.google.mlkit:face-detection:16.1.6"
102
+ implementation "com.google.mlkit:face-detection:16.1.7"
103
103
  implementation "org.tensorflow:tensorflow-lite:$tensor_version"
104
104
  implementation 'org.tensorflow:tensorflow-lite-support:0.1.0'
105
105
  }
@@ -16,85 +16,85 @@ let inputHeight = 112
16
16
  var interpreter: Interpreter? = nil
17
17
 
18
18
  class FaceHelper {
19
- static func processContours(from face: Face) -> [String:[[String:CGFloat]]] {
20
- let faceContoursTypes = [
21
- FaceContourType.face,
22
- FaceContourType.leftEyebrowTop,
23
- FaceContourType.leftEyebrowBottom,
24
- FaceContourType.rightEyebrowTop,
25
- FaceContourType.rightEyebrowBottom,
26
- FaceContourType.leftEye,
27
- FaceContourType.rightEye,
28
- FaceContourType.upperLipTop,
29
- FaceContourType.upperLipBottom,
30
- FaceContourType.lowerLipTop,
31
- FaceContourType.lowerLipBottom,
32
- FaceContourType.noseBridge,
33
- FaceContourType.noseBottom,
34
- FaceContourType.leftCheek,
35
- FaceContourType.rightCheek,
36
- ]
37
-
38
- let faceContoursTypesStrings = [
39
- "FACE",
40
- "LEFT_EYEBROW_TOP",
41
- "LEFT_EYEBROW_BOTTOM",
42
- "RIGHT_EYEBROW_TOP",
43
- "RIGHT_EYEBROW_BOTTOM",
44
- "LEFT_EYE",
45
- "RIGHT_EYE",
46
- "UPPER_LIP_TOP",
47
- "UPPER_LIP_BOTTOM",
48
- "LOWER_LIP_TOP",
49
- "LOWER_LIP_BOTTOM",
50
- "NOSE_BRIDGE",
51
- "NOSE_BOTTOM",
52
- "LEFT_CHEEK",
53
- "RIGHT_CHEEK",
54
- ];
55
-
56
- var faceContoursTypesMap: [String:[[String:CGFloat]]] = [:]
57
-
58
- for i in 0..<faceContoursTypes.count {
59
- let contour = face.contour(ofType: faceContoursTypes[i]);
60
-
61
- var pointsArray: [[String:CGFloat]] = []
62
-
63
- if let points = contour?.points {
64
- for point in points {
65
- let currentPointsMap = [
66
- "x": point.x,
67
- "y": point.y,
68
- ]
69
-
70
- pointsArray.append(currentPointsMap)
71
- }
72
-
73
- faceContoursTypesMap[faceContoursTypesStrings[i]] = pointsArray
74
- }
75
- }
76
-
77
- return faceContoursTypesMap
78
- }
19
+ // static func processContours(from face: Face) -> [String:[[String:CGFloat]]] {
20
+ // let faceContoursTypes = [
21
+ // FaceContourType.face,
22
+ // FaceContourType.leftEyebrowTop,
23
+ // FaceContourType.leftEyebrowBottom,
24
+ // FaceContourType.rightEyebrowTop,
25
+ // FaceContourType.rightEyebrowBottom,
26
+ // FaceContourType.leftEye,
27
+ // FaceContourType.rightEye,
28
+ // FaceContourType.upperLipTop,
29
+ // FaceContourType.upperLipBottom,
30
+ // FaceContourType.lowerLipTop,
31
+ // FaceContourType.lowerLipBottom,
32
+ // FaceContourType.noseBridge,
33
+ // FaceContourType.noseBottom,
34
+ // FaceContourType.leftCheek,
35
+ // FaceContourType.rightCheek,
36
+ // ]
79
37
 
80
- static func processBoundingBox(from face: Face) -> [String:Any] {
81
- let frameRect = face.frame
82
-
83
- let offsetX = (frameRect.midX - ceil(frameRect.width)) / 2.0
84
- let offsetY = (frameRect.midY - ceil(frameRect.height)) / 2.0
85
-
86
- let x = frameRect.maxX + offsetX
87
- let y = frameRect.minY + offsetY
88
-
89
- return [
90
- "x": frameRect.midX + (frameRect.midX - x),
91
- "y": frameRect.midY + (y - frameRect.midY),
92
- "width": frameRect.width,
93
- "height": frameRect.height,
94
- "boundingCenterX": frameRect.midX,
95
- "boundingCenterY": frameRect.midY
96
- ]
97
- }
38
+ // let faceContoursTypesStrings = [
39
+ // "FACE",
40
+ // "LEFT_EYEBROW_TOP",
41
+ // "LEFT_EYEBROW_BOTTOM",
42
+ // "RIGHT_EYEBROW_TOP",
43
+ // "RIGHT_EYEBROW_BOTTOM",
44
+ // "LEFT_EYE",
45
+ // "RIGHT_EYE",
46
+ // "UPPER_LIP_TOP",
47
+ // "UPPER_LIP_BOTTOM",
48
+ // "LOWER_LIP_TOP",
49
+ // "LOWER_LIP_BOTTOM",
50
+ // "NOSE_BRIDGE",
51
+ // "NOSE_BOTTOM",
52
+ // "LEFT_CHEEK",
53
+ // "RIGHT_CHEEK",
54
+ // ];
55
+
56
+ // var faceContoursTypesMap: [String:[[String:CGFloat]]] = [:]
57
+
58
+ // for i in 0..<faceContoursTypes.count {
59
+ // let contour = face.contour(ofType: faceContoursTypes[i]);
60
+
61
+ // var pointsArray: [[String:CGFloat]] = []
62
+
63
+ // if let points = contour?.points {
64
+ // for point in points {
65
+ // let currentPointsMap = [
66
+ // "x": point.x,
67
+ // "y": point.y,
68
+ // ]
69
+
70
+ // pointsArray.append(currentPointsMap)
71
+ // }
72
+
73
+ // faceContoursTypesMap[faceContoursTypesStrings[i]] = pointsArray
74
+ // }
75
+ // }
76
+
77
+ // return faceContoursTypesMap
78
+ // }
79
+
80
+ // static func processBoundingBox(from face: Face) -> [String:Any] {
81
+ // let frameRect = face.frame
82
+
83
+ // let offsetX = (frameRect.midX - ceil(frameRect.width)) / 2.0
84
+ // let offsetY = (frameRect.midY - ceil(frameRect.height)) / 2.0
85
+
86
+ // let x = frameRect.maxX + offsetX
87
+ // let y = frameRect.minY + offsetY
88
+
89
+ // return [
90
+ // "x": frameRect.midX + (frameRect.midX - x),
91
+ // "y": frameRect.midY + (y - frameRect.midY),
92
+ // "width": frameRect.width,
93
+ // "height": frameRect.height,
94
+ // "boundingCenterX": frameRect.midX,
95
+ // "boundingCenterY": frameRect.midY
96
+ // ]
97
+ // }
98
98
 
99
99
  static func getImageFaceFromUIImage(from image: UIImage, rectImage: CGRect) -> UIImage? {
100
100
  let imageRef: CGImage = (image.cgImage?.cropping(to: rectImage)!)!
@@ -107,11 +107,8 @@ class FaceHelper {
107
107
  return imageData.base64EncodedString()
108
108
  }
109
109
 
110
- static func rgbDataFromBuffer(
111
- _ buffer: CVPixelBuffer,
112
- byteCount: Int,
113
- isModelQuantized: Bool
114
- ) -> Data? {
110
+ static func rgbDataFromBuffer(_ buffer: CVPixelBuffer) -> Data? {
111
+ let byteCount = batchSize * inputWidth * inputHeight * inputChannels
115
112
  CVPixelBufferLockBaseAddress(buffer, .readOnly)
116
113
  defer {
117
114
  CVPixelBufferUnlockBaseAddress(buffer, .readOnly)
@@ -160,11 +157,6 @@ class FaceHelper {
160
157
  }
161
158
 
162
159
  let byteData = Data(bytes: destinationBuffer.data, count: destinationBuffer.rowBytes * height)
163
- if isModelQuantized {
164
- return byteData
165
- }
166
-
167
- // Not quantized, convert to floats
168
160
  let bytes = Array<UInt8>(unsafeData: byteData)!
169
161
  var floats = [Float]()
170
162
  for i in 0..<bytes.count {
@@ -218,6 +210,35 @@ class FaceHelper {
218
210
  return nil
219
211
  }
220
212
  }
213
+
214
+ // static func getDataFromPixel(pixelBuffer: CVPixelBuffer) -> Data {
215
+ // CVPixelBufferLockBaseAddress(pixelBuffer, [.readOnly])
216
+ // defer { CVPixelBufferUnlockBaseAddress(pixelBuffer, [.readOnly]) }
217
+ //
218
+ // // Calculate sum of planes' size
219
+ // var totalSize = 0
220
+ // for plane in 0 ..< CVPixelBufferGetPlaneCount(pixelBuffer) {
221
+ // let height = CVPixelBufferGetHeightOfPlane(pixelBuffer, plane)
222
+ // let bytesPerRow = CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, plane)
223
+ // let planeSize = height * bytesPerRow
224
+ // totalSize += planeSize
225
+ // }
226
+ //
227
+ // guard let rawFrame = malloc(totalSize) else { fatalError() }
228
+ // var dest = rawFrame
229
+ //
230
+ // for plane in 0 ..< CVPixelBufferGetPlaneCount(pixelBuffer) {
231
+ // let source = CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, plane)
232
+ // let height = CVPixelBufferGetHeightOfPlane(pixelBuffer, plane)
233
+ // let bytesPerRow = CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, plane)
234
+ // let planeSize = height * bytesPerRow
235
+ //
236
+ // memcpy(dest, source, planeSize)
237
+ // dest += planeSize
238
+ // }
239
+ //
240
+ // return Data(bytesNoCopy: rawFrame, count: totalSize, deallocator: .free)
241
+ // }
221
242
  }
222
243
 
223
244
  // MARK: - Extensions
@@ -235,4 +256,3 @@ extension Array {
235
256
  self = unsafeData.withUnsafeBytes { .init($0.bindMemory(to: Element.self)) }
236
257
  }
237
258
  }
238
-
@@ -66,19 +66,13 @@ class VisionCameraFaceDetectionModule: NSObject {
66
66
  reject("Failed to get pixelBuffer", nil, nil)
67
67
  return
68
68
  }
69
- guard let rgbData = FaceHelper.rgbDataFromBuffer(
70
- pixelBuffer,
71
- byteCount: batchSize * inputWidth * inputHeight * inputChannels,
72
- isModelQuantized: false
73
- ) else {
69
+ guard let rgbData = FaceHelper.rgbDataFromBuffer(pixelBuffer) else {
74
70
  reject("Failed to convert the image buffer to RGB data.", nil, nil)
75
71
  return
76
72
  }
77
- // Copy the RGB data to the input `Tensor`.
78
73
  try interpreter?.copy(rgbData, toInputAt: 0)
79
- // Run inference by invoking the `Interpreter`.
80
74
  try interpreter?.invoke()
81
- // Get the output `Tensor` to process the inference results.
75
+
82
76
  let outputTensor: Tensor? = try interpreter?.output(at: 0)
83
77
  if ((outputTensor?.data) != nil) {
84
78
  let result: [Float] = [Float32](unsafeData: outputTensor!.data) ?? []
@@ -279,13 +279,10 @@ public class VisionCameraFaceDetectionPlugin: FrameProcessorPlugin {
279
279
  guard let pixelBuffer = FaceHelper.uiImageToPixelBuffer(image: imageCrop, size: inputWidth) else {
280
280
  return nil
281
281
  }
282
- guard let rgbData = FaceHelper.rgbDataFromBuffer(
283
- pixelBuffer,
284
- byteCount: batchSize * inputWidth * inputHeight * inputChannels,
285
- isModelQuantized: false
286
- ) else {
282
+ guard let rgbData = FaceHelper.rgbDataFromBuffer(pixelBuffer) else {
287
283
  return nil
288
284
  }
285
+
289
286
  try interpreter?.copy(rgbData, toInputAt: 0)
290
287
  try interpreter?.invoke()
291
288
  let outputTensor: Tensor? = try interpreter?.output(at: 0)
@@ -8,7 +8,7 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _reactNativeVisionCamera = require("react-native-vision-camera");
10
10
  var _reactNativeWorkletsCore = require("react-native-worklets-core");
11
- var _FaceDetector = require("./FaceDetector.cjs");
11
+ var _FaceDetector = require("./FaceDetector.js");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
14
  // types
@@ -137,21 +137,29 @@ const Camera = exports.Camera = /*#__PURE__*/_react.default.forwardRef(({
137
137
  /**
138
138
  * Runs on detection callback on js thread
139
139
  */
140
- const runOnJs = (0, _reactNativeWorkletsCore.useRunOnJS)(faceDetectionCallback, [faceDetectionCallback]);
141
- const processorIOS = (0, _reactNativeVisionCamera.useFrameProcessor)(frame => {
142
- 'worklet';
140
+ // const runOnJs = useRunOnJS(faceDetectionCallback, [faceDetectionCallback]);
141
+
142
+ // const processorIOS = useFrameProcessor(
143
+ // (frame) => {
144
+ // 'worklet';
145
+ // runOnJs(detectFaces(frame), frame);
146
+ // // runAsync(frame, () => {
147
+ // // 'worklet';
148
+ // // runOnJs(detectFaces(frame), frame);
149
+ // // });
150
+ // },
151
+ // [runOnJs]
152
+ // );
143
153
 
144
- runOnJs(detectFaces(frame), frame);
145
- // runAsync(frame, () => {
146
- // 'worklet';
147
- // runOnJs(detectFaces(frame), frame);
148
- // });
149
- }, [runOnJs]);
150
154
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeVisionCamera.Camera, {
151
- ...props,
152
- ref: ref,
153
- frameProcessor: _reactNative.Platform.OS === 'android' ? processorAndroid : processorIOS,
154
- pixelFormat: _reactNative.Platform.OS === 'android' ? 'yuv' : 'rgb'
155
+ ref: ref
156
+ // frameProcessor={
157
+ // Platform.OS === 'android' ? processorAndroid : processorIOS
158
+ // }
159
+ ,
160
+ frameProcessor: processorAndroid,
161
+ pixelFormat: _reactNative.Platform.OS === 'android' ? 'yuv' : 'rgb',
162
+ ...props
155
163
  });
156
164
  });
157
- //# sourceMappingURL=Camera.cjs.map
165
+ //# sourceMappingURL=Camera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeVisionCamera","_reactNativeWorkletsCore","_FaceDetector","_jsxRuntime","e","__esModule","default","useWorklet","func","dependencyList","worklet","React","useMemo","context","Worklets","defaultContext","createRunAsync","useRunInJS","createRunOnJS","Camera","exports","forwardRef","faceDetectionOptions","faceDetectionCallback","props","ref","detectFaces","useFaceDetector","isAsyncContextBusy","useSharedValue","logOnJs","log","error","console","message","JSON","stringify","runInJs","runOnAsyncContext","frame","faces","incrementRefCount","finally","decrementRefCount","value","runAsync","internal","processorAndroid","useFrameProcessor","jsx","frameProcessor","pixelFormat","Platform","OS"],"sourceRoot":"../../src","sources":["Camera.tsx"],"mappings":"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","ignoreList":[]}
@@ -39,4 +39,4 @@ function createFaceDetectorPlugin(options) {
39
39
  function useFaceDetector(options) {
40
40
  return (0, _react.useMemo)(() => createFaceDetectorPlugin(options), [options]);
41
41
  }
42
- //# sourceMappingURL=FaceDetector.cjs.map
42
+ //# sourceMappingURL=FaceDetector.js.map
@@ -21,4 +21,4 @@ function initTensor(modelPath, count) {
21
21
  function detectFromBase64(imageString) {
22
22
  return VisionCameraFaceDetectionModule.detectFromBase64(imageString);
23
23
  }
24
- //# sourceMappingURL=Tensor.cjs.map
24
+ //# sourceMappingURL=Tensor.js.map
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var _Camera = require("./Camera.cjs");
6
+ var _Camera = require("./Camera.js");
7
7
  Object.keys(_Camera).forEach(function (key) {
8
8
  if (key === "default" || key === "__esModule") return;
9
9
  if (key in exports && exports[key] === _Camera[key]) return;
@@ -14,7 +14,7 @@ Object.keys(_Camera).forEach(function (key) {
14
14
  }
15
15
  });
16
16
  });
17
- var _FaceDetector = require("./FaceDetector.cjs");
17
+ var _FaceDetector = require("./FaceDetector.js");
18
18
  Object.keys(_FaceDetector).forEach(function (key) {
19
19
  if (key === "default" || key === "__esModule") return;
20
20
  if (key in exports && exports[key] === _FaceDetector[key]) return;
@@ -25,7 +25,7 @@ Object.keys(_FaceDetector).forEach(function (key) {
25
25
  }
26
26
  });
27
27
  });
28
- var _Tensor = require("./Tensor.cjs");
28
+ var _Tensor = require("./Tensor.js");
29
29
  Object.keys(_Tensor).forEach(function (key) {
30
30
  if (key === "default" || key === "__esModule") return;
31
31
  if (key in exports && exports[key] === _Tensor[key]) return;
@@ -36,4 +36,4 @@ Object.keys(_Tensor).forEach(function (key) {
36
36
  }
37
37
  });
38
38
  });
39
- //# sourceMappingURL=index.cjs.map
39
+ //# sourceMappingURL=index.js.map
@@ -1,10 +1,12 @@
1
+ "use strict";
2
+
1
3
  import React from 'react';
2
4
  import { Platform } from 'react-native';
3
- import { Camera as VisionCamera,
4
- // runAsync,
5
- useFrameProcessor } from 'react-native-vision-camera';
6
- import { Worklets, useRunOnJS, useSharedValue } from 'react-native-worklets-core';
7
- import { useFaceDetector } from "./FaceDetector.mjs";
5
+ import { Camera as VisionCamera, useFrameProcessor } from 'react-native-vision-camera';
6
+ import { Worklets,
7
+ // useRunOnJS,
8
+ useSharedValue } from 'react-native-worklets-core';
9
+ import { useFaceDetector } from "./FaceDetector.js";
8
10
 
9
11
  // types
10
12
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -132,21 +134,29 @@ export const Camera = /*#__PURE__*/React.forwardRef(({
132
134
  /**
133
135
  * Runs on detection callback on js thread
134
136
  */
135
- const runOnJs = useRunOnJS(faceDetectionCallback, [faceDetectionCallback]);
136
- const processorIOS = useFrameProcessor(frame => {
137
- 'worklet';
137
+ // const runOnJs = useRunOnJS(faceDetectionCallback, [faceDetectionCallback]);
138
+
139
+ // const processorIOS = useFrameProcessor(
140
+ // (frame) => {
141
+ // 'worklet';
142
+ // runOnJs(detectFaces(frame), frame);
143
+ // // runAsync(frame, () => {
144
+ // // 'worklet';
145
+ // // runOnJs(detectFaces(frame), frame);
146
+ // // });
147
+ // },
148
+ // [runOnJs]
149
+ // );
138
150
 
139
- runOnJs(detectFaces(frame), frame);
140
- // runAsync(frame, () => {
141
- // 'worklet';
142
- // runOnJs(detectFaces(frame), frame);
143
- // });
144
- }, [runOnJs]);
145
151
  return /*#__PURE__*/_jsx(VisionCamera, {
146
- ...props,
147
- ref: ref,
148
- frameProcessor: Platform.OS === 'android' ? processorAndroid : processorIOS,
149
- pixelFormat: Platform.OS === 'android' ? 'yuv' : 'rgb'
152
+ ref: ref
153
+ // frameProcessor={
154
+ // Platform.OS === 'android' ? processorAndroid : processorIOS
155
+ // }
156
+ ,
157
+ frameProcessor: processorAndroid,
158
+ pixelFormat: Platform.OS === 'android' ? 'yuv' : 'rgb',
159
+ ...props
150
160
  });
151
161
  });
152
- //# sourceMappingURL=Camera.mjs.map
162
+ //# sourceMappingURL=Camera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Platform","Camera","VisionCamera","useFrameProcessor","Worklets","useSharedValue","useFaceDetector","jsx","_jsx","useWorklet","func","dependencyList","worklet","useMemo","context","defaultContext","createRunAsync","useRunInJS","createRunOnJS","forwardRef","faceDetectionOptions","faceDetectionCallback","props","ref","detectFaces","isAsyncContextBusy","logOnJs","log","error","console","message","JSON","stringify","runInJs","runOnAsyncContext","frame","faces","incrementRefCount","finally","decrementRefCount","value","runAsync","internal","processorAndroid","frameProcessor","pixelFormat","OS"],"sourceRoot":"../../src","sources":["Camera.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  import { useMemo } from 'react';
2
4
  import { VisionCameraProxy } from 'react-native-vision-camera';
3
5
  /**
@@ -33,4 +35,4 @@ function createFaceDetectorPlugin(options) {
33
35
  export function useFaceDetector(options) {
34
36
  return useMemo(() => createFaceDetectorPlugin(options), [options]);
35
37
  }
36
- //# sourceMappingURL=FaceDetector.mjs.map
38
+ //# sourceMappingURL=FaceDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","VisionCameraProxy","createFaceDetectorPlugin","options","plugin","initFrameProcessorPlugin","Error","detectFaces","frame","call","useFaceDetector"],"sourceRoot":"../../src","sources":["FaceDetector.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,iBAAiB,QAAoB,4BAA4B;AA+H1E;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAwBA,CAC/BC,OAA8B,EACV;EACpB,MAAMC,MAAM,GAAGH,iBAAiB,CAACI,wBAAwB,CAAC,aAAa,EAAE;IACvE,GAAGF;EACL,CAAC,CAAC;EAEF,IAAI,CAACC,MAAM,EAAE;IACX,MAAM,IAAIE,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,OAAO;IACLC,WAAW,EAAGC,KAAY,IAAa;MACrC,SAAS;;MACT;MACA,OAAOJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;IAC3B;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,eAAeA,CAC7BP,OAA8B,EACV;EACpB,OAAOH,OAAO,CAAC,MAAME,wBAAwB,CAACC,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;AACpE","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  import { NativeModules, Platform } from 'react-native';
2
4
  const LINKING_ERROR = `The package 'vision-camera-face-detection' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
3
5
  ios: "- You have run 'pod install'\n",
@@ -14,4 +16,4 @@ export function initTensor(modelPath, count) {
14
16
  export function detectFromBase64(imageString) {
15
17
  return VisionCameraFaceDetectionModule.detectFromBase64(imageString);
16
18
  }
17
- //# sourceMappingURL=Tensor.mjs.map
19
+ //# sourceMappingURL=Tensor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","VisionCameraFaceDetectionModule","Proxy","get","Error","initTensor","modelPath","count","detectFromBase64","imageString"],"sourceRoot":"../../src","sources":["Tensor.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,uFAAuF,GACvFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,+BAA+B,GACnCN,aAAa,CAACM,+BAA+B,GACzCN,aAAa,CAACM,+BAA+B,GAC7C,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEP,OAAO,SAASQ,UAAUA,CAACC,SAAiB,EAAEC,KAAc,EAAmB;EAC7E,OAAON,+BAA+B,CAACI,UAAU,CAACC,SAAS,EAAEC,KAAK,CAAC;AACrE;AAEA,OAAO,SAASC,gBAAgBA,CAC9BC,WAAmB,EACO;EAC1B,OAAOR,+BAA+B,CAACO,gBAAgB,CAACC,WAAW,CAAC;AACtE","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ export * from "./Camera.js";
4
+ export * from "./FaceDetector.js";
5
+ export * from "./Tensor.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,cAAc,aAAU;AACxB,cAAc,mBAAgB;AAC9B,cAAc,aAAU","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../../src/Camera.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,MAAM,IAAI,YAAY,EAEvB,MAAM,4BAA4B,CAAC;AAUpC,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EAEN,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AASjE,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA4C1E;;;;;GAKG;AACH,eAAO,MAAM,MAAM;2BA/CM,oBAAoB;2BACpB,YAAY;oDAgKpC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaceDetector.d.ts","sourceRoot":"","sources":["../../../../src/FaceDetector.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAE3E,KAAK,kBAAkB,GAAG;IACxB;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;CACvC,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,mBAAmB,EAAE,KAAK,EAAE,CAAC;IAC7B,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,oBAAoB,EAAE,KAAK,EAAE,CAAC;IAC9B,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,WAAW,EAAE,KAAK,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,KAAK,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;IAChB,YAAY,EAAE,KAAK,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAEtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4BD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,kBAAkB,CAEpB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tensor.d.ts","sourceRoot":"","sources":["../../../../src/Tensor.ts"],"names":[],"mappings":"AAoBA,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { Camera as VisionCamera } from 'react-native-vision-camera';
3
+ import type { CameraProps, Frame } from 'react-native-vision-camera';
4
+ import type { Face, FaceDetectionOptions } from './FaceDetector';
5
+ type CallbackType = (faces: Face[], frame: Frame) => void | Promise<void>;
6
+ /**
7
+ * Vision camera wrapper
8
+ *
9
+ * @param {ComponentType} props Camera + face detection props
10
+ * @returns
11
+ */
12
+ export declare const Camera: React.ForwardRefExoticComponent<{
13
+ faceDetectionOptions?: FaceDetectionOptions;
14
+ faceDetectionCallback: CallbackType;
15
+ } & CameraProps & React.RefAttributes<VisionCamera>>;
16
+ export {};
17
+ //# sourceMappingURL=Camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../../src/Camera.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,MAAM,IAAI,YAAY,EAEvB,MAAM,4BAA4B,CAAC;AAUpC,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EAEN,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AASjE,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA4C1E;;;;;GAKG;AACH,eAAO,MAAM,MAAM;2BA/CM,oBAAoB;2BACpB,YAAY;oDAgKpC,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { type Frame } from 'react-native-vision-camera';
2
+ type FaceDetectorPlugin = {
3
+ /**
4
+ * Detect faces on frame
5
+ *
6
+ * @param {Frame} frame Frame to detect faces
7
+ */
8
+ detectFaces: (frame: Frame) => Face[];
9
+ };
10
+ type Point = {
11
+ x: number;
12
+ y: number;
13
+ };
14
+ export interface Face {
15
+ pitchAngle: number;
16
+ rollAngle: number;
17
+ yawAngle: number;
18
+ bounds: Bounds;
19
+ leftEyeOpenProbability: number;
20
+ rightEyeOpenProbability: number;
21
+ smilingProbability: number;
22
+ contours: Contours;
23
+ landmarks: Landmarks;
24
+ data: any;
25
+ }
26
+ export interface Bounds {
27
+ width: number;
28
+ height: number;
29
+ x: number;
30
+ y: number;
31
+ }
32
+ export interface Contours {
33
+ FACE: Point[];
34
+ LEFT_EYEBROW_TOP: Point[];
35
+ LEFT_EYEBROW_BOTTOM: Point[];
36
+ RIGHT_EYEBROW_TOP: Point[];
37
+ RIGHT_EYEBROW_BOTTOM: Point[];
38
+ LEFT_EYE: Point[];
39
+ RIGHT_EYE: Point[];
40
+ UPPER_LIP_TOP: Point[];
41
+ UPPER_LIP_BOTTOM: Point[];
42
+ LOWER_LIP_TOP: Point[];
43
+ LOWER_LIP_BOTTOM: Point[];
44
+ NOSE_BRIDGE: Point[];
45
+ NOSE_BOTTOM: Point[];
46
+ LEFT_CHEEK: Point[];
47
+ RIGHT_CHEEK: Point[];
48
+ }
49
+ export interface Landmarks {
50
+ LEFT_CHEEK: Point;
51
+ LEFT_EAR: Point;
52
+ LEFT_EYE: Point;
53
+ MOUTH_BOTTOM: Point;
54
+ MOUTH_LEFT: Point;
55
+ MOUTH_RIGHT: Point;
56
+ NOSE_BASE: Point;
57
+ RIGHT_CHEEK: Point;
58
+ RIGHT_EAR: Point;
59
+ RIGHT_EYE: Point;
60
+ }
61
+ export interface FaceDetectionOptions {
62
+ /**
63
+ * Favor speed or accuracy when detecting faces.
64
+ *
65
+ * @default 'fast'
66
+ */
67
+ performanceMode?: 'fast' | 'accurate';
68
+ /**
69
+ * Whether to attempt to identify facial 'landmarks': eyes, ears, nose, cheeks, mouth, and so on.
70
+ *
71
+ * @default 'none'
72
+ */
73
+ landmarkMode?: 'none' | 'all';
74
+ /**
75
+ * Whether to detect the contours of facial features. Contours are detected for only the most prominent face in an image.
76
+ *
77
+ * @default 'none'
78
+ */
79
+ contourMode?: 'none' | 'all';
80
+ /**
81
+ * Whether or not to classify faces into categories such as 'smiling', and 'eyes open'.
82
+ *
83
+ * @default 'none'
84
+ */
85
+ classificationMode?: 'none' | 'all';
86
+ /**
87
+ * Sets the smallest desired face size, expressed as the ratio of the width of the head to width of the image.
88
+ *
89
+ * @default 0.15
90
+ */
91
+ minFaceSize?: number;
92
+ /**
93
+ * Whether or not to assign faces an ID, which can be used to track faces across images.
94
+ *
95
+ * Note that when contour detection is enabled, only one face is detected, so face tracking doesn't produce useful results. For this reason, and to improve detection speed, don't enable both contour detection and face tracking.
96
+ *
97
+ * @default false
98
+ */
99
+ trackingEnabled?: boolean;
100
+ /**
101
+ * Should auto scale face bounds, contour and landmarks on native side?
102
+ * This option should be disabled if you want to draw on frame using `Skia Frame Processor`.
103
+ * See [this](https://github.com/luicfrr/react-native-vision-camera-face-detector/issues/30#issuecomment-2058805546) and [this](https://github.com/luicfrr/react-native-vision-camera-face-detector/issues/35) for more details.
104
+ *
105
+ * @default false
106
+ */
107
+ autoScale?: boolean;
108
+ /**
109
+ * for enable/disable tensorflow lite logic, just face detection
110
+ */
111
+ enableTensor?: boolean;
112
+ }
113
+ /**
114
+ * Use an instance of face detector plugin.
115
+ *
116
+ * @param {FaceDetectionOptions | undefined} options Detection options
117
+ * @returns {FaceDetectorPlugin} Memoized plugin instance that will be
118
+ * destroyed once the component using `useFaceDetector()` unmounts.
119
+ */
120
+ export declare function useFaceDetector(options?: FaceDetectionOptions): FaceDetectorPlugin;
121
+ export {};
122
+ //# sourceMappingURL=FaceDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaceDetector.d.ts","sourceRoot":"","sources":["../../../../src/FaceDetector.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAE3E,KAAK,kBAAkB,GAAG;IACxB;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;CACvC,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,mBAAmB,EAAE,KAAK,EAAE,CAAC;IAC7B,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,oBAAoB,EAAE,KAAK,EAAE,CAAC;IAC9B,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,WAAW,EAAE,KAAK,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,KAAK,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;IAChB,YAAY,EAAE,KAAK,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAEtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4BD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,kBAAkB,CAEpB"}
@@ -0,0 +1,8 @@
1
+ export declare function initTensor(modelPath: string, count?: number): Promise<string>;
2
+ export declare function detectFromBase64(imageString: string): Promise<DetectBas64Type>;
3
+ export type DetectBas64Type = {
4
+ base64: string;
5
+ data: any;
6
+ message: string;
7
+ };
8
+ //# sourceMappingURL=Tensor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tensor.d.ts","sourceRoot":"","sources":["../../../../src/Tensor.ts"],"names":[],"mappings":"AAoBA,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './Camera';
2
+ export * from './FaceDetector';
3
+ export * from './Tensor';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,16 +1,20 @@
1
1
  {
2
2
  "name": "vision-camera-face-detection",
3
- "version": "1.2.4",
3
+ "version": "2.0.0",
4
4
  "description": "Plugin Face Detection for Vision Camera 4",
5
5
  "source": "./src/index.tsx",
6
- "main": "./lib/commonjs/index.cjs",
7
- "module": "./lib/module/index.mjs",
8
- "types": "./lib/typescript/src/index.d.ts",
6
+ "main": "./lib/commonjs/index.js",
7
+ "module": "./lib/module/index.js",
9
8
  "exports": {
10
9
  ".": {
11
- "types": "./lib/typescript/src/index.d.ts",
12
- "import": "./lib/module/index.mjs",
13
- "require": "./lib/commonjs/index.cjs"
10
+ "import": {
11
+ "types": "./lib/typescript/module/src/index.d.ts",
12
+ "default": "./lib/module/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./lib/typescript/commonjs/src/index.d.ts",
16
+ "default": "./lib/commonjs/index.js"
17
+ }
14
18
  }
15
19
  },
16
20
  "files": [
@@ -34,7 +38,7 @@
34
38
  "scripts": {
35
39
  "example": "yarn workspace vision-camera-face-detection-example",
36
40
  "test": "jest",
37
- "typecheck": "tsc --noEmit",
41
+ "typecheck": "tsc",
38
42
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
39
43
  "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
40
44
  "prepare": "bob build",
@@ -72,10 +76,10 @@
72
76
  "eslint-plugin-prettier": "^5.0.1",
73
77
  "jest": "^29.7.0",
74
78
  "prettier": "^3.0.3",
75
- "react": "18.2.0",
76
- "react-native": "0.74.3",
77
- "react-native-builder-bob": "^0.25.0",
78
- "react-native-vision-camera": "4.5.0",
79
+ "react": "18.3.1",
80
+ "react-native": "0.75.4",
81
+ "react-native-builder-bob": "^0.30.2",
82
+ "react-native-vision-camera": "4.5.3",
79
83
  "react-native-worklets-core": "1.3.3",
80
84
  "release-it": "^15.0.0",
81
85
  "turbo": "^1.10.7",
@@ -173,7 +177,8 @@
173
177
  [
174
178
  "typescript",
175
179
  {
176
- "project": "tsconfig.build.json"
180
+ "project": "tsconfig.build.json",
181
+ "esm": true
177
182
  }
178
183
  ]
179
184
  ]
@@ -181,6 +186,6 @@
181
186
  "create-react-native-library": {
182
187
  "type": "module-legacy",
183
188
  "languages": "kotlin-swift",
184
- "version": "0.38.1"
189
+ "version": "0.41.2"
185
190
  }
186
191
  }
package/src/Camera.tsx CHANGED
@@ -2,12 +2,11 @@ import React from 'react';
2
2
  import { Platform } from 'react-native';
3
3
  import {
4
4
  Camera as VisionCamera,
5
- // runAsync,
6
5
  useFrameProcessor,
7
6
  } from 'react-native-vision-camera';
8
7
  import {
9
8
  Worklets,
10
- useRunOnJS,
9
+ // useRunOnJS,
11
10
  useSharedValue,
12
11
  } from 'react-native-worklets-core';
13
12
  import { useFaceDetector } from './FaceDetector';
@@ -166,28 +165,29 @@ export const Camera = React.forwardRef(
166
165
  /**
167
166
  * Runs on detection callback on js thread
168
167
  */
169
- const runOnJs = useRunOnJS(faceDetectionCallback, [faceDetectionCallback]);
170
-
171
- const processorIOS = useFrameProcessor(
172
- (frame) => {
173
- 'worklet';
174
- runOnJs(detectFaces(frame), frame);
175
- // runAsync(frame, () => {
176
- // 'worklet';
177
- // runOnJs(detectFaces(frame), frame);
178
- // });
179
- },
180
- [runOnJs]
181
- );
168
+ // const runOnJs = useRunOnJS(faceDetectionCallback, [faceDetectionCallback]);
169
+
170
+ // const processorIOS = useFrameProcessor(
171
+ // (frame) => {
172
+ // 'worklet';
173
+ // runOnJs(detectFaces(frame), frame);
174
+ // // runAsync(frame, () => {
175
+ // // 'worklet';
176
+ // // runOnJs(detectFaces(frame), frame);
177
+ // // });
178
+ // },
179
+ // [runOnJs]
180
+ // );
182
181
 
183
182
  return (
184
183
  <VisionCamera
185
- {...props}
186
184
  ref={ref}
187
- frameProcessor={
188
- Platform.OS === 'android' ? processorAndroid : processorIOS
189
- }
185
+ // frameProcessor={
186
+ // Platform.OS === 'android' ? processorAndroid : processorIOS
187
+ // }
188
+ frameProcessor={processorAndroid}
190
189
  pixelFormat={Platform.OS === 'android' ? 'yuv' : 'rgb'}
190
+ {...props}
191
191
  />
192
192
  );
193
193
  }
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeVisionCamera","_reactNativeWorkletsCore","_FaceDetector","_jsxRuntime","e","__esModule","default","useWorklet","func","dependencyList","worklet","React","useMemo","context","Worklets","defaultContext","createRunAsync","useRunInJS","createRunOnJS","Camera","exports","forwardRef","faceDetectionOptions","faceDetectionCallback","props","ref","detectFaces","useFaceDetector","isAsyncContextBusy","useSharedValue","logOnJs","log","error","console","message","JSON","stringify","runInJs","runOnAsyncContext","frame","faces","incrementRefCount","finally","decrementRefCount","value","runAsync","internal","processorAndroid","useFrameProcessor","runOnJs","useRunOnJS","processorIOS","jsx","frameProcessor","Platform","OS","pixelFormat"],"sourceRoot":"../../src","sources":["Camera.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAF,OAAA;AAKA,IAAAG,wBAAA,GAAAH,OAAA;AAKA,IAAAI,aAAA,GAAAJ,OAAA;AAAiD,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEjD;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,UAAUA,CACjBC,IAAoC,EACpCC,cAA8B,EACd;EAChB,MAAMC,OAAO,GAAGC,cAAK,CAACC,OAAO,CAAC,MAAM;IAClC,MAAMC,OAAO,GAAGC,iCAAQ,CAACC,cAAc;IACvC,OAAOF,OAAO,CAACG,cAAc,CAACR,IAAI,CAAC;IACnC;EACF,CAAC,EAAEC,cAAc,CAAC;EAElB,OAAOC,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASO,UAAUA,CACjBT,IAAkB,EAClBC,cAA8B,EACd;EAChB;EACA,OAAOE,cAAK,CAACC,OAAO,CAAC,MAAME,iCAAQ,CAACI,aAAa,CAACV,IAAI,CAAC,EAAEC,cAAc,CAAC;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMU,MAAM,GAAAC,OAAA,CAAAD,MAAA,gBAAGR,cAAK,CAACU,UAAU,CACpC,CACE;EAAEC,oBAAoB;EAAEC,qBAAqB;EAAE,GAAGC;AAAqB,CAAC,EACxEC,GAA+B,KAC5B;EACH,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,6BAAe,EAACL,oBAAoB,CAAC;EAC7D;AACJ;AACA;EACI,MAAMM,kBAAkB,GAAG,IAAAC,uCAAc,EAAC,KAAK,CAAC;;EAEhD;AACJ;AACA;EACI,MAAMC,OAAO,GAAGhB,iCAAQ,CAACI,aAAa,CAAC,CAACa,GAAW,EAAEC,KAAa,KAAK;IACrE,IAAIA,KAAK,EAAE;MACTC,OAAO,CAACD,KAAK,CAACD,GAAG,EAAEC,KAAK,CAACE,OAAO,IAAIC,IAAI,CAACC,SAAS,CAACJ,KAAK,CAAC,CAAC;IAC5D,CAAC,MAAM;MACLC,OAAO,CAACF,GAAG,CAACA,GAAG,CAAC;IAClB;EACF,CAAC,CAAC;;EAEF;AACJ;AACA;EACI,MAAMM,OAAO,GAAGpB,UAAU,CAACM,qBAAqB,EAAE,CAACA,qBAAqB,CAAC,CAAC;;EAE1E;AACJ;AACA;EACI,MAAMe,iBAAiB,GAAG/B,UAAU,CACjCgC,KAAoB,IAAK;IACxB,SAAS;;IACT,IAAI;MACF,MAAMC,KAAK,GAAGd,WAAW,CAACa,KAAK,CAAC;MAChC;MACA;MACAA,KAAK,CAACE,iBAAiB,CAAC,CAAC;MACzBJ,OAAO,CAACG,KAAK,EAAED,KAAK,CAAC,CAACG,OAAO,CAAC,MAAM;QAClC,SAAS;;QACT;QACAH,KAAK,CAACI,iBAAiB,CAAC,CAAC;MAC3B,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOX,KAAU,EAAE;MACnBF,OAAO,CAAC,kBAAkB,EAAEE,KAAK,CAAC;IACpC,CAAC,SAAS;MACRO,KAAK,CAACI,iBAAiB,CAAC,CAAC;MACzBf,kBAAkB,CAACgB,KAAK,GAAG,KAAK;IAClC;EACF,CAAC,EACD,CAAClB,WAAW,EAAEW,OAAO,CACvB,CAAC;;EAED;AACJ;AACA;AACA;AACA;EACI,SAASQ,QAAQA,CAACN,KAAY,EAAE;IAC9B,SAAS;;IACT,IAAIX,kBAAkB,CAACgB,KAAK,EAAE;IAC9B;IACAhB,kBAAkB,CAACgB,KAAK,GAAG,IAAI;IAC/B;IACA,MAAME,QAAQ,GAAGP,KAAsB;IACvCO,QAAQ,CAACL,iBAAiB,CAAC,CAAC;IAC5B;IACAH,iBAAiB,CAACQ,QAAQ,CAAC;EAC7B;;EAEA;AACJ;AACA;EACI,MAAMC,gBAAgB,GAAG,IAAAC,0CAAiB,EACvCT,KAAK,IAAK;IACT,SAAS;;IACTM,QAAQ,CAACN,KAAK,CAAC;EACjB,CAAC,EACD,CAACD,iBAAiB,CACpB,CAAC;;EAED;EACA;EACA;EACA;EACA;AACJ;AACA;EACI,MAAMW,OAAO,GAAG,IAAAC,mCAAU,EAAC3B,qBAAqB,EAAE,CAACA,qBAAqB,CAAC,CAAC;EAE1E,MAAM4B,YAAY,GAAG,IAAAH,0CAAiB,EACnCT,KAAK,IAAK;IACT,SAAS;;IACTU,OAAO,CAACvB,WAAW,CAACa,KAAK,CAAC,EAAEA,KAAK,CAAC;IAClC;IACA;IACA;IACA;EACF,CAAC,EACD,CAACU,OAAO,CACV,CAAC;EAED,oBACE,IAAA9C,WAAA,CAAAiD,GAAA,EAACpD,wBAAA,CAAAmB,MAAY;IAAA,GACPK,KAAK;IACTC,GAAG,EAAEA,GAAI;IACT4B,cAAc,EACZC,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAGR,gBAAgB,GAAGI,YAChD;IACDK,WAAW,EAAEF,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAG,KAAK,GAAG;EAAM,CACxD,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","Platform","Camera","VisionCamera","useFrameProcessor","Worklets","useRunOnJS","useSharedValue","useFaceDetector","jsx","_jsx","useWorklet","func","dependencyList","worklet","useMemo","context","defaultContext","createRunAsync","useRunInJS","createRunOnJS","forwardRef","faceDetectionOptions","faceDetectionCallback","props","ref","detectFaces","isAsyncContextBusy","logOnJs","log","error","console","message","JSON","stringify","runInJs","runOnAsyncContext","frame","faces","incrementRefCount","finally","decrementRefCount","value","runAsync","internal","processorAndroid","runOnJs","processorIOS","frameProcessor","OS","pixelFormat"],"sourceRoot":"../../src","sources":["Camera.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["useMemo","VisionCameraProxy","createFaceDetectorPlugin","options","plugin","initFrameProcessorPlugin","Error","detectFaces","frame","call","useFaceDetector"],"sourceRoot":"../../src","sources":["FaceDetector.ts"],"mappings":"AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,iBAAiB,QAAoB,4BAA4B;AA+H1E;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAwBA,CAC/BC,OAA8B,EACV;EACpB,MAAMC,MAAM,GAAGH,iBAAiB,CAACI,wBAAwB,CAAC,aAAa,EAAE;IACvE,GAAGF;EACL,CAAC,CAAC;EAEF,IAAI,CAACC,MAAM,EAAE;IACX,MAAM,IAAIE,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,OAAO;IACLC,WAAW,EAAGC,KAAY,IAAa;MACrC,SAAS;;MACT;MACA,OAAOJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;IAC3B;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,eAAeA,CAC7BP,OAA8B,EACV;EACpB,OAAOH,OAAO,CAAC,MAAME,wBAAwB,CAACC,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;AACpE","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","VisionCameraFaceDetectionModule","Proxy","get","Error","initTensor","modelPath","count","detectFromBase64","imageString"],"sourceRoot":"../../src","sources":["Tensor.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,uFAAuF,GACvFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,+BAA+B,GACnCN,aAAa,CAACM,+BAA+B,GACzCN,aAAa,CAACM,+BAA+B,GAC7C,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEP,OAAO,SAASQ,UAAUA,CAACC,SAAiB,EAAEC,KAAc,EAAmB;EAC7E,OAAON,+BAA+B,CAACI,UAAU,CAACC,SAAS,EAAEC,KAAK,CAAC;AACrE;AAEA,OAAO,SAASC,gBAAgBA,CAC9BC,WAAmB,EACO;EAC1B,OAAOR,+BAA+B,CAACO,gBAAgB,CAACC,WAAW,CAAC;AACtE","ignoreList":[]}
@@ -1,4 +0,0 @@
1
- export * from "./Camera.mjs";
2
- export * from "./FaceDetector.mjs";
3
- export * from "./Tensor.mjs";
4
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,cAAc,cAAU;AACxB,cAAc,oBAAgB;AAC9B,cAAc,cAAU","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../src/Camera.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,MAAM,IAAI,YAAY,EAGvB,MAAM,4BAA4B,CAAC;AAUpC,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EAEN,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AASjE,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA4C1E;;;;;GAKG;AACH,eAAO,MAAM,MAAM;2BA/CM,oBAAoB;2BACpB,YAAY;oDA+JpC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FaceDetector.d.ts","sourceRoot":"","sources":["../../../src/FaceDetector.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAE3E,KAAK,kBAAkB,GAAG;IACxB;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;CACvC,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,mBAAmB,EAAE,KAAK,EAAE,CAAC;IAC7B,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,oBAAoB,EAAE,KAAK,EAAE,CAAC;IAC9B,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,WAAW,EAAE,KAAK,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,KAAK,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;IAChB,YAAY,EAAE,KAAK,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAEtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4BD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,kBAAkB,CAEpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tensor.d.ts","sourceRoot":"","sources":["../../../src/Tensor.ts"],"names":[],"mappings":"AAoBA,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC"}
File without changes
File without changes
File without changes