@capacitor-community/camera-preview 2.1.0 → 4.0.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/CapacitorCommunityCameraPreview.podspec +1 -1
  2. package/README.md +5 -3
  3. package/android/build.gradle +16 -11
  4. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  5. package/android/gradlew +182 -108
  6. package/android/src/androidTest/java/com/getcapacitor/android/ExampleInstrumentedTest.java +3 -3
  7. package/android/src/main/java/com/ahm/capacitor/camera/preview/CameraActivity.java +835 -799
  8. package/android/src/main/java/com/ahm/capacitor/camera/preview/CameraPreview.java +184 -173
  9. package/android/src/main/java/com/ahm/capacitor/camera/preview/CustomSurfaceView.java +12 -14
  10. package/android/src/main/java/com/ahm/capacitor/camera/preview/CustomTextureView.java +16 -18
  11. package/android/src/main/java/com/ahm/capacitor/camera/preview/Preview.java +327 -323
  12. package/android/src/main/java/com/ahm/capacitor/camera/preview/TapGestureDetector.java +15 -14
  13. package/android/src/test/java/com/getcapacitor/ExampleUnitTest.java +4 -3
  14. package/dist/esm/definitions.d.ts +10 -8
  15. package/dist/esm/index.js +1 -1
  16. package/dist/esm/index.js.map +1 -1
  17. package/dist/esm/web.d.ts +3 -3
  18. package/dist/esm/web.js +36 -25
  19. package/dist/esm/web.js.map +1 -1
  20. package/ios/Plugin/CameraController.swift +106 -129
  21. package/ios/Plugin/Plugin.swift +76 -90
  22. package/ios/Plugin.xcodeproj/project.pbxproj +6 -4
  23. package/ios/PluginTests/PluginTests.swift +8 -8
  24. package/ios/Podfile +1 -1
  25. package/package.json +31 -6
  26. package/android/.gradle/4.10.1/fileChanges/last-build.bin +0 -0
  27. package/android/.gradle/4.10.1/fileHashes/fileHashes.bin +0 -0
  28. package/android/.gradle/4.10.1/fileHashes/fileHashes.lock +0 -0
  29. package/android/.gradle/4.10.1/gc.properties +0 -0
  30. package/android/.gradle/vcs-1/gc.properties +0 -0
  31. package/android/.idea/compiler.xml +0 -6
  32. package/android/.idea/gradle.xml +0 -20
  33. package/android/.idea/jarRepositories.xml +0 -45
  34. package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_0_aar.xml +0 -14
  35. package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_3_aar.xml +0 -14
  36. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +0 -9
  37. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml +0 -9
  38. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml +0 -11
  39. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_2_0_aar.xml +0 -14
  40. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_3_0_aar.xml +0 -14
  41. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_2_0_aar.xml +0 -11
  42. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_3_0_aar.xml +0 -11
  43. package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +0 -9
  44. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +0 -11
  45. package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +0 -9
  46. package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml +0 -14
  47. package/android/.idea/libraries/Gradle__androidx_core_core_1_3_2_aar.xml +0 -14
  48. package/android/.idea/libraries/Gradle__androidx_core_core_1_5_0_aar.xml +0 -14
  49. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +0 -11
  50. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +0 -11
  51. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +0 -14
  52. package/android/.idea/libraries/Gradle__androidx_exifinterface_exifinterface_1_3_2_aar.xml +0 -14
  53. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_0_aar.xml +0 -14
  54. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_4_aar.xml +0 -14
  55. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +0 -11
  56. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_0.xml +0 -9
  57. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml +0 -9
  58. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +0 -11
  59. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_0_aar.xml +0 -11
  60. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +0 -11
  61. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_0_aar.xml +0 -11
  62. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml +0 -11
  63. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_0_aar.xml +0 -11
  64. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +0 -11
  65. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_0_aar.xml +0 -11
  66. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +0 -11
  67. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +0 -11
  68. package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +0 -11
  69. package/android/.idea/libraries/Gradle__androidx_test_core_1_3_0_aar.xml +0 -11
  70. package/android/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_1_0_alpha3_aar.xml +0 -11
  71. package/android/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_3_0_aar.xml +0 -11
  72. package/android/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_1_0_alpha3_aar.xml +0 -11
  73. package/android/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_3_0_aar.xml +0 -11
  74. package/android/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_2_aar.xml +0 -11
  75. package/android/.idea/libraries/Gradle__androidx_test_monitor_1_1_0_alpha3_aar.xml +0 -11
  76. package/android/.idea/libraries/Gradle__androidx_test_monitor_1_3_0_aar.xml +0 -11
  77. package/android/.idea/libraries/Gradle__androidx_test_runner_1_1_0_alpha3_aar.xml +0 -11
  78. package/android/.idea/libraries/Gradle__androidx_test_runner_1_3_0_aar.xml +0 -11
  79. package/android/.idea/libraries/Gradle__androidx_tracing_tracing_1_0_0_aar.xml +0 -11
  80. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +0 -11
  81. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +0 -11
  82. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +0 -11
  83. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml +0 -11
  84. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +0 -11
  85. package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml +0 -9
  86. package/android/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml +0 -9
  87. package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +0 -9
  88. package/android/.idea/libraries/Gradle__junit_junit_4_12.xml +0 -9
  89. package/android/.idea/libraries/Gradle__junit_junit_4_13_1.xml +0 -9
  90. package/android/.idea/libraries/Gradle__net_bytebuddy_byte_buddy_1_10_18.xml +0 -9
  91. package/android/.idea/libraries/Gradle__net_bytebuddy_byte_buddy_agent_1_10_18.xml +0 -9
  92. package/android/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0.xml +0 -9
  93. package/android/.idea/libraries/Gradle__org_apache_cordova_framework_7_0_0_aar.xml +0 -11
  94. package/android/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml +0 -9
  95. package/android/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml +0 -9
  96. package/android/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml +0 -9
  97. package/android/.idea/libraries/Gradle__org_json_json_20140107.xml +0 -9
  98. package/android/.idea/libraries/Gradle__org_mockito_mockito_core_3_6_28.xml +0 -9
  99. package/android/.idea/libraries/Gradle__org_mockito_mockito_inline_3_6_28.xml +0 -9
  100. package/android/.idea/libraries/Gradle__org_objenesis_objenesis_3_1.xml +0 -9
  101. package/android/.idea/misc.xml +0 -9
  102. package/android/.idea/modules/1419750366/android.capacitor-android.iml +0 -92
  103. package/android/.idea/modules/android.iml +0 -87
  104. package/android/.idea/modules.xml +0 -9
  105. package/android/.idea/vcs.xml +0 -6
