react-native-scanbot-sdk
Version:
Scanbot Document and Barcode Scanner SDK React Native Plugin for Android and iOS
183 lines (173 loc) • 9.7 kB
JavaScript
import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
import { DocumentData } from '../document_scanner';
import { mapRTUUIResult } from '../utils';
import { BarcodeScannerUiResult } from './barcode/BarcodeScannerUiResult';
import { MultipleScanningMode } from './barcode/MultipleScanningModeUseCase';
import { SingleScanningMode } from './barcode/SingleScanningModeUseCase';
import { CheckScannerUiResult } from './check/CheckScannerUIResult';
import { CreditCardScannerUiResult } from './creditcard/CreditCardScannerUIResult';
import { DocumentDataExtractorUiResult } from './dde/DocumentDataExtractorUIResult';
import { MrzScannerUiResult } from './mrz/MRZScannerUIResult';
import { TextPatternScannerUiResult } from './textpattern/TextPatternScannerUIResult';
import { VinScannerUiResult } from './vin/VINScannerUIResult';
const LINKING_ERROR = `The package 'react-native-scanbot-sdk' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
ios: "- You have run 'pod install'\n",
default: ''
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
const ScanbotSDKUIImpl = NativeModules.RNScanbotRTUUI ? NativeModules.RNScanbotRTUUI : new Proxy({}, {
get() {
throw new Error(LINKING_ERROR);
}
});
const isIOS = Platform.OS === 'ios';
/**
* Opens the Ready-To-Use UI screen for scanning Barcodes and QR-Codes with the desired configuration.
*/
export async function startBarcodeScanner(config) {
const barcodeItemMapperEventName = 'barcodeItemMapperEvent';
let barcodeItemMapperCallback = null;
let barcodeItemMapperEventEmitter = null;
if (config.useCase instanceof SingleScanningMode || config.useCase instanceof MultipleScanningMode) {
barcodeItemMapperCallback = config.useCase.barcodeInfoMapping.barcodeItemMapper;
if (barcodeItemMapperCallback) {
barcodeItemMapperEventEmitter = new NativeEventEmitter(ScanbotSDKUIImpl);
barcodeItemMapperEventEmitter.removeAllListeners(barcodeItemMapperEventName);
barcodeItemMapperEventEmitter.addListener(barcodeItemMapperEventName, barcodeItem => {
const barcodeItemUuid = `${barcodeItem.text}${barcodeItem.upcEanExtension}_${barcodeItem.format}`;
barcodeItemMapperCallback(barcodeItem, barcodeMappedData => ScanbotSDKUIImpl.onBarcodeItemMapper(barcodeItemUuid, barcodeMappedData), () => ScanbotSDKUIImpl.onBarcodeItemMapper(barcodeItemUuid, null));
});
// On iOS, the communication with the native part is throwing an error (startBarcodeScannerV2) because of the barcodeItemMapper
// callback in the configuration class (not parsable), that's why we need to remove it before executing startBarcodeScannerV2 method
config.useCase.barcodeInfoMapping.barcodeItemMapper = null;
return new Promise((resolve, reject) => {
ScanbotSDKUIImpl.startBarcodeScanner(isIOS ? JSON.stringify(config) : config, true).then(result => {
barcodeItemMapperEventEmitter?.removeAllListeners(barcodeItemMapperEventName);
barcodeItemMapperEventEmitter = null;
resolve(mapRTUUIResult(result, BarcodeScannerUiResult));
}).catch(error => {
barcodeItemMapperEventEmitter?.removeAllListeners(barcodeItemMapperEventName);
barcodeItemMapperEventEmitter = null;
reject(error);
});
});
}
}
return ScanbotSDKUIImpl.startBarcodeScanner(isIOS ? JSON.stringify(config) : config, false).then(result => mapRTUUIResult(result, BarcodeScannerUiResult));
}
/**
* Opens the Ready-To-Use UI Document Scanner screen with the desired configuration.
*/
export async function startDocumentScanner(config) {
return ScanbotSDKUIImpl.startDocumentScannerV2(isIOS ? JSON.stringify(config) : config).then(result => mapRTUUIResult(result, DocumentData));
}
/**
* Opens the Ready-To-Use UI Cropping screen with the desired configuration.
*/
export async function startCroppingScreen(config) {
return ScanbotSDKUIImpl.startCroppingScreenV2(isIOS ? JSON.stringify(config) : config).then(result => mapRTUUIResult(result, DocumentData));
}
/**
* Opens the Ready-To-Use UI MRZ Scanner screen with the desired configuration.
*/
export async function startMRZScanner(config) {
return ScanbotSDKUIImpl.startMRZScannerV2(isIOS ? JSON.stringify(config) : config).then(result => mapRTUUIResult(result, MrzScannerUiResult));
}
/**
* Opens the Ready-To-Use UI Text Pattern scanner with the desired configuration.
*/
export async function startTextPatternScanner(config) {
return ScanbotSDKUIImpl.startTextPatternScannerV2(isIOS ? JSON.stringify(config) : config).then(result => mapRTUUIResult(result, TextPatternScannerUiResult));
}
/**
* Opens the Ready-To-Use UI Credit Card scanner with the desired configuration.
*/
export async function startCreditCardScanner(config) {
return ScanbotSDKUIImpl.startCreditCardScannerV2(isIOS ? JSON.stringify(config) : config).then(result => mapRTUUIResult(result, CreditCardScannerUiResult));
}
/**
* Opens the Ready-To-Use UI Check scanner with the desired configuration.
*/
export async function startCheckScanner(config) {
return ScanbotSDKUIImpl.startCheckScannerV2(isIOS ? JSON.stringify(config) : config).then(result => mapRTUUIResult(result, CheckScannerUiResult));
}
/**
* Opens the Ready-To-Use UI Document Data Extractor screen with the desired configuration.
*/
export async function startDocumentDataExtractor(config) {
return ScanbotSDKUIImpl.startDocumentDataExtractor(isIOS ? JSON.stringify(config) : config).then(result => mapRTUUIResult(result, DocumentDataExtractorUiResult));
}
/**
* Opens the Ready-To-Use UI VIN Scanner screen with the desired configuration.
*/
export async function startVINScanner(config) {
return ScanbotSDKUIImpl.startVINScannerV2(isIOS ? JSON.stringify(config) : config).then(result => mapRTUUIResult(result, VinScannerUiResult));
}
export * from './barcode/ArTrackingOverlayConfiguration';
export * from './barcode/BarcodeInfoMapping';
export * from './barcode/BarcodeItemMapper';
export * from './barcode/BarcodeScannerConfiguration';
export * from './barcode/BarcodeScannerScreenConfiguration';
export * from './barcode/BarcodeScannerUiResult';
export * from './barcode/BarcodeTextLocalization';
export * from './barcode/BarcodeUseCase';
export * from './barcode/FindAndPickScanningModeUseCase';
export * from './barcode/MultipleScanningModeUseCase';
export * from './barcode/SingleScanningModeUseCase';
export * from './check/CheckScannerIntroScreenConfiguration';
export * from './check/CheckScannerScreenConfiguration';
export * from './check/CheckScannerScreenTextLocalization';
export * from './check/CheckScannerUIResult';
export * from './check/CheckScannerUserGuidance';
export * from './check/CheckScanningProgressConfiguration';
export * from './common/ActionBarConfiguration';
export * from './common/CameraConfiguration';
export * from './common/CameraPermission';
export * from './common/Common';
export * from './common/NavigationBarConfiguration';
export * from './common/ScanCompletionOverlay';
export * from './common/ScanbotAlertDialog';
export * from './common/TopBarConfiguration';
export * from './common/UserGuidanceConfiguration';
export * from './common/ViewFinderConfiguration';
export * from './creditcard/CreditCardScannerIntroScreenConfiguration';
export * from './creditcard/CreditCardScannerScreenConfiguration';
export * from './creditcard/CreditCardScannerScreenTextLocalization';
export * from './creditcard/CreditCardScannerUIResult';
export * from './creditcard/CreditCardScannerUserGuidance';
export * from './creditcard/CreditCardScanningProgressConfiguration';
export * from './dde/DocumentDataExtractionProgressConfiguration';
export * from './dde/DocumentDataExtractorIntroScreenConfiguration';
export * from './dde/DocumentDataExtractorScreenConfiguration';
export * from './dde/DocumentDataExtractorScreenTextLocalization';
export * from './dde/DocumentDataExtractorUIResult';
export * from './dde/DocumentDataExtractorUserGuidance';
export * from './document/AcknowledgementScreenConfiguration';
export * from './document/CameraScreenConfiguration';
export * from './document/CroppingConfiguration';
export * from './document/CroppingResult';
export * from './document/CroppingScreenConfiguration';
export * from './document/CroppingTextLocalization';
export * from './document/DocumentScannerCameraConfiguration';
export * from './document/DocumentScannerGuidanceVisibility';
export * from './document/DocumentScannerOutputSettings';
export * from './document/DocumentScannerScreens';
export * from './document/DocumentScannerTextLocalization';
export * from './document/DocumentScannerUserGuidance';
export * from './document/DocumentScanningFlow';
export * from './document/IntroductionScreenConfiguration';
export * from './document/ReorderPagesScreenConfiguration';
export * from './document/ReviewScreenConfiguration';
export * from './mrz/MRZFinderLayoutPreset';
export * from './mrz/MRZScannerIntroScreenConfiguration';
export * from './mrz/MRZScannerScreenConfiguration';
export * from './mrz/MRZScannerScreenTextLocalization';
export * from './mrz/MRZScannerUIResult';
export * from './textpattern/TextPatternScannerIntroScreenConfiguration';
export * from './textpattern/TextPatternScannerScreenConfiguration';
export * from './textpattern/TextPatternScannerScreenTextLocalization';
export * from './textpattern/TextPatternScannerUIResult';
export * from './vin/VINScannerIntroScreenConfiguration';
export * from './vin/VINScannerScreenConfiguration';
export * from './vin/VINScannerScreenTextLocalization';
export * from './vin/VINScannerUIResult';
//# sourceMappingURL=index.js.map