capacitor-camera-module 0.0.24 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/android/src/main/java/com/eddieagvictoria/cameramodule/CameraModulePlugin.java +82 -6
- package/dist/docs.json +10 -0
- package/dist/esm/definitions.d.ts +4 -0
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/web.d.ts +1 -0
- package/dist/esm/web.js +3 -0
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +3 -0
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +3 -0
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -27,6 +27,7 @@ npx cap sync
|
|
|
27
27
|
* [`checkAndRequestGalleryPermission()`](#checkandrequestgallerypermission)
|
|
28
28
|
* [`pickImageBase64()`](#pickimagebase64)
|
|
29
29
|
* [`getLastGalleryImage()`](#getlastgalleryimage)
|
|
30
|
+
* [`takePhotoBase64()`](#takephotobase64)
|
|
30
31
|
* [Interfaces](#interfaces)
|
|
31
32
|
|
|
32
33
|
</docgen-index>
|
|
@@ -190,6 +191,17 @@ getLastGalleryImage() => Promise<LastGalleryImageResult>
|
|
|
190
191
|
--------------------
|
|
191
192
|
|
|
192
193
|
|
|
194
|
+
### takePhotoBase64()
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
takePhotoBase64() => Promise<{ base64: string; mimeType: string; }>
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Returns:** <code>Promise<{ base64: string; mimeType: string; }></code>
|
|
201
|
+
|
|
202
|
+
--------------------
|
|
203
|
+
|
|
204
|
+
|
|
193
205
|
### Interfaces
|
|
194
206
|
|
|
195
207
|
|
|
@@ -47,6 +47,15 @@ import android.graphics.Bitmap;
|
|
|
47
47
|
import android.graphics.BitmapFactory;
|
|
48
48
|
import android.graphics.Matrix;
|
|
49
49
|
|
|
50
|
+
import androidx.camera.core.ImageCapture;
|
|
51
|
+
import androidx.camera.core.ImageCaptureException;
|
|
52
|
+
|
|
53
|
+
import androidx.camera.core.ImageProxy;
|
|
54
|
+
import android.graphics.ImageFormat;
|
|
55
|
+
import android.media.Image;
|
|
56
|
+
|
|
57
|
+
import java.nio.ByteBuffer;
|
|
58
|
+
import androidx.annotation.NonNull;
|
|
50
59
|
|
|
51
60
|
@CapacitorPlugin(
|
|
52
61
|
name = "CameraModule",
|
|
@@ -77,6 +86,8 @@ public class CameraModulePlugin extends Plugin {
|
|
|
77
86
|
private ActivityResultLauncher<Intent> galleryLauncher;
|
|
78
87
|
private PluginCall savedCall;
|
|
79
88
|
|
|
89
|
+
private ImageCapture imageCapture;
|
|
90
|
+
|
|
80
91
|
@Override
|
|
81
92
|
public void load() {
|
|
82
93
|
super.load();
|
|
@@ -233,6 +244,11 @@ public class CameraModulePlugin extends Plugin {
|
|
|
233
244
|
Preview preview = new Preview.Builder().build();
|
|
234
245
|
preview.setSurfaceProvider(previewView.getSurfaceProvider());
|
|
235
246
|
|
|
247
|
+
imageCapture =
|
|
248
|
+
new ImageCapture.Builder()
|
|
249
|
+
.setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
|
|
250
|
+
.build();
|
|
251
|
+
|
|
236
252
|
cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA;
|
|
237
253
|
|
|
238
254
|
cameraProvider.unbindAll();
|
|
@@ -240,7 +256,8 @@ public class CameraModulePlugin extends Plugin {
|
|
|
240
256
|
camera = cameraProvider.bindToLifecycle(
|
|
241
257
|
getActivity(),
|
|
242
258
|
cameraSelector,
|
|
243
|
-
preview
|
|
259
|
+
preview,
|
|
260
|
+
imageCapture
|
|
244
261
|
);
|
|
245
262
|
|
|
246
263
|
} catch (Exception e) {
|
|
@@ -249,6 +266,7 @@ public class CameraModulePlugin extends Plugin {
|
|
|
249
266
|
}, ContextCompat.getMainExecutor(getContext()));
|
|
250
267
|
}
|
|
251
268
|
|
|
269
|
+
|
|
252
270
|
@PluginMethod
|
|
253
271
|
public void stopPreview(PluginCall call) {
|
|
254
272
|
getActivity().runOnUiThread(() -> {
|
|
@@ -338,7 +356,6 @@ public class CameraModulePlugin extends Plugin {
|
|
|
338
356
|
throw new Exception("Unable to open input stream");
|
|
339
357
|
}
|
|
340
358
|
|
|
341
|
-
// 1️⃣ Decodificar imagen
|
|
342
359
|
Bitmap originalBitmap = BitmapFactory.decodeStream(inputStream);
|
|
343
360
|
inputStream.close();
|
|
344
361
|
|
|
@@ -346,20 +363,16 @@ public class CameraModulePlugin extends Plugin {
|
|
|
346
363
|
throw new Exception("Unable to decode bitmap");
|
|
347
364
|
}
|
|
348
365
|
|
|
349
|
-
// 2️⃣ Redimensionar (máx 1024px)
|
|
350
366
|
Bitmap resizedBitmap = resizeBitmap(originalBitmap, 1024);
|
|
351
367
|
|
|
352
|
-
// 3️⃣ Comprimir a JPEG calidad 80
|
|
353
368
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
354
369
|
resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 80, outputStream);
|
|
355
370
|
|
|
356
371
|
byte[] imageBytes = outputStream.toByteArray();
|
|
357
372
|
|
|
358
|
-
// 4️⃣ Limpiar memoria
|
|
359
373
|
originalBitmap.recycle();
|
|
360
374
|
resizedBitmap.recycle();
|
|
361
375
|
|
|
362
|
-
// 5️⃣ Base64
|
|
363
376
|
return Base64.encodeToString(imageBytes, Base64.NO_WRAP);
|
|
364
377
|
}
|
|
365
378
|
|
|
@@ -502,8 +515,71 @@ public class CameraModulePlugin extends Plugin {
|
|
|
502
515
|
}
|
|
503
516
|
|
|
504
517
|
|
|
518
|
+
@PluginMethod
|
|
519
|
+
public void takePhotoBase64(PluginCall call) {
|
|
520
|
+
|
|
521
|
+
if (imageCapture == null) {
|
|
522
|
+
call.reject("Camera not initialized");
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
imageCapture.takePicture(
|
|
527
|
+
ContextCompat.getMainExecutor(getContext()),
|
|
528
|
+
new ImageCapture.OnImageCapturedCallback() {
|
|
529
|
+
|
|
530
|
+
@Override
|
|
531
|
+
public void onCaptureSuccess(
|
|
532
|
+
@NonNull ImageProxy image
|
|
533
|
+
) {
|
|
534
|
+
try {
|
|
535
|
+
Bitmap bitmap = imageProxyToBitmap(image);
|
|
536
|
+
image.close();
|
|
537
|
+
|
|
538
|
+
Bitmap resized = resizeBitmap(bitmap, 1024);
|
|
539
|
+
|
|
540
|
+
ByteArrayOutputStream outputStream =
|
|
541
|
+
new ByteArrayOutputStream();
|
|
542
|
+
resized.compress(
|
|
543
|
+
Bitmap.CompressFormat.JPEG,
|
|
544
|
+
80,
|
|
545
|
+
outputStream
|
|
546
|
+
);
|
|
547
|
+
|
|
548
|
+
byte[] bytes = outputStream.toByteArray();
|
|
549
|
+
String base64 =
|
|
550
|
+
Base64.encodeToString(bytes, Base64.NO_WRAP);
|
|
551
|
+
|
|
552
|
+
bitmap.recycle();
|
|
553
|
+
resized.recycle();
|
|
554
|
+
|
|
555
|
+
JSObject ret = new JSObject();
|
|
556
|
+
ret.put("base64", base64);
|
|
557
|
+
ret.put("mimeType", "image/jpeg");
|
|
558
|
+
call.resolve(ret);
|
|
559
|
+
|
|
560
|
+
} catch (Exception e) {
|
|
561
|
+
call.reject("Error capturing image", e);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
@Override
|
|
566
|
+
public void onError(
|
|
567
|
+
@NonNull ImageCaptureException exception
|
|
568
|
+
) {
|
|
569
|
+
call.reject("Capture failed", exception);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
);
|
|
573
|
+
}
|
|
505
574
|
|
|
575
|
+
private Bitmap imageProxyToBitmap(ImageProxy image) {
|
|
576
|
+
ImageProxy.PlaneProxy[] planes = image.getPlanes();
|
|
577
|
+
ByteBuffer buffer = planes[0].getBuffer();
|
|
578
|
+
byte[] bytes = new byte[buffer.remaining()];
|
|
579
|
+
buffer.get(bytes);
|
|
506
580
|
|
|
581
|
+
return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
|
|
582
|
+
}
|
|
507
583
|
|
|
508
584
|
|
|
509
585
|
|
package/dist/docs.json
CHANGED
|
@@ -174,6 +174,16 @@
|
|
|
174
174
|
"LastGalleryImageResult"
|
|
175
175
|
],
|
|
176
176
|
"slug": "getlastgalleryimage"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"name": "takePhotoBase64",
|
|
180
|
+
"signature": "() => Promise<{ base64: string; mimeType: string; }>",
|
|
181
|
+
"parameters": [],
|
|
182
|
+
"returns": "Promise<{ base64: string; mimeType: string; }>",
|
|
183
|
+
"tags": [],
|
|
184
|
+
"docs": "",
|
|
185
|
+
"complexTypes": [],
|
|
186
|
+
"slug": "takephotobase64"
|
|
177
187
|
}
|
|
178
188
|
],
|
|
179
189
|
"properties": []
|
|
@@ -17,6 +17,10 @@ export interface CameraModulePlugin {
|
|
|
17
17
|
checkAndRequestGalleryPermission(): Promise<PermissionResult>;
|
|
18
18
|
pickImageBase64(): Promise<PickImageBase64Result>;
|
|
19
19
|
getLastGalleryImage(): Promise<LastGalleryImageResult>;
|
|
20
|
+
takePhotoBase64(): Promise<{
|
|
21
|
+
base64: string;
|
|
22
|
+
mimeType: string;
|
|
23
|
+
}>;
|
|
20
24
|
}
|
|
21
25
|
export interface PermissionStatus {
|
|
22
26
|
granted: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface CameraModulePlugin {\n echo(options: { value: string }): Promise<{ value: string }>;\n\n checkPermission(): Promise<PermissionStatus>;\n\n requestPermission(): Promise<PermissionStatus>;\n\n checkAndRequestPermission(): Promise<PermissionStatus>;\n\n getCameraCapabilities(): Promise<CameraCapabilities>;\n\n startPreview(): Promise<void>;\n\n stopPreview(): Promise<void>;\n\n toggleFlash(enable: boolean): Promise<void>;\n\n hasFlash(): Promise<boolean>;\n\n checkGalleryPermission(): Promise<PermissionResult>;\n requestGalleryPermission(): Promise<PermissionResult>;\n checkAndRequestGalleryPermission(): Promise<PermissionResult>;\n\n pickImageBase64(): Promise<PickImageBase64Result>;\n\n getLastGalleryImage(): Promise<LastGalleryImageResult>;\n\n}\n\nexport interface PermissionStatus {\n granted: boolean;\n status: 'granted' | 'denied' | 'prompt' | 'prompt-with-rationale' | 'limited';\n details?: string;\n}\n\n\nexport interface CameraCapabilities {\n hasCamera: boolean;\n isSecureContext: boolean;\n userAgent: string;\n}\n\nexport interface PermissionResult {\n granted: boolean;\n status: 'granted' | 'denied' | 'prompt';\n details?: string;\n}\n\nexport interface PickImageBase64Result {\n base64: string;\n mimeType?: string;\n}\n\nexport interface LastGalleryImageResult {\n base64: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface CameraModulePlugin {\n echo(options: { value: string }): Promise<{ value: string }>;\n\n checkPermission(): Promise<PermissionStatus>;\n\n requestPermission(): Promise<PermissionStatus>;\n\n checkAndRequestPermission(): Promise<PermissionStatus>;\n\n getCameraCapabilities(): Promise<CameraCapabilities>;\n\n startPreview(): Promise<void>;\n\n stopPreview(): Promise<void>;\n\n toggleFlash(enable: boolean): Promise<void>;\n\n hasFlash(): Promise<boolean>;\n\n checkGalleryPermission(): Promise<PermissionResult>;\n requestGalleryPermission(): Promise<PermissionResult>;\n checkAndRequestGalleryPermission(): Promise<PermissionResult>;\n\n pickImageBase64(): Promise<PickImageBase64Result>;\n\n getLastGalleryImage(): Promise<LastGalleryImageResult>;\n\n takePhotoBase64(): Promise<{\n base64: string;\n mimeType: string;\n }>;\n}\n\nexport interface PermissionStatus {\n granted: boolean;\n status: 'granted' | 'denied' | 'prompt' | 'prompt-with-rationale' | 'limited';\n details?: string;\n}\n\n\nexport interface CameraCapabilities {\n hasCamera: boolean;\n isSecureContext: boolean;\n userAgent: string;\n}\n\nexport interface PermissionResult {\n granted: boolean;\n status: 'granted' | 'denied' | 'prompt';\n details?: string;\n}\n\nexport interface PickImageBase64Result {\n base64: string;\n mimeType?: string;\n}\n\nexport interface LastGalleryImageResult {\n base64: string;\n}\n"]}
|
package/dist/esm/web.d.ts
CHANGED
package/dist/esm/web.js
CHANGED
|
@@ -190,5 +190,8 @@ export class CameraModuleWeb extends WebPlugin {
|
|
|
190
190
|
async getLastGalleryImage() {
|
|
191
191
|
throw new Error('[CameraModule] getLastGalleryImage is not supported on web');
|
|
192
192
|
}
|
|
193
|
+
async takePhotoBase64() {
|
|
194
|
+
throw this.unavailable('Camera not available on web');
|
|
195
|
+
}
|
|
193
196
|
}
|
|
194
197
|
//# sourceMappingURL=web.js.map
|
package/dist/esm/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type { CameraModulePlugin, PermissionStatus, PickImageBase64Result, PermissionResult } from './definitions';\n\nexport class CameraModuleWeb extends WebPlugin implements CameraModulePlugin {\n async echo(options: { value: string }): Promise<{ value: string }> {\n console.log('ECHO', options);\n return options;\n }\n\n async checkPermission(): Promise<PermissionStatus> {\n // Verificar disponibilidad de APIs - usando prefijo _ para variables no usadas\n const hasMediaDevices = !!navigator.mediaDevices?.enumerateDevices;\n const _hasGetUserMedia = !!navigator.mediaDevices?.getUserMedia; // Prefijo _\n\n if (!hasMediaDevices || !_hasGetUserMedia) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevices = devices.filter((device) => device.kind === 'videoinput');\n\n // No hay dispositivos de cámara\n if (videoDevices.length === 0) {\n return {\n granted: false,\n status: 'denied',\n details: 'No camera devices found',\n };\n }\n\n // Verificar si algún dispositivo tiene label (indica permiso)\n const hasPermission = videoDevices.some((device) => device.label && device.label.trim() !== '');\n\n // Determinar estado más preciso\n let status: PermissionStatus['status'] = 'denied';\n if (hasPermission) {\n status = 'granted';\n } else {\n // En web, sin intentar getUserMedia, asumimos que es la primera vez\n status = 'prompt';\n }\n\n return {\n granted: hasPermission,\n status,\n details: `Found ${videoDevices.length} camera device(s)`,\n };\n } catch (error: any) {\n console.error('Error checking camera permission:', error);\n return {\n granted: false,\n status: 'denied',\n details: error.message || 'Unknown error',\n };\n }\n }\n\n async requestPermission(): Promise<PermissionStatus> {\n // Verificar getUserMedia específicamente para este método\n if (!navigator.mediaDevices?.getUserMedia) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n\n try {\n // Intentar acceder a la cámara con configuración mínima\n const stream = await navigator.mediaDevices.getUserMedia({\n video: {\n width: { ideal: 1280 },\n height: { ideal: 720 },\n facingMode: { ideal: 'environment' },\n },\n audio: false,\n });\n\n // Limpiar recursos inmediatamente\n stream.getTracks().forEach((track) => {\n track.stop();\n });\n\n return {\n granted: true,\n status: 'granted',\n details: 'Permission granted successfully',\n };\n } catch (error: any) {\n console.error('Error requesting camera permission:', error);\n\n // Manejo específico de errores\n let status: PermissionStatus['status'] = 'denied';\n let details = error.message || 'Unknown error';\n\n if (error.name === 'NotAllowedError') {\n status = 'denied';\n details = 'User denied camera access';\n } else if (error.name === 'NotFoundError') {\n status = 'denied';\n details = 'No camera found';\n } else if (error.name === 'NotReadableError') {\n status = 'denied';\n details = 'Camera is already in use';\n } else if (error.name === 'OverconstrainedError') {\n status = 'denied';\n details = 'Camera constraints cannot be met';\n } else if (error.name === 'SecurityError') {\n status = 'denied';\n details = 'Camera access blocked by browser security settings';\n } else if (error.name === 'TypeError') {\n status = 'denied';\n details = 'Invalid constraints specified';\n }\n\n return {\n granted: false,\n status,\n details,\n };\n }\n }\n\n async checkAndRequestPermission(): Promise<PermissionStatus> {\n try {\n // Primero verificar el estado actual\n const currentStatus = await this.checkPermission();\n\n // Si ya tiene permiso, retornar inmediatamente\n if (currentStatus.granted) {\n return currentStatus;\n }\n\n // Si no tiene permiso, solicitar\n return await this.requestPermission();\n } catch (error) {\n console.error('Error in checkAndRequestPermission:', error);\n return {\n granted: false,\n status: 'denied',\n details: 'Failed to check or request permission',\n };\n }\n }\n\n // Método adicional para verificar soporte de características\n async getCameraCapabilities(): Promise<{\n hasCamera: boolean;\n isSecureContext: boolean;\n userAgent: string;\n }> {\n const hasMediaDevices = !!navigator.mediaDevices?.enumerateDevices;\n const hasGetUserMedia = !!navigator.mediaDevices?.getUserMedia;\n\n let hasCamera = false;\n\n if (hasMediaDevices || hasGetUserMedia) {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n hasCamera = devices.some((device) => device.kind === 'videoinput');\n } catch {\n hasCamera = false;\n }\n }\n\n return {\n hasCamera,\n isSecureContext: window.isSecureContext,\n userAgent: navigator.userAgent,\n };\n }\n\n //Camera Preview\n async startPreview(): Promise<void> {\n console.warn('[CameraModule] startPreview is not supported on web');\n }\n\n async stopPreview(): Promise<void> {\n console.warn('[CameraModule] stopPreview is not supported on web');\n }\n\n async hasFlash(): Promise<boolean> {\n return false;\n }\n\n async toggleFlash(_enable: boolean): Promise<void> {\n console.log(_enable);\n console.warn('[CameraModule] toggleFlash is not supported on web ');\n }\n\n async checkGalleryPermission(): Promise<PermissionResult> {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n\n async requestGalleryPermission(): Promise<PermissionResult> {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n\n async checkAndRequestGalleryPermission(): Promise<PermissionResult> {\n return this.checkGalleryPermission();\n }\n\n /* Imagen */\n\n async pickImageBase64(): Promise<PickImageBase64Result> {\n throw new Error('[CameraModule] pickImageBase64 is not supported on web');\n }\n\n async getLastGalleryImage(): Promise<{ base64: string }> {\n throw new Error('[CameraModule] getLastGalleryImage is not supported on web');\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type { CameraModulePlugin, PermissionStatus, PickImageBase64Result, PermissionResult } from './definitions';\n\nexport class CameraModuleWeb extends WebPlugin implements CameraModulePlugin {\n async echo(options: { value: string }): Promise<{ value: string }> {\n console.log('ECHO', options);\n return options;\n }\n\n async checkPermission(): Promise<PermissionStatus> {\n // Verificar disponibilidad de APIs - usando prefijo _ para variables no usadas\n const hasMediaDevices = !!navigator.mediaDevices?.enumerateDevices;\n const _hasGetUserMedia = !!navigator.mediaDevices?.getUserMedia; // Prefijo _\n\n if (!hasMediaDevices || !_hasGetUserMedia) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevices = devices.filter((device) => device.kind === 'videoinput');\n\n // No hay dispositivos de cámara\n if (videoDevices.length === 0) {\n return {\n granted: false,\n status: 'denied',\n details: 'No camera devices found',\n };\n }\n\n // Verificar si algún dispositivo tiene label (indica permiso)\n const hasPermission = videoDevices.some((device) => device.label && device.label.trim() !== '');\n\n // Determinar estado más preciso\n let status: PermissionStatus['status'] = 'denied';\n if (hasPermission) {\n status = 'granted';\n } else {\n // En web, sin intentar getUserMedia, asumimos que es la primera vez\n status = 'prompt';\n }\n\n return {\n granted: hasPermission,\n status,\n details: `Found ${videoDevices.length} camera device(s)`,\n };\n } catch (error: any) {\n console.error('Error checking camera permission:', error);\n return {\n granted: false,\n status: 'denied',\n details: error.message || 'Unknown error',\n };\n }\n }\n\n async requestPermission(): Promise<PermissionStatus> {\n // Verificar getUserMedia específicamente para este método\n if (!navigator.mediaDevices?.getUserMedia) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n\n try {\n // Intentar acceder a la cámara con configuración mínima\n const stream = await navigator.mediaDevices.getUserMedia({\n video: {\n width: { ideal: 1280 },\n height: { ideal: 720 },\n facingMode: { ideal: 'environment' },\n },\n audio: false,\n });\n\n // Limpiar recursos inmediatamente\n stream.getTracks().forEach((track) => {\n track.stop();\n });\n\n return {\n granted: true,\n status: 'granted',\n details: 'Permission granted successfully',\n };\n } catch (error: any) {\n console.error('Error requesting camera permission:', error);\n\n // Manejo específico de errores\n let status: PermissionStatus['status'] = 'denied';\n let details = error.message || 'Unknown error';\n\n if (error.name === 'NotAllowedError') {\n status = 'denied';\n details = 'User denied camera access';\n } else if (error.name === 'NotFoundError') {\n status = 'denied';\n details = 'No camera found';\n } else if (error.name === 'NotReadableError') {\n status = 'denied';\n details = 'Camera is already in use';\n } else if (error.name === 'OverconstrainedError') {\n status = 'denied';\n details = 'Camera constraints cannot be met';\n } else if (error.name === 'SecurityError') {\n status = 'denied';\n details = 'Camera access blocked by browser security settings';\n } else if (error.name === 'TypeError') {\n status = 'denied';\n details = 'Invalid constraints specified';\n }\n\n return {\n granted: false,\n status,\n details,\n };\n }\n }\n\n async checkAndRequestPermission(): Promise<PermissionStatus> {\n try {\n // Primero verificar el estado actual\n const currentStatus = await this.checkPermission();\n\n // Si ya tiene permiso, retornar inmediatamente\n if (currentStatus.granted) {\n return currentStatus;\n }\n\n // Si no tiene permiso, solicitar\n return await this.requestPermission();\n } catch (error) {\n console.error('Error in checkAndRequestPermission:', error);\n return {\n granted: false,\n status: 'denied',\n details: 'Failed to check or request permission',\n };\n }\n }\n\n // Método adicional para verificar soporte de características\n async getCameraCapabilities(): Promise<{\n hasCamera: boolean;\n isSecureContext: boolean;\n userAgent: string;\n }> {\n const hasMediaDevices = !!navigator.mediaDevices?.enumerateDevices;\n const hasGetUserMedia = !!navigator.mediaDevices?.getUserMedia;\n\n let hasCamera = false;\n\n if (hasMediaDevices || hasGetUserMedia) {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n hasCamera = devices.some((device) => device.kind === 'videoinput');\n } catch {\n hasCamera = false;\n }\n }\n\n return {\n hasCamera,\n isSecureContext: window.isSecureContext,\n userAgent: navigator.userAgent,\n };\n }\n\n //Camera Preview\n async startPreview(): Promise<void> {\n console.warn('[CameraModule] startPreview is not supported on web');\n }\n\n async stopPreview(): Promise<void> {\n console.warn('[CameraModule] stopPreview is not supported on web');\n }\n\n async hasFlash(): Promise<boolean> {\n return false;\n }\n\n async toggleFlash(_enable: boolean): Promise<void> {\n console.log(_enable);\n console.warn('[CameraModule] toggleFlash is not supported on web ');\n }\n\n async checkGalleryPermission(): Promise<PermissionResult> {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n\n async requestGalleryPermission(): Promise<PermissionResult> {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n\n async checkAndRequestGalleryPermission(): Promise<PermissionResult> {\n return this.checkGalleryPermission();\n }\n\n /* Imagen */\n\n async pickImageBase64(): Promise<PickImageBase64Result> {\n throw new Error('[CameraModule] pickImageBase64 is not supported on web');\n }\n\n async getLastGalleryImage(): Promise<{ base64: string }> {\n throw new Error('[CameraModule] getLastGalleryImage is not supported on web');\n }\n\n async takePhotoBase64(): Promise<any> {\n throw this.unavailable('Camera not available on web');\n }\n}\n"]}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -197,6 +197,9 @@ class CameraModuleWeb extends core.WebPlugin {
|
|
|
197
197
|
async getLastGalleryImage() {
|
|
198
198
|
throw new Error('[CameraModule] getLastGalleryImage is not supported on web');
|
|
199
199
|
}
|
|
200
|
+
async takePhotoBase64() {
|
|
201
|
+
throw this.unavailable('Camera not available on web');
|
|
202
|
+
}
|
|
200
203
|
}
|
|
201
204
|
|
|
202
205
|
var web = /*#__PURE__*/Object.freeze({
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst CameraModule = registerPlugin('CameraModule', {\n web: () => import('./web').then((m) => new m.CameraModuleWeb()),\n});\nexport * from './definitions';\nexport { CameraModule };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class CameraModuleWeb extends WebPlugin {\n async echo(options) {\n console.log('ECHO', options);\n return options;\n }\n async checkPermission() {\n var _a, _b;\n // Verificar disponibilidad de APIs - usando prefijo _ para variables no usadas\n const hasMediaDevices = !!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.enumerateDevices);\n const _hasGetUserMedia = !!((_b = navigator.mediaDevices) === null || _b === void 0 ? void 0 : _b.getUserMedia); // Prefijo _\n if (!hasMediaDevices || !_hasGetUserMedia) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevices = devices.filter((device) => device.kind === 'videoinput');\n // No hay dispositivos de cámara\n if (videoDevices.length === 0) {\n return {\n granted: false,\n status: 'denied',\n details: 'No camera devices found',\n };\n }\n // Verificar si algún dispositivo tiene label (indica permiso)\n const hasPermission = videoDevices.some((device) => device.label && device.label.trim() !== '');\n // Determinar estado más preciso\n let status = 'denied';\n if (hasPermission) {\n status = 'granted';\n }\n else {\n // En web, sin intentar getUserMedia, asumimos que es la primera vez\n status = 'prompt';\n }\n return {\n granted: hasPermission,\n status,\n details: `Found ${videoDevices.length} camera device(s)`,\n };\n }\n catch (error) {\n console.error('Error checking camera permission:', error);\n return {\n granted: false,\n status: 'denied',\n details: error.message || 'Unknown error',\n };\n }\n }\n async requestPermission() {\n var _a;\n // Verificar getUserMedia específicamente para este método\n if (!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia)) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n try {\n // Intentar acceder a la cámara con configuración mínima\n const stream = await navigator.mediaDevices.getUserMedia({\n video: {\n width: { ideal: 1280 },\n height: { ideal: 720 },\n facingMode: { ideal: 'environment' },\n },\n audio: false,\n });\n // Limpiar recursos inmediatamente\n stream.getTracks().forEach((track) => {\n track.stop();\n });\n return {\n granted: true,\n status: 'granted',\n details: 'Permission granted successfully',\n };\n }\n catch (error) {\n console.error('Error requesting camera permission:', error);\n // Manejo específico de errores\n let status = 'denied';\n let details = error.message || 'Unknown error';\n if (error.name === 'NotAllowedError') {\n status = 'denied';\n details = 'User denied camera access';\n }\n else if (error.name === 'NotFoundError') {\n status = 'denied';\n details = 'No camera found';\n }\n else if (error.name === 'NotReadableError') {\n status = 'denied';\n details = 'Camera is already in use';\n }\n else if (error.name === 'OverconstrainedError') {\n status = 'denied';\n details = 'Camera constraints cannot be met';\n }\n else if (error.name === 'SecurityError') {\n status = 'denied';\n details = 'Camera access blocked by browser security settings';\n }\n else if (error.name === 'TypeError') {\n status = 'denied';\n details = 'Invalid constraints specified';\n }\n return {\n granted: false,\n status,\n details,\n };\n }\n }\n async checkAndRequestPermission() {\n try {\n // Primero verificar el estado actual\n const currentStatus = await this.checkPermission();\n // Si ya tiene permiso, retornar inmediatamente\n if (currentStatus.granted) {\n return currentStatus;\n }\n // Si no tiene permiso, solicitar\n return await this.requestPermission();\n }\n catch (error) {\n console.error('Error in checkAndRequestPermission:', error);\n return {\n granted: false,\n status: 'denied',\n details: 'Failed to check or request permission',\n };\n }\n }\n // Método adicional para verificar soporte de características\n async getCameraCapabilities() {\n var _a, _b;\n const hasMediaDevices = !!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.enumerateDevices);\n const hasGetUserMedia = !!((_b = navigator.mediaDevices) === null || _b === void 0 ? void 0 : _b.getUserMedia);\n let hasCamera = false;\n if (hasMediaDevices || hasGetUserMedia) {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n hasCamera = devices.some((device) => device.kind === 'videoinput');\n }\n catch (_c) {\n hasCamera = false;\n }\n }\n return {\n hasCamera,\n isSecureContext: window.isSecureContext,\n userAgent: navigator.userAgent,\n };\n }\n //Camera Preview\n async startPreview() {\n console.warn('[CameraModule] startPreview is not supported on web');\n }\n async stopPreview() {\n console.warn('[CameraModule] stopPreview is not supported on web');\n }\n async hasFlash() {\n return false;\n }\n async toggleFlash(_enable) {\n console.log(_enable);\n console.warn('[CameraModule] toggleFlash is not supported on web ');\n }\n async checkGalleryPermission() {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n async requestGalleryPermission() {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n async checkAndRequestGalleryPermission() {\n return this.checkGalleryPermission();\n }\n /* Imagen */\n async pickImageBase64() {\n throw new Error('[CameraModule] pickImageBase64 is not supported on web');\n }\n async getLastGalleryImage() {\n throw new Error('[CameraModule] getLastGalleryImage is not supported on web');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst CameraModule = registerPlugin('CameraModule', {\n web: () => import('./web').then((m) => new m.CameraModuleWeb()),\n});\nexport * from './definitions';\nexport { CameraModule };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class CameraModuleWeb extends WebPlugin {\n async echo(options) {\n console.log('ECHO', options);\n return options;\n }\n async checkPermission() {\n var _a, _b;\n // Verificar disponibilidad de APIs - usando prefijo _ para variables no usadas\n const hasMediaDevices = !!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.enumerateDevices);\n const _hasGetUserMedia = !!((_b = navigator.mediaDevices) === null || _b === void 0 ? void 0 : _b.getUserMedia); // Prefijo _\n if (!hasMediaDevices || !_hasGetUserMedia) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevices = devices.filter((device) => device.kind === 'videoinput');\n // No hay dispositivos de cámara\n if (videoDevices.length === 0) {\n return {\n granted: false,\n status: 'denied',\n details: 'No camera devices found',\n };\n }\n // Verificar si algún dispositivo tiene label (indica permiso)\n const hasPermission = videoDevices.some((device) => device.label && device.label.trim() !== '');\n // Determinar estado más preciso\n let status = 'denied';\n if (hasPermission) {\n status = 'granted';\n }\n else {\n // En web, sin intentar getUserMedia, asumimos que es la primera vez\n status = 'prompt';\n }\n return {\n granted: hasPermission,\n status,\n details: `Found ${videoDevices.length} camera device(s)`,\n };\n }\n catch (error) {\n console.error('Error checking camera permission:', error);\n return {\n granted: false,\n status: 'denied',\n details: error.message || 'Unknown error',\n };\n }\n }\n async requestPermission() {\n var _a;\n // Verificar getUserMedia específicamente para este método\n if (!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia)) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n try {\n // Intentar acceder a la cámara con configuración mínima\n const stream = await navigator.mediaDevices.getUserMedia({\n video: {\n width: { ideal: 1280 },\n height: { ideal: 720 },\n facingMode: { ideal: 'environment' },\n },\n audio: false,\n });\n // Limpiar recursos inmediatamente\n stream.getTracks().forEach((track) => {\n track.stop();\n });\n return {\n granted: true,\n status: 'granted',\n details: 'Permission granted successfully',\n };\n }\n catch (error) {\n console.error('Error requesting camera permission:', error);\n // Manejo específico de errores\n let status = 'denied';\n let details = error.message || 'Unknown error';\n if (error.name === 'NotAllowedError') {\n status = 'denied';\n details = 'User denied camera access';\n }\n else if (error.name === 'NotFoundError') {\n status = 'denied';\n details = 'No camera found';\n }\n else if (error.name === 'NotReadableError') {\n status = 'denied';\n details = 'Camera is already in use';\n }\n else if (error.name === 'OverconstrainedError') {\n status = 'denied';\n details = 'Camera constraints cannot be met';\n }\n else if (error.name === 'SecurityError') {\n status = 'denied';\n details = 'Camera access blocked by browser security settings';\n }\n else if (error.name === 'TypeError') {\n status = 'denied';\n details = 'Invalid constraints specified';\n }\n return {\n granted: false,\n status,\n details,\n };\n }\n }\n async checkAndRequestPermission() {\n try {\n // Primero verificar el estado actual\n const currentStatus = await this.checkPermission();\n // Si ya tiene permiso, retornar inmediatamente\n if (currentStatus.granted) {\n return currentStatus;\n }\n // Si no tiene permiso, solicitar\n return await this.requestPermission();\n }\n catch (error) {\n console.error('Error in checkAndRequestPermission:', error);\n return {\n granted: false,\n status: 'denied',\n details: 'Failed to check or request permission',\n };\n }\n }\n // Método adicional para verificar soporte de características\n async getCameraCapabilities() {\n var _a, _b;\n const hasMediaDevices = !!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.enumerateDevices);\n const hasGetUserMedia = !!((_b = navigator.mediaDevices) === null || _b === void 0 ? void 0 : _b.getUserMedia);\n let hasCamera = false;\n if (hasMediaDevices || hasGetUserMedia) {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n hasCamera = devices.some((device) => device.kind === 'videoinput');\n }\n catch (_c) {\n hasCamera = false;\n }\n }\n return {\n hasCamera,\n isSecureContext: window.isSecureContext,\n userAgent: navigator.userAgent,\n };\n }\n //Camera Preview\n async startPreview() {\n console.warn('[CameraModule] startPreview is not supported on web');\n }\n async stopPreview() {\n console.warn('[CameraModule] stopPreview is not supported on web');\n }\n async hasFlash() {\n return false;\n }\n async toggleFlash(_enable) {\n console.log(_enable);\n console.warn('[CameraModule] toggleFlash is not supported on web ');\n }\n async checkGalleryPermission() {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n async requestGalleryPermission() {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n async checkAndRequestGalleryPermission() {\n return this.checkGalleryPermission();\n }\n /* Imagen */\n async pickImageBase64() {\n throw new Error('[CameraModule] pickImageBase64 is not supported on web');\n }\n async getLastGalleryImage() {\n throw new Error('[CameraModule] getLastGalleryImage is not supported on web');\n }\n async takePhotoBase64() {\n throw this.unavailable('Camera not available on web');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -196,6 +196,9 @@ var capacitorCameraModule = (function (exports, core) {
|
|
|
196
196
|
async getLastGalleryImage() {
|
|
197
197
|
throw new Error('[CameraModule] getLastGalleryImage is not supported on web');
|
|
198
198
|
}
|
|
199
|
+
async takePhotoBase64() {
|
|
200
|
+
throw this.unavailable('Camera not available on web');
|
|
201
|
+
}
|
|
199
202
|
}
|
|
200
203
|
|
|
201
204
|
var web = /*#__PURE__*/Object.freeze({
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst CameraModule = registerPlugin('CameraModule', {\n web: () => import('./web').then((m) => new m.CameraModuleWeb()),\n});\nexport * from './definitions';\nexport { CameraModule };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class CameraModuleWeb extends WebPlugin {\n async echo(options) {\n console.log('ECHO', options);\n return options;\n }\n async checkPermission() {\n var _a, _b;\n // Verificar disponibilidad de APIs - usando prefijo _ para variables no usadas\n const hasMediaDevices = !!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.enumerateDevices);\n const _hasGetUserMedia = !!((_b = navigator.mediaDevices) === null || _b === void 0 ? void 0 : _b.getUserMedia); // Prefijo _\n if (!hasMediaDevices || !_hasGetUserMedia) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevices = devices.filter((device) => device.kind === 'videoinput');\n // No hay dispositivos de cámara\n if (videoDevices.length === 0) {\n return {\n granted: false,\n status: 'denied',\n details: 'No camera devices found',\n };\n }\n // Verificar si algún dispositivo tiene label (indica permiso)\n const hasPermission = videoDevices.some((device) => device.label && device.label.trim() !== '');\n // Determinar estado más preciso\n let status = 'denied';\n if (hasPermission) {\n status = 'granted';\n }\n else {\n // En web, sin intentar getUserMedia, asumimos que es la primera vez\n status = 'prompt';\n }\n return {\n granted: hasPermission,\n status,\n details: `Found ${videoDevices.length} camera device(s)`,\n };\n }\n catch (error) {\n console.error('Error checking camera permission:', error);\n return {\n granted: false,\n status: 'denied',\n details: error.message || 'Unknown error',\n };\n }\n }\n async requestPermission() {\n var _a;\n // Verificar getUserMedia específicamente para este método\n if (!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia)) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n try {\n // Intentar acceder a la cámara con configuración mínima\n const stream = await navigator.mediaDevices.getUserMedia({\n video: {\n width: { ideal: 1280 },\n height: { ideal: 720 },\n facingMode: { ideal: 'environment' },\n },\n audio: false,\n });\n // Limpiar recursos inmediatamente\n stream.getTracks().forEach((track) => {\n track.stop();\n });\n return {\n granted: true,\n status: 'granted',\n details: 'Permission granted successfully',\n };\n }\n catch (error) {\n console.error('Error requesting camera permission:', error);\n // Manejo específico de errores\n let status = 'denied';\n let details = error.message || 'Unknown error';\n if (error.name === 'NotAllowedError') {\n status = 'denied';\n details = 'User denied camera access';\n }\n else if (error.name === 'NotFoundError') {\n status = 'denied';\n details = 'No camera found';\n }\n else if (error.name === 'NotReadableError') {\n status = 'denied';\n details = 'Camera is already in use';\n }\n else if (error.name === 'OverconstrainedError') {\n status = 'denied';\n details = 'Camera constraints cannot be met';\n }\n else if (error.name === 'SecurityError') {\n status = 'denied';\n details = 'Camera access blocked by browser security settings';\n }\n else if (error.name === 'TypeError') {\n status = 'denied';\n details = 'Invalid constraints specified';\n }\n return {\n granted: false,\n status,\n details,\n };\n }\n }\n async checkAndRequestPermission() {\n try {\n // Primero verificar el estado actual\n const currentStatus = await this.checkPermission();\n // Si ya tiene permiso, retornar inmediatamente\n if (currentStatus.granted) {\n return currentStatus;\n }\n // Si no tiene permiso, solicitar\n return await this.requestPermission();\n }\n catch (error) {\n console.error('Error in checkAndRequestPermission:', error);\n return {\n granted: false,\n status: 'denied',\n details: 'Failed to check or request permission',\n };\n }\n }\n // Método adicional para verificar soporte de características\n async getCameraCapabilities() {\n var _a, _b;\n const hasMediaDevices = !!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.enumerateDevices);\n const hasGetUserMedia = !!((_b = navigator.mediaDevices) === null || _b === void 0 ? void 0 : _b.getUserMedia);\n let hasCamera = false;\n if (hasMediaDevices || hasGetUserMedia) {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n hasCamera = devices.some((device) => device.kind === 'videoinput');\n }\n catch (_c) {\n hasCamera = false;\n }\n }\n return {\n hasCamera,\n isSecureContext: window.isSecureContext,\n userAgent: navigator.userAgent,\n };\n }\n //Camera Preview\n async startPreview() {\n console.warn('[CameraModule] startPreview is not supported on web');\n }\n async stopPreview() {\n console.warn('[CameraModule] stopPreview is not supported on web');\n }\n async hasFlash() {\n return false;\n }\n async toggleFlash(_enable) {\n console.log(_enable);\n console.warn('[CameraModule] toggleFlash is not supported on web ');\n }\n async checkGalleryPermission() {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n async requestGalleryPermission() {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n async checkAndRequestGalleryPermission() {\n return this.checkGalleryPermission();\n }\n /* Imagen */\n async pickImageBase64() {\n throw new Error('[CameraModule] pickImageBase64 is not supported on web');\n }\n async getLastGalleryImage() {\n throw new Error('[CameraModule] getLastGalleryImage is not supported on web');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst CameraModule = registerPlugin('CameraModule', {\n web: () => import('./web').then((m) => new m.CameraModuleWeb()),\n});\nexport * from './definitions';\nexport { CameraModule };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class CameraModuleWeb extends WebPlugin {\n async echo(options) {\n console.log('ECHO', options);\n return options;\n }\n async checkPermission() {\n var _a, _b;\n // Verificar disponibilidad de APIs - usando prefijo _ para variables no usadas\n const hasMediaDevices = !!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.enumerateDevices);\n const _hasGetUserMedia = !!((_b = navigator.mediaDevices) === null || _b === void 0 ? void 0 : _b.getUserMedia); // Prefijo _\n if (!hasMediaDevices || !_hasGetUserMedia) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevices = devices.filter((device) => device.kind === 'videoinput');\n // No hay dispositivos de cámara\n if (videoDevices.length === 0) {\n return {\n granted: false,\n status: 'denied',\n details: 'No camera devices found',\n };\n }\n // Verificar si algún dispositivo tiene label (indica permiso)\n const hasPermission = videoDevices.some((device) => device.label && device.label.trim() !== '');\n // Determinar estado más preciso\n let status = 'denied';\n if (hasPermission) {\n status = 'granted';\n }\n else {\n // En web, sin intentar getUserMedia, asumimos que es la primera vez\n status = 'prompt';\n }\n return {\n granted: hasPermission,\n status,\n details: `Found ${videoDevices.length} camera device(s)`,\n };\n }\n catch (error) {\n console.error('Error checking camera permission:', error);\n return {\n granted: false,\n status: 'denied',\n details: error.message || 'Unknown error',\n };\n }\n }\n async requestPermission() {\n var _a;\n // Verificar getUserMedia específicamente para este método\n if (!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia)) {\n throw this.unavailable('Camera API no disponible en este navegador');\n }\n try {\n // Intentar acceder a la cámara con configuración mínima\n const stream = await navigator.mediaDevices.getUserMedia({\n video: {\n width: { ideal: 1280 },\n height: { ideal: 720 },\n facingMode: { ideal: 'environment' },\n },\n audio: false,\n });\n // Limpiar recursos inmediatamente\n stream.getTracks().forEach((track) => {\n track.stop();\n });\n return {\n granted: true,\n status: 'granted',\n details: 'Permission granted successfully',\n };\n }\n catch (error) {\n console.error('Error requesting camera permission:', error);\n // Manejo específico de errores\n let status = 'denied';\n let details = error.message || 'Unknown error';\n if (error.name === 'NotAllowedError') {\n status = 'denied';\n details = 'User denied camera access';\n }\n else if (error.name === 'NotFoundError') {\n status = 'denied';\n details = 'No camera found';\n }\n else if (error.name === 'NotReadableError') {\n status = 'denied';\n details = 'Camera is already in use';\n }\n else if (error.name === 'OverconstrainedError') {\n status = 'denied';\n details = 'Camera constraints cannot be met';\n }\n else if (error.name === 'SecurityError') {\n status = 'denied';\n details = 'Camera access blocked by browser security settings';\n }\n else if (error.name === 'TypeError') {\n status = 'denied';\n details = 'Invalid constraints specified';\n }\n return {\n granted: false,\n status,\n details,\n };\n }\n }\n async checkAndRequestPermission() {\n try {\n // Primero verificar el estado actual\n const currentStatus = await this.checkPermission();\n // Si ya tiene permiso, retornar inmediatamente\n if (currentStatus.granted) {\n return currentStatus;\n }\n // Si no tiene permiso, solicitar\n return await this.requestPermission();\n }\n catch (error) {\n console.error('Error in checkAndRequestPermission:', error);\n return {\n granted: false,\n status: 'denied',\n details: 'Failed to check or request permission',\n };\n }\n }\n // Método adicional para verificar soporte de características\n async getCameraCapabilities() {\n var _a, _b;\n const hasMediaDevices = !!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.enumerateDevices);\n const hasGetUserMedia = !!((_b = navigator.mediaDevices) === null || _b === void 0 ? void 0 : _b.getUserMedia);\n let hasCamera = false;\n if (hasMediaDevices || hasGetUserMedia) {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n hasCamera = devices.some((device) => device.kind === 'videoinput');\n }\n catch (_c) {\n hasCamera = false;\n }\n }\n return {\n hasCamera,\n isSecureContext: window.isSecureContext,\n userAgent: navigator.userAgent,\n };\n }\n //Camera Preview\n async startPreview() {\n console.warn('[CameraModule] startPreview is not supported on web');\n }\n async stopPreview() {\n console.warn('[CameraModule] stopPreview is not supported on web');\n }\n async hasFlash() {\n return false;\n }\n async toggleFlash(_enable) {\n console.log(_enable);\n console.warn('[CameraModule] toggleFlash is not supported on web ');\n }\n async checkGalleryPermission() {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n async requestGalleryPermission() {\n return {\n granted: true,\n status: 'granted',\n details: 'Web does not require gallery permission',\n };\n }\n async checkAndRequestGalleryPermission() {\n return this.checkGalleryPermission();\n }\n /* Imagen */\n async pickImageBase64() {\n throw new Error('[CameraModule] pickImageBase64 is not supported on web');\n }\n async getLastGalleryImage() {\n throw new Error('[CameraModule] getLastGalleryImage is not supported on web');\n }\n async takePhotoBase64() {\n throw this.unavailable('Camera not available on web');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|