one 2.6.21 → 2.7.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 (56) hide show
  1. package/android/src/main/java/dev/onejs/onenative/OneNativeCameraManager.kt +24 -0
  2. package/android/src/main/java/dev/onejs/onenative/OneNativeCameraView.kt +197 -2
  3. package/dist/cjs/platform/camera/index.cjs +3 -2
  4. package/dist/cjs/platform/camera/index.native.cjs +89 -3
  5. package/dist/cjs/platform/camera/index.native.js +89 -3
  6. package/dist/cjs/platform/camera/index.native.js.map +1 -1
  7. package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.cjs +37 -21
  8. package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.native.cjs +37 -21
  9. package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.native.js +37 -21
  10. package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.native.js.map +3 -3
  11. package/dist/cjs/router/router.cjs +4 -1
  12. package/dist/cjs/useHeaderHeight.native.cjs +5 -23
  13. package/dist/cjs/useHeaderHeight.native.js +5 -23
  14. package/dist/cjs/useHeaderHeight.native.js.map +1 -1
  15. package/dist/esm/platform/camera/index.mjs +4 -2
  16. package/dist/esm/platform/camera/index.mjs.map +1 -1
  17. package/dist/esm/platform/camera/index.native.js +90 -4
  18. package/dist/esm/platform/camera/index.native.js.map +1 -1
  19. package/dist/esm/platform/specs/OneNativeCameraNativeComponent.mjs +25 -9
  20. package/dist/esm/platform/specs/OneNativeCameraNativeComponent.mjs.map +3 -3
  21. package/dist/esm/platform/specs/OneNativeCameraNativeComponent.native.js +25 -9
  22. package/dist/esm/platform/specs/OneNativeCameraNativeComponent.native.js.map +3 -3
  23. package/dist/esm/router/router.mjs +5 -2
  24. package/dist/esm/router/router.mjs.map +1 -1
  25. package/dist/esm/useHeaderHeight.native.js +3 -21
  26. package/dist/esm/useHeaderHeight.native.js.map +1 -1
  27. package/ios/Nitro/HybridOneImageManipulator.swift +1 -1
  28. package/ios/OneNativeCameraComponentView.mm +28 -0
  29. package/ios/OneNativeCameraView.swift +163 -0
  30. package/package.json +27 -27
  31. package/src/index.ts +3 -0
  32. package/src/platform/camera/index.native.tsx +116 -12
  33. package/src/platform/camera/index.tsx +15 -4
  34. package/src/platform/camera/types.ts +22 -0
  35. package/src/platform/index.native.ts +4 -0
  36. package/src/platform/index.ts +4 -0
  37. package/src/platform/specs/OneNativeCameraNativeComponent.ts +35 -2
  38. package/src/router/router.ts +7 -4
  39. package/src/useHeaderHeight.native.ts +7 -0
  40. package/types/index.d.ts +1 -1
  41. package/types/index.d.ts.map +1 -1
  42. package/types/platform/camera/index.d.ts +3 -3
  43. package/types/platform/camera/index.d.ts.map +1 -1
  44. package/types/platform/camera/index.native.d.ts +3 -3
  45. package/types/platform/camera/index.native.d.ts.map +1 -1
  46. package/types/platform/camera/types.d.ts +18 -0
  47. package/types/platform/camera/types.d.ts.map +1 -1
  48. package/types/platform/index.d.ts +1 -1
  49. package/types/platform/index.d.ts.map +1 -1
  50. package/types/platform/index.native.d.ts +1 -1
  51. package/types/platform/index.native.d.ts.map +1 -1
  52. package/types/platform/specs/OneNativeCameraNativeComponent.d.ts +18 -2
  53. package/types/platform/specs/OneNativeCameraNativeComponent.d.ts.map +1 -1
  54. package/types/router/router.d.ts.map +1 -1
  55. package/types/useHeaderHeight.native.d.ts +2 -0
  56. package/types/useHeaderHeight.native.d.ts.map +1 -0
@@ -48,6 +48,29 @@ class OneNativeCameraManager :
48
48
  view.setPendingCodeTypes(types)
49
49
  }
50
50
 
