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.
- package/android/src/main/java/dev/onejs/onenative/OneNativeCameraManager.kt +24 -0
- package/android/src/main/java/dev/onejs/onenative/OneNativeCameraView.kt +197 -2
- package/dist/cjs/platform/camera/index.cjs +3 -2
- package/dist/cjs/platform/camera/index.native.cjs +89 -3
- package/dist/cjs/platform/camera/index.native.js +89 -3
- package/dist/cjs/platform/camera/index.native.js.map +1 -1
- package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.cjs +37 -21
- package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.native.cjs +37 -21
- package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.native.js +37 -21
- package/dist/cjs/platform/specs/OneNativeCameraNativeComponent.native.js.map +3 -3
- package/dist/cjs/router/router.cjs +4 -1
- package/dist/cjs/useHeaderHeight.native.cjs +5 -23
- package/dist/cjs/useHeaderHeight.native.js +5 -23
- package/dist/cjs/useHeaderHeight.native.js.map +1 -1
- package/dist/esm/platform/camera/index.mjs +4 -2
- package/dist/esm/platform/camera/index.mjs.map +1 -1
- package/dist/esm/platform/camera/index.native.js +90 -4
- package/dist/esm/platform/camera/index.native.js.map +1 -1
- package/dist/esm/platform/specs/OneNativeCameraNativeComponent.mjs +25 -9
- package/dist/esm/platform/specs/OneNativeCameraNativeComponent.mjs.map +3 -3
- package/dist/esm/platform/specs/OneNativeCameraNativeComponent.native.js +25 -9
- package/dist/esm/platform/specs/OneNativeCameraNativeComponent.native.js.map +3 -3
- package/dist/esm/router/router.mjs +5 -2
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/useHeaderHeight.native.js +3 -21
- package/dist/esm/useHeaderHeight.native.js.map +1 -1
- package/ios/Nitro/HybridOneImageManipulator.swift +1 -1
- package/ios/OneNativeCameraComponentView.mm +28 -0
- package/ios/OneNativeCameraView.swift +163 -0
- package/package.json +27 -27
- package/src/index.ts +3 -0
- package/src/platform/camera/index.native.tsx +116 -12
- package/src/platform/camera/index.tsx +15 -4
- package/src/platform/camera/types.ts +22 -0
- package/src/platform/index.native.ts +4 -0
- package/src/platform/index.ts +4 -0
- package/src/platform/specs/OneNativeCameraNativeComponent.ts +35 -2
- package/src/router/router.ts +7 -4
- package/src/useHeaderHeight.native.ts +7 -0
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/platform/camera/index.d.ts +3 -3
- package/types/platform/camera/index.d.ts.map +1 -1
- package/types/platform/camera/index.native.d.ts +3 -3
- package/types/platform/camera/index.native.d.ts.map +1 -1
- package/types/platform/camera/types.d.ts +18 -0
- package/types/platform/camera/types.d.ts.map +1 -1
- package/types/platform/index.d.ts +1 -1
- package/types/platform/index.d.ts.map +1 -1
- package/types/platform/index.native.d.ts +1 -1
- package/types/platform/index.native.d.ts.map +1 -1
- package/types/platform/specs/OneNativeCameraNativeComponent.d.ts +18 -2
- package/types/platform/specs/OneNativeCameraNativeComponent.d.ts.map +1 -1
- package/types/router/router.d.ts.map +1 -1
- package/types/useHeaderHeight.native.d.ts +2 -0
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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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"}
|