capacitor-plugin-camera-forked 2.0.8

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.
@@ -0,0 +1,456 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@capacitor/core');
6
+ var dynamsoftCameraEnhancer = require('dynamsoft-camera-enhancer');
7
+ var RecordRTC = require('recordrtc');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var RecordRTC__default = /*#__PURE__*/_interopDefaultLegacy(RecordRTC);
12
+
13
+ exports.EnumResolution = void 0;
14
+ (function (EnumResolution) {
15
+ EnumResolution[EnumResolution["RESOLUTION_AUTO"] = 0] = "RESOLUTION_AUTO";
16
+ EnumResolution[EnumResolution["RESOLUTION_480P"] = 1] = "RESOLUTION_480P";
17
+ EnumResolution[EnumResolution["RESOLUTION_720P"] = 2] = "RESOLUTION_720P";
18
+ EnumResolution[EnumResolution["RESOLUTION_1080P"] = 3] = "RESOLUTION_1080P";
19
+ EnumResolution[EnumResolution["RESOLUTION_2K"] = 4] = "RESOLUTION_2K";
20
+ EnumResolution[EnumResolution["RESOLUTION_4K"] = 5] = "RESOLUTION_4K";
21
+ })(exports.EnumResolution || (exports.EnumResolution = {}));
22
+
23
+ const CameraPreview = core.registerPlugin('CameraPreview', {
24
+ web: () => Promise.resolve().then(function () { return web; }).then(m => new m.CameraPreviewWeb()),
25
+ });
26
+
27
+ dynamsoftCameraEnhancer.CameraEnhancer.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html";
28
+ class CameraPreviewWeb extends core.WebPlugin {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.hasMicrophone = false;
32
+ }
33
+ async setDefaultUIElementURL(url) {
34
+ dynamsoftCameraEnhancer.CameraEnhancer.defaultUIElementURL = url;
35
+ }
36
+ async setElement(ele) {
37
+ this.container = ele;
38
+ }
39
+ saveFrame() {
40
+ throw new Error('Method not implemented.');
41
+ }
42
+ async getOrientation() {
43
+ let portrait = window.matchMedia("(orientation: portrait)");
44
+ if (portrait.matches) {
45
+ return { orientation: "PORTRAIT" };
46
+ }
47
+ else {
48
+ return { orientation: "LANDSCAPE" };
49
+ }
50
+ }
51
+ async initialize() {
52
+ this.camera = await dynamsoftCameraEnhancer.CameraEnhancer.createInstance();
53
+ this.camera.on("played", (playCallBackInfo) => {
54
+ this.notifyListeners("onPlayed", { resolution: playCallBackInfo.width + "x" + playCallBackInfo.height });
55
+ try {
56
+ let canvas = this.camera.getUIElement().getElementsByClassName("dce-video-container")[0].getElementsByTagName("canvas")[0];
57
+ if (canvas) {
58
+ canvas.remove();
59
+ }
60
+ }
61
+ catch (error) {
62
+ console.log(error);
63
+ }
64
+ });
65
+ if (this.container) {
66
+ await this.camera.setUIElement(this.container);
67
+ }
68
+ else {
69
+ await this.camera.setUIElement(dynamsoftCameraEnhancer.CameraEnhancer.defaultUIElementURL);
70
+ this.camera.getUIElement().getElementsByClassName("dce-btn-close")[0].remove();
71
+ this.camera.getUIElement().getElementsByClassName("dce-sel-camera")[0].remove();
72
+ this.camera.getUIElement().getElementsByClassName("dce-sel-resolution")[0].remove();
73
+ this.camera.getUIElement().getElementsByClassName("dce-msg-poweredby")[0].remove();
74
+ }
75
+ this.camera.setVideoFit("cover");
76
+ let portrait = window.matchMedia("(orientation: portrait)");
77
+ portrait.addEventListener("change", () => {
78
+ this.notifyListeners("onOrientationChanged", null);
79
+ });
80
+ }
81
+ async getResolution() {
82
+ if (this.camera) {
83
+ let rsl = this.camera.getResolution();
84
+ let resolution = rsl[0] + "x" + rsl[1];
85
+ return { resolution: resolution };
86
+ }
87
+ else {
88
+ throw new Error('Camera not initialized');
89
+ }
90
+ }
91
+ async setResolution(options) {
92
+ if (this.camera) {
93
+ let res = options.resolution;
94
+ let width = 1280;
95
+ let height = 720;
96
+ if (res == exports.EnumResolution.RESOLUTION_480P) {
97
+ width = 640;
98
+ height = 480;
99
+ }
100
+ else if (res == exports.EnumResolution.RESOLUTION_720P) {
101
+ width = 1280;
102
+ height = 720;
103
+ }
104
+ else if (res == exports.EnumResolution.RESOLUTION_1080P) {
105
+ width = 1920;
106
+ height = 1080;
107
+ }
108
+ else if (res == exports.EnumResolution.RESOLUTION_2K) {
109
+ width = 2560;
110
+ height = 1440;
111
+ }
112
+ else if (res == exports.EnumResolution.RESOLUTION_4K) {
113
+ width = 3840;
114
+ height = 2160;
115
+ }
116
+ await this.camera.setResolution(width, height);
117
+ return;
118
+ }
119
+ else {
120
+ throw new Error('Camera not initialized');
121
+ }
122
+ }
123
+ async getAllCameras() {
124
+ if (this.camera) {
125
+ let cameras = await this.camera.getAllCameras();
126
+ let labels = [];
127
+ cameras.forEach(camera => {
128
+ labels.push(camera.label);
129
+ });
130
+ return { cameras: labels };
131
+ }
132
+ else {
133
+ throw new Error('Camera not initialized');
134
+ }
135
+ }
136
+ async getSelectedCamera() {
137
+ if (this.camera) {
138
+ let cameraInfo = this.camera.getSelectedCamera();
139
+ return { selectedCamera: cameraInfo.label };
140
+ }
141
+ else {
142
+ throw new Error('Camera not initialized');
143
+ }
144
+ }
145
+ async selectCamera(options) {
146
+ if (this.camera) {
147
+ let cameras = await this.camera.getAllCameras();
148
+ for (let index = 0; index < cameras.length; index++) {
149
+ const camera = cameras[index];
150
+ if (camera.label === options.cameraID) {
151
+ await this.camera.selectCamera(camera);
152
+ return;
153
+ }
154
+ }
155
+ }
156
+ else {
157
+ throw new Error('Camera not initialized');
158
+ }
159
+ }
160
+ async setScanRegion(options) {
161
+ if (this.camera) {
162
+ this.region = options.region;
163
+ this.applyScanRegion();
164
+ }
165
+ else {
166
+ throw new Error('Camera not initialized');
167
+ }
168
+ }
169
+ applyScanRegion() {
170
+ if (this.camera && this.region) {
171
+ this.camera.setScanRegion({
172
+ regionLeft: this.region.left,
173
+ regionTop: this.region.top,
174
+ regionRight: this.region.right,
175
+ regionBottom: this.region.bottom,
176
+ regionMeasuredByPercentage: this.region.measuredByPercentage
177
+ });
178
+ }
179
+ }
180
+ async setZoom(options) {
181
+ if (this.camera) {
182
+ await this.camera.setZoom(options.factor);
183
+ return;
184
+ }
185
+ else {
186
+ throw new Error('Camera not initialized');
187
+ }
188
+ }
189
+ async setFocus(options) {
190
+ if (this.camera) {
191
+ this.camera.setFocus({
192
+ mode: "manual",
193
+ area: {
194
+ centerPoint: { x: options.x.toString(), y: options.y.toString() }
195
+ }
196
+ });
197
+ }
198
+ else {
199
+ throw new Error('Camera not initialized');
200
+ }
201
+ }
202
+ async toggleTorch(options) {
203
+ if (this.camera) {
204
+ try {
205
+ if (options["on"]) {
206
+ await this.camera.turnOnTorch();
207
+ }
208
+ else {
209
+ await this.camera.turnOffTorch();
210
+ }
211
+ }
212
+ catch (e) {
213
+ throw new Error("Torch unsupported");
214
+ }
215
+ }
216
+ }
217
+ async startCamera() {
218
+ var _a;
219
+ if (this.camera) {
220
+ await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));
221
+ if (this.container && this.isSafari() === true) {
222
+ const resetZoom = async () => {
223
+ var _a, _b;
224
+ await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));
225
+ await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));
226
+ };
227
+ setTimeout(resetZoom, 500);
228
+ }
229
+ }
230
+ else {
231
+ throw new Error('Camera not initialized');
232
+ }
233
+ }
234
+ isSafari() {
235
+ const u = navigator.userAgent.toLowerCase();
236
+ if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {
237
+ return true;
238
+ }
239
+ else {
240
+ return false;
241
+ }
242
+ }
243
+ async stopCamera() {
244
+ if (this.camera) {
245
+ this.camera.close(true);
246
+ }
247
+ else {
248
+ throw new Error('Camera not initialized');
249
+ }
250
+ }
251
+ async isOpen() {
252
+ if (this.camera) {
253
+ return { isOpen: this.camera.isOpen() };
254
+ }
255
+ else {
256
+ throw new Error('Camera not initialized');
257
+ }
258
+ }
259
+ async takeSnapshot(options) {
260
+ if (this.camera) {
261
+ let desiredQuality = 85;
262
+ if (options.quality) {
263
+ desiredQuality = options.quality;
264
+ }
265
+ let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);
266
+ let base64 = dataURL.replace("data:image/jpeg;base64,", "");
267
+ return { base64: base64 };
268
+ }
269
+ else {
270
+ throw new Error('Camera not initialized');
271
+ }
272
+ }
273
+ async takeSnapshot2(options) {
274
+ if (this.camera) {
275
+ let canvas = options.canvas;
276
+ let scaleRatio = 1.0;
277
+ if (options && options.maxLength) {
278
+ let res = (await this.getResolution()).resolution;
279
+ let width = parseInt(res.split("x")[0]);
280
+ let height = parseInt(res.split("x")[1]);
281
+ let targetWidth = width;
282
+ let targetHeight = height;
283
+ if (width > options.maxLength || height > options.maxLength) {
284
+ if (width > height) {
285
+ targetWidth = options.maxLength;
286
+ targetHeight = options.maxLength / width * height;
287
+ scaleRatio = options.maxLength / width;
288
+ }
289
+ else {
290
+ targetHeight = options.maxLength;
291
+ targetWidth = options.maxLength / height * width;
292
+ scaleRatio = options.maxLength / height;
293
+ }
294
+ canvas.width = targetWidth;
295
+ canvas.height = targetHeight;
296
+ let video = this.camera.getUIElement().getElementsByTagName("video")[0];
297
+ let ctx = canvas.getContext('2d');
298
+ if (ctx) {
299
+ ctx.drawImage(video, 0, 0, targetWidth, targetHeight);
300
+ }
301
+ }
302
+ else {
303
+ this.drawFullFrame(canvas);
304
+ }
305
+ }
306
+ else {
307
+ this.drawFullFrame(canvas);
308
+ }
309
+ return { scaleRatio: scaleRatio };
310
+ }
311
+ else {
312
+ throw new Error('Camera not initialized');
313
+ }
314
+ }
315
+ drawFullFrame(canvas) {
316
+ var _a;
317
+ let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName("video")[0];
318
+ if (video) {
319
+ canvas.width = video.videoWidth;
320
+ canvas.height = video.videoHeight;
321
+ let ctx = canvas.getContext('2d');
322
+ if (ctx) {
323
+ ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
324
+ }
325
+ }
326
+ return canvas;
327
+ }
328
+ async takePhoto(_options) {
329
+ if (this.camera) {
330
+ let video = this.camera.getUIElement().getElementsByTagName("video")[0];
331
+ let localStream = video.srcObject;
332
+ if (localStream) {
333
+ if ("ImageCapture" in window) {
334
+ try {
335
+ //@ts-ignore
336
+ let ImageCapture = window["ImageCapture"];
337
+ console.log("ImageCapture supported");
338
+ const track = localStream.getVideoTracks()[0];
339
+ let imageCapture = new ImageCapture(track);
340
+ let blob = await imageCapture.takePhoto();
341
+ return { blob: blob };
342
+ }
343
+ catch (error) {
344
+ console.log(error);
345
+ }
346
+ }
347
+ else {
348
+ console.log("ImageCapture not supported");
349
+ }
350
+ }
351
+ this.camera.setScanRegion({
352
+ regionLeft: 0,
353
+ regionTop: 0,
354
+ regionBottom: 100,
355
+ regionRight: 100,
356
+ regionMeasuredByPercentage: 1
357
+ });
358
+ let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL("image/jpeg"));
359
+ this.applyScanRegion();
360
+ return { base64: base64 };
361
+ }
362
+ else {
363
+ throw new Error('Camera not initialized');
364
+ }
365
+ }
366
+ removeDataURLHead(dataURL) {
367
+ return dataURL.substring(dataURL.indexOf(",") + 1, dataURL.length);
368
+ }
369
+ async requestCameraPermission() {
370
+ const constraints = { video: true, audio: false };
371
+ const stream = await navigator.mediaDevices.getUserMedia(constraints);
372
+ const tracks = stream.getTracks();
373
+ for (let i = 0; i < tracks.length; i++) {
374
+ const track = tracks[i];
375
+ track.stop(); // stop the opened tracks
376
+ }
377
+ }
378
+ async requestMicroPhonePermission() {
379
+ try {
380
+ const constraints = { video: false, audio: true };
381
+ const stream = await navigator.mediaDevices.getUserMedia(constraints);
382
+ const tracks = stream.getTracks();
383
+ for (let i = 0; i < tracks.length; i++) {
384
+ const track = tracks[i];
385
+ track.stop(); // stop the opened tracks
386
+ }
387
+ this.hasMicrophone = true;
388
+ }
389
+ catch (error) {
390
+ this.hasMicrophone = false;
391
+ throw error;
392
+ }
393
+ }
394
+ async startRecording() {
395
+ if (this.camera) {
396
+ if (this.hasMicrophone) {
397
+ let settings = this.camera.getVideoSettings();
398
+ settings.audio = true;
399
+ await this.camera.updateVideoSettings(settings);
400
+ }
401
+ let video = this.camera.getUIElement().getElementsByTagName("video")[0];
402
+ this.recorder = new RecordRTC__default["default"](video.srcObject, {
403
+ type: 'video'
404
+ });
405
+ this.recorder.startRecording();
406
+ }
407
+ else {
408
+ throw new Error("camera not initialized");
409
+ }
410
+ }
411
+ async stopRecording() {
412
+ return new Promise((resolve, reject) => {
413
+ if (this.recorder) {
414
+ const stopRecordingCallback = () => {
415
+ let blob = this.recorder.getBlob();
416
+ this.recorder.destroy();
417
+ this.recorder = null;
418
+ resolve({ blob });
419
+ };
420
+ this.recorder.stopRecording(stopRecordingCallback);
421
+ }
422
+ else {
423
+ reject("recorder not initialized");
424
+ }
425
+ });
426
+ }
427
+ async setLayout(options) {
428
+ if (this.camera) {
429
+ let ele = this.camera.getUIElement();
430
+ if (options.top) {
431
+ ele.style.top = options.top;
432
+ }
433
+ if (options.left) {
434
+ ele.style.left = options.left;
435
+ }
436
+ if (options.width) {
437
+ ele.style.width = options.width;
438
+ }
439
+ if (options.height) {
440
+ ele.style.height = options.height;
441
+ }
442
+ ele.style.position = "absolute";
443
+ }
444
+ else {
445
+ throw new Error("Camera not initialized");
446
+ }
447
+ }
448
+ }
449
+
450
+ var web = /*#__PURE__*/Object.freeze({
451
+ __proto__: null,
452
+ CameraPreviewWeb: CameraPreviewWeb
453
+ });
454
+
455
+ exports.CameraPreview = CameraPreview;
456
+ //# sourceMappingURL=plugin.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var EnumResolution;\n(function (EnumResolution) {\n EnumResolution[EnumResolution[\"RESOLUTION_AUTO\"] = 0] = \"RESOLUTION_AUTO\";\n EnumResolution[EnumResolution[\"RESOLUTION_480P\"] = 1] = \"RESOLUTION_480P\";\n EnumResolution[EnumResolution[\"RESOLUTION_720P\"] = 2] = \"RESOLUTION_720P\";\n EnumResolution[EnumResolution[\"RESOLUTION_1080P\"] = 3] = \"RESOLUTION_1080P\";\n EnumResolution[EnumResolution[\"RESOLUTION_2K\"] = 4] = \"RESOLUTION_2K\";\n EnumResolution[EnumResolution[\"RESOLUTION_4K\"] = 5] = \"RESOLUTION_4K\";\n})(EnumResolution || (EnumResolution = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst CameraPreview = registerPlugin('CameraPreview', {\n web: () => import('./web').then(m => new m.CameraPreviewWeb()),\n});\nexport * from './definitions';\nexport { CameraPreview };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer } from 'dynamsoft-camera-enhancer';\nimport { EnumResolution } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\nexport class CameraPreviewWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.hasMicrophone = false;\n }\n async setDefaultUIElementURL(url) {\n CameraEnhancer.defaultUIElementURL = url;\n }\n async setElement(ele) {\n this.container = ele;\n }\n saveFrame() {\n throw new Error('Method not implemented.');\n }\n async getOrientation() {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return { orientation: \"PORTRAIT\" };\n }\n else {\n return { orientation: \"LANDSCAPE\" };\n }\n }\n async initialize() {\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo) => {\n this.notifyListeners(\"onPlayed\", { resolution: playCallBackInfo.width + \"x\" + playCallBackInfo.height });\n try {\n let canvas = this.camera.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n }\n catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }\n else {\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n });\n }\n async getResolution() {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution = rsl[0] + \"x\" + rsl[1];\n return { resolution: resolution };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setResolution(options) {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P) {\n width = 640;\n height = 480;\n }\n else if (res == EnumResolution.RESOLUTION_720P) {\n width = 1280;\n height = 720;\n }\n else if (res == EnumResolution.RESOLUTION_1080P) {\n width = 1920;\n height = 1080;\n }\n else if (res == EnumResolution.RESOLUTION_2K) {\n width = 2560;\n height = 1440;\n }\n else if (res == EnumResolution.RESOLUTION_4K) {\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width, height);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getAllCameras() {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return { cameras: labels };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getSelectedCamera() {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return { selectedCamera: cameraInfo.label };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async selectCamera(options) {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setScanRegion(options) {\n if (this.camera) {\n this.region = options.region;\n this.applyScanRegion();\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n applyScanRegion() {\n if (this.camera && this.region) {\n this.camera.setScanRegion({\n regionLeft: this.region.left,\n regionTop: this.region.top,\n regionRight: this.region.right,\n regionBottom: this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n async setZoom(options) {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setFocus(options) {\n if (this.camera) {\n this.camera.setFocus({\n mode: \"manual\",\n area: {\n centerPoint: { x: options.x.toString(), y: options.y.toString() }\n }\n });\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async toggleTorch(options) {\n if (this.camera) {\n try {\n if (options[\"on\"]) {\n await this.camera.turnOnTorch();\n }\n else {\n await this.camera.turnOffTorch();\n }\n }\n catch (e) {\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n async startCamera() {\n var _a;\n if (this.camera) {\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n var _a, _b;\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));\n await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));\n };\n setTimeout(resetZoom, 500);\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n isSafari() {\n const u = navigator.userAgent.toLowerCase();\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }\n else {\n return false;\n }\n }\n async stopCamera() {\n if (this.camera) {\n this.camera.close(true);\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async isOpen() {\n if (this.camera) {\n return { isOpen: this.camera.isOpen() };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot(options) {\n if (this.camera) {\n let desiredQuality = 85;\n if (options.quality) {\n desiredQuality = options.quality;\n }\n let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\", \"\");\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot2(options) {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength / width * height;\n scaleRatio = options.maxLength / width;\n }\n else {\n targetHeight = options.maxLength;\n targetWidth = options.maxLength / height * width;\n scaleRatio = options.maxLength / height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n return { scaleRatio: scaleRatio };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n drawFullFrame(canvas) {\n var _a;\n let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n async takePhoto(_options) {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream = video.srcObject;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return { blob: blob };\n }\n catch (error) {\n console.log(error);\n }\n }\n else {\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion({\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n });\n let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL(\"image/jpeg\"));\n this.applyScanRegion();\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n removeDataURLHead(dataURL) {\n return dataURL.substring(dataURL.indexOf(\",\") + 1, dataURL.length);\n }\n async requestCameraPermission() {\n const constraints = { video: true, audio: false };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n async requestMicroPhonePermission() {\n try {\n const constraints = { video: false, audio: true };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n }\n catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n async startRecording() {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject, {\n type: 'video'\n });\n this.recorder.startRecording();\n }\n else {\n throw new Error(\"camera not initialized\");\n }\n }\n async stopRecording() {\n return new Promise((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder.getBlob();\n this.recorder.destroy();\n this.recorder = null;\n resolve({ blob });\n };\n this.recorder.stopRecording(stopRecordingCallback);\n }\n else {\n reject(\"recorder not initialized\");\n }\n });\n }\n async setLayout(options) {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }\n else {\n throw new Error(\"Camera not initialized\");\n }\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["EnumResolution","registerPlugin","CameraEnhancer","WebPlugin","RecordRTC"],"mappings":"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"}