51
+ @ReactProp(name = "flash")
52
+ override fun setFlash(view: OneNativeCameraView, value: String?) {
53
+ view.setPendingFlash(value ?: "off")
54
+ }
55
+
56
+ @ReactProp(name = "enableTorch", defaultBoolean = false)
57
+ override fun setEnableTorch(view: OneNativeCameraView, value: Boolean) {
58
+ view.setPendingTorch(value)
59
+ }
60
+
61
+ @ReactProp(name = "zoom", defaultDouble = 0.0)
62
+ override fun setZoom(view: OneNativeCameraView, value: Double) {
63
+ view.setPendingZoom(value)
64
+ }
65
+
66
+ override fun takePicture(view: OneNativeCameraView, requestId: Int, quality: Double, base64: Boolean) {
67
+ view.takePicture(requestId, quality, base64)
68
+ }
69
+
70
+ override fun receiveCommand(view: OneNativeCameraView, commandId: String, args: ReadableArray?) {
71
+ delegate.receiveCommand(view, commandId, args)
72
+ }
73
+
51
74
  override fun onAfterUpdateTransaction(view: OneNativeCameraView) {
52
75
  super.onAfterUpdateTransaction(view)
53
76
  view.applyPending()
@@ -63,6 +86,7 @@ class OneNativeCameraManager :
63
86
  (super.getExportedCustomDirectEventTypeConstants()?.toMutableMap() ?: mutableMapOf()).apply {
64
87
  put("topNativeCameraState", mapOf("registrationName" to "onNativeCameraState"))
65
88
  put("topNativeCameraCode", mapOf("registrationName" to "onNativeCameraCode"))
89
+ put("topNativeCameraPicture", mapOf("registrationName" to "onNativeCameraPicture"))
66
90
  }
67
91
 
68
92
  companion object {
@@ -2,10 +2,20 @@ package dev.onejs.onenative
2
2
 
3
3
  import android.Manifest
4
4
  import android.content.pm.PackageManager
5
+ import android.graphics.Bitmap
6
+ import android.graphics.BitmapFactory
7
+ import android.graphics.Matrix
8
+ import android.util.Base64
5
9
  import android.util.Size
10
+ import android.view.OrientationEventListener
11
+ import android.view.Surface
12
+ import androidx.camera.core.Camera
6
13
  import androidx.camera.core.CameraSelector
7
14
  import androidx.camera.core.ExperimentalGetImage
8
15
  import androidx.camera.core.ImageAnalysis
16
+ import androidx.camera.core.ImageCapture
17
+ import androidx.camera.core.ImageCaptureException
18
+ import androidx.camera.core.ImageProxy
9
19
  import androidx.camera.core.Preview
10
20
  import androidx.camera.lifecycle.ProcessCameraProvider
11
21
  import androidx.camera.view.PreviewView
@@ -19,6 +29,9 @@ import com.google.mlkit.vision.barcode.BarcodeScannerOptions
19
29
  import com.google.mlkit.vision.barcode.BarcodeScanning
20
30
  import com.google.mlkit.vision.barcode.common.Barcode
21
31
  import com.google.mlkit.vision.common.InputImage
32
+ import java.io.ByteArrayOutputStream
33
+ import java.io.File
34
+ import java.util.UUID
22
35
  import java.util.concurrent.Executors
23
36
 
24
37
  // Embedded camera preview with barcode events, the Android half of
@@ -41,10 +54,31 @@ class OneNativeCameraView(private val reactContext: ThemedReactContext) :
41
54
  private var active = false
42
55
  private var facing = "back"
43
56
  private var codeTypes: List<String> = emptyList()
57
+ private var flash = "off"
58
+ private var torch = false
59
+ private var zoom = 0.0
44
60
  private var generation = 0
45
61
  private var lastState = ""
46
62
  private var lastCode: String? = null
47
63
  private var provider: ProcessCameraProvider? = null
64
+ private var camera: Camera? = null
65
+ private var imageCapture: ImageCapture? = null
66
+ private var captureRotation = Surface.ROTATION_0
67
+
68
+ // captures follow the device's physical orientation, as CameraX documents
69
+ // for activities that handle configuration changes or lock orientation.
70
+ private val orientationListener = object : OrientationEventListener(reactContext) {
71
+ override fun onOrientationChanged(orientation: Int) {
72
+ if (orientation == ORIENTATION_UNKNOWN) return
73
+ captureRotation = when (orientation) {
74
+ in 45 until 135 -> Surface.ROTATION_270
75
+ in 135 until 225 -> Surface.ROTATION_180
76
+ in 225 until 315 -> Surface.ROTATION_90
77
+ else -> Surface.ROTATION_0
78
+ }
79
+ imageCapture?.targetRotation = captureRotation
80
+ }
81
+ }
48
82
 
49
83
  init {
50
84
  addView(previewView)
@@ -59,11 +93,33 @@ class OneNativeCameraView(private val reactContext: ThemedReactContext) :
59
93
  refresh()
60
94
  }
61
95
 
96
+ // flash, torch and zoom change the bound camera without rebinding.
97
+ fun configureCapture(flash: String, torch: Boolean, zoom: Double) {
98
+ this.flash = flash
99
+ this.torch = torch
100
+ this.zoom = zoom
101
+ applyCaptureSettings()
102
+ }
103
+
104
+ private fun applyCaptureSettings() {
105
+ imageCapture?.flashMode = when (flash) {
106
+ "on" -> ImageCapture.FLASH_MODE_ON
107
+ "auto" -> ImageCapture.FLASH_MODE_AUTO
108
+ else -> ImageCapture.FLASH_MODE_OFF
109
+ }
110
+ val bound = camera ?: return
111
+ if (bound.cameraInfo.hasFlashUnit()) bound.cameraControl.enableTorch(torch)
112
+ bound.cameraControl.setLinearZoom(zoom.toFloat())
113
+ }
114
+
62
115
  // Fabric sets each prop separately; batch them so one update transaction
63
116
  // rebinds capture at most once.
64
117
  private var pendingActive = false
65
118
  private var pendingFacing = "back"
66
119
  private var pendingCodeTypes: List<String> = emptyList()
120
+ private var pendingFlash = "off"
121
+ private var pendingTorch = false
122
+ private var pendingZoom = 0.0
67
123
 
68
124
  fun setPendingActive(value: Boolean) {
69
125
  pendingActive = value
@@ -77,7 +133,20 @@ class OneNativeCameraView(private val reactContext: ThemedReactContext) :
77
133
  pendingCodeTypes = value
78
134
  }
79
135
 
136
+ fun setPendingFlash(value: String) {
137
+ pendingFlash = value
138
+ }
139
+
140
+ fun setPendingTorch(value: Boolean) {
141
+ pendingTorch = value
142
+ }
143
+
144
+ fun setPendingZoom(value: Double) {
145
+ pendingZoom = value
146
+ }
147
+
80
148
  fun applyPending() {
149
+ configureCapture(pendingFlash, pendingTorch, pendingZoom)
81
150
  configure(pendingActive, pendingFacing, pendingCodeTypes)
82
151
  }
83
152
 
@@ -85,16 +154,109 @@ class OneNativeCameraView(private val reactContext: ThemedReactContext) :
85
154
  active = false
86
155
  facing = "back"
87
156
  codeTypes = emptyList()
157
+ flash = "off"
158
+ torch = false
159
+ zoom = 0.0
88
160
  lastCode = null
89
161
  refresh()
90
162
  }
91
163
 
164
+ fun takePicture(requestId: Int, quality: Double, base64: Boolean) {
165
+ val capture = imageCapture
166
+ if (capture == null || lastState != "ready" && lastState != "unsupported") {
167
+ val state = lastState.ifEmpty { "waiting" }
168
+ emitPictureError(requestId, "E_CAMERA_NOT_READY", "CameraView is not ready to take a picture (state: $state)")
169
+ return
170
+ }
171
+ val current = generation
172
+ capture.takePicture(
173
+ sharedCaptureExecutor,
174
+ object : ImageCapture.OnImageCapturedCallback() {
175
+ override fun onCaptureSuccess(image: ImageProxy) {
176
+ val result = try {
177
+ savePicture(image, quality, base64)
178
+ } catch (e: Exception) {
179
+ null
180
+ } finally {
181
+ image.close()
182
+ }
183
+ post {
184
+ when {
185
+ generation != current ->
186
+ emitPictureError(requestId, "E_CAMERA_INACTIVE", "CameraView stopped before the picture was taken")
187
+ result == null ->
188
+ emitPictureError(requestId, "E_CAMERA_CAPTURE", "The camera returned no image data")
189
+ else -> dispatchPicture(requestId, result, "")
190
+ }
191
+ }
192
+ }
193
+
194
+ override fun onError(exception: ImageCaptureException) {
195
+ post {
196
+ if (generation != current) {
197
+ emitPictureError(requestId, "E_CAMERA_INACTIVE", "CameraView stopped before the picture was taken")
198
+ } else {
199
+ emitPictureError(requestId, "E_CAMERA_CAPTURE", exception.message ?: "The capture failed")
200
+ }
201
+ }
202
+ }
203
+ },
204
+ )
205
+ }
206
+
207
+ private class SavedPicture(val uri: String, val width: Int, val height: Int, val base64: String)
208
+
209
+ // decodes the captured jpeg, turns it upright and re-encodes it at the
210
+ // requested quality into cache/Camera, as Expo's camera does.
211
+ private fun savePicture(image: ImageProxy, quality: Double, base64: Boolean): SavedPicture? {
212
+ val buffer = image.planes.firstOrNull()?.buffer ?: return null
213
+ val bytes = ByteArray(buffer.remaining())
214
+ buffer.get(bytes)
215
+ val decoded = BitmapFactory.decodeByteArray(bytes, 0, bytes.size) ?: return null
216
+ val rotation = image.imageInfo.rotationDegrees
217
+ val upright = if (rotation == 0) {
218
+ decoded
219
+ } else {
220
+ Bitmap.createBitmap(
221
+ decoded, 0, 0, decoded.width, decoded.height,
222
+ Matrix().apply { postRotate(rotation.toFloat()) }, true,
223
+ )
224
+ }
225
+ val encoded = ByteArrayOutputStream().use { stream ->
226
+ upright.compress(Bitmap.CompressFormat.JPEG, (quality * 100).toInt(), stream)
227
+ stream.toByteArray()
228
+ }
229
+ val directory = File(reactContext.cacheDir, "Camera").apply { mkdirs() }
230
+ val file = File(directory, "${UUID.randomUUID()}.jpg")
231
+ file.writeBytes(encoded)
232
+ return SavedPicture(
233
+ uri = android.net.Uri.fromFile(file).toString(),
234
+ width = upright.width,
235
+ height = upright.height,
236
+ base64 = if (base64) Base64.encodeToString(encoded, Base64.NO_WRAP) else "",
237
+ )
238
+ }
239
+
240
+ private fun emitPictureError(requestId: Int, code: String, message: String) {
241
+ dispatchPicture(requestId, null, "$code: $message")
242
+ }
243
+
244
+ private fun dispatchPicture(requestId: Int, picture: SavedPicture?, error: String) {
245
+ if (id == NO_ID) return
246
+ val dispatcher = UIManagerHelper.getEventDispatcherForReactTag(reactContext, id) ?: return
247
+ dispatcher.dispatchEvent(
248
+ OneNativeCameraPictureEvent(UIManagerHelper.getSurfaceId(this), id, requestId, picture?.uri ?: "",
249
+ picture?.width ?: 0, picture?.height ?: 0, picture?.base64 ?: "", error)
250
+ )
251
+ }
252
+
92
253
  fun replayState() {
93
254
  if (lastState.isNotEmpty()) dispatchState(lastState)
94
255
  }
95
256
 
96
257
  override fun onAttachedToWindow() {
97
258
  super.onAttachedToWindow()
259
+ orientationListener.enable()
98
260
  refresh()
99
261
  }
100
262
 
@@ -104,6 +266,7 @@ class OneNativeCameraView(private val reactContext: ThemedReactContext) :
104
266
  // the previous one again.
105
267
  lastCode = null
106
268
  releaseSession()
269
+ orientationListener.disable()
107
270
  super.onDetachedFromWindow()
108
271
  }
