react-native-scanbot-barcode-scanner-sdk 3.0.0-beta7 → 3.1.0-alpha3
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/RNScanbotBarcodeSDK.podspec +1 -1
- package/android/.gradle/6.1.1/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.1.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.1.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.1.1/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.1.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.1.1/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.idea/caches/build_file_checksums.ser +0 -0
- package/android/.idea/compiler.xml +6 -0
- package/android/.idea/gradle.xml +22 -0
- package/android/.idea/jarRepositories.xml +50 -0
- package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_3_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_1_0_rc01_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_3_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_3_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_camera_camera_camera2_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_camera_camera_core_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_camera_camera_lifecycle_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_camera_camera_view_1_0_0_alpha24_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_4_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_4.xml +9 -0
- package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_core_core_1_5_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_core_core_ktx_1_3_2_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_databinding_viewbinding_4_2_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_4_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_v4_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_ktx_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_media_media_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__com_commonsware_cwac_camera_camera_0_6_41_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_60_6_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_6_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_android_material_material_1_3_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_code_gson_gson_2_8_6.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_dagger_dagger_2_35.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_guava_listenablefuture_1_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +13 -0
- package/android/.idea/libraries/Gradle__commons_io_commons_io_2_4.xml +13 -0
- package/android/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_1_5.xml +13 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_barcode_scanner_sdk_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_barcode_scanner_sdk_ui_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_barcode_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_base_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_ui_barcode_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_ui_base_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_sdk_barcode_assets_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_sdk_core_barcode_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_sdk_core_barcode_native_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_sdk_core_sap_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_20.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_20.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_20.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_4_1.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_4_1.xml +13 -0
- package/android/.idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_1.xml +13 -0
- package/android/.idea/misc.xml +9 -0
- package/android/.idea/modules/android.iml +133 -0
- package/android/.idea/modules.xml +8 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/.idea/workspace.xml +62 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/JSONUtils.java +74 -9
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/ScanbotBarcodeSdkModule.java +2 -2
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/ScanbotBarcodeSdkPackage.java +5 -1
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/EventEmitter.java +55 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/barcodecameraview/ScanbotBarcodeCameraViewConfiguration.java +113 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/barcodecameraview/ScanbotBarcodeCameraViewFragment.java +246 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/barcodecameraview/ScanbotBarcodeCameraViewManager.java +160 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/common/ScanbotComponentFrameLayout.java +53 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/common/ScanbotComponentRootView.java +159 -0
- package/android/src/main/res/layout/component_barcode_camera_view.xml +11 -0
- package/android/src/main/res/layout/fragment_barcode_scanner.xml +23 -0
- package/index.d.ts +4 -0
- package/index.js +3 -0
- package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraView.h +54 -0
- package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraView.m +235 -0
- package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraViewManager.h +16 -0
- package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraViewManager.m +30 -0
- package/ios/ScanbotBarcodeSdk.m +1 -1
- package/package.json +4 -1
- package/src/components/barcode-camera-view/scanbot-barcode-camera-view-types.tsx +115 -0
- package/src/components/barcode-camera-view/scanbot-barcode-camera-view.tsx +163 -0
- package/src/components/barcode-camera-view/scanbot-native-barcode-camera-view.tsx +6 -0
- package/src/configuration.ts +2 -2
- package/src/enum.ts +1 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNScanbotCameraView.m
|
|
3
|
+
// RNScanbotSDK
|
|
4
|
+
//
|
|
5
|
+
// Created by Marco Saia on 18.05.21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import "RNScanbotBarcodeCameraView.h"
|
|
9
|
+
#import "ObjectMapper.h"
|
|
10
|
+
#import "BarcodeMapping.h"
|
|
11
|
+
|
|
12
|
+
@import ScanbotBarcodeScannerSDK;
|
|
13
|
+
@import Foundation;
|
|
14
|
+
|
|
15
|
+
@implementation RNScanbotBarcodeCameraView {
|
|
16
|
+
SBSDKBarcodeScannerViewController* viewController;
|
|
17
|
+
RNScanbotCameraViewConfiguration* _cameraViewConfiguration;
|
|
18
|
+
CGFloat _userDefinedCameraZoomFactor;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
- (instancetype)initWithFrame:(CGRect)frame {
|
|
22
|
+
self = [super initWithFrame:frame];
|
|
23
|
+
self.barcodes = [[NSMutableArray alloc] init];
|
|
24
|
+
self.shouldUseFinderView = false;
|
|
25
|
+
_cameraViewConfiguration = [[RNScanbotCameraViewConfiguration alloc] init];
|
|
26
|
+
_userDefinedCameraZoomFactor = -1;
|
|
27
|
+
return self;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
- (void)layoutSubviews {
|
|
31
|
+
if (_cameraViewController) {
|
|
32
|
+
_cameraViewController.view.frame = [self bounds];
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
__weak typeof(self) weakSelf = self;
|
|
37
|
+
|
|
38
|
+
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
|
|
39
|
+
[weakSelf createCameraViewController];
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
- (void)createCameraViewController {
|
|
44
|
+
UIViewController* parentViewController = [self getParentViewController];
|
|
45
|
+
if (!parentViewController) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (!_cameraViewController) {
|
|
50
|
+
viewController = [[SBSDKBarcodeScannerViewController alloc] initWithParentViewController:parentViewController
|
|
51
|
+
parentView:self];
|
|
52
|
+
viewController.delegate = self;
|
|
53
|
+
|
|
54
|
+
_cameraViewController = viewController;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
[self updateWithConfiguration];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
- (void)setConfiguration:(NSDictionary *)configuration {
|
|
61
|
+
_configuration = configuration;
|
|
62
|
+
if (configuration == NULL) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
RNScanbotCameraViewConfiguration* cameraViewConfiguration = [[RNScanbotCameraViewConfiguration alloc] init];
|
|
66
|
+
|
|
67
|
+
NSMutableDictionary* config = [configuration mutableCopy];
|
|
68
|
+
if ([config objectForKey:@"barcodeFormats"]) {
|
|
69
|
+
cameraViewConfiguration.barcodeFormats = extractBarcodeTypesFromConfiguration(config);
|
|
70
|
+
[config removeObjectForKey:@"barcodeFormats"];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@try {
|
|
74
|
+
[ObjectMapper populateInstance:cameraViewConfiguration fromDictionary:config];
|
|
75
|
+
} @catch (NSException *exception) {
|
|
76
|
+
NSLog(@"%@", [exception reason]);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
cameraViewConfiguration.msiPlesseyChecksumAlgorithm = extractPlesseyChecksumAlgorithmFromConfiguration(configuration);
|
|
81
|
+
|
|
82
|
+
_cameraViewConfiguration = cameraViewConfiguration;
|
|
83
|
+
|
|
84
|
+
if(viewController) {
|
|
85
|
+
[self updateWithConfiguration];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
- (void)updateWithConfiguration {
|
|
90
|
+
|
|
91
|
+
// Non-Nullable Properties
|
|
92
|
+
viewController.viewFinderLineWidth = _cameraViewConfiguration.finderLineWidth;
|
|
93
|
+
viewController.viewFinderLineColor = _cameraViewConfiguration.finderLineColor;
|
|
94
|
+
viewController.viewFinderBackgroundColor = _cameraViewConfiguration.finderBackgroundColor;
|
|
95
|
+
viewController.viewFinderBackgroundColor = [viewController.viewFinderBackgroundColor colorWithAlphaComponent:_cameraViewConfiguration.finderBackgroundOpacity];
|
|
96
|
+
viewController.finderAspectRatio = _cameraViewConfiguration.finderAspectRatio;
|
|
97
|
+
|
|
98
|
+
CGFloat offset = _cameraViewConfiguration.finderVerticalOffset;
|
|
99
|
+
CGFloat padding = _cameraViewConfiguration.finderMinimumPadding;
|
|
100
|
+
viewController.finderMinimumInset = UIEdgeInsetsMake(padding + offset > 0 ? offset : 0,
|
|
101
|
+
padding,
|
|
102
|
+
padding + offset < 0 ? -1*offset : 0,
|
|
103
|
+
padding);
|
|
104
|
+
|
|
105
|
+
// Nullable Properties
|
|
106
|
+
if (_cameraViewConfiguration.shouldUseFinderView) {
|
|
107
|
+
viewController.shouldUseFinderFrame = [_cameraViewConfiguration.shouldUseFinderView boolValue];
|
|
108
|
+
}
|
|
109
|
+
if (_cameraViewConfiguration.barcodeFormats) {
|
|
110
|
+
viewController.acceptedBarcodeTypes = _cameraViewConfiguration.barcodeFormats;
|
|
111
|
+
}
|
|
112
|
+
if (_cameraViewConfiguration.acceptedDocumentFormats) {
|
|
113
|
+
viewController.acceptedDocumentTypes = _cameraViewConfiguration.acceptedDocumentFormats;
|
|
114
|
+
}
|
|
115
|
+
if (_cameraViewConfiguration.gs1DecodingEnabled) {
|
|
116
|
+
viewController.additionalDetectionParameters.enableGS1Decoding = [_cameraViewConfiguration.gs1DecodingEnabled boolValue];
|
|
117
|
+
}
|
|
118
|
+
if (_cameraViewConfiguration.maximumTextLength) {
|
|
119
|
+
viewController.additionalDetectionParameters.maximumTextLength = [_cameraViewConfiguration.maximumTextLength intValue];
|
|
120
|
+
}
|
|
121
|
+
if (_cameraViewConfiguration.minimumTextLength) {
|
|
122
|
+
viewController.additionalDetectionParameters.minimumTextLength = [_cameraViewConfiguration.minimumTextLength intValue];
|
|
123
|
+
}
|
|
124
|
+
if (_cameraViewConfiguration.msiPlesseyChecksumAlgorithm != -1) {
|
|
125
|
+
viewController.additionalDetectionParameters.msiPlesseyChecksumAlgorithm = _cameraViewConfiguration.msiPlesseyChecksumAlgorithm;
|
|
126
|
+
}
|
|
127
|
+
if (_cameraViewConfiguration.cameraZoomFactor) {
|
|
128
|
+
CGFloat value = [_cameraViewConfiguration.cameraZoomFactor floatValue];
|
|
129
|
+
if (value != _userDefinedCameraZoomFactor || _userDefinedCameraZoomFactor == -1) {
|
|
130
|
+
viewController.cameraZoomFactor = value;
|
|
131
|
+
_userDefinedCameraZoomFactor = value;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (_cameraViewConfiguration.engineMode != -1) {
|
|
135
|
+
viewController.engineMode = _cameraViewConfiguration.engineMode;
|
|
136
|
+
}
|
|
137
|
+
if (_cameraViewConfiguration.flashEnabled) {
|
|
138
|
+
viewController.flashLightEnabled = [_cameraViewConfiguration.flashEnabled boolValue];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
- (UIViewController* _Nullable)getParentViewController {
|
|
143
|
+
UIResponder* parentResponder = self;
|
|
144
|
+
while (parentResponder) {
|
|
145
|
+
parentResponder = parentResponder.nextResponder;
|
|
146
|
+
if (parentResponder && [parentResponder isKindOfClass:[UIViewController class]]) {
|
|
147
|
+
return (UIViewController*) parentResponder;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return NULL;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
- (void)sendScanResults:(NSArray<SBSDKBarcodeScannerResult*>*) results {
|
|
154
|
+
if(!self.onBarcodeScannerResult) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if(!results || results.count == 0) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
NSMutableArray* jsonBarcodes = [[NSMutableArray alloc] init];
|
|
163
|
+
|
|
164
|
+
for (SBSDKBarcodeScannerResult* result in results) {
|
|
165
|
+
[jsonBarcodes addObject:@{
|
|
166
|
+
@"text": result.rawTextString,
|
|
167
|
+
@"type": result.type.name
|
|
168
|
+
}];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
NSDictionary* outResult = @{
|
|
172
|
+
@"result": @{
|
|
173
|
+
@"status": @"OK",
|
|
174
|
+
@"barcodes": jsonBarcodes
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
self.onBarcodeScannerResult(outResult);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// MARK: - SBSDKBarcodeScannerViewControllerDelegate
|
|
182
|
+
|
|
183
|
+
- (void)barcodeScannerController:(SBSDKBarcodeScannerViewController *)controller
|
|
184
|
+
didDetectBarcodes:(NSArray<SBSDKBarcodeScannerResult *> *)codes {
|
|
185
|
+
[self sendScanResults:codes];
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
- (BOOL)barcodeScannerControllerShouldDetectBarcodes:(SBSDKBarcodeScannerViewController *)controller {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
- (NSArray*)hashedBarcodes {
|
|
193
|
+
NSMutableArray* outArray = [[NSMutableArray alloc] init];
|
|
194
|
+
for (NSDictionary* barcode in self.barcodes) {
|
|
195
|
+
NSString* hash = [RNScanbotBarcodeCameraView hashFromBarcode:barcode];
|
|
196
|
+
[outArray addObject:hash];
|
|
197
|
+
}
|
|
198
|
+
return outArray;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
+ (NSString*)hashFromBarcode: (NSDictionary* _Nonnull)barcode {
|
|
202
|
+
NSString* text = [barcode objectForKey:@"barcode"];
|
|
203
|
+
NSString* type = [barcode objectForKey:@"type"];
|
|
204
|
+
return [[NSString stringWithFormat:@"%@_%@", text, type] lowercaseString];
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
@end
|
|
208
|
+
|
|
209
|
+
@implementation RNScanbotCameraViewConfiguration
|
|
210
|
+
|
|
211
|
+
- (instancetype)init
|
|
212
|
+
{
|
|
213
|
+
self = [super init];
|
|
214
|
+
if (self) {
|
|
215
|
+
self.shouldUseFinderView = false;
|
|
216
|
+
self.finderLineWidth = 1.0;
|
|
217
|
+
self.finderLineColor = UIColor.whiteColor;
|
|
218
|
+
self.finderAspectRatio = [[SBSDKAspectRatio alloc] initWithWidth:1 andHeight:1];
|
|
219
|
+
self.finderBackgroundColor = UIColor.blackColor;
|
|
220
|
+
self.finderBackgroundOpacity = 0.6;
|
|
221
|
+
self.finderMinimumPadding = 32.0;
|
|
222
|
+
self.finderVerticalOffset = 0.0;
|
|
223
|
+
self.acceptedDocumentFormats = nil;
|
|
224
|
+
self.gs1DecodingEnabled = nil;
|
|
225
|
+
self.maximumTextLength = nil;
|
|
226
|
+
self.minimumTextLength = nil;
|
|
227
|
+
self.msiPlesseyChecksumAlgorithm = -1;
|
|
228
|
+
self.cameraZoomFactor = nil;
|
|
229
|
+
self.engineMode = -1;
|
|
230
|
+
self.flashEnabled = nil;
|
|
231
|
+
}
|
|
232
|
+
return self;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNScanbotClassicComponents.h
|
|
3
|
+
// Pods
|
|
4
|
+
//
|
|
5
|
+
// Created by Marco Saia on 17.05.21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#ifndef RNScanbotClassicComponents_h
|
|
9
|
+
#define RNScanbotClassicComponents_h
|
|
10
|
+
|
|
11
|
+
#import <React/RCTViewManager.h>
|
|
12
|
+
|
|
13
|
+
@interface RNScanbotBarcodeCameraViewManager: RCTViewManager
|
|
14
|
+
@end
|
|
15
|
+
|
|
16
|
+
#endif /* RNScanbotClassicComponents_h */
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNScanbotClassicComponents.m
|
|
3
|
+
// RNScanbotSDK
|
|
4
|
+
//
|
|
5
|
+
// Created by Marco Saia on 17.05.21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import <Foundation/Foundation.h>
|
|
9
|
+
#import "RNScanbotBarcodeCameraViewManager.h"
|
|
10
|
+
#import "RNScanbotBarcodeCameraView.h"
|
|
11
|
+
#import <React/RCTViewManager.h>
|
|
12
|
+
|
|
13
|
+
@import UIKit;
|
|
14
|
+
@import ScanbotBarcodeScannerSDK;
|
|
15
|
+
|
|
16
|
+
@implementation RNScanbotBarcodeCameraViewManager
|
|
17
|
+
|
|
18
|
+
RCT_EXPORT_MODULE(ScanbotBarcodeCameraView)
|
|
19
|
+
|
|
20
|
+
RCT_EXPORT_VIEW_PROPERTY(onBarcodeScannerResult, RCTBubblingEventBlock)
|
|
21
|
+
RCT_EXPORT_VIEW_PROPERTY(requestComponentReload, RCTBubblingEventBlock)
|
|
22
|
+
RCT_EXPORT_VIEW_PROPERTY(shouldUseFinderView, BOOL)
|
|
23
|
+
RCT_EXPORT_VIEW_PROPERTY(configuration, NSDictionary*)
|
|
24
|
+
|
|
25
|
+
- (UIView *) view
|
|
26
|
+
{
|
|
27
|
+
return [[RNScanbotBarcodeCameraView alloc] init];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@end
|
package/ios/ScanbotBarcodeSdk.m
CHANGED
|
@@ -39,7 +39,7 @@ RCT_EXPORT_METHOD(initializeSdk:(NSDictionary *)configuration
|
|
|
39
39
|
[ObjectMapper setEnumerationMapping:@{
|
|
40
40
|
@"barcodeImageGenerationType": @{
|
|
41
41
|
@"NONE": @(SBSDKBarcodeImageGenerationTypeNone),
|
|
42
|
-
@"
|
|
42
|
+
@"VIDEO_FRAME": @(SBSDKBarcodeImageGenerationTypeFromVideoFrame),
|
|
43
43
|
@"CAPTURED_IMAGE" :@(SBSDKBarcodeImageGenerationTypeCapturedImage),
|
|
44
44
|
},
|
|
45
45
|
@"engineMode": @{
|
package/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-scanbot-barcode-scanner-sdk",
|
|
3
3
|
"title": "Scanbot Barcode Scanner SDK for React Native",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.1.0-alpha3",
|
|
5
5
|
"description": "React Native plugin for the Scanbot Barcode Scanner SDK on Android and iOS",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"files": [
|
|
8
8
|
"src/*.js",
|
|
9
9
|
"src/*.ts",
|
|
10
|
+
"src/components/**/*.ts",
|
|
11
|
+
"src/components/**/*.tsx",
|
|
12
|
+
"src/components/**/*.js",
|
|
10
13
|
"android/**",
|
|
11
14
|
"ios/**",
|
|
12
15
|
"index.d.ts",
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import {StyleProp, ViewStyle} from 'react-native';
|
|
2
|
+
import {
|
|
3
|
+
BarcodeDocumentFormat,
|
|
4
|
+
BarcodeFormat,
|
|
5
|
+
EngineMode,
|
|
6
|
+
MSIPlesseyChecksumAlgorithm,
|
|
7
|
+
} from '../../enum';
|
|
8
|
+
import {FinderAspectRatio} from '../../model';
|
|
9
|
+
|
|
10
|
+
export interface ScanbotBarcodeCameraViewProperties {
|
|
11
|
+
onBarcodeScannerResult?: (result: ScanbotBarcodeCameraViewResult) => void;
|
|
12
|
+
requestComponentReload?: () => void;
|
|
13
|
+
configuration?: ScanbotBarcodeCameraViewConfiguration;
|
|
14
|
+
style: StyleProp<ViewStyle>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface ScanbotBarcodeCameraViewBarcode {
|
|
18
|
+
text: string;
|
|
19
|
+
type: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type ScanbotBarcodeCameraViewResult = {
|
|
23
|
+
status: 'OK' | 'CANCELED';
|
|
24
|
+
barcodes: ScanbotBarcodeCameraViewBarcode[];
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export interface ScanbotBarcodeCameraViewConfiguration {
|
|
28
|
+
/**
|
|
29
|
+
* The finder view is a rectangular overlay view that clips the camera view,
|
|
30
|
+
* so that the detection will focus just a specific area. You can specify
|
|
31
|
+
* the size and positioning, as well as other UI properties.
|
|
32
|
+
* Set this property to `true` if you want to use the Finder View, `false` otherwise (default: false)
|
|
33
|
+
*/
|
|
34
|
+
shouldUseFinderView?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* The finder view rectangular overlay border width
|
|
37
|
+
*/
|
|
38
|
+
finderLineWidth?: number;
|
|
39
|
+
/**
|
|
40
|
+
* The finder view rectangular overlay border color
|
|
41
|
+
*/
|
|
42
|
+
finderLineColor?: string;
|
|
43
|
+
/**
|
|
44
|
+
* The overlay background color, around the finder view rectangle
|
|
45
|
+
*/
|
|
46
|
+
finderBackgroundColor?: string;
|
|
47
|
+
/**
|
|
48
|
+
* The overlay background color opacity, around the finder view rectangle
|
|
49
|
+
*/
|
|
50
|
+
finderBackgroundOpacity?: number;
|
|
51
|
+
/**
|
|
52
|
+
* The finder view rectangle aspect ratio
|
|
53
|
+
*/
|
|
54
|
+
finderAspectRatio?: FinderAspectRatio;
|
|
55
|
+
/**
|
|
56
|
+
* The finder view minimum padding from the bounds of the screen
|
|
57
|
+
*/
|
|
58
|
+
finderMinimumPadding?: number;
|
|
59
|
+
/**
|
|
60
|
+
* How many pixel units the finder view should be moved vertically;
|
|
61
|
+
*
|
|
62
|
+
* Positive values -> (UP); Negative values -> (DOWN)
|
|
63
|
+
*/
|
|
64
|
+
finderVerticalOffset?: number;
|
|
65
|
+
/**
|
|
66
|
+
* Whether flash is toggled on or off.
|
|
67
|
+
*/
|
|
68
|
+
flashEnabled?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* List of accepted Barcode Formats; any formats that are not included in this
|
|
71
|
+
* list will not be detected by the `BarcodeCameraView`. By default, the list
|
|
72
|
+
* includes all supported barcode types.
|
|
73
|
+
*/
|
|
74
|
+
barcodeFormats?: BarcodeFormat[];
|
|
75
|
+
/**
|
|
76
|
+
* List of accepted Document Formats; any document formats that are not included
|
|
77
|
+
* in this list will be ignored by the `BarcodeCameraView`. By default, the list
|
|
78
|
+
* includes all supported document types.
|
|
79
|
+
*/
|
|
80
|
+
acceptedDocumentFormats?: BarcodeDocumentFormat[];
|
|
81
|
+
/**
|
|
82
|
+
* The checksum algorithm for MSI Plessey barcodes.
|
|
83
|
+
* The default value is `Mod10'
|
|
84
|
+
*/
|
|
85
|
+
msiPlesseyChecksumAlgorithm?: MSIPlesseyChecksumAlgorithm;
|
|
86
|
+
/**
|
|
87
|
+
* The engine mode of the barcode recognizer. Defaults to NEXT_GEN.
|
|
88
|
+
* To use legacy recognizer, please specify LEGACY
|
|
89
|
+
*/
|
|
90
|
+
engineMode?: EngineMode;
|
|
91
|
+
/**
|
|
92
|
+
* The relative initial zoom level of the camera in the range [0,1], where 0 is zoomed out and 1 is zoomed in.
|
|
93
|
+
* The default value is 0.
|
|
94
|
+
*/
|
|
95
|
+
cameraZoomFactor?: number;
|
|
96
|
+
/**
|
|
97
|
+
* When set to `true`, the scanner assumes that the barcode can be a GS1 barcode.
|
|
98
|
+
* Turn it off, if you don't want to see decoded FNC1 characters ("]C1" and ASCII char 29).
|
|
99
|
+
* The default value is `true`.
|
|
100
|
+
* NOTE: Currently works for CODE128 barcodes only.
|
|
101
|
+
*/
|
|
102
|
+
gs1DecodingEnabled?: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Optional minimum required text length of the detected barcode.
|
|
105
|
+
* The default is 0 (setting is turned off).
|
|
106
|
+
* NOTE: This feature works on ITF barcodes only.
|
|
107
|
+
*/
|
|
108
|
+
minimumTextLength?: number;
|
|
109
|
+
/**
|
|
110
|
+
* Optional maximum required text length of the detected barcode.
|
|
111
|
+
* The default is 0 (setting is turned off).
|
|
112
|
+
* NOTE: This feature works on ITF barcodes only.
|
|
113
|
+
*/
|
|
114
|
+
maximumTextLength?: number;
|
|
115
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {Platform} from 'react-native';
|
|
3
|
+
import {Dimensions} from 'react-native';
|
|
4
|
+
import {ScanbotBarcodeCameraViewProperties} from './scanbot-barcode-camera-view-types';
|
|
5
|
+
import ScanbotNativeBarcodeCameraView from './scanbot-native-barcode-camera-view';
|
|
6
|
+
|
|
7
|
+
const Device = {
|
|
8
|
+
isPortrait: () => {
|
|
9
|
+
const dim = Dimensions.get('screen');
|
|
10
|
+
return dim.height >= dim.width;
|
|
11
|
+
},
|
|
12
|
+
isLandscape: () => {
|
|
13
|
+
const dim = Dimensions.get('screen');
|
|
14
|
+
return dim.width >= dim.height;
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
interface ScanbotBarcodeCameraViewState {
|
|
19
|
+
orientation: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
type Properties = ScanbotBarcodeCameraViewProperties;
|
|
23
|
+
export class ScanbotBarcodeCameraView extends React.Component<Properties, {}> {
|
|
24
|
+
// String length of auto-generated component key
|
|
25
|
+
static UNIQUE_VIEW_KEY_LENGTH = 6;
|
|
26
|
+
|
|
27
|
+
// This attribute allows us to retrieve a key for the component depending on the current state.
|
|
28
|
+
// If the component has been invalidated, it returns a new key and the view gets recreated,
|
|
29
|
+
// otherwise it uses the last generated one
|
|
30
|
+
_cameraKey = '';
|
|
31
|
+
get cameraKey(): string {
|
|
32
|
+
if (!this.isDirty) {
|
|
33
|
+
return this._cameraKey;
|
|
34
|
+
}
|
|
35
|
+
this.isDirty = false;
|
|
36
|
+
this._cameraKey = ScanbotBarcodeCameraView.getRandomId(
|
|
37
|
+
ScanbotBarcodeCameraView.UNIQUE_VIEW_KEY_LENGTH,
|
|
38
|
+
);
|
|
39
|
+
return this._cameraKey;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// We keep track of the state of children components, so that we can re-render the component
|
|
43
|
+
// in some special cases (Android)
|
|
44
|
+
previousChildrenIds: string[] = [];
|
|
45
|
+
get childrenIds(): string[] {
|
|
46
|
+
const children = this.props.children
|
|
47
|
+
? React.Children.map(this.props.children, child => child)
|
|
48
|
+
: [];
|
|
49
|
+
|
|
50
|
+
return children?.map((c: any) => `${c.type.name}-${c.key}`) ?? [];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// When true, a new component key will be generated on the next render,
|
|
54
|
+
// causing the component to be recreated
|
|
55
|
+
isDirty = true;
|
|
56
|
+
|
|
57
|
+
state: ScanbotBarcodeCameraViewState = {
|
|
58
|
+
orientation: Device.isPortrait() ? 'portrait' : 'landscape',
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// Returns a random string ID of the given length
|
|
62
|
+
static getRandomId(
|
|
63
|
+
length: number = ScanbotBarcodeCameraView.UNIQUE_VIEW_KEY_LENGTH,
|
|
64
|
+
): string {
|
|
65
|
+
let result = '';
|
|
66
|
+
const characters =
|
|
67
|
+
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
68
|
+
const charactersLength = characters.length;
|
|
69
|
+
for (let i = 0; i < length; i++) {
|
|
70
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Event Listener for orientation changes
|
|
76
|
+
orientationChangeHandler = () => {
|
|
77
|
+
this.isDirty = true;
|
|
78
|
+
this.setState({
|
|
79
|
+
orientation: Device.isPortrait() ? 'portrait' : 'landscape',
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// Maps the native bridge callback event from the Barcode Scanner
|
|
84
|
+
_onBarcodeScannerResult = (event: any) => {
|
|
85
|
+
if (!this.props.onBarcodeScannerResult) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
this.props.onBarcodeScannerResult(event.nativeEvent.result);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
render() {
|
|
93
|
+
this.evaluateComponentState();
|
|
94
|
+
|
|
95
|
+
const style = this.preprocessStyle();
|
|
96
|
+
const props = this.preprocessProps();
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<ScanbotNativeBarcodeCameraView
|
|
100
|
+
{...props}
|
|
101
|
+
style={style}
|
|
102
|
+
key={this.cameraKey}
|
|
103
|
+
requestComponentReload={this._invalidate}
|
|
104
|
+
onBarcodeScannerResult={this._onBarcodeScannerResult}
|
|
105
|
+
/>
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
componentDidMount() {
|
|
110
|
+
Dimensions.addEventListener('change', this.orientationChangeHandler);
|
|
111
|
+
this.previousChildrenIds = this.childrenIds;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
componentWillUnmount() {
|
|
115
|
+
Dimensions.removeEventListener('change', this.orientationChangeHandler);
|
|
116
|
+
this.previousChildrenIds = [];
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
evaluateComponentState = () => {
|
|
120
|
+
// We want to force a re-layout every time new children are added or removed
|
|
121
|
+
// from the BarcodeCameraView on Android; this will allow the native code to
|
|
122
|
+
// re-compute the size of every view inside the layout
|
|
123
|
+
if (Platform.OS === 'android') {
|
|
124
|
+
const currentChildrenIds = this.childrenIds;
|
|
125
|
+
|
|
126
|
+
const invalidate = () => {
|
|
127
|
+
this._invalidate();
|
|
128
|
+
this.previousChildrenIds = currentChildrenIds;
|
|
129
|
+
};
|
|
130
|
+
if (currentChildrenIds.length !== this.previousChildrenIds.length) {
|
|
131
|
+
invalidate();
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
for (let i = 0; i < this.previousChildrenIds.length; i++) {
|
|
136
|
+
const previous = this.previousChildrenIds[i];
|
|
137
|
+
const current = currentChildrenIds[i];
|
|
138
|
+
if (previous !== current) {
|
|
139
|
+
invalidate();
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
preprocessStyle = () => {
|
|
147
|
+
const style = this.props.style as any;
|
|
148
|
+
const newStyle = {...style} || {};
|
|
149
|
+
// Override / Define styles here
|
|
150
|
+
return newStyle;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
preprocessProps = () => {
|
|
154
|
+
const props = {...this.props};
|
|
155
|
+
delete props.style;
|
|
156
|
+
return props;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
// Invalidates the component so that it gets recreated on the next render
|
|
160
|
+
_invalidate = () => {
|
|
161
|
+
this.isDirty = true;
|
|
162
|
+
};
|
|
163
|
+
}
|
package/src/configuration.ts
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
Copyright (c) 2020 doo GmbH. All rights reserved.
|
|
4
4
|
https://scanbot.io/sdk
|
|
5
5
|
*/
|
|
6
|
-
import { FinderAspectRatio } from "./
|
|
6
|
+
import { FinderAspectRatio } from "./model";
|
|
7
7
|
import {
|
|
8
8
|
BarcodeDocumentFormat,
|
|
9
9
|
BarcodeFormat,
|
|
10
10
|
BarcodeImageGenerationType,
|
|
11
11
|
UIInterfaceOrientationMask,
|
|
12
12
|
EngineMode
|
|
13
|
-
} from "./
|
|
13
|
+
} from "./enum";
|
|
14
14
|
import { MSIPlesseyChecksumAlgorithm } from "react-native-scanbot-barcode-scanner-sdk/src/enum";
|
|
15
15
|
|
|
16
16
|
export interface BarcodeScannerConfiguration
|