@capacitor/camera 1.1.2 → 1.2.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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.2.0](https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/camera@1.1.2...@capacitor/camera@1.2.0) (2021-11-03)
7
+
8
+
9
+ ### Features
10
+
11
+ * **camera:** Add new method for multiple image picking from gallery ([#671](https://github.com/ionic-team/capacitor-plugins/issues/671)) ([a49c590](https://github.com/ionic-team/capacitor-plugins/commit/a49c5901683da12438fbafbd1bf6ae91133d18ed))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [1.1.2](https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/camera@1.1.1...@capacitor/camera@1.1.2) (2021-10-14)
7
18
 
8
19
 
package/README.md CHANGED
@@ -73,6 +73,7 @@ const takePicture = async () => {
73
73
  <docgen-index>
74
74
 
75
75
  * [`getPhoto(...)`](#getphoto)
76
+ * [`pickImages(...)`](#pickimages)
76
77
  * [`checkPermissions()`](#checkpermissions)
77
78
  * [`requestPermissions(...)`](#requestpermissions)
78
79
  * [Interfaces](#interfaces)
@@ -104,6 +105,26 @@ with the camera.
104
105
  --------------------
105
106
 
106
107
 
108
+ ### pickImages(...)
109
+
110
+ ```typescript
111
+ pickImages(options: GalleryImageOptions) => Promise<GalleryPhotos>
112
+ ```
113
+
114
+ Allows the user to pick multiple pictures from the photo gallery.
115
+ On iOS 13 and older it only allows to pick one picture.
116
+
117
+ | Param | Type |
118
+ | ------------- | ------------------------------------------------------------------- |
119
+ | **`options`** | <code><a href="#galleryimageoptions">GalleryImageOptions</a></code> |
120
+
121
+ **Returns:** <code>Promise&lt;<a href="#galleryphotos">GalleryPhotos</a>&gt;</code>
122
+
123
+ **Since:** 1.2.0
124
+
125
+ --------------------
126
+
127
+
107
128
  ### checkPermissions()
108
129
 
109
130
  ```typescript
@@ -176,6 +197,35 @@ Request camera and photo album permissions
176
197
  | **`promptLabelPicture`** | <code>string</code> | Text value to use when displaying the prompt. The label of the button to open the camera. | <code>: 'Take Picture'</code> | 1.0.0 |
177
198
 
178
199
 
200
+ #### GalleryPhotos
201
+
202
+ | Prop | Type | Description | Since |
203
+ | ------------ | --------------------------- | ------------------------------- | ----- |
204
+ | **`photos`** | <code>GalleryPhoto[]</code> | Array of all the picked photos. | 1.2.0 |
205
+
206
+
207
+ #### GalleryPhoto
208
+
209
+ | Prop | Type | Description | Since |
210
+ | ------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------- | ----- |
211
+ | **`path`** | <code>string</code> | Full, platform-specific file URL that can be read later using the Filsystem API. | 1.2.0 |
212
+ | **`webPath`** | <code>string</code> | webPath returns a path that can be used to set the src attribute of an image for efficient loading and rendering. | 1.2.0 |
213
+ | **`exif`** | <code>any</code> | Exif data, if any, retrieved from the image | 1.2.0 |
214
+ | **`format`** | <code>string</code> | The format of the image, ex: jpeg, png, gif. iOS and Android only support jpeg. Web supports jpeg, png and gif. | 1.2.0 |
215
+
216
+
217
+ #### GalleryImageOptions
218
+
219
+ | Prop | Type | Description | Default | Since |
220
+ | ------------------------ | -------------------------------------- | ------------------------------------------------------------------------------------------ | --------------------------- | ----- |
221
+ | **`quality`** | <code>number</code> | The quality of image to return as JPEG, from 0-100 | | 1.2.0 |
222
+ | **`width`** | <code>number</code> | The width of the saved image | | 1.2.0 |
223
+ | **`height`** | <code>number</code> | The height of the saved image | | 1.2.0 |
224
+ | **`correctOrientation`** | <code>boolean</code> | Whether to automatically rotate the image "up" to correct for orientation in portrait mode | <code>: true</code> | 1.2.0 |
225
+ | **`presentationStyle`** | <code>'fullscreen' \| 'popover'</code> | iOS only: The presentation style of the Camera. | <code>: 'fullscreen'</code> | 1.2.0 |
226
+ | **`limit`** | <code>number</code> | iOS only: Maximum number of pictures the user will be able to choose. | <code>0 (unlimited)</code> | 1.2.0 |
227
+
228
+
179
229
  #### PermissionStatus
180
230
 
181
231
  | Prop | Type |
@@ -2,6 +2,7 @@ package com.capacitorjs.plugins.camera;
2
2
 
3
3
  import android.Manifest;
4
4
  import android.app.Activity;
5
+ import android.content.ActivityNotFoundException;
5
6
  import android.content.Intent;
6
7
  import android.content.pm.PackageManager;
7
8
  import android.content.pm.ResolveInfo;
@@ -35,6 +36,8 @@ import java.io.InputStream;
35
36
  import java.util.ArrayList;
36
37
  import java.util.List;
37
38
  import java.util.Map;
39
+ import java.util.concurrent.Executor;
40
+ import java.util.concurrent.Executors;
38
41
  import org.json.JSONException;
39
42
 
40
43
  /**
@@ -67,6 +70,7 @@ public class CameraPlugin extends Plugin {
67
70
  private static final String PERMISSION_DENIED_ERROR_PHOTOS = "User denied access to photos";
68
71
  private static final String NO_CAMERA_ERROR = "Device doesn't have a camera available";
69
72
  private static final String NO_CAMERA_ACTIVITY_ERROR = "Unable to resolve camera activity";
73
+ private static final String NO_PHOTO_ACTIVITY_ERROR = "Unable to resolve photo activity";
70
74
  private static final String IMAGE_FILE_SAVE_ERROR = "Unable to create photo on disk";
71
75
  private static final String IMAGE_PROCESS_NO_FILE_ERROR = "Unable to process image, file not found on disk";
72
76
  private static final String UNABLE_TO_PROCESS_IMAGE = "Unable to process image";
@@ -90,6 +94,12 @@ public class CameraPlugin extends Plugin {
90
94
  doShow(call);
91
95
  }
92
96
 
97
+ @PluginMethod
98
+ public void pickImages(PluginCall call) {
99
+ settings = getSettings(call);
100
+ openPhotos(call, true);
101
+ }
102
+
93
103
  private void doShow(PluginCall call) {
94
104
  switch (settings.getSource()) {
95
105
  case CAMERA:
@@ -250,10 +260,23 @@ public class CameraPlugin extends Plugin {
250
260
  }
251
261
 
252
262
  public void openPhotos(final PluginCall call) {
253
- if (checkPhotosPermissions(call)) {
263
+ openPhotos(call, false);
264
+ }
265
+
266
+ private void openPhotos(final PluginCall call, boolean multiple) {
267
+ if (multiple || checkPhotosPermissions(call)) {
254
268
  Intent intent = new Intent(Intent.ACTION_PICK);
269
+ intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, multiple);
255
270
  intent.setType("image/*");
256
- startActivityForResult(call, intent, "processPickedImage");
271
+ try {
272
+ if (multiple) {
273
+ startActivityForResult(call, intent, "processPickedImages");
274
+ } else {
275
+ startActivityForResult(call, intent, "processPickedImage");
276
+ }
277
+ } catch (ActivityNotFoundException ex) {
278
+ call.reject(NO_PHOTO_ACTIVITY_ERROR);
279
+ }
257
280
  }
258
281
  }
259
282
 
@@ -294,6 +317,35 @@ public class CameraPlugin extends Plugin {
294
317
  processPickedImage(u, call);
295
318
  }
296
319
 
320
+ @ActivityCallback
321
+ public void processPickedImages(PluginCall call, ActivityResult result) {
322
+ Intent data = result.getData();
323
+ if (data != null && data.getClipData() != null) {
324
+ Executor executor = Executors.newSingleThreadExecutor();
325
+ executor.execute(
326
+ () -> {
327
+ JSObject ret = new JSObject();
328
+ JSArray photos = new JSArray();
329
+ int count = data.getClipData().getItemCount();
330
+ for (int i = 0; i < count; i++) {
331
+ Uri imageUri = data.getClipData().getItemAt(i).getUri();
332
+ JSObject processResult = processPickedImages(imageUri);
333
+ if (processResult.getString("error") != null && !processResult.getString("error").isEmpty()) {
334
+ call.reject(processResult.getString("error"));
335
+ return;
336
+ } else {
337
+ photos.put(processPickedImages(imageUri));
338
+ }
339
+ }
340
+ ret.put("photos", photos);
341
+ call.resolve(ret);
342
+ }
343
+ );
344
+ } else {
345
+ call.reject("No images picked");
346
+ }
347
+ }
348
+
297
349
  private void processPickedImage(Uri imageUri, PluginCall call) {
298
350
  InputStream imageStream = null;
299
351
 
@@ -322,6 +374,57 @@ public class CameraPlugin extends Plugin {
322
374
  }
323
375
  }
324
376
 
377
+ private JSObject processPickedImages(Uri imageUri) {
378
+ InputStream imageStream = null;
379
+ JSObject ret = new JSObject();
380
+ try {
381
+ imageStream = getContext().getContentResolver().openInputStream(imageUri);
382
+ Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
383
+
384
+ if (bitmap == null) {
385
+ ret.put("error", "Unable to process bitmap");
386
+ return ret;
387
+ }
388
+
389
+ ExifWrapper exif = ImageUtils.getExifData(getContext(), bitmap, imageUri);
390
+ try {
391
+ bitmap = prepareBitmap(bitmap, imageUri, exif);
392
+ } catch (IOException e) {
393
+ ret.put("error", UNABLE_TO_PROCESS_IMAGE);
394
+ return ret;
395
+ }
396
+ // Compress the final image and prepare for output to client
397
+ ByteArrayOutputStream bitmapOutputStream = new ByteArrayOutputStream();
398
+ bitmap.compress(Bitmap.CompressFormat.JPEG, settings.getQuality(), bitmapOutputStream);
399
+
400
+ Uri newUri = getTempImage(imageUri, bitmapOutputStream);
401
+ exif.copyExif(newUri.getPath());
402
+ if (newUri != null) {
403
+ ret.put("format", "jpeg");
404
+ ret.put("exif", exif.toJson());
405
+ ret.put("path", newUri.toString());
406
+ ret.put("webPath", FileUtils.getPortablePath(getContext(), bridge.getLocalUrl(), newUri));
407
+ } else {
408
+ ret.put("error", UNABLE_TO_PROCESS_IMAGE);
409
+ }
410
+ return ret;
411
+ } catch (OutOfMemoryError err) {
412
+ ret.put("error", "Out of memory");
413
+ } catch (FileNotFoundException ex) {
414
+ ret.put("error", "No such image found");
415
+ Logger.error(getLogTag(), "No such image found", ex);
416
+ } finally {
417
+ if (imageStream != null) {
418
+ try {
419
+ imageStream.close();
420
+ } catch (IOException e) {
421
+ Logger.error(getLogTag(), UNABLE_TO_PROCESS_IMAGE, e);
422
+ }
423
+ }
424
+ }
425
+ return ret;
426
+ }
427
+
325
428
  @ActivityCallback
326
429
  private void processEditedImage(PluginCall call, ActivityResult result) {
327
430
  isEdited = true;
package/dist/docs.json CHANGED
@@ -29,6 +29,30 @@
29
29
  ],
30
30
  "slug": "getphoto"
31
31
  },
32
+ {
33
+ "name": "pickImages",
34
+ "signature": "(options: GalleryImageOptions) => Promise<GalleryPhotos>",
35
+ "parameters": [
36
+ {
37
+ "name": "options",
38
+ "docs": "",
39
+ "type": "GalleryImageOptions"
40
+ }
41
+ ],
42
+ "returns": "Promise<GalleryPhotos>",
43
+ "tags": [
44
+ {
45
+ "name": "since",
46
+ "text": "1.2.0"
47
+ }
48
+ ],
49
+ "docs": "Allows the user to pick multiple pictures from the photo gallery.\nOn iOS 13 and older it only allows to pick one picture.",
50
+ "complexTypes": [
51
+ "GalleryPhotos",
52
+ "GalleryImageOptions"
53
+ ],
54
+ "slug": "pickimages"
55
+ },
32
56
  {
33
57
  "name": "checkPermissions",
34
58
  "signature": "() => Promise<PermissionStatus>",
@@ -414,6 +438,179 @@
414
438
  }
415
439
  ]
416
440
  },
441
+ {
442
+ "name": "GalleryPhotos",
443
+ "slug": "galleryphotos",
444
+ "docs": "",
445
+ "tags": [],
446
+ "methods": [],
447
+ "properties": [
448
+ {
449
+ "name": "photos",
450
+ "tags": [
451
+ {
452
+ "text": "1.2.0",
453
+ "name": "since"
454
+ }
455
+ ],
456
+ "docs": "Array of all the picked photos.",
457
+ "complexTypes": [
458
+ "GalleryPhoto"
459
+ ],
460
+ "type": "GalleryPhoto[]"
461
+ }
462
+ ]
463
+ },
464
+ {
465
+ "name": "GalleryPhoto",
466
+ "slug": "galleryphoto",
467
+ "docs": "",
468
+ "tags": [],
469
+ "methods": [],
470
+ "properties": [
471
+ {
472
+ "name": "path",
473
+ "tags": [
474
+ {
475
+ "text": "1.2.0",
476
+ "name": "since"
477
+ }
478
+ ],
479
+ "docs": "Full, platform-specific file URL that can be read later using the Filsystem API.",
480
+ "complexTypes": [],
481
+ "type": "string | undefined"
482
+ },
483
+ {
484
+ "name": "webPath",
485
+ "tags": [
486
+ {
487
+ "text": "1.2.0",
488
+ "name": "since"
489
+ }
490
+ ],
491
+ "docs": "webPath returns a path that can be used to set the src attribute of an image for efficient\nloading and rendering.",
492
+ "complexTypes": [],
493
+ "type": "string"
494
+ },
495
+ {
496
+ "name": "exif",
497
+ "tags": [
498
+ {
499
+ "text": "1.2.0",
500
+ "name": "since"
501
+ }
502
+ ],
503
+ "docs": "Exif data, if any, retrieved from the image",
504
+ "complexTypes": [],
505
+ "type": "any"
506
+ },
507
+ {
508
+ "name": "format",
509
+ "tags": [
510
+ {
511
+ "text": "1.2.0",
512
+ "name": "since"
513
+ }
514
+ ],
515
+ "docs": "The format of the image, ex: jpeg, png, gif.\n\niOS and Android only support jpeg.\nWeb supports jpeg, png and gif.",
516
+ "complexTypes": [],
517
+ "type": "string"
518
+ }
519
+ ]
520
+ },
521
+ {
522
+ "name": "GalleryImageOptions",
523
+ "slug": "galleryimageoptions",
524
+ "docs": "",
525
+ "tags": [],
526
+ "methods": [],
527
+ "properties": [
528
+ {
529
+ "name": "quality",
530
+ "tags": [
531
+ {
532
+ "text": "1.2.0",
533
+ "name": "since"
534
+ }
535
+ ],
536
+ "docs": "The quality of image to return as JPEG, from 0-100",
537
+ "complexTypes": [],
538
+ "type": "number | undefined"
539
+ },
540
+ {
541
+ "name": "width",
542
+ "tags": [
543
+ {
544
+ "text": "1.2.0",
545
+ "name": "since"
546
+ }
547
+ ],
548
+ "docs": "The width of the saved image",
549
+ "complexTypes": [],
550
+ "type": "number | undefined"
551
+ },
552
+ {
553
+ "name": "height",
554
+ "tags": [
555
+ {
556
+ "text": "1.2.0",
557
+ "name": "since"
558
+ }
559
+ ],
560
+ "docs": "The height of the saved image",
561
+ "complexTypes": [],
562
+ "type": "number | undefined"
563
+ },
564
+ {
565
+ "name": "correctOrientation",
566
+ "tags": [
567
+ {
568
+ "text": ": true",
569
+ "name": "default"
570
+ },
571
+ {
572
+ "text": "1.2.0",
573
+ "name": "since"
574
+ }
575
+ ],
576
+ "docs": "Whether to automatically rotate the image \"up\" to correct for orientation\nin portrait mode",
577
+ "complexTypes": [],
578
+ "type": "boolean | undefined"
579
+ },
580
+ {
581
+ "name": "presentationStyle",
582
+ "tags": [
583
+ {
584
+ "text": ": 'fullscreen'",
585
+ "name": "default"
586
+ },
587
+ {
588
+ "text": "1.2.0",
589
+ "name": "since"
590
+ }
591
+ ],
592
+ "docs": "iOS only: The presentation style of the Camera.",
593
+ "complexTypes": [],
594
+ "type": "'fullscreen' | 'popover' | undefined"
595
+ },
596
+ {
597
+ "name": "limit",
598
+ "tags": [
599
+ {
600
+ "text": "0 (unlimited)",
601
+ "name": "default"
602
+ },
603
+ {
604
+ "text": "1.2.0",
605
+ "name": "since"
606
+ }
607
+ ],
608
+ "docs": "iOS only: Maximum number of pictures the user will be able to choose.",
609
+ "complexTypes": [],
610
+ "type": "number | undefined"
611
+ }
612
+ ]
613
+ },
417
614
  {
418
615
  "name": "PermissionStatus",
419
616
  "slug": "permissionstatus",
@@ -16,6 +16,13 @@ export interface CameraPlugin {
16
16
  * @since 1.0.0
17
17
  */
18
18
  getPhoto(options: ImageOptions): Promise<Photo>;
19
+ /**
20
+ * Allows the user to pick multiple pictures from the photo gallery.
21
+ * On iOS 13 and older it only allows to pick one picture.
22
+ *
23
+ * @since 1.2.0
24
+ */
25
+ pickImages(options: GalleryImageOptions): Promise<GalleryPhotos>;
19
26
  /**
20
27
  * Check camera and photo album permissions
21
28
  *
@@ -202,6 +209,86 @@ export interface Photo {
202
209
  */
203
210
  saved: boolean;
204
211
  }
212
+ export interface GalleryPhotos {
213
+ /**
214
+ * Array of all the picked photos.
215
+ *
216
+ * @since 1.2.0
217
+ */
218
+ photos: GalleryPhoto[];
219
+ }
220
+ export interface GalleryPhoto {
221
+ /**
222
+ * Full, platform-specific file URL that can be read later using the Filsystem API.
223
+ *
224
+ * @since 1.2.0
225
+ */
226
+ path?: string;
227
+ /**
228
+ * webPath returns a path that can be used to set the src attribute of an image for efficient
229
+ * loading and rendering.
230
+ *
231
+ * @since 1.2.0
232
+ */
233
+ webPath: string;
234
+ /**
235
+ * Exif data, if any, retrieved from the image
236
+ *
237
+ * @since 1.2.0
238
+ */
239
+ exif?: any;
240
+ /**
241
+ * The format of the image, ex: jpeg, png, gif.
242
+ *
243
+ * iOS and Android only support jpeg.
244
+ * Web supports jpeg, png and gif.
245
+ *
246
+ * @since 1.2.0
247
+ */
248
+ format: string;
249
+ }
250
+ export interface GalleryImageOptions {
251
+ /**
252
+ * The quality of image to return as JPEG, from 0-100
253
+ *
254
+ * @since 1.2.0
255
+ */
256
+ quality?: number;
257
+ /**
258
+ * The width of the saved image
259
+ *
260
+ * @since 1.2.0
261
+ */
262
+ width?: number;
263
+ /**
264
+ * The height of the saved image
265
+ *
266
+ * @since 1.2.0
267
+ */
268
+ height?: number;
269
+ /**
270
+ * Whether to automatically rotate the image "up" to correct for orientation
271
+ * in portrait mode
272
+ * @default: true
273
+ *
274
+ * @since 1.2.0
275
+ */
276
+ correctOrientation?: boolean;
277
+ /**
278
+ * iOS only: The presentation style of the Camera.
279
+ * @default: 'fullscreen'
280
+ *
281
+ * @since 1.2.0
282
+ */
283
+ presentationStyle?: 'fullscreen' | 'popover';
284
+ /**
285
+ * iOS only: Maximum number of pictures the user will be able to choose.
286
+ * @default 0 (unlimited)
287
+ *
288
+ * @since 1.2.0
289
+ */
290
+ limit?: number;
291
+ }
205
292
  export declare enum CameraSource {
206
293
  /**
207
294
  * Prompts the user to select either the photo album or take a photo.
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AA8NA,MAAM,CAAN,IAAY,YAaX;AAbD,WAAY,YAAY;IACtB;;OAEG;IACH,iCAAiB,CAAA;IACjB;;OAEG;IACH,iCAAiB,CAAA;IACjB;;OAEG;IACH,iCAAiB,CAAA;AACnB,CAAC,EAbW,YAAY,KAAZ,YAAY,QAavB;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;AACjB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;AACrB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B"}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AA0TA,MAAM,CAAN,IAAY,YAaX;AAbD,WAAY,YAAY;IACtB;;OAEG;IACH,iCAAiB,CAAA;IACjB;;OAEG;IACH,iCAAiB,CAAA;IACjB;;OAEG;IACH,iCAAiB,CAAA;AACnB,CAAC,EAbW,YAAY,KAAZ,YAAY,QAavB;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,kCAAe,CAAA;AACjB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;AACrB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B"}
package/dist/esm/web.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  import { WebPlugin } from '@capacitor/core';
2
- import type { CameraPlugin, ImageOptions, PermissionStatus, Photo } from './definitions';
2
+ import type { CameraPlugin, GalleryImageOptions, GalleryPhotos, ImageOptions, PermissionStatus, Photo } from './definitions';
3
3
  export declare class CameraWeb extends WebPlugin implements CameraPlugin {
4
4
  getPhoto(options: ImageOptions): Promise<Photo>;
5
+ pickImages(_options: GalleryImageOptions): Promise<GalleryPhotos>;
5
6
  private cameraExperience;
6
7
  private fileInputExperience;
8
+ private multipleFileInputExperience;
7
9
  private _getCameraPhoto;
8
10
  checkPermissions(): Promise<PermissionStatus>;
9
11
  requestPermissions(): Promise<PermissionStatus>;
package/dist/esm/web.js CHANGED
@@ -34,6 +34,12 @@ export class CameraWeb extends WebPlugin {
34
34
  }
35
35
  });
36
36
  }
37
+ async pickImages(_options) {
38
+ // eslint-disable-next-line no-async-promise-executor
39
+ return new Promise(async (resolve) => {
40
+ this.multipleFileInputExperience(resolve);
41
+ });
42
+ }
37
43
  async cameraExperience(options, resolve, reject) {
38
44
  if (customElements.get('pwa-camera-modal')) {
39
45
  const cameraModal = document.createElement('pwa-camera-modal');
@@ -130,6 +136,44 @@ export class CameraWeb extends WebPlugin {
130
136
  }
131
137
  input.click();
132
138
  }
139
+ multipleFileInputExperience(resolve) {
140
+ let input = document.querySelector('#_capacitor-camera-input-multiple');
141
+ const cleanup = () => {
142
+ var _a;
143
+ (_a = input.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(input);
144
+ };
145
+ if (!input) {
146
+ input = document.createElement('input');
147
+ input.id = '_capacitor-camera-input-multiple';
148
+ input.type = 'file';
149
+ input.hidden = true;
150
+ input.multiple = true;
151
+ document.body.appendChild(input);
152
+ input.addEventListener('change', (_e) => {
153
+ const photos = [];
154
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
155
+ for (let i = 0; i < input.files.length; i++) {
156
+ const file = input.files[i];
157
+ let format = 'jpeg';
158
+ if (file.type === 'image/png') {
159
+ format = 'png';
160
+ }
161
+ else if (file.type === 'image/gif') {
162
+ format = 'gif';
163
+ }
164
+ photos.push({
165
+ webPath: URL.createObjectURL(file),
166
+ format: format,
167
+ });
168
+ }
169
+ resolve({ photos });
170
+ cleanup();
171
+ });
172
+ }
173
+ input.accept = 'image/*';
174
+ input.capture = true;
175
+ input.click();
176
+ }
133
177
  _getCameraPhoto(photo, options) {
134
178
  return new Promise((resolve, reject) => {
135
179
  const reader = new FileReader();
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
@@ -69,6 +69,12 @@ class CameraWeb extends core.WebPlugin {
69
69
  }
70
70
  });
71
71
  }
72
+ async pickImages(_options) {
73
+ // eslint-disable-next-line no-async-promise-executor
74
+ return new Promise(async (resolve) => {
75
+ this.multipleFileInputExperience(resolve);
76
+ });
77
+ }
72
78
  async cameraExperience(options, resolve, reject) {
73
79
  if (customElements.get('pwa-camera-modal')) {
74
80
  const cameraModal = document.createElement('pwa-camera-modal');
@@ -165,6 +171,44 @@ class CameraWeb extends core.WebPlugin {
165
171
  }
166
172
  input.click();
167
173
  }
174
+ multipleFileInputExperience(resolve) {
175
+ let input = document.querySelector('#_capacitor-camera-input-multiple');
176
+ const cleanup = () => {
177
+ var _a;
178
+ (_a = input.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(input);
179
+ };
180
+ if (!input) {
181
+ input = document.createElement('input');
182
+ input.id = '_capacitor-camera-input-multiple';
183
+ input.type = 'file';
184
+ input.hidden = true;
185
+ input.multiple = true;
186
+ document.body.appendChild(input);
187
+ input.addEventListener('change', (_e) => {
188
+ const photos = [];
189
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
190
+ for (let i = 0; i < input.files.length; i++) {
191
+ const file = input.files[i];
192
+ let format = 'jpeg';
193
+ if (file.type === 'image/png') {
194
+ format = 'png';
195
+ }
196
+ else if (file.type === 'image/gif') {
197
+ format = 'gif';
198
+ }
199
+ photos.push({
200
+ webPath: URL.createObjectURL(file),
201
+ format: format,
202
+ });
203
+ }
204
+ resolve({ photos });
205
+ cleanup();
206
+ });
207
+ }
208
+ input.accept = 'image/*';
209
+ input.capture = true;
210
+ input.click();
211
+ }
168
212
  _getCameraPhoto(photo, options) {
169
213
  return new Promise((resolve, reject) => {
170
214
  const reader = new FileReader();
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var CameraSource;\n(function (CameraSource) {\n /**\n * Prompts the user to select either the photo album or take a photo.\n */\n CameraSource[\"Prompt\"] = \"PROMPT\";\n /**\n * Take a new photo using the camera.\n */\n CameraSource[\"Camera\"] = \"CAMERA\";\n /**\n * Pick an existing photo fron the gallery or photo album.\n */\n CameraSource[\"Photos\"] = \"PHOTOS\";\n})(CameraSource || (CameraSource = {}));\nexport var CameraDirection;\n(function (CameraDirection) {\n CameraDirection[\"Rear\"] = \"REAR\";\n CameraDirection[\"Front\"] = \"FRONT\";\n})(CameraDirection || (CameraDirection = {}));\nexport var CameraResultType;\n(function (CameraResultType) {\n CameraResultType[\"Uri\"] = \"uri\";\n CameraResultType[\"Base64\"] = \"base64\";\n CameraResultType[\"DataUrl\"] = \"dataUrl\";\n})(CameraResultType || (CameraResultType = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst Camera = registerPlugin('Camera', {\n web: () => import('./web').then(m => new m.CameraWeb()),\n});\nexport * from './definitions';\nexport { Camera };\n//# sourceMappingURL=index.js.map","import { WebPlugin, CapacitorException } from '@capacitor/core';\nimport { CameraSource, CameraDirection } from './definitions';\nexport class CameraWeb extends WebPlugin {\n async getPhoto(options) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n if (options.webUseInput || options.source === CameraSource.Photos) {\n this.fileInputExperience(options, resolve);\n }\n else if (options.source === CameraSource.Prompt) {\n let actionSheet = document.querySelector('pwa-action-sheet');\n if (!actionSheet) {\n actionSheet = document.createElement('pwa-action-sheet');\n document.body.appendChild(actionSheet);\n }\n actionSheet.header = options.promptLabelHeader || 'Photo';\n actionSheet.cancelable = false;\n actionSheet.options = [\n { title: options.promptLabelPhoto || 'From Photos' },\n { title: options.promptLabelPicture || 'Take Picture' },\n ];\n actionSheet.addEventListener('onSelection', async (e) => {\n const selection = e.detail;\n if (selection === 0) {\n this.fileInputExperience(options, resolve);\n }\n else {\n this.cameraExperience(options, resolve, reject);\n }\n });\n }\n else {\n this.cameraExperience(options, resolve, reject);\n }\n });\n }\n async cameraExperience(options, resolve, reject) {\n if (customElements.get('pwa-camera-modal')) {\n const cameraModal = document.createElement('pwa-camera-modal');\n document.body.appendChild(cameraModal);\n try {\n await cameraModal.componentOnReady();\n cameraModal.addEventListener('onPhoto', async (e) => {\n const photo = e.detail;\n if (photo === null) {\n reject(new CapacitorException('User cancelled photos app'));\n }\n else if (photo instanceof Error) {\n reject(photo);\n }\n else {\n resolve(await this._getCameraPhoto(photo, options));\n }\n cameraModal.dismiss();\n document.body.removeChild(cameraModal);\n });\n cameraModal.present();\n }\n catch (e) {\n this.fileInputExperience(options, resolve);\n }\n }\n else {\n console.error(`Unable to load PWA Element 'pwa-camera-modal'. See the docs: https://capacitorjs.com/docs/pwa-elements.`);\n this.fileInputExperience(options, resolve);\n }\n }\n fileInputExperience(options, resolve) {\n let input = document.querySelector('#_capacitor-camera-input');\n const cleanup = () => {\n var _a;\n (_a = input.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(input);\n };\n if (!input) {\n input = document.createElement('input');\n input.id = '_capacitor-camera-input';\n input.type = 'file';\n input.hidden = true;\n document.body.appendChild(input);\n input.addEventListener('change', (_e) => {\n const file = input.files[0];\n let format = 'jpeg';\n if (file.type === 'image/png') {\n format = 'png';\n }\n else if (file.type === 'image/gif') {\n format = 'gif';\n }\n if (options.resultType === 'dataUrl' ||\n options.resultType === 'base64') {\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n if (options.resultType === 'dataUrl') {\n resolve({\n dataUrl: reader.result,\n format,\n });\n }\n else if (options.resultType === 'base64') {\n const b64 = reader.result.split(',')[1];\n resolve({\n base64String: b64,\n format,\n });\n }\n cleanup();\n });\n reader.readAsDataURL(file);\n }\n else {\n resolve({\n webPath: URL.createObjectURL(file),\n format: format,\n });\n cleanup();\n }\n });\n }\n input.accept = 'image/*';\n input.capture = true;\n if (options.source === CameraSource.Photos ||\n options.source === CameraSource.Prompt) {\n input.removeAttribute('capture');\n }\n else if (options.direction === CameraDirection.Front) {\n input.capture = 'user';\n }\n else if (options.direction === CameraDirection.Rear) {\n input.capture = 'environment';\n }\n input.click();\n }\n _getCameraPhoto(photo, options) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n const format = photo.type.split('/')[1];\n if (options.resultType === 'uri') {\n resolve({\n webPath: URL.createObjectURL(photo),\n format: format,\n saved: false,\n });\n }\n else {\n reader.readAsDataURL(photo);\n reader.onloadend = () => {\n const r = reader.result;\n if (options.resultType === 'dataUrl') {\n resolve({\n dataUrl: r,\n format: format,\n saved: false,\n });\n }\n else {\n resolve({\n base64String: r.split(',')[1],\n format: format,\n saved: false,\n });\n }\n };\n reader.onerror = e => {\n reject(e);\n };\n }\n });\n }\n async checkPermissions() {\n if (typeof navigator === 'undefined' || !navigator.permissions) {\n throw this.unavailable('Permissions API not available in this browser');\n }\n try {\n // https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query\n // the specific permissions that are supported varies among browsers that implement the\n // permissions API, so we need a try/catch in case 'camera' is invalid\n const permission = await window.navigator.permissions.query({\n name: 'camera',\n });\n return {\n camera: permission.state,\n photos: 'granted',\n };\n }\n catch (_a) {\n throw this.unavailable('Camera permissions are not available in this browser');\n }\n }\n async requestPermissions() {\n throw this.unimplemented('Not implemented on web.');\n }\n}\nconst Camera = new CameraWeb();\nexport { Camera };\n//# sourceMappingURL=web.js.map"],"names":["CameraSource","CameraDirection","CameraResultType","Camera","registerPlugin","WebPlugin","CapacitorException"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var CameraSource;\n(function (CameraSource) {\n /**\n * Prompts the user to select either the photo album or take a photo.\n */\n CameraSource[\"Prompt\"] = \"PROMPT\";\n /**\n * Take a new photo using the camera.\n */\n CameraSource[\"Camera\"] = \"CAMERA\";\n /**\n * Pick an existing photo fron the gallery or photo album.\n */\n CameraSource[\"Photos\"] = \"PHOTOS\";\n})(CameraSource || (CameraSource = {}));\nexport var CameraDirection;\n(function (CameraDirection) {\n CameraDirection[\"Rear\"] = \"REAR\";\n CameraDirection[\"Front\"] = \"FRONT\";\n})(CameraDirection || (CameraDirection = {}));\nexport var CameraResultType;\n(function (CameraResultType) {\n CameraResultType[\"Uri\"] = \"uri\";\n CameraResultType[\"Base64\"] = \"base64\";\n CameraResultType[\"DataUrl\"] = \"dataUrl\";\n})(CameraResultType || (CameraResultType = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst Camera = registerPlugin('Camera', {\n web: () => import('./web').then(m => new m.CameraWeb()),\n});\nexport * from './definitions';\nexport { Camera };\n//# sourceMappingURL=index.js.map","import { WebPlugin, CapacitorException } from '@capacitor/core';\nimport { CameraSource, CameraDirection } from './definitions';\nexport class CameraWeb extends WebPlugin {\n async getPhoto(options) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n if (options.webUseInput || options.source === CameraSource.Photos) {\n this.fileInputExperience(options, resolve);\n }\n else if (options.source === CameraSource.Prompt) {\n let actionSheet = document.querySelector('pwa-action-sheet');\n if (!actionSheet) {\n actionSheet = document.createElement('pwa-action-sheet');\n document.body.appendChild(actionSheet);\n }\n actionSheet.header = options.promptLabelHeader || 'Photo';\n actionSheet.cancelable = false;\n actionSheet.options = [\n { title: options.promptLabelPhoto || 'From Photos' },\n { title: options.promptLabelPicture || 'Take Picture' },\n ];\n actionSheet.addEventListener('onSelection', async (e) => {\n const selection = e.detail;\n if (selection === 0) {\n this.fileInputExperience(options, resolve);\n }\n else {\n this.cameraExperience(options, resolve, reject);\n }\n });\n }\n else {\n this.cameraExperience(options, resolve, reject);\n }\n });\n }\n async pickImages(_options) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n this.multipleFileInputExperience(resolve);\n });\n }\n async cameraExperience(options, resolve, reject) {\n if (customElements.get('pwa-camera-modal')) {\n const cameraModal = document.createElement('pwa-camera-modal');\n document.body.appendChild(cameraModal);\n try {\n await cameraModal.componentOnReady();\n cameraModal.addEventListener('onPhoto', async (e) => {\n const photo = e.detail;\n if (photo === null) {\n reject(new CapacitorException('User cancelled photos app'));\n }\n else if (photo instanceof Error) {\n reject(photo);\n }\n else {\n resolve(await this._getCameraPhoto(photo, options));\n }\n cameraModal.dismiss();\n document.body.removeChild(cameraModal);\n });\n cameraModal.present();\n }\n catch (e) {\n this.fileInputExperience(options, resolve);\n }\n }\n else {\n console.error(`Unable to load PWA Element 'pwa-camera-modal'. See the docs: https://capacitorjs.com/docs/pwa-elements.`);\n this.fileInputExperience(options, resolve);\n }\n }\n fileInputExperience(options, resolve) {\n let input = document.querySelector('#_capacitor-camera-input');\n const cleanup = () => {\n var _a;\n (_a = input.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(input);\n };\n if (!input) {\n input = document.createElement('input');\n input.id = '_capacitor-camera-input';\n input.type = 'file';\n input.hidden = true;\n document.body.appendChild(input);\n input.addEventListener('change', (_e) => {\n const file = input.files[0];\n let format = 'jpeg';\n if (file.type === 'image/png') {\n format = 'png';\n }\n else if (file.type === 'image/gif') {\n format = 'gif';\n }\n if (options.resultType === 'dataUrl' ||\n options.resultType === 'base64') {\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n if (options.resultType === 'dataUrl') {\n resolve({\n dataUrl: reader.result,\n format,\n });\n }\n else if (options.resultType === 'base64') {\n const b64 = reader.result.split(',')[1];\n resolve({\n base64String: b64,\n format,\n });\n }\n cleanup();\n });\n reader.readAsDataURL(file);\n }\n else {\n resolve({\n webPath: URL.createObjectURL(file),\n format: format,\n });\n cleanup();\n }\n });\n }\n input.accept = 'image/*';\n input.capture = true;\n if (options.source === CameraSource.Photos ||\n options.source === CameraSource.Prompt) {\n input.removeAttribute('capture');\n }\n else if (options.direction === CameraDirection.Front) {\n input.capture = 'user';\n }\n else if (options.direction === CameraDirection.Rear) {\n input.capture = 'environment';\n }\n input.click();\n }\n multipleFileInputExperience(resolve) {\n let input = document.querySelector('#_capacitor-camera-input-multiple');\n const cleanup = () => {\n var _a;\n (_a = input.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(input);\n };\n if (!input) {\n input = document.createElement('input');\n input.id = '_capacitor-camera-input-multiple';\n input.type = 'file';\n input.hidden = true;\n input.multiple = true;\n document.body.appendChild(input);\n input.addEventListener('change', (_e) => {\n const photos = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.files.length; i++) {\n const file = input.files[i];\n let format = 'jpeg';\n if (file.type === 'image/png') {\n format = 'png';\n }\n else if (file.type === 'image/gif') {\n format = 'gif';\n }\n photos.push({\n webPath: URL.createObjectURL(file),\n format: format,\n });\n }\n resolve({ photos });\n cleanup();\n });\n }\n input.accept = 'image/*';\n input.capture = true;\n input.click();\n }\n _getCameraPhoto(photo, options) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n const format = photo.type.split('/')[1];\n if (options.resultType === 'uri') {\n resolve({\n webPath: URL.createObjectURL(photo),\n format: format,\n saved: false,\n });\n }\n else {\n reader.readAsDataURL(photo);\n reader.onloadend = () => {\n const r = reader.result;\n if (options.resultType === 'dataUrl') {\n resolve({\n dataUrl: r,\n format: format,\n saved: false,\n });\n }\n else {\n resolve({\n base64String: r.split(',')[1],\n format: format,\n saved: false,\n });\n }\n };\n reader.onerror = e => {\n reject(e);\n };\n }\n });\n }\n async checkPermissions() {\n if (typeof navigator === 'undefined' || !navigator.permissions) {\n throw this.unavailable('Permissions API not available in this browser');\n }\n try {\n // https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query\n // the specific permissions that are supported varies among browsers that implement the\n // permissions API, so we need a try/catch in case 'camera' is invalid\n const permission = await window.navigator.permissions.query({\n name: 'camera',\n });\n return {\n camera: permission.state,\n photos: 'granted',\n };\n }\n catch (_a) {\n throw this.unavailable('Camera permissions are not available in this browser');\n }\n }\n async requestPermissions() {\n throw this.unimplemented('Not implemented on web.');\n }\n}\nconst Camera = new CameraWeb();\nexport { Camera };\n//# sourceMappingURL=web.js.map"],"names":["CameraSource","CameraDirection","CameraResultType","Camera","registerPlugin","WebPlugin","CapacitorException"],"mappings":"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"}
package/dist/plugin.js CHANGED
@@ -66,6 +66,12 @@ var capacitorCamera = (function (exports, core) {
66
66
  }
67
67
  });
68
68
  }
69
+ async pickImages(_options) {
70
+ // eslint-disable-next-line no-async-promise-executor
71
+ return new Promise(async (resolve) => {
72
+ this.multipleFileInputExperience(resolve);
73
+ });
74
+ }
69
75
  async cameraExperience(options, resolve, reject) {
70
76
  if (customElements.get('pwa-camera-modal')) {
71
77
  const cameraModal = document.createElement('pwa-camera-modal');
@@ -162,6 +168,44 @@ var capacitorCamera = (function (exports, core) {
162
168
  }
163
169
  input.click();
164
170
  }
171
+ multipleFileInputExperience(resolve) {
172
+ let input = document.querySelector('#_capacitor-camera-input-multiple');
173
+ const cleanup = () => {
174
+ var _a;
175
+ (_a = input.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(input);
176
+ };
177
+ if (!input) {
178
+ input = document.createElement('input');
179
+ input.id = '_capacitor-camera-input-multiple';
180
+ input.type = 'file';
181
+ input.hidden = true;
182
+ input.multiple = true;
183
+ document.body.appendChild(input);
184
+ input.addEventListener('change', (_e) => {
185
+ const photos = [];
186
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
187
+ for (let i = 0; i < input.files.length; i++) {
188
+ const file = input.files[i];
189
+ let format = 'jpeg';
190
+ if (file.type === 'image/png') {
191
+ format = 'png';
192
+ }
193
+ else if (file.type === 'image/gif') {
194
+ format = 'gif';
195
+ }
196
+ photos.push({
197
+ webPath: URL.createObjectURL(file),
198
+ format: format,
199
+ });
200
+ }
201
+ resolve({ photos });
202
+ cleanup();
203
+ });
204
+ }
205
+ input.accept = 'image/*';
206
+ input.capture = true;
207
+ input.click();
208
+ }
165
209
  _getCameraPhoto(photo, options) {
166
210
  return new Promise((resolve, reject) => {
167
211
  const reader = new FileReader();
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var CameraSource;\n(function (CameraSource) {\n /**\n * Prompts the user to select either the photo album or take a photo.\n */\n CameraSource[\"Prompt\"] = \"PROMPT\";\n /**\n * Take a new photo using the camera.\n */\n CameraSource[\"Camera\"] = \"CAMERA\";\n /**\n * Pick an existing photo fron the gallery or photo album.\n */\n CameraSource[\"Photos\"] = \"PHOTOS\";\n})(CameraSource || (CameraSource = {}));\nexport var CameraDirection;\n(function (CameraDirection) {\n CameraDirection[\"Rear\"] = \"REAR\";\n CameraDirection[\"Front\"] = \"FRONT\";\n})(CameraDirection || (CameraDirection = {}));\nexport var CameraResultType;\n(function (CameraResultType) {\n CameraResultType[\"Uri\"] = \"uri\";\n CameraResultType[\"Base64\"] = \"base64\";\n CameraResultType[\"DataUrl\"] = \"dataUrl\";\n})(CameraResultType || (CameraResultType = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst Camera = registerPlugin('Camera', {\n web: () => import('./web').then(m => new m.CameraWeb()),\n});\nexport * from './definitions';\nexport { Camera };\n//# sourceMappingURL=index.js.map","import { WebPlugin, CapacitorException } from '@capacitor/core';\nimport { CameraSource, CameraDirection } from './definitions';\nexport class CameraWeb extends WebPlugin {\n async getPhoto(options) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n if (options.webUseInput || options.source === CameraSource.Photos) {\n this.fileInputExperience(options, resolve);\n }\n else if (options.source === CameraSource.Prompt) {\n let actionSheet = document.querySelector('pwa-action-sheet');\n if (!actionSheet) {\n actionSheet = document.createElement('pwa-action-sheet');\n document.body.appendChild(actionSheet);\n }\n actionSheet.header = options.promptLabelHeader || 'Photo';\n actionSheet.cancelable = false;\n actionSheet.options = [\n { title: options.promptLabelPhoto || 'From Photos' },\n { title: options.promptLabelPicture || 'Take Picture' },\n ];\n actionSheet.addEventListener('onSelection', async (e) => {\n const selection = e.detail;\n if (selection === 0) {\n this.fileInputExperience(options, resolve);\n }\n else {\n this.cameraExperience(options, resolve, reject);\n }\n });\n }\n else {\n this.cameraExperience(options, resolve, reject);\n }\n });\n }\n async cameraExperience(options, resolve, reject) {\n if (customElements.get('pwa-camera-modal')) {\n const cameraModal = document.createElement('pwa-camera-modal');\n document.body.appendChild(cameraModal);\n try {\n await cameraModal.componentOnReady();\n cameraModal.addEventListener('onPhoto', async (e) => {\n const photo = e.detail;\n if (photo === null) {\n reject(new CapacitorException('User cancelled photos app'));\n }\n else if (photo instanceof Error) {\n reject(photo);\n }\n else {\n resolve(await this._getCameraPhoto(photo, options));\n }\n cameraModal.dismiss();\n document.body.removeChild(cameraModal);\n });\n cameraModal.present();\n }\n catch (e) {\n this.fileInputExperience(options, resolve);\n }\n }\n else {\n console.error(`Unable to load PWA Element 'pwa-camera-modal'. See the docs: https://capacitorjs.com/docs/pwa-elements.`);\n this.fileInputExperience(options, resolve);\n }\n }\n fileInputExperience(options, resolve) {\n let input = document.querySelector('#_capacitor-camera-input');\n const cleanup = () => {\n var _a;\n (_a = input.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(input);\n };\n if (!input) {\n input = document.createElement('input');\n input.id = '_capacitor-camera-input';\n input.type = 'file';\n input.hidden = true;\n document.body.appendChild(input);\n input.addEventListener('change', (_e) => {\n const file = input.files[0];\n let format = 'jpeg';\n if (file.type === 'image/png') {\n format = 'png';\n }\n else if (file.type === 'image/gif') {\n format = 'gif';\n }\n if (options.resultType === 'dataUrl' ||\n options.resultType === 'base64') {\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n if (options.resultType === 'dataUrl') {\n resolve({\n dataUrl: reader.result,\n format,\n });\n }\n else if (options.resultType === 'base64') {\n const b64 = reader.result.split(',')[1];\n resolve({\n base64String: b64,\n format,\n });\n }\n cleanup();\n });\n reader.readAsDataURL(file);\n }\n else {\n resolve({\n webPath: URL.createObjectURL(file),\n format: format,\n });\n cleanup();\n }\n });\n }\n input.accept = 'image/*';\n input.capture = true;\n if (options.source === CameraSource.Photos ||\n options.source === CameraSource.Prompt) {\n input.removeAttribute('capture');\n }\n else if (options.direction === CameraDirection.Front) {\n input.capture = 'user';\n }\n else if (options.direction === CameraDirection.Rear) {\n input.capture = 'environment';\n }\n input.click();\n }\n _getCameraPhoto(photo, options) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n const format = photo.type.split('/')[1];\n if (options.resultType === 'uri') {\n resolve({\n webPath: URL.createObjectURL(photo),\n format: format,\n saved: false,\n });\n }\n else {\n reader.readAsDataURL(photo);\n reader.onloadend = () => {\n const r = reader.result;\n if (options.resultType === 'dataUrl') {\n resolve({\n dataUrl: r,\n format: format,\n saved: false,\n });\n }\n else {\n resolve({\n base64String: r.split(',')[1],\n format: format,\n saved: false,\n });\n }\n };\n reader.onerror = e => {\n reject(e);\n };\n }\n });\n }\n async checkPermissions() {\n if (typeof navigator === 'undefined' || !navigator.permissions) {\n throw this.unavailable('Permissions API not available in this browser');\n }\n try {\n // https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query\n // the specific permissions that are supported varies among browsers that implement the\n // permissions API, so we need a try/catch in case 'camera' is invalid\n const permission = await window.navigator.permissions.query({\n name: 'camera',\n });\n return {\n camera: permission.state,\n photos: 'granted',\n };\n }\n catch (_a) {\n throw this.unavailable('Camera permissions are not available in this browser');\n }\n }\n async requestPermissions() {\n throw this.unimplemented('Not implemented on web.');\n }\n}\nconst Camera = new CameraWeb();\nexport { Camera };\n//# sourceMappingURL=web.js.map"],"names":["CameraSource","CameraDirection","CameraResultType","Camera","registerPlugin","WebPlugin","CapacitorException"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var CameraSource;\n(function (CameraSource) {\n /**\n * Prompts the user to select either the photo album or take a photo.\n */\n CameraSource[\"Prompt\"] = \"PROMPT\";\n /**\n * Take a new photo using the camera.\n */\n CameraSource[\"Camera\"] = \"CAMERA\";\n /**\n * Pick an existing photo fron the gallery or photo album.\n */\n CameraSource[\"Photos\"] = \"PHOTOS\";\n})(CameraSource || (CameraSource = {}));\nexport var CameraDirection;\n(function (CameraDirection) {\n CameraDirection[\"Rear\"] = \"REAR\";\n CameraDirection[\"Front\"] = \"FRONT\";\n})(CameraDirection || (CameraDirection = {}));\nexport var CameraResultType;\n(function (CameraResultType) {\n CameraResultType[\"Uri\"] = \"uri\";\n CameraResultType[\"Base64\"] = \"base64\";\n CameraResultType[\"DataUrl\"] = \"dataUrl\";\n})(CameraResultType || (CameraResultType = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst Camera = registerPlugin('Camera', {\n web: () => import('./web').then(m => new m.CameraWeb()),\n});\nexport * from './definitions';\nexport { Camera };\n//# sourceMappingURL=index.js.map","import { WebPlugin, CapacitorException } from '@capacitor/core';\nimport { CameraSource, CameraDirection } from './definitions';\nexport class CameraWeb extends WebPlugin {\n async getPhoto(options) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n if (options.webUseInput || options.source === CameraSource.Photos) {\n this.fileInputExperience(options, resolve);\n }\n else if (options.source === CameraSource.Prompt) {\n let actionSheet = document.querySelector('pwa-action-sheet');\n if (!actionSheet) {\n actionSheet = document.createElement('pwa-action-sheet');\n document.body.appendChild(actionSheet);\n }\n actionSheet.header = options.promptLabelHeader || 'Photo';\n actionSheet.cancelable = false;\n actionSheet.options = [\n { title: options.promptLabelPhoto || 'From Photos' },\n { title: options.promptLabelPicture || 'Take Picture' },\n ];\n actionSheet.addEventListener('onSelection', async (e) => {\n const selection = e.detail;\n if (selection === 0) {\n this.fileInputExperience(options, resolve);\n }\n else {\n this.cameraExperience(options, resolve, reject);\n }\n });\n }\n else {\n this.cameraExperience(options, resolve, reject);\n }\n });\n }\n async pickImages(_options) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n this.multipleFileInputExperience(resolve);\n });\n }\n async cameraExperience(options, resolve, reject) {\n if (customElements.get('pwa-camera-modal')) {\n const cameraModal = document.createElement('pwa-camera-modal');\n document.body.appendChild(cameraModal);\n try {\n await cameraModal.componentOnReady();\n cameraModal.addEventListener('onPhoto', async (e) => {\n const photo = e.detail;\n if (photo === null) {\n reject(new CapacitorException('User cancelled photos app'));\n }\n else if (photo instanceof Error) {\n reject(photo);\n }\n else {\n resolve(await this._getCameraPhoto(photo, options));\n }\n cameraModal.dismiss();\n document.body.removeChild(cameraModal);\n });\n cameraModal.present();\n }\n catch (e) {\n this.fileInputExperience(options, resolve);\n }\n }\n else {\n console.error(`Unable to load PWA Element 'pwa-camera-modal'. See the docs: https://capacitorjs.com/docs/pwa-elements.`);\n this.fileInputExperience(options, resolve);\n }\n }\n fileInputExperience(options, resolve) {\n let input = document.querySelector('#_capacitor-camera-input');\n const cleanup = () => {\n var _a;\n (_a = input.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(input);\n };\n if (!input) {\n input = document.createElement('input');\n input.id = '_capacitor-camera-input';\n input.type = 'file';\n input.hidden = true;\n document.body.appendChild(input);\n input.addEventListener('change', (_e) => {\n const file = input.files[0];\n let format = 'jpeg';\n if (file.type === 'image/png') {\n format = 'png';\n }\n else if (file.type === 'image/gif') {\n format = 'gif';\n }\n if (options.resultType === 'dataUrl' ||\n options.resultType === 'base64') {\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n if (options.resultType === 'dataUrl') {\n resolve({\n dataUrl: reader.result,\n format,\n });\n }\n else if (options.resultType === 'base64') {\n const b64 = reader.result.split(',')[1];\n resolve({\n base64String: b64,\n format,\n });\n }\n cleanup();\n });\n reader.readAsDataURL(file);\n }\n else {\n resolve({\n webPath: URL.createObjectURL(file),\n format: format,\n });\n cleanup();\n }\n });\n }\n input.accept = 'image/*';\n input.capture = true;\n if (options.source === CameraSource.Photos ||\n options.source === CameraSource.Prompt) {\n input.removeAttribute('capture');\n }\n else if (options.direction === CameraDirection.Front) {\n input.capture = 'user';\n }\n else if (options.direction === CameraDirection.Rear) {\n input.capture = 'environment';\n }\n input.click();\n }\n multipleFileInputExperience(resolve) {\n let input = document.querySelector('#_capacitor-camera-input-multiple');\n const cleanup = () => {\n var _a;\n (_a = input.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(input);\n };\n if (!input) {\n input = document.createElement('input');\n input.id = '_capacitor-camera-input-multiple';\n input.type = 'file';\n input.hidden = true;\n input.multiple = true;\n document.body.appendChild(input);\n input.addEventListener('change', (_e) => {\n const photos = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.files.length; i++) {\n const file = input.files[i];\n let format = 'jpeg';\n if (file.type === 'image/png') {\n format = 'png';\n }\n else if (file.type === 'image/gif') {\n format = 'gif';\n }\n photos.push({\n webPath: URL.createObjectURL(file),\n format: format,\n });\n }\n resolve({ photos });\n cleanup();\n });\n }\n input.accept = 'image/*';\n input.capture = true;\n input.click();\n }\n _getCameraPhoto(photo, options) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n const format = photo.type.split('/')[1];\n if (options.resultType === 'uri') {\n resolve({\n webPath: URL.createObjectURL(photo),\n format: format,\n saved: false,\n });\n }\n else {\n reader.readAsDataURL(photo);\n reader.onloadend = () => {\n const r = reader.result;\n if (options.resultType === 'dataUrl') {\n resolve({\n dataUrl: r,\n format: format,\n saved: false,\n });\n }\n else {\n resolve({\n base64String: r.split(',')[1],\n format: format,\n saved: false,\n });\n }\n };\n reader.onerror = e => {\n reject(e);\n };\n }\n });\n }\n async checkPermissions() {\n if (typeof navigator === 'undefined' || !navigator.permissions) {\n throw this.unavailable('Permissions API not available in this browser');\n }\n try {\n // https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query\n // the specific permissions that are supported varies among browsers that implement the\n // permissions API, so we need a try/catch in case 'camera' is invalid\n const permission = await window.navigator.permissions.query({\n name: 'camera',\n });\n return {\n camera: permission.state,\n photos: 'granted',\n };\n }\n catch (_a) {\n throw this.unavailable('Camera permissions are not available in this browser');\n }\n }\n async requestPermissions() {\n throw this.unimplemented('Not implemented on web.');\n }\n}\nconst Camera = new CameraWeb();\nexport { Camera };\n//# sourceMappingURL=web.js.map"],"names":["CameraSource","CameraDirection","CameraResultType","Camera","registerPlugin","WebPlugin","CapacitorException"],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
 
4
4
  CAP_PLUGIN(CAPCameraPlugin, "Camera",
5
5
  CAP_PLUGIN_METHOD(getPhoto, CAPPluginReturnPromise);
6
+ CAP_PLUGIN_METHOD(pickImages, CAPPluginReturnPromise);
6
7
  CAP_PLUGIN_METHOD(checkPermissions, CAPPluginReturnPromise);
7
8
  CAP_PLUGIN_METHOD(requestPermissions, CAPPluginReturnPromise);
8
9
  )
@@ -9,6 +9,7 @@ public class CameraPlugin: CAPPlugin {
9
9
  private var settings = CameraSettings()
10
10
  private let defaultSource = CameraSource.prompt
11
11
  private let defaultDirection = CameraDirection.rear
12
+ private var multiple = false
12
13
 
13
14
  private var imageCounter = 0
14
15
 
@@ -66,6 +67,7 @@ public class CameraPlugin: CAPPlugin {
66
67
  }
67
68
 
68
69
  @objc func getPhoto(_ call: CAPPluginCall) {
70
+ self.multiple = false
69
71
  self.call = call
70
72
  self.settings = cameraSettings(from: call)
71
73
 
@@ -89,6 +91,15 @@ public class CameraPlugin: CAPPlugin {
89
91
  }
90
92
  }
91
93
 
94
+ @objc func pickImages(_ call: CAPPluginCall) {
95
+ self.multiple = true
96
+ self.call = call
97
+ self.settings = cameraSettings(from: call)
98
+ DispatchQueue.main.async {
99
+ self.showPhotos()
100
+ }
101
+ }
102
+
92
103
  private func checkUsageDescriptions() -> String? {
93
104
  if let dict = Bundle.main.infoDictionary {
94
105
  for key in CameraPropertyListKeys.allCases where dict[key.rawValue] == nil {
@@ -164,24 +175,55 @@ extension CameraPlugin: PHPickerViewControllerDelegate {
164
175
  self.call?.reject("User cancelled photos app")
165
176
  return
166
177
  }
167
- guard result.itemProvider.canLoadObject(ofClass: UIImage.self) else {
168
- self.call?.reject("Error loading image")
169
- return
170
- }
171
- // extract the image
172
- result.itemProvider.loadObject(ofClass: UIImage.self) { [weak self] (reading, _) in
173
- if let image = reading as? UIImage {
174
- var asset: PHAsset?
175
- if let assetId = result.assetIdentifier {
176
- asset = PHAsset.fetchAssets(withLocalIdentifiers: [assetId], options: nil).firstObject
177
- }
178
- if let processedImage = self?.processedImage(from: image, with: asset?.imageData) {
179
- self?.returnProcessedImage(processedImage)
178
+ if multiple {
179
+ var images: [ProcessedImage] = []
180
+ var processedCount = 0
181
+ for img in results {
182
+ guard img.itemProvider.canLoadObject(ofClass: UIImage.self) else {
183
+ self.call?.reject("Error loading image")
180
184
  return
181
185
  }
186
+ // extract the image
187
+ img.itemProvider.loadObject(ofClass: UIImage.self) { [weak self] (reading, _) in
188
+ if let image = reading as? UIImage {
189
+ var asset: PHAsset?
190
+ if let assetId = result.assetIdentifier {
191
+ asset = PHAsset.fetchAssets(withLocalIdentifiers: [assetId], options: nil).firstObject
192
+ }
193
+ if let processedImage = self?.processedImage(from: image, with: asset?.imageData) {
194
+ images.append(processedImage)
195
+ }
196
+ processedCount += 1
197
+ if processedCount == results.count {
198
+ self?.returnImages(images)
199
+ }
200
+ } else {
201
+ self?.call?.reject("Error loading image")
202
+ }
203
+ }
204
+ }
205
+
206
+ } else {
207
+ guard result.itemProvider.canLoadObject(ofClass: UIImage.self) else {
208
+ self.call?.reject("Error loading image")
209
+ return
210
+ }
211
+ // extract the image
212
+ result.itemProvider.loadObject(ofClass: UIImage.self) { [weak self] (reading, _) in
213
+ if let image = reading as? UIImage {
214
+ var asset: PHAsset?
215
+ if let assetId = result.assetIdentifier {
216
+ asset = PHAsset.fetchAssets(withLocalIdentifiers: [assetId], options: nil).firstObject
217
+ }
218
+ if let processedImage = self?.processedImage(from: image, with: asset?.imageData) {
219
+ self?.returnProcessedImage(processedImage)
220
+ return
221
+ }
222
+ }
223
+ self?.call?.reject("Error loading image")
182
224
  }
183
- self?.call?.reject("Error loading image")
184
225
  }
226
+
185
227
  }
186
228
  }
187
229
 
@@ -192,7 +234,31 @@ private extension CameraPlugin {
192
234
  return
193
235
  }
194
236
 
195
- if settings.resultType == CameraResultType.base64 {
237
+ if settings.resultType == CameraResultType.uri || multiple {
238
+ guard let fileURL = try? saveTemporaryImage(jpeg),
239
+ let webURL = bridge?.portablePath(fromLocalURL: fileURL) else {
240
+ call?.reject("Unable to get portable path to file")
241
+ return
242
+ }
243
+ if self.multiple {
244
+ call?.resolve([
245
+ "photos": [[
246
+ "path": fileURL.absoluteString,
247
+ "exif": processedImage.exifData,
248
+ "webPath": webURL.absoluteString,
249
+ "format": "jpeg"
250
+ ]]
251
+ ])
252
+ return
253
+ }
254
+ call?.resolve([
255
+ "path": fileURL.absoluteString,
256
+ "exif": processedImage.exifData,
257
+ "webPath": webURL.absoluteString,
258
+ "format": "jpeg",
259
+ "saved": isSaved
260
+ ])
261
+ } else if settings.resultType == CameraResultType.base64 {
196
262
  self.call?.resolve([
197
263
  "base64String": jpeg.base64EncodedString(),
198
264
  "exif": processedImage.exifData,
@@ -206,20 +272,33 @@ private extension CameraPlugin {
206
272
  "format": "jpeg",
207
273
  "saved": isSaved
208
274
  ])
209
- } else if settings.resultType == CameraResultType.uri {
275
+ }
276
+ }
277
+
278
+ func returnImages(_ processedImages: [ProcessedImage]) {
279
+ var photos: [PluginCallResultData] = []
280
+ for processedImage in processedImages {
281
+ guard let jpeg = processedImage.generateJPEG(with: settings.jpegQuality) else {
282
+ self.call?.reject("Unable to convert image to jpeg")
283
+ return
284
+ }
285
+
210
286
  guard let fileURL = try? saveTemporaryImage(jpeg),
211
287
  let webURL = bridge?.portablePath(fromLocalURL: fileURL) else {
212
288
  call?.reject("Unable to get portable path to file")
213
289
  return
214
290
  }
215
- call?.resolve([
291
+
292
+ photos.append([
216
293
  "path": fileURL.absoluteString,
217
294
  "exif": processedImage.exifData,
218
295
  "webPath": webURL.absoluteString,
219
- "format": "jpeg",
220
- "saved": isSaved
296
+ "format": "jpeg"
221
297
  ])
222
298
  }
299
+ call?.resolve([
300
+ "photos": photos
301
+ ])
223
302
  }
224
303
 
225
304
  func returnProcessedImage(_ processedImage: ProcessedImage) {
@@ -350,7 +429,7 @@ private extension CameraPlugin {
350
429
  @available(iOS 14, *)
351
430
  func presentPhotoPicker() {
352
431
  var configuration = PHPickerConfiguration(photoLibrary: PHPhotoLibrary.shared())
353
- configuration.selectionLimit = 1
432
+ configuration.selectionLimit = self.multiple ? (self.call?.getInt("limit") ?? 0) : 1
354
433
  configuration.filter = .images
355
434
  let picker = PHPickerViewController(configuration: configuration)
356
435
  picker.delegate = self
@@ -2,9 +2,9 @@ import UIKit
2
2
 
3
3
  class ImageSaver: NSObject {
4
4
 
5
- var onResult: ((Error?)->Void) = {_ in }
5
+ var onResult: ((Error?) -> Void) = {_ in }
6
6
 
7
- init(image: UIImage, onResult:@escaping ((Error?)->Void)) {
7
+ init(image: UIImage, onResult:@escaping ((Error?) -> Void)) {
8
8
  self.onResult = onResult
9
9
  super.init()
10
10
  UIImageWriteToSavedPhotosAlbum(image, self, #selector(saveResult), nil)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capacitor/camera",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "The Camera API provides the ability to take a photo with the camera or choose an existing one from the photo album.",
5
5
  "main": "dist/plugin.cjs.js",
6
6
  "module": "dist/esm/index.js",
@@ -33,7 +33,7 @@
33
33
  "verify:android": "cd android && ./gradlew clean build test && cd ..",
34
34
  "verify:web": "npm run build",
35
35
  "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint",
36
- "fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- autocorrect --format",
36
+ "fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format",
37
37
  "eslint": "eslint . --ext ts",
38
38
  "prettier": "prettier \"**/*.{css,html,ts,js,java}\"",
39
39
  "swiftlint": "node-swiftlint",
@@ -79,5 +79,5 @@
79
79
  "publishConfig": {
80
80
  "access": "public"
81
81
  },
82
- "gitHead": "eadbffd4bf9f0859bd301a639ab4e0c3337ea8db"
82
+ "gitHead": "64df93225736e9dfad336562f5e53e5a2243052b"
83
83
  }