@habibov77/cordova-plugin-mcc-mlkit-barcode-scanner-fixed 1.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.
@@ -0,0 +1,133 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const barcodeFormat = Object.freeze({
6
+ Code128: 1,
7
+ Code39: 2,
8
+ Code93: 4,
9
+ CodaBar: 8,
10
+ DataMatrix: 16,
11
+ EAN13: 32,
12
+ EAN8: 64,
13
+ ITF: 128,
14
+ QRCode: 256,
15
+ UPCA: 512,
16
+ UPCE: 1024,
17
+ PDF417: 2048,
18
+ Aztec: 4096,
19
+ });
20
+ const barcodeType = Object.freeze({
21
+ CONTACT_INFO: 1,
22
+ EMAIL: 2,
23
+ ISBN: 3,
24
+ PHONE: 4,
25
+ PRODUCT: 5,
26
+ SMS: 6,
27
+ TEXT: 7,
28
+ URL: 8,
29
+ WIFI: 9,
30
+ GEO: 10,
31
+ CALENDAR_EVENT: 11,
32
+ DRIVER_LICENSE: 12,
33
+ });
34
+
35
+ const defaultOptions = Object.freeze({
36
+ barcodeFormats: {
37
+ Code128: true,
38
+ Code39: true,
39
+ Code93: true,
40
+ CodaBar: true,
41
+ DataMatrix: true,
42
+ EAN13: true,
43
+ EAN8: true,
44
+ ITF: true,
45
+ QRCode: true,
46
+ UPCA: true,
47
+ UPCE: true,
48
+ PDF417: true,
49
+ Aztec: true,
50
+ },
51
+ beepOnSuccess: false,
52
+ vibrateOnSuccess: false,
53
+ detectorSize: 0.6,
54
+ rotateCamera: false,
55
+ timeoutMs: 0,
56
+ });
57
+
58
+ function keyByValue(obj, value) {
59
+ const keys = Object.keys(obj);
60
+ const index = keys.map((key) => obj[key]).indexOf(value);
61
+ return keys[index] || String(value);
62
+ }
63
+
64
+ class MLKitBarcodeScanner {
65
+ getBarcodeFormat(format) {
66
+ return keyByValue(barcodeFormat, format);
67
+ }
68
+ getBarcodeType(type) {
69
+ return keyByValue(barcodeType, type);
70
+ }
71
+ getBarcodeFormatFlags(barcodeFormats) {
72
+ let barcodeFormatFlag = 0;
73
+ let key;
74
+ const formats = barcodeFormats || defaultOptions.barcodeFormats;
75
+ // eslint-disable-next-line no-restricted-syntax
76
+ for (key in formats) {
77
+ if (barcodeFormat.hasOwnProperty(key) &&
78
+ formats.hasOwnProperty(key) &&
79
+ formats[key]) {
80
+ barcodeFormatFlag += barcodeFormat[key];
81
+ }
82
+ }
83
+ return barcodeFormatFlag;
84
+ }
85
+ scan(userOptions, success, failure) {
86
+ const barcodeFormats = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.barcodeFormats) || defaultOptions.barcodeFormats;
87
+ const config = Object.assign(Object.assign(Object.assign({}, defaultOptions), userOptions), { barcodeFormats: this.getBarcodeFormatFlags(barcodeFormats) });
88
+ this.sendScanRequest(config, success, failure);
89
+ }
90
+ sendScanRequest(config, successCallback, failureCallback) {
91
+ cordova.exec((data) => {
92
+ const [text, format, type] = data;
93
+ successCallback({
94
+ text,
95
+ format: this.getBarcodeFormat(format),
96
+ type: this.getBarcodeType(type),
97
+ });
98
+ }, (err) => {
99
+ switch (err[0]) {
100
+ case null:
101
+ case 'USER_CANCELLED':
102
+ failureCallback({
103
+ cancelled: true,
104
+ message: 'The scan was cancelled.',
105
+ });
106
+ break;
107
+ case 'SCANNER_OPEN':
108
+ failureCallback({
109
+ cancelled: false,
110
+ message: 'Scanner already open.',
111
+ });
112
+ break;
113
+ case 'SCAN_TIMEOUT':
114
+ failureCallback({
115
+ cancelled: false,
116
+ message: 'Scan timed out.',
117
+ });
118
+ break;
119
+ default:
120
+ failureCallback({
121
+ cancelled: false,
122
+ message: err[0] || 'Unknown Error',
123
+ });
124
+ break;
125
+ }
126
+ }, 'cordova-plugin-mcc-mlkit-barcode-scanner', 'startScan', [config]);
127
+ }
128
+ }
129
+ const barcodeScanner = new MLKitBarcodeScanner();
130
+ module.exports = barcodeScanner;
131
+
132
+ exports.MLKitBarcodeScanner = MLKitBarcodeScanner;
133
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFyY29kZVNjYW5uZXIucGx1Z2luLmpzIiwic291cmNlcyI6WyIuLi9zcmMtdHlwZXNjcmlwdC9EZXRlY3Rvci50cyIsIi4uL3NyYy10eXBlc2NyaXB0L09wdGlvbnMudHMiLCIuLi9zcmMtdHlwZXNjcmlwdC91dGlsL09iamVjdC50cyIsIi4uL3NyYy10eXBlc2NyaXB0L0JhcmNvZGVTY2FubmVyLnBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmFyY29kZUZvcm1hdCA9IE9iamVjdC5mcmVlemUoe1xyXG4gIENvZGUxMjg6IDEsXHJcbiAgQ29kZTM5OiAyLFxyXG4gIENvZGU5MzogNCxcclxuICBDb2RhQmFyOiA4LFxyXG4gIERhdGFNYXRyaXg6IDE2LFxyXG4gIEVBTjEzOiAzMixcclxuICBFQU44OiA2NCxcclxuICBJVEY6IDEyOCxcclxuICBRUkNvZGU6IDI1NixcclxuICBVUENBOiA1MTIsXHJcbiAgVVBDRTogMTAyNCxcclxuICBQREY0MTc6IDIwNDgsXHJcbiAgQXp0ZWM6IDQwOTYsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGJhcmNvZGVUeXBlID0gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgQ09OVEFDVF9JTkZPOiAxLFxyXG4gIEVNQUlMOiAyLFxyXG4gIElTQk46IDMsXHJcbiAgUEhPTkU6IDQsXHJcbiAgUFJPRFVDVDogNSxcclxuICBTTVM6IDYsXHJcbiAgVEVYVDogNyxcclxuICBVUkw6IDgsXHJcbiAgV0lGSTogOSxcclxuICBHRU86IDEwLFxyXG4gIENBTEVOREFSX0VWRU5UOiAxMSxcclxuICBEUklWRVJfTElDRU5TRTogMTIsXHJcbn0pO1xyXG4iLCJpbXBvcnQgeyBJT3B0aW9ucyB9IGZyb20gJy4vSW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBjb25zdCBkZWZhdWx0T3B0aW9uczogUmVxdWlyZWQ8SU9wdGlvbnM+ID0gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgYmFyY29kZUZvcm1hdHM6IHtcclxuICAgIENvZGUxMjg6IHRydWUsXHJcbiAgICBDb2RlMzk6IHRydWUsXHJcbiAgICBDb2RlOTM6IHRydWUsXHJcbiAgICBDb2RhQmFyOiB0cnVlLFxyXG4gICAgRGF0YU1hdHJpeDogdHJ1ZSxcclxuICAgIEVBTjEzOiB0cnVlLFxyXG4gICAgRUFOODogdHJ1ZSxcclxuICAgIElURjogdHJ1ZSxcclxuICAgIFFSQ29kZTogdHJ1ZSxcclxuICAgIFVQQ0E6IHRydWUsXHJcbiAgICBVUENFOiB0cnVlLFxyXG4gICAgUERGNDE3OiB0cnVlLFxyXG4gICAgQXp0ZWM6IHRydWUsXHJcbiAgfSxcclxuICBiZWVwT25TdWNjZXNzOiBmYWxzZSxcclxuICB2aWJyYXRlT25TdWNjZXNzOiBmYWxzZSxcclxuICBkZXRlY3RvclNpemU6IDAuNixcclxuICByb3RhdGVDYW1lcmE6IGZhbHNlLFxyXG4gIHRpbWVvdXRNczogMCxcclxufSk7XHJcbiIsImV4cG9ydCBmdW5jdGlvbiBrZXlCeVZhbHVlPFRPYmplY3Q+KFxyXG4gIG9iajogeyBbczogc3RyaW5nXTogVE9iamVjdCB9LFxyXG4gIHZhbHVlOiBUT2JqZWN0LFxyXG4pOiBzdHJpbmcge1xyXG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xyXG4gIGNvbnN0IGluZGV4ID0ga2V5cy5tYXAoKGtleSkgPT4gb2JqW2tleV0pLmluZGV4T2YodmFsdWUpO1xyXG4gIHJldHVybiBrZXlzW2luZGV4XSB8fCBTdHJpbmcodmFsdWUpO1xyXG59XHJcbiIsImltcG9ydCB7IGJhcmNvZGVGb3JtYXQsIGJhcmNvZGVUeXBlIH0gZnJvbSAnLi9EZXRlY3Rvcic7XHJcbmltcG9ydCB7XHJcbiAgSUJhcmNvZGVGb3JtYXRzLFxyXG4gIElDb25maWcsXHJcbiAgSUVycm9yLFxyXG4gIElPcHRpb25zLFxyXG4gIElSZXN1bHQsXHJcbn0gZnJvbSAnLi9JbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBkZWZhdWx0T3B0aW9ucyB9IGZyb20gJy4vT3B0aW9ucyc7XHJcbmltcG9ydCB7IGtleUJ5VmFsdWUgfSBmcm9tICcuL3V0aWwvT2JqZWN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBNTEtpdEJhcmNvZGVTY2FubmVyIHtcclxuICBwcml2YXRlIGdldEJhcmNvZGVGb3JtYXQoZm9ybWF0OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGtleUJ5VmFsdWUoYmFyY29kZUZvcm1hdCwgZm9ybWF0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QmFyY29kZVR5cGUodHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBrZXlCeVZhbHVlKGJhcmNvZGVUeXBlLCB0eXBlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QmFyY29kZUZvcm1hdEZsYWdzKGJhcmNvZGVGb3JtYXRzPzogSUJhcmNvZGVGb3JtYXRzKTogbnVtYmVyIHtcclxuICAgIGxldCBiYXJjb2RlRm9ybWF0RmxhZyA9IDA7XHJcbiAgICBsZXQga2V5OiBrZXlvZiB0eXBlb2YgYmFyY29kZUZvcm1hdDtcclxuICAgIGNvbnN0IGZvcm1hdHMgPSBiYXJjb2RlRm9ybWF0cyB8fCBkZWZhdWx0T3B0aW9ucy5iYXJjb2RlRm9ybWF0cztcclxuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcclxuICAgIGZvciAoa2V5IGluIGZvcm1hdHMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGJhcmNvZGVGb3JtYXQuaGFzT3duUHJvcGVydHkoa2V5KSAmJlxyXG4gICAgICAgIGZvcm1hdHMuaGFzT3duUHJvcGVydHkoa2V5KSAmJlxyXG4gICAgICAgIGZvcm1hdHNba2V5XVxyXG4gICAgICApIHtcclxuICAgICAgICBiYXJjb2RlRm9ybWF0RmxhZyArPSBiYXJjb2RlRm9ybWF0W2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBiYXJjb2RlRm9ybWF0RmxhZztcclxuICB9XHJcblxyXG4gIHNjYW4oXHJcbiAgICB1c2VyT3B0aW9uczogSU9wdGlvbnMsXHJcbiAgICBzdWNjZXNzOiAocmVzdWx0OiBJUmVzdWx0KSA9PiB1bmtub3duLFxyXG4gICAgZmFpbHVyZTogKGVycm9yOiBJRXJyb3IpID0+IHVua25vd24sXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBiYXJjb2RlRm9ybWF0cyA9XHJcbiAgICAgIHVzZXJPcHRpb25zPy5iYXJjb2RlRm9ybWF0cyB8fCBkZWZhdWx0T3B0aW9ucy5iYXJjb2RlRm9ybWF0cztcclxuICAgIGNvbnN0IGNvbmZpZzogSUNvbmZpZyA9IHtcclxuICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXHJcbiAgICAgIC4uLnVzZXJPcHRpb25zLFxyXG4gICAgICBiYXJjb2RlRm9ybWF0czogdGhpcy5nZXRCYXJjb2RlRm9ybWF0RmxhZ3MoYmFyY29kZUZvcm1hdHMpLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnNlbmRTY2FuUmVxdWVzdChjb25maWcsIHN1Y2Nlc3MsIGZhaWx1cmUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZW5kU2NhblJlcXVlc3QoXHJcbiAgICBjb25maWc6IElDb25maWcsXHJcbiAgICBzdWNjZXNzQ2FsbGJhY2s6IChyZXN1bHQ6IElSZXN1bHQpID0+IHVua25vd24sXHJcbiAgICBmYWlsdXJlQ2FsbGJhY2s6IChlcnJvcjogSUVycm9yKSA9PiB1bmtub3duLFxyXG4gICk6IHZvaWQge1xyXG4gICAgY29yZG92YS5leGVjKFxyXG4gICAgICAoZGF0YTogW3N0cmluZywgbnVtYmVyLCBudW1iZXJdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgW3RleHQsIGZvcm1hdCwgdHlwZV0gPSBkYXRhO1xyXG4gICAgICAgIHN1Y2Nlc3NDYWxsYmFjayh7XHJcbiAgICAgICAgICB0ZXh0LFxyXG4gICAgICAgICAgZm9ybWF0OiB0aGlzLmdldEJhcmNvZGVGb3JtYXQoZm9ybWF0KSxcclxuICAgICAgICAgIHR5cGU6IHRoaXMuZ2V0QmFyY29kZVR5cGUodHlwZSksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnI6IChzdHJpbmcgfCBudWxsKVtdKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChlcnJbMF0pIHtcclxuICAgICAgICAgIGNhc2UgbnVsbDpcclxuICAgICAgICAgIGNhc2UgJ1VTRVJfQ0FOQ0VMTEVEJzpcclxuICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKHtcclxuICAgICAgICAgICAgICBjYW5jZWxsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ1RoZSBzY2FuIHdhcyBjYW5jZWxsZWQuJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnU0NBTk5FUl9PUEVOJzpcclxuICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKHtcclxuICAgICAgICAgICAgICBjYW5jZWxsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdTY2FubmVyIGFscmVhZHkgb3Blbi4nLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdTQ0FOX1RJTUVPVVQnOlxyXG4gICAgICAgICAgICBmYWlsdXJlQ2FsbGJhY2soe1xyXG4gICAgICAgICAgICAgIGNhbmNlbGxlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ1NjYW4gdGltZWQgb3V0LicsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGZhaWx1cmVDYWxsYmFjayh7XHJcbiAgICAgICAgICAgICAgY2FuY2VsbGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJbMF0gfHwgJ1Vua25vd24gRXJyb3InLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAnY29yZG92YS1wbHVnaW4tbWNjLW1sa2l0LWJhcmNvZGUtc2Nhbm5lcicsXHJcbiAgICAgICdzdGFydFNjYW4nLFxyXG4gICAgICBbY29uZmlnXSxcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBiYXJjb2RlU2Nhbm5lciA9IG5ldyBNTEtpdEJhcmNvZGVTY2FubmVyKCk7XHJcbm1vZHVsZS5leHBvcnRzID0gYmFyY29kZVNjYW5uZXI7XHJcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQU8sTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN6QyxPQUFPLEVBQUUsQ0FBQztJQUNWLE1BQU0sRUFBRSxDQUFDO0lBQ1QsTUFBTSxFQUFFLENBQUM7SUFDVCxPQUFPLEVBQUUsQ0FBQztJQUNWLFVBQVUsRUFBRSxFQUFFO0lBQ2QsS0FBSyxFQUFFLEVBQUU7SUFDVCxJQUFJLEVBQUUsRUFBRTtJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsTUFBTSxFQUFFLEdBQUc7SUFDWCxJQUFJLEVBQUUsR0FBRztJQUNULElBQUksRUFBRSxJQUFJO0lBQ1YsTUFBTSxFQUFFLElBQUk7SUFDWixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMsQ0FBQztBQUVJLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkMsWUFBWSxFQUFFLENBQUM7SUFDZixLQUFLLEVBQUUsQ0FBQztJQUNSLElBQUksRUFBRSxDQUFDO0lBQ1AsS0FBSyxFQUFFLENBQUM7SUFDUixPQUFPLEVBQUUsQ0FBQztJQUNWLEdBQUcsRUFBRSxDQUFDO0lBQ04sSUFBSSxFQUFFLENBQUM7SUFDUCxHQUFHLEVBQUUsQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDO0lBQ1AsR0FBRyxFQUFFLEVBQUU7SUFDUCxjQUFjLEVBQUUsRUFBRTtJQUNsQixjQUFjLEVBQUUsRUFBRTtDQUNuQixDQUFDOztBQzNCSyxNQUFNLGNBQWMsR0FBdUIsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM5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