109
272
 
@@ -135,6 +298,8 @@ class OneNativeCameraView(private val reactContext: ThemedReactContext) :
135
298
  // unbinding a torn-down provider is a no-op for state purposes.
136
299
  }
137
300
  provider = null
301
+ camera = null
302
+ imageCapture = null
138
303
  }
139
304
 
140
305
  private fun refresh() {
@@ -193,6 +358,10 @@ class OneNativeCameraView(private val reactContext: ThemedReactContext) :
193
358
  try {
194
359
  val preview = Preview.Builder().build()
195
360
  preview.setSurfaceProvider(previewView.surfaceProvider)
361
+ val capture = ImageCapture.Builder()
362
+ .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
363
+ .setTargetRotation(captureRotation)
364
+ .build()
196
365
  cameraProvider.unbindAll()
197
366
  if (!unsupported && formats.isNotEmpty()) {
198
367
  val options = BarcodeScannerOptions.Builder()
@@ -204,11 +373,13 @@ class OneNativeCameraView(private val reactContext: ThemedReactContext) :
204
373
  .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
205
374
  .build()
206
375
  analysis.setAnalyzer(sharedAnalyzerExecutor, createAnalyzer(scanner, current))
207
- cameraProvider.bindToLifecycle(owner, selector, preview, analysis)
376
+ camera = cameraProvider.bindToLifecycle(owner, selector, preview, capture, analysis)
208
377
  } else {
209
- cameraProvider.bindToLifecycle(owner, selector, preview)
378
+ camera = cameraProvider.bindToLifecycle(owner, selector, preview, capture)
210
379
  }
211
380
  provider = cameraProvider
381
+ imageCapture = capture
382
+ applyCaptureSettings()
212
383
  emitState(if (unsupported) "unsupported" else "ready")
213
384
  } catch (e: Exception) {
214
385
  try {
@@ -250,6 +421,7 @@ class OneNativeCameraView(private val reactContext: ThemedReactContext) :
250
421
 
251
422
  companion object {
252
423
  private val sharedAnalyzerExecutor = Executors.newSingleThreadExecutor()
424
+ private val sharedCaptureExecutor = Executors.newSingleThreadExecutor()
253
425
 
254
426
  private val FORMAT_BY_NAME: Map<String, Int> = mapOf(
255
427
  "qr" to Barcode.FORMAT_QR_CODE,
@@ -292,3 +464,26 @@ private class OneNativeCameraCodeEvent(
292
464
  putString("data", data)
293
465
  }
294
466
  }
467
+
468
+ private class OneNativeCameraPictureEvent(
469
+ surfaceId: Int,
470
+ viewTag: Int,
471
+ private val requestId: Int,
472
+ private val uri: String,
473
+ private val width: Int,
474
+ private val height: Int,
475
+ private val base64: String,
476
+ private val error: String,
477
+ ) : Event<OneNativeCameraPictureEvent>(surfaceId, viewTag) {
478
+ override fun getEventName(): String = "topNativeCameraPicture"
479
+ override fun canCoalesce(): Boolean = false
480
+ override fun getEventData() =
481
+ Arguments.createMap().apply {
482
+ putInt("requestId", requestId)
483
+ putString("uri", uri)
484
+ putInt("width", width)
485
+ putInt("height", height)
486
+ putString("base64", base64)
487
+ putString("error", error)
488
+ }
489
+ }
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var camera_exports = {};
22
22
  __export(camera_exports, { CameraView: () => CameraView });
23
23
  module.exports = __toCommonJS(camera_exports);
24
- function CameraView(_props) {
24
+ var import_react = require("react");
25
+ const CameraView = (0, import_react.forwardRef)(function CameraView2() {
25
26
  throw new Error("CameraView requires a native build");
26
- }
27
+ });
@@ -30,8 +30,17 @@ var index_native_exports = {};
30
30
  __export(index_native_exports, { CameraView: () => CameraView });
31
31
  module.exports = __toCommonJS(index_native_exports);
32
32
  var import_jsx_runtime = require("react/jsx-runtime");
33
+ var import_react = require("react");
33
34
  var import_react_native = require("react-native");
34
35
  var import_OneNativeCameraNativeComponent = __toESM(require("../specs/OneNativeCameraNativeComponent.native.js"), 1);
36
+ var nextRequestId = 1;
37
+ function codedError(code, message) {
38
+ return Object.assign(new Error(message), { code });
39
+ }
40
+ function nativeError(value) {
41
+ var coded = /^((?:E|ERR)_[A-Z0-9_]+): ([\s\S]*)$/.exec(value);
42
+ return coded ? codedError(coded[1], coded[2]) : new Error(value);
43
+ }
35
44
  function cameraState(value) {
36
45
  switch (value) {
37
46
  case "inactive":
@@ -62,8 +71,8 @@ function codeType(value) {
62
71
  if (!isCodeType(value)) throw new Error(`CameraView received an unknown code type: ${value}`);
63
72
  return value;
64
73
  }
65
- function CameraView(param) {
66
- var { active = true, facing = "back", codeTypes = ["qr"], onStateChange, onCodeScanned, ...viewProps } = param;
74
+ var CameraView = /* @__PURE__ */ (0, import_react.forwardRef)(function CameraView2(param, ref) {
75
+ var { active = true, facing = "back", codeTypes = ["qr"], flash = "off", enableTorch = false, zoom = 0, onStateChange, onCodeScanned, ...viewProps } = param;
67
76
  if (import_react_native.Platform.OS !== "ios" && import_react_native.Platform.OS !== "android") throw new Error("CameraView requires a native build");
68
77
  if (typeof active !== "boolean") throw new TypeError("CameraView.active must be a boolean");
69
78
  if (facing !== "back" && facing !== "front") {
@@ -74,11 +83,71 @@ function CameraView(param) {
74
83
  })) {
75
84
  throw new TypeError("CameraView.codeTypes contains an unsupported code type");
76
85
  }
86
+ if (flash !== "off" && flash !== "on" && flash !== "auto") {
87
+ throw new TypeError("CameraView.flash must be off, on or auto");
88
+ }
89
+ if (typeof enableTorch !== "boolean") {
90
+ throw new TypeError("CameraView.enableTorch must be a boolean");
91
+ }
92
+ if (typeof zoom !== "number" || !(zoom >= 0 && zoom <= 1)) {
93
+ throw new RangeError("CameraView.zoom must be a number from 0 to 1");
94
+ }
95
+ var nativeRef = (0, import_react.useRef)(null);
96
+ var pending = (0, import_react.useRef)(/* @__PURE__ */ new Map());
97
+ (0, import_react.useEffect)(function() {
98
+ var requests = pending.current;
99
+ return function() {
100
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
101
+ try {
102
+ for (var _iterator = requests.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
103
+ var request = _step.value;
104
+ request.reject(codedError("E_CAMERA_UNMOUNTED", "CameraView unmounted before the picture was taken"));
105
+ }
106
+ } catch (err) {
107
+ _didIteratorError = true;
108
+ _iteratorError = err;
109
+ } finally {
110
+ try {
111
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
112
+ _iterator.return();
113
+ }
114
+ } finally {
115
+ if (_didIteratorError) {
116
+ throw _iteratorError;
117
+ }
118
+ }
119
+ }
120
+ requests.clear();
121
+ };
122
+ }, []);
123
+ (0, import_react.useImperativeHandle)(ref, function() {
124
+ return { takePicture() {
125
+ var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
126
+ var { quality = 1, base64 = false } = options;
127
+ if (typeof quality !== "number" || !(quality >= 0 && quality <= 1)) return Promise.reject(new RangeError("takePicture quality must be a number from 0 to 1"));
128
+ if (typeof base64 !== "boolean") return Promise.reject(new TypeError("takePicture base64 must be a boolean"));
129
+ var view = nativeRef.current;
130
+ if (!view) return Promise.reject(codedError("E_CAMERA_UNMOUNTED", "CameraView is not mounted"));
131
+ var requestId = nextRequestId++;
132
+ return new Promise(function(resolve, reject) {
133
+ pending.current.set(requestId, {
134
+ resolve,
135
+ reject,
136
+ base64
137
+ });
138
+ import_OneNativeCameraNativeComponent.Commands.takePicture(view, requestId, quality, base64);
139
+ });
140
+ } };
141
+ }, []);
77
142
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneNativeCameraNativeComponent.default, {
78
143
  ...viewProps,
144
+ ref: nativeRef,
79
145
  active,
80
146
  facing,
81
147
  codeTypes: [...new Set(codeTypes)],
148
+ flash,
149
+ enableTorch,
150
+ zoom,
82
151
  onNativeCameraState: function onNativeCameraState(param2) {
83
152
  var { nativeEvent } = param2;
84
153
  return onStateChange === null || onStateChange === void 0 ? void 0 : onStateChange(cameraState(nativeEvent.state));
@@ -89,6 +158,23 @@ function CameraView(param) {
89
158
  type: codeType(nativeEvent.type),
90
159
  data: nativeEvent.data
91
160
  });
161
+ },
162
+ onNativeCameraPicture: function onNativeCameraPicture(param2) {
163
+ var { nativeEvent } = param2;
164
+ var request = pending.current.get(nativeEvent.requestId);
165
+ if (!request) return;
166
+ pending.current.delete(nativeEvent.requestId);
167
+ if (nativeEvent.error) {
168
+ request.reject(nativeError(nativeEvent.error));
169
+ return;
170
+ }
171
+ request.resolve({
172
+ uri: nativeEvent.uri,
173
+ width: nativeEvent.width,
174
+ height: nativeEvent.height,
175
+ format: "jpg",
176
+ ...request.base64 ? { base64: nativeEvent.base64 } : {}
177
+ });
92
178
  }
93
179
  });
94
- }
180
+ });
@@ -30,8 +30,17 @@ var index_native_exports = {};
30
30
  __export(index_native_exports, { CameraView: () => CameraView });
31
31
  module.exports = __toCommonJS(index_native_exports);
32
32
  var import_jsx_runtime = require("react/jsx-runtime");
33
+ var import_react = require("react");
33
34
  var import_react_native = require("react-native");
34
35
  var import_OneNativeCameraNativeComponent = __toESM(require("../specs/OneNativeCameraNativeComponent.native.js"), 1);
36
+ var nextRequestId = 1;
37
+ function codedError(code, message) {
38
+ return Object.assign(new Error(message), { code });
39
+ }
40
+ function nativeError(value) {
41
+ var coded = /^((?:E|ERR)_[A-Z0-9_]+): ([\s\S]*)$/.exec(value);
42
+ return coded ? codedError(coded[1], coded[2]) : new Error(value);
43
+ }
35
44
  function cameraState(value) {
36
45
  switch (value) {
37
46
  case "inactive":
@@ -62,8 +71,8 @@ function codeType(value) {
62
71
  if (!isCodeType(value)) throw new Error(`CameraView received an unknown code type: ${value}`);
63
72
  return value;
64
73
  }
65
- function CameraView(param) {
66
- var { active = true, facing = "back", codeTypes = ["qr"], onStateChange, onCodeScanned, ...viewProps } = param;
74
+ var CameraView = /* @__PURE__ */ (0, import_react.forwardRef)(function CameraView2(param, ref) {
75
+ var { active = true, facing = "back", codeTypes = ["qr"], flash = "off", enableTorch = false, zoom = 0, onStateChange, onCodeScanned, ...viewProps } = param;
67
76
  if (import_react_native.Platform.OS !== "ios" && import_react_native.Platform.OS !== "android") throw new Error("CameraView requires a native build");
68
77
  if (typeof active !== "boolean") throw new TypeError("CameraView.active must be a boolean");
69
78
  if (facing !== "back" && facing !== "front") {
@@ -74,11 +83,71 @@ function CameraView(param) {
74
83
  })) {
75
84
  throw new TypeError("CameraView.codeTypes contains an unsupported code type");
76
85
  }
86
+ if (flash !== "off" && flash !== "on" && flash !== "auto") {
87
+ throw new TypeError("CameraView.flash must be off, on or auto");
88
+ }
89
+ if (typeof enableTorch !== "boolean") {
90
+ throw new TypeError("CameraView.enableTorch must be a boolean");
91
+ }
92
+ if (typeof zoom !== "number" || !(zoom >= 0 && zoom <= 1)) {
93
+ throw new RangeError("CameraView.zoom must be a number from 0 to 1");
94
+ }
95
+ var nativeRef = (0, import_react.useRef)(null);
96
+ var pending = (0, import_react.useRef)(/* @__PURE__ */ new Map());
97
+ (0, import_react.useEffect)(function() {
98
+ var requests = pending.current;
99
+ return function() {
100
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
101
+ try {
102
+ for (var _iterator = requests.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
103
+ var request = _step.value;
104
+ request.reject(codedError("E_CAMERA_UNMOUNTED", "CameraView unmounted before the picture was taken"));
105
+ }
106
+ } catch (err) {
107
+ _didIteratorError = true;
108
+ _iteratorError = err;
109
+ } finally {
110
+ try {
111
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
112
+ _iterator.return();
113
+ }
114
+ } finally {
115
+ if (_didIteratorError) {
116
+ throw _iteratorError;
117
+ }
118
+ }
119
+ }
120
+ requests.clear();
121
+ };
122
+ }, []);
123
+ (0, import_react.useImperativeHandle)(ref, function() {
124
+ return { takePicture() {
125
+ var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
126
+ var { quality = 1, base64 = false } = options;
127
+ if (typeof quality !== "number" || !(quality >= 0 && quality <= 1)) return Promise.reject(new RangeError("takePicture quality must be a number from 0 to 1"));
128
+ if (typeof base64 !== "boolean") return Promise.reject(new TypeError("takePicture base64 must be a boolean"));
129
+ var view = nativeRef.current;
130
+ if (!view) return Promise.reject(codedError("E_CAMERA_UNMOUNTED", "CameraView is not mounted"));
131
+ var requestId = nextRequestId++;
132
+ return new Promise(function(resolve, reject) {
133
+ pending.current.set(requestId, {
134
+ resolve,
135
+ reject,
136
+ base64
137
+ });
138
+ import_OneNativeCameraNativeComponent.Commands.takePicture(view, requestId, quality, base64);
139
+ });
140
+ } };
141
+ }, []);
77
142
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneNativeCameraNativeComponent.default, {
78
143
  ...viewProps,
144
+ ref: nativeRef,
79
145
  active,
80
146
  facing,
81
147
  codeTypes: [...new Set(codeTypes)],
148
+ flash,
149
+ enableTorch,
150
+ zoom,
82
151
  onNativeCameraState: function onNativeCameraState(param2) {
83
152
  var { nativeEvent } = param2;
84
153
  return onStateChange === null || onStateChange === void 0 ? void 0 : onStateChange(cameraState(nativeEvent.state));
@@ -89,8 +158,25 @@ function CameraView(param) {
89
158
  type: codeType(nativeEvent.type),
90
159
  data: nativeEvent.data
91
160
  });
161
+ },
162
+ onNativeCameraPicture: function onNativeCameraPicture(param2) {
163
+ var { nativeEvent } = param2;
164
+ var request = pending.current.get(nativeEvent.requestId);
165
+ if (!request) return;
166
+ pending.current.delete(nativeEvent.requestId);
167
+ if (nativeEvent.error) {
168
+ request.reject(nativeError(nativeEvent.error));
169
+ return;
170
+ }
171
+ request.resolve({
172
+ uri: nativeEvent.uri,
173
+ width: nativeEvent.width,
174
+ height: nativeEvent.height,
175
+ format: "jpg",
176
+ ...request.base64 ? { base64: nativeEvent.base64 } : {}
177
+ });
92
178
  }
93
179
  });
94
- }
180
+ });
95
181
 