@@ -8,7 +8,7 @@ import AVFoundation
8
8
  @objc(CameraPreview)
9
9
  public class CameraPreview: CAPPlugin {
10
10
 
11
- var previewView:UIView!
11
+ var previewView: UIView!
12
12
  var cameraPosition = String()
13
13
  let cameraController = CameraController()
14
14
  var x: CGFloat?
@@ -21,33 +21,19 @@ public class CameraPreview: CAPPlugin {
21
21
  var storeToFile: Bool?
22
22
  var enableZoom: Bool?
23
23
  var highResolutionOutput: Bool = false
24
+ var disableAudio: Bool = false
24
25
 
25
26
  @objc func rotated() {
27
+ let height = self.paddingBottom != nil ? self.height! - self.paddingBottom!: self.height!;
26
28
 
27
- if UIDevice.current.orientation.isLandscape {
28
- if(self.width! > self.height!) {
29
- // we started in landscape
30
- let height = self.paddingBottom != nil ? self.height! - self.paddingBottom!: self.height!;
31
- self.previewView.frame = CGRect(x: self.x!, y: self.y!, width: self.width!, height: height)
32
- } else {
33
- // we started in portrait
34
- let width = self.paddingBottom != nil ? self.width! - self.paddingBottom!: self.width!;
35
- self.previewView.frame = CGRect(x: self.y!, y: self.x!, width: self.height!, height: width)
36
- }
29
+ if UIApplication.shared.statusBarOrientation.isLandscape {
30
+ self.previewView.frame = CGRect(x: self.y!, y: self.x!, width: max(height, self.width!), height: min(height, self.width!))
37
31
  self.cameraController.previewLayer?.frame = self.previewView.frame
38
32
  }
39
33
 
40
- if UIDevice.current.orientation.isPortrait {
34
+ if UIApplication.shared.statusBarOrientation.isPortrait {
41
35
  if (self.previewView != nil && self.x != nil && self.y != nil && self.width != nil && self.height != nil) {
42
- if(self.height! > self.width!) {
43
- // we started in portrait
44
- let height = self.paddingBottom != nil ? self.height! - self.paddingBottom!: self.height!;
45
- self.previewView.frame = CGRect(x: self.x!, y: self.y!, width: self.width!, height: height)
46
- } else {
47
- // we started in landscape
48
- let width = self.paddingBottom != nil ? self.width! - self.paddingBottom!: self.width!;
49
- self.previewView.frame = CGRect(x: self.y!, y: self.x!, width: self.height!, height: width)
50
- }
36
+ self.previewView.frame = CGRect(x: self.x!, y: self.y!, width: min(height, self.width!), height: max(height, self.width!))
51
37
  }
52
38
  self.cameraController.previewLayer?.frame = self.previewView.frame
53
39
  }
@@ -58,7 +44,7 @@ public class CameraPreview: CAPPlugin {
58
44
  @objc func start(_ call: CAPPluginCall) {
59
45
  self.cameraPosition = call.getString("position") ?? "rear"
60
46
  self.highResolutionOutput = call.getBool("enableHighResolution") ?? false
61
- self.cameraController.highResolutionOutput = self.highResolutionOutput;
47
+ self.cameraController.highResolutionOutput = self.highResolutionOutput
62
48
 
63
49
  if call.getInt("width") != nil {
64
50
  self.width = CGFloat(call.getInt("width")!)
@@ -80,48 +66,49 @@ public class CameraPreview: CAPPlugin {
80
66
  self.toBack = call.getBool("toBack") ?? false
81
67
  self.storeToFile = call.getBool("storeToFile") ?? false
82
68
  self.enableZoom = call.getBool("enableZoom") ?? false
83
-
69
+ self.disableAudio = call.getBool("disableAudio") ?? false
70
+
84
71
  AVCaptureDevice.requestAccess(for: .video, completionHandler: { (granted: Bool) in
85
72
  guard granted else {
86
- call.reject("permission failed");
73
+ call.reject("permission failed")
87
74
  return
88
75
  }
89
-
76
+
90
77
  DispatchQueue.main.async {
91
- if (self.cameraController.captureSession?.isRunning ?? false) {
78
+ if self.cameraController.captureSession?.isRunning ?? false {
92
79
  call.reject("camera already started")
93
80
  } else {
94
- self.cameraController.prepare(cameraPosition: self.cameraPosition){error in
81
+ self.cameraController.prepare(cameraPosition: self.cameraPosition, disableAudio: self.disableAudio){error in
95
82
  if let error = error {
96
83
  print(error)
97
84
  call.reject(error.localizedDescription)
98
85
  return
99
86
  }
100
- let height = self.paddingBottom != nil ? self.height! - self.paddingBottom!: self.height!;
87
+ let height = self.paddingBottom != nil ? self.height! - self.paddingBottom!: self.height!
101
88
  self.previewView = UIView(frame: CGRect(x: self.x ?? 0, y: self.y ?? 0, width: self.width!, height: height))
102
89
  self.webView?.isOpaque = false
103
90
  self.webView?.backgroundColor = UIColor.clear
104
91
  self.webView?.scrollView.backgroundColor = UIColor.clear
105
92
  self.webView?.superview?.addSubview(self.previewView)
106
- if (self.toBack!) {
93
+ if self.toBack! {
107
94
  self.webView?.superview?.bringSubviewToFront(self.webView!)
108
95
  }
109
96
  try? self.cameraController.displayPreview(on: self.previewView)
110
-
111
- let frontView = self.toBack! ? self.webView : self.previewView;
97
+
98
+ let frontView = self.toBack! ? self.webView : self.previewView
112
99
  self.cameraController.setupGestures(target: frontView ?? self.previewView, enableZoom: self.enableZoom!)
113
-
114
- if (self.rotateWhenOrientationChanged == true) {
100
+
101
+ if self.rotateWhenOrientationChanged == true {
115
102
  NotificationCenter.default.addObserver(self, selector: #selector(CameraPreview.rotated), name: UIDevice.orientationDidChangeNotification, object: nil)
116
103
  }
117
-
104
+
118
105
  call.resolve()
119
106
 
120
107
  }
121
108
  }
122
109
  }
123
- });
124
-
110
+ })
111
+
125
112
  }
126
113
 
127
114
  @objc func flip(_ call: CAPPluginCall) {
@@ -135,7 +122,7 @@ public class CameraPreview: CAPPlugin {
135
122
 
136
123
  @objc func stop(_ call: CAPPluginCall) {
137
124
  DispatchQueue.main.async {
138
- if (self.cameraController.captureSession?.isRunning ?? false) {
125
+ if self.cameraController.captureSession?.isRunning ?? false {
139
126
  self.cameraController.captureSession?.stopRunning()
140
127
  self.previewView.removeFromSuperview()
141
128
  self.webView?.isOpaque = true
@@ -155,45 +142,45 @@ public class CameraPreview: CAPPlugin {
155
142
  let fileUrl=path.appendingPathComponent(fileName)
156
143
  return fileUrl
157
144
  }
158
-
145
+
159
146
  @objc func capture(_ call: CAPPluginCall) {
160
147
  DispatchQueue.main.async {
161
148
 
162
- let quality: Int? = call.getInt("quality", 85)
163
-
164
- self.cameraController.captureImage { (image, error) in
149
+ let quality: Int? = call.getInt("quality", 85)
150
+
151
+ self.cameraController.captureImage { (image, error) in
165
152
 
166
- guard let image = image else {
167
- print(error ?? "Image capture error")
168
- guard let error = error else {
169
- call.reject("Image capture error")
153
+ guard let image = image else {
154
+ print(error ?? "Image capture error")
155
+ guard let error = error else {
156
+ call.reject("Image capture error")
157
+ return
158
+ }
159
+ call.reject(error.localizedDescription)
170
160
  return
171
161
  }
172
- call.reject(error.localizedDescription)
173
- return
174
- }
175
- let imageData: Data?
176
- if (self.cameraController.currentCameraPosition == .front) {
177
- let flippedImage = image.withHorizontallyFlippedOrientation()
178
- imageData = flippedImage.jpegData(compressionQuality: CGFloat(quality!/100))
179
- } else {
180
- imageData = image.jpegData(compressionQuality: CGFloat(quality!/100))
181
- }
162
+ let imageData: Data?
163
+ if self.cameraController.currentCameraPosition == .front {
164
+ let flippedImage = image.withHorizontallyFlippedOrientation()
165
+ imageData = flippedImage.jpegData(compressionQuality: CGFloat(quality!/100))
166
+ } else {
167
+ imageData = image.jpegData(compressionQuality: CGFloat(quality!/100))
168
+ }
182
169
 
183
- if (self.storeToFile == false){
184
- let imageBase64 = imageData?.base64EncodedString()
185
- call.resolve(["value": imageBase64!])
186
- }else{
187
- do{
188
- let fileUrl=self.getTempFilePath()
189
- try imageData?.write(to:fileUrl)
190
- call.resolve(["value":fileUrl.absoluteString])
191
- }catch{
192
- call.reject("error writing image to file")
170
+ if self.storeToFile == false {
171
+ let imageBase64 = imageData?.base64EncodedString()
172
+ call.resolve(["value": imageBase64!])
173
+ } else {
174
+ do {
175
+ let fileUrl=self.getTempFilePath()
176
+ try imageData?.write(to: fileUrl)
177
+ call.resolve(["value": fileUrl.absoluteString])
178
+ } catch {
179
+ call.reject("error writing image to file")
180
+ }
193
181
  }
194
182
  }
195
183
  }
196
- }
197
184
  }
198
185
 
199
186
  @objc func captureSample(_ call: CAPPluginCall) {
@@ -208,20 +195,20 @@ public class CameraPreview: CAPPlugin {
208
195
  }
209
196
 
210
197
  let imageData: Data?
211
- if (self.cameraPosition == "front") {
198
+ if self.cameraPosition == "front" {
212
199
  let flippedImage = image.withHorizontallyFlippedOrientation()
213
200
  imageData = flippedImage.jpegData(compressionQuality: CGFloat(quality!/100))
214
201
  } else {
215
202
  imageData = image.jpegData(compressionQuality: CGFloat(quality!/100))
216
203
  }
217
204
 
218
- if (self.storeToFile == false){
205
+ if self.storeToFile == false {
219
206
  let imageBase64 = imageData?.base64EncodedString()
220
207
  call.resolve(["value": imageBase64!])
221
208
  } else {
222
209
  do {
223
210
  let fileUrl = self.getTempFilePath()
224
- try imageData?.write(to:fileUrl)
211
+ try imageData?.write(to: fileUrl)
225
212
  call.resolve(["value": fileUrl.absoluteString])
226
213
  } catch {
227
214
  call.reject("Error writing image to file")
@@ -230,7 +217,7 @@ public class CameraPreview: CAPPlugin {
230
217
  }
231
218
  }
232
219
  }
233
-
220
+
234
221
  @objc func getSupportedFlashModes(_ call: CAPPluginCall) {
235
222
  do {
236
223
  let supportedFlashModes = try self.cameraController.getSupportedFlashModes()
@@ -239,7 +226,7 @@ public class CameraPreview: CAPPlugin {
239
226
  call.reject("failed to get supported flash modes")
240
227
  }
241
228
  }
242
-
229
+
243
230
  @objc func setFlashMode(_ call: CAPPluginCall) {
244
231
  guard let flashMode = call.getString("flashMode") else {
245
232
  call.reject("failed to set flash mode. required parameter flashMode is missing")
@@ -248,17 +235,17 @@ public class CameraPreview: CAPPlugin {
248
235
  do {
249
236
  var flashModeAsEnum: AVCaptureDevice.FlashMode?
250
237
  switch flashMode {
251
- case "off" :
252
- flashModeAsEnum = AVCaptureDevice.FlashMode.off
253
- case "on":
254
- flashModeAsEnum = AVCaptureDevice.FlashMode.on
255
- case "auto":
256
- flashModeAsEnum = AVCaptureDevice.FlashMode.auto
257
- default: break;
238
+ case "off" :
239
+ flashModeAsEnum = AVCaptureDevice.FlashMode.off
240
+ case "on":
241
+ flashModeAsEnum = AVCaptureDevice.FlashMode.on
242
+ case "auto":
243
+ flashModeAsEnum = AVCaptureDevice.FlashMode.auto
244
+ default: break
258
245
  }
259
246
  if flashModeAsEnum != nil {
260
247
  try self.cameraController.setFlashMode(flashMode: flashModeAsEnum!)
261
- } else if(flashMode == "torch") {
248
+ } else if flashMode == "torch" {
262
249
  try self.cameraController.setTorchMode()
263
250
  } else {
264
251
  call.reject("Flash Mode not supported")
@@ -270,11 +257,11 @@ public class CameraPreview: CAPPlugin {
270
257
  }
271
258
  }
272
259
 
273
- @objc func startRecordVideo(_ call: CAPPluginCall) {
274
- DispatchQueue.main.async {
260
+ @objc func startRecordVideo(_ call: CAPPluginCall) {
261
+ DispatchQueue.main.async {
275
262
 
276
263
  let quality: Int? = call.getInt("quality", 85)
277
-
264
+
278
265
  self.cameraController.captureVideo { (image, error) in
279
266
 
280
267
  guard let image = image else {
@@ -287,19 +274,18 @@ public class CameraPreview: CAPPlugin {
287
274
  return
288
275
  }
289
276
 
290
- //self.videoUrl = image
277
+ // self.videoUrl = image
291
278
 
292
- call.resolve(["value":image.absoluteString])
293
- }
279
+ call.resolve(["value": image.absoluteString])
294
280
  }
295
281
  }
282
+ }
296
283
 
284
+ @objc func stopRecordVideo(_ call: CAPPluginCall) {
297
285
 
298
- @objc func stopRecordVideo(_ call: CAPPluginCall) {
299
-
300
- self.cameraController.stopRecording { (error) in
286
+ self.cameraController.stopRecording { (_) in
301
287
 
302
- }
303
288
  }
304
-
289
+ }
290
+
305
291
  }
@@ -414,7 +414,7 @@
414
414
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
415
415
  GCC_WARN_UNUSED_FUNCTION = YES;
416
416
  GCC_WARN_UNUSED_VARIABLE = YES;
417
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
417
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
418
418
  MTL_ENABLE_DEBUG_INFO = YES;
419
419
  ONLY_ACTIVE_ARCH = YES;
420
420
  SDKROOT = iphoneos;
@@ -469,7 +469,7 @@
469
469
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
470
470
  GCC_WARN_UNUSED_FUNCTION = YES;
471
471
  GCC_WARN_UNUSED_VARIABLE = YES;
472
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
472
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
473
473
  MTL_ENABLE_DEBUG_INFO = NO;
474
474
  SDKROOT = iphoneos;
475
475
  SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
@@ -493,12 +493,13 @@
493
493
  DYLIB_INSTALL_NAME_BASE = "@rpath";
494
494
  INFOPLIST_FILE = Plugin/Info.plist;
495
495
  INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
496
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
496
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
497
497
  LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)";
498
498
  ONLY_ACTIVE_ARCH = YES;
499
499
  PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin;
500
500
  PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
501
501
  SKIP_INSTALL = YES;
502
+ SUPPORTS_MACCATALYST = NO;
502
503
  SWIFT_OPTIMIZATION_LEVEL = "-Onone";
503
504
  SWIFT_VERSION = 4.2;
504
505
  TARGETED_DEVICE_FAMILY = "1,2";
@@ -518,12 +519,13 @@
518
519
  DYLIB_INSTALL_NAME_BASE = "@rpath";
519
520
  INFOPLIST_FILE = Plugin/Info.plist;
520
521
  INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
521
- IPHONEOS_DEPLOYMENT_TARGET = 12.1;
522
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
522
523
  LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)";
523
524
  ONLY_ACTIVE_ARCH = NO;
524
525
  PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin;
525
526
  PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
526
527
  SKIP_INSTALL = YES;
528
+ SUPPORTS_MACCATALYST = NO;
527
529
  SWIFT_VERSION = 4.2;
528
530
  TARGETED_DEVICE_FAMILY = "1,2";
529
531
  };
@@ -3,33 +3,33 @@ import Capacitor
3
3
  @testable import Plugin
4
4
 
5
5
  class PluginTests: XCTestCase {
6
-
6
+
7
7
  override func setUp() {
8
8
  super.setUp()
9
9
  // Put setup code here. This method is called before the invocation of each test method in the class.
10
10
  }
11
-
11
+
12
12
  override func tearDown() {
13
13
  // Put teardown code here. This method is called after the invocation of each test method in the class.
14
14
  super.tearDown()
15
15
  }
16
-
16
+
17
17
  func testEcho() {
18
18
  // This is an example of a functional test case for a plugin.
19
19
  // Use XCTAssert and related functions to verify your tests produce the correct results.
20
-
20
+
21
21
  let value = "Hello, World!"
22
22
  let plugin = MyPlugin()
23
-
23
+
24
24
  let call = CAPPluginCall(callbackId: "test", options: [
25
25
  "value": value
26
- ], success: { (result, call) in
26
+ ], success: { (result, _) in
27
27
  let resultValue = result!.data["value"] as? String
28
28
  XCTAssertEqual(value, resultValue)
29
- }, error: { (err) in
29
+ }, error: { (_) in
30
30
  XCTFail("Error shouldn't have been called")
31
31
  })
32
-
32
+
33
33
  plugin.echo(call!)
34
34
  }
35
35
  }
package/ios/Podfile CHANGED
@@ -1,4 +1,4 @@
1
- platform :ios, '12.1'
1
+ platform :ios, '13.0'
2
2
 
3
3
  target 'Plugin' do
4
4
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capacitor-community/camera-preview",
3
- "version": "2.1.0",
3
+ "version": "4.0.0-0",
4
4
  "description": "Camera preview",
5
5
  "main": "dist/esm/index.js",
6
6
  "types": "dist/esm/index.d.ts",
@@ -8,19 +8,39 @@
8
8
  "build": "npm run clean && tsc",
9
9
  "clean": "rimraf './dist'",
10
10
  "watch": "tsc --watch",
11
+ "lint": "concurrently -g \"npm:eslint\" \"npm:prettier -- --check\" \"npm run swiftlint -- lint ios\"",
12
+ "fmt": "concurrently -g \"npm:eslint -- --fix\" \"npm:prettier -- --write\" \"npm:swiftlint -- lint --fix --format ios\"",
13
+ "eslint": "eslint . --ext ts",
14
+ "prettier": "prettier \"**/*.{css,html,ts,js,java}\"",
15
+ "swiftlint": "node-swiftlint",
11
16
  "prepublishOnly": "npm run build",
12
- "prepare": "npm run build"
17
+ "prepare": "husky install && npm run build"
13
18
  },
14
19
  "author": "Ariel Hernandez Musa",
15
20
  "license": "MIT",
16
21
  "dependencies": {
17
- "@capacitor/core": "latest"
22
+ "@capacitor/core": "^4.0.0"
18
23
  },
19
24
  "devDependencies": {
20
- "@capacitor/android": "latest",
21
- "@capacitor/ios": "latest",
25
+ "@capacitor/android": "^4.0.0",
26
+ "@capacitor/ios": "^4.0.0",
27
+ "@ionic/eslint-config": "^0.3.0",
28
+ "@ionic/prettier-config": "^2.0.0",
29
+ "@ionic/swiftlint-config": "^1.1.2",
30
+ "concurrently": "^7.0.0",
31
+ "eslint": "^7.32.0",
32
+ "husky": "^7.0.4",
33
+ "prettier": "^2.3.0",
34
+ "prettier-plugin-java": "^1.0.2",
35
+ "pretty-quick": "^3.1.3",
22
36
  "rimraf": "^3.0.2",
23
- "typescript": "^4.3.2"
37
+ "swiftlint": "^1.0.1",
38
+ "typescript": "^4.1.5"
39
+ },
40
+ "husky": {
41
+ "hooks": {
42
+ "pre-commit": "pretty-quick --staged"
43
+ }
24
44
  },
25
45
  "files": [
26
46
  "dist/",
@@ -41,6 +61,11 @@
41
61
  "src": "android"
42
62
  }
43
63
  },
64
+ "prettier": "@ionic/prettier-config",
65
+ "swiftlint": "@ionic/swiftlint-config",
66
+ "eslintConfig": {
67
+ "extends": "@ionic/eslint-config/recommended"
68
+ },
44
69
  "repository": {
45
70
  "type": "git",
46
71
  "url": "https://github.com/capacitor-community/camera-preview.git"
File without changes
File without changes
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="CompilerConfiguration">
4
- <bytecodeTargetLevel target="11" />
5
- </component>
6
- </project>
@@ -1,20 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="GradleMigrationSettings" migrationVersion="1" />
4
- <component name="GradleSettings">
5
- <option name="linkedExternalProjectsSettings">
6
- <GradleProjectSettings>
7
- <option name="testRunner" value="GRADLE" />
8
- <option name="distributionType" value="DEFAULT_WRAPPED" />
9
- <option name="externalProjectPath" value="$PROJECT_DIR$" />
10
- <option name="modules">
11
- <set>
12
- <option value="$PROJECT_DIR$" />
13
- <option value="$PROJECT_DIR$/../node_modules/@capacitor/android/capacitor" />
14
- </set>
15
- </option>
16
- <option name="resolveModulePerSourceSet" value="false" />
17
- </GradleProjectSettings>
18
- </option>
19
- </component>
20
- </project>
@@ -1,45 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="RemoteRepositoriesConfiguration">
4
- <remote-repository>
5
- <option name="id" value="central" />
6
- <option name="name" value="Maven Central repository" />
7
- <option name="url" value="https://repo1.maven.org/maven2" />
8
- </remote-repository>
9
- <remote-repository>
10
- <option name="id" value="jboss.community" />
11
- <option name="name" value="JBoss Community repository" />
12
- <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
13
- </remote-repository>
14
- <remote-repository>
15
- <option name="id" value="MavenRepo" />
16
- <option name="name" value="MavenRepo" />
17
- <option name="url" value="https://repo.maven.apache.org/maven2/" />
18
- </remote-repository>
19
- <remote-repository>
20
- <option name="id" value="$USER_HOME$/Library/Android/sdk/extras/m2repository" />
21
- <option name="name" value="$USER_HOME$/Library/Android/sdk/extras/m2repository" />
22
- <option name="url" value="file:$USER_HOME$/Library/Android/sdk/extras/m2repository" />
23
- </remote-repository>
24
- <remote-repository>
25
- <option name="id" value="$USER_HOME$/Library/Android/sdk/extras/google/m2repository" />
26
- <option name="name" value="$USER_HOME$/Library/Android/sdk/extras/google/m2repository" />
27
- <option name="url" value="file:$USER_HOME$/Library/Android/sdk/extras/google/m2repository" />
28
- </remote-repository>
29
- <remote-repository>
30
- <option name="id" value="BintrayJCenter" />
31
- <option name="name" value="BintrayJCenter" />
32
- <option name="url" value="https://jcenter.bintray.com/" />
33
- </remote-repository>
34
- <remote-repository>
35
- <option name="id" value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository" />
36
- <option name="name" value="$USER_HOME$/Library/Android/sdk/extras/android/m2repository" />
37
- <option name="url" value="file:$USER_HOME$/Library/Android/sdk/extras/android/m2repository" />
38
- </remote-repository>
39
- <remote-repository>
40
- <option name="id" value="Google" />
41
- <option name="name" value="Google" />
42
- <option name="url" value="https://dl.google.com/dl/android/maven2/" />
43
- </remote-repository>
44
- </component>
45
- </project>
@@ -1,14 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: androidx.activity:activity:1.2.0@aar">
3
- <ANNOTATIONS>
4
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/activity-1.2.0.aar/a00e980e7373e3c1264eea2ea40a4306/annotations.zip!/" />
5
- </ANNOTATIONS>
6
- <CLASSES>
7
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/activity-1.2.0.aar/a00e980e7373e3c1264eea2ea40a4306/jars/classes.jar!/" />
8
- <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/activity-1.2.0.aar/a00e980e7373e3c1264eea2ea40a4306/res" />
9
- <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/activity-1.2.0.aar/a00e980e7373e3c1264eea2ea40a4306/AndroidManifest.xml" />
10
- </CLASSES>
11
- <JAVADOC />
12
- <SOURCES />
13
- </library>
14
- </component>
@@ -1,14 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: androidx.activity:activity:1.2.3@aar">
3
- <ANNOTATIONS>
4
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/activity-1.2.3.aar/7d04ca02a74d7ddbf005e01247139cd7/annotations.zip!/" />
5
- </ANNOTATIONS>
6
- <CLASSES>
7
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/activity-1.2.3.aar/7d04ca02a74d7ddbf005e01247139cd7/jars/classes.jar!/" />
8
- <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/activity-1.2.3.aar/7d04ca02a74d7ddbf005e01247139cd7/res" />
9
- <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/activity-1.2.3.aar/7d04ca02a74d7ddbf005e01247139cd7/AndroidManifest.xml" />
10
- </CLASSES>
11
- <JAVADOC />
12
- <SOURCES />
13
- </library>
14
- </component>
@@ -1,9 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: androidx.annotation:annotation:1.1.0">
3
- <CLASSES>
4
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar!/" />
5
- </CLASSES>
6
- <JAVADOC />
7
- <SOURCES />
8
- </library>
9
- </component>
@@ -1,9 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: androidx.annotation:annotation:1.2.0">
3
- <CLASSES>
4
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.2.0/57136ff68ee784c6e19db34ed4a175338fadfde1/annotation-1.2.0.jar!/" />
5
- </CLASSES>
6
- <JAVADOC />
7
- <SOURCES />
8
- </library>
9
- </component>
@@ -1,11 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: androidx.annotation:annotation-experimental:1.0.0@aar">
3
- <CLASSES>
4
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/annotation-experimental-1.0.0.aar/b80073ea51a8a4abb90083f9e775f7a6/jars/classes.jar!/" />
5
- <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/annotation-experimental-1.0.0.aar/b80073ea51a8a4abb90083f9e775f7a6/res" />
6
- <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/annotation-experimental-1.0.0.aar/b80073ea51a8a4abb90083f9e775f7a6/AndroidManifest.xml" />
7
- </CLASSES>
8
- <JAVADOC />
9
- <SOURCES />
10
- </library>
11
- </component>
@@ -1,14 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: androidx.appcompat:appcompat:1.2.0@aar">
3
- <ANNOTATIONS>
4
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-1.2.0.aar/f49c0939043f2316680fadbeac301be6/annotations.zip!/" />
5
- </ANNOTATIONS>
6
- <CLASSES>
7
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-1.2.0.aar/f49c0939043f2316680fadbeac301be6/jars/classes.jar!/" />
8
- <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-1.2.0.aar/f49c0939043f2316680fadbeac301be6/res" />
9
- <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-1.2.0.aar/f49c0939043f2316680fadbeac301be6/AndroidManifest.xml" />
10
- </CLASSES>
11
- <JAVADOC />
12
- <SOURCES />
13
- </library>
14
- </component>