UNPKG

react-native-scanbot-barcode-scanner-sdk

Version:

Scanbot Barcode Scanner SDK React Native Plugin for Android and iOS

59 lines (56 loc) 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScanbotBarcodeImpl = void 0; var _reactNative = require("react-native"); var _types = require("../types"); var _scanbotBarcodeSDKModule = require("./scanbotBarcodeSDKModule"); const isIOS = _reactNative.Platform.OS === 'ios'; /** * @internal * @hidden */ const ScanbotBarcodeImpl = exports.ScanbotBarcodeImpl = { async startScanner(configuration) { const barcodeItemMapperEventName = 'barcodeItemMapperEvent'; let barcodeItemMapperCallback = null; let barcodeItemMapperEventEmitter; if (configuration.useCase instanceof _types.SingleScanningMode || configuration.useCase instanceof _types.MultipleScanningMode) { barcodeItemMapperCallback = configuration.useCase.barcodeInfoMapping.barcodeItemMapper; if (barcodeItemMapperCallback) { barcodeItemMapperEventEmitter = new _reactNative.NativeEventEmitter(_scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule); barcodeItemMapperEventEmitter.removeAllListeners(barcodeItemMapperEventName); barcodeItemMapperEventEmitter.addListener(barcodeItemMapperEventName, barcodeItem => { const barcodeItemUuid = `${barcodeItem.text}${barcodeItem.upcEanExtension}_${barcodeItem.format}`; barcodeItemMapperCallback(barcodeItem, barcodeMappedData => _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.onBarcodeItemMapper(barcodeItemUuid, barcodeMappedData), () => _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.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 configuration.useCase.barcodeInfoMapping.barcodeItemMapper = null; } } try { const barcodeResult = await _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.startBarcodeScanner(isIOS ? JSON.stringify(configuration) : configuration, !!barcodeItemMapperCallback); return (0, _types.mapRTUUIResult)(barcodeResult, _types.BarcodeScannerUiResult); } catch (error) { throw (0, _types.createSBError)(error); } finally { barcodeItemMapperEventEmitter?.removeAllListeners(barcodeItemMapperEventName); barcodeItemMapperEventEmitter = undefined; } }, scanFromImage(params) { return (0, _types.withSBErrorHandling)(async () => new _types.BarcodeScannerResult(await _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.scanBarcodesFromImage({ configuration: params.configuration, image: (0, _types.handleImageInput)(params.image) }))); }, scanFromPdf(params) { return (0, _types.withSBErrorHandling)(async () => new _types.BarcodeScannerResult(await _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.scanBarcodesFromPdf(params))); }, parseDocument(params) { return (0, _types.withSBErrorHandling)(async () => new _types.BarcodeDocumentParserResult(await _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.parseBarcodeDocument(params))); } }; //# sourceMappingURL=BarcodeScannerImpl.js.map