96
182
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.native.js","names":[],"sources":["cjs/platform/camera/index.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_native_exports = {};\n__export(index_native_exports, {\n CameraView: () => CameraView\n});\nmodule.exports = __toCommonJS(index_native_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_react_native = require(\"react-native\");\nvar import_OneNativeCameraNativeComponent = __toESM(require(\"../specs/OneNativeCameraNativeComponent\"), 1);\nfunction cameraState(value) {\n switch (value) {\n case \"inactive\":\n case \"permission-required\":\n case \"unavailable\":\n case \"ready\":\n case \"unsupported\":\n case \"failed\":\n return value;\n default:\n throw new Error(`CameraView received an unknown native state: ${value}`);\n }\n}\nfunction isCodeType(value) {\n switch (value) {\n case \"qr\":\n case \"ean13\":\n case \"ean8\":\n case \"upce\":\n case \"code128\":\n case \"code39\":\n case \"code93\":\n case \"pdf417\":\n case \"aztec\":\n case \"dataMatrix\":\n return true;\n default:\n return false;\n }\n}\nfunction codeType(value) {\n if (!isCodeType(value)) throw new Error(`CameraView received an unknown code type: ${value}`);\n return value;\n}\nfunction CameraView(param) {\n var { active = true, facing = \"back\", codeTypes = [\n \"qr\"\n ], onStateChange, onCodeScanned, ...viewProps } = param;\n if (import_react_native.Platform.OS !== \"ios\" && import_react_native.Platform.OS !== \"android\") throw new Error(\"CameraView requires a native build\");\n if (typeof active !== \"boolean\") throw new TypeError(\"CameraView.active must be a boolean\");\n if (facing !== \"back\" && facing !== \"front\") {\n throw new TypeError(\"CameraView.facing must be back or front\");\n }\n if (!Array.isArray(codeTypes) || codeTypes.some(function(type) {\n return !isCodeType(type);\n })) {\n throw new TypeError(\"CameraView.codeTypes contains an unsupported code type\");\n }\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneNativeCameraNativeComponent.default, {\n ...viewProps,\n active,\n facing,\n codeTypes: [\n ...new Set(codeTypes)\n ],\n onNativeCameraState: function onNativeCameraState(param2) {\n var { nativeEvent } = param2;\n return onStateChange === null || onStateChange === void 0 ? void 0 : onStateChange(cameraState(nativeEvent.state));\n },\n onNativeCameraCode: function onNativeCameraCode(param2) {\n var { nativeEvent } = param2;\n return onCodeScanned === null || onCodeScanned === void 0 ? void 0 : onCodeScanned({\n type: codeType(nativeEvent.type),\n data: nativeEvent.data\n });\n }\n });\n}\n//# sourceMappingURL=index.native.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.native.js","names":[],"sources":["cjs/platform/camera/index.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_native_exports = {};\n__export(index_native_exports, {\n CameraView: () => CameraView\n});\nmodule.exports = __toCommonJS(index_native_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_react = require(\"react\");\nvar import_react_native = require(\"react-native\");\nvar import_OneNativeCameraNativeComponent = __toESM(require(\"../specs/OneNativeCameraNativeComponent\"), 1);\nvar nextRequestId = 1;\nfunction codedError(code, message) {\n return Object.assign(new Error(message), {\n code\n });\n}\nfunction nativeError(value) {\n var coded = /^((?:E|ERR)_[A-Z0-9_]+): ([\\s\\S]*)$/.exec(value);\n return coded ? codedError(coded[1], coded[2]) : new Error(value);\n}\nfunction cameraState(value) {\n switch (value) {\n case \"inactive\":\n case \"permission-required\":\n case \"unavailable\":\n case \"ready\":\n case \"unsupported\":\n case \"failed\":\n return value;\n default:\n throw new Error(`CameraView received an unknown native state: ${value}`);\n }\n}\nfunction isCodeType(value) {\n switch (value) {\n case \"qr\":\n case \"ean13\":\n case \"ean8\":\n case \"upce\":\n case \"code128\":\n case \"code39\":\n case \"code93\":\n case \"pdf417\":\n case \"aztec\":\n case \"dataMatrix\":\n return true;\n default:\n return false;\n }\n}\nfunction codeType(value) {\n if (!isCodeType(value)) throw new Error(`CameraView received an unknown code type: ${value}`);\n return value;\n}\nvar CameraView = /* @__PURE__ */ (0, import_react.forwardRef)(function CameraView2(param, ref) {\n var { active = true, facing = \"back\", codeTypes = [\n \"qr\"\n ], flash = \"off\", enableTorch = false, zoom = 0, onStateChange, onCodeScanned, ...viewProps } = param;\n if (import_react_native.Platform.OS !== \"ios\" && import_react_native.Platform.OS !== \"android\") throw new Error(\"CameraView requires a native build\");\n if (typeof active !== \"boolean\") throw new TypeError(\"CameraView.active must be a boolean\");\n if (facing !== \"back\" && facing !== \"front\") {\n throw new TypeError(\"CameraView.facing must be back or front\");\n }\n if (!Array.isArray(codeTypes) || codeTypes.some(function(type) {\n return !isCodeType(type);\n })) {\n throw new TypeError(\"CameraView.codeTypes contains an unsupported code type\");\n }\n if (flash !== \"off\" && flash !== \"on\" && flash !== \"auto\") {\n throw new TypeError(\"CameraView.flash must be off, on or auto\");\n }\n if (typeof enableTorch !== \"boolean\") {\n throw new TypeError(\"CameraView.enableTorch must be a boolean\");\n }\n if (typeof zoom !== \"number\" || !(zoom >= 0 && zoom <= 1)) {\n throw new RangeError(\"CameraView.zoom must be a number from 0 to 1\");\n }\n var nativeRef = (0, import_react.useRef)(null);\n var pending = (0, import_react.useRef)(/* @__PURE__ */ new Map());\n (0, import_react.useEffect)(function() {\n var requests = pending.current;\n return function() {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = requests.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var request = _step.value;\n request.reject(codedError(\"E_CAMERA_UNMOUNTED\", \"CameraView unmounted before the picture was taken\"));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n requests.clear();\n };\n }, []);\n (0, import_react.useImperativeHandle)(ref, function() {\n return {\n takePicture() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n var { quality = 1, base64 = false } = options;\n if (typeof quality !== \"number\" || !(quality >= 0 && quality <= 1)) return Promise.reject(new RangeError(\"takePicture quality must be a number from 0 to 1\"));\n if (typeof base64 !== \"boolean\") return Promise.reject(new TypeError(\"takePicture base64 must be a boolean\"));\n var view = nativeRef.current;\n if (!view) return Promise.reject(codedError(\"E_CAMERA_UNMOUNTED\", \"CameraView is not mounted\"));\n var requestId = nextRequestId++;\n return new Promise(function(resolve, reject) {\n pending.current.set(requestId, {\n resolve,\n reject,\n base64\n });\n import_OneNativeCameraNativeComponent.Commands.takePicture(view, requestId, quality, base64);\n });\n }\n };\n }, []);\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneNativeCameraNativeComponent.default, {\n ...viewProps,\n ref: nativeRef,\n active,\n facing,\n codeTypes: [\n ...new Set(codeTypes)\n ],\n flash,\n enableTorch,\n zoom,\n onNativeCameraState: function onNativeCameraState(param2) {\n var { nativeEvent } = param2;\n return onStateChange === null || onStateChange === void 0 ? void 0 : onStateChange(cameraState(nativeEvent.state));\n },\n onNativeCameraCode: function onNativeCameraCode(param2) {\n var { nativeEvent } = param2;\n return onCodeScanned === null || onCodeScanned === void 0 ? void 0 : onCodeScanned({\n type: codeType(nativeEvent.type),\n data: nativeEvent.data\n });\n },\n onNativeCameraPicture: function onNativeCameraPicture(param2) {\n var { nativeEvent } = param2;\n var request = pending.current.get(nativeEvent.requestId);\n if (!request) return;\n pending.current.delete(nativeEvent.requestId);\n if (nativeEvent.error) {\n request.reject(nativeError(nativeEvent.error));\n return;\n }\n request.resolve({\n uri: nativeEvent.uri,\n width: nativeEvent.width,\n height: nativeEvent.height,\n format: \"jpg\",\n ...request.base64 ? {\n base64: nativeEvent.base64\n } : {}\n });\n }\n });\n});\n//# sourceMappingURL=index.native.js.map\n"],"mappings":"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"}