UNPKG

react-native-scanbot-sdk

Version:

Scanbot Document and Barcode Scanner SDK React Native Plugin for Android and iOS

454 lines (447 loc) 14.4 kB
import { ArOverlayFindAndPickConfiguration } from '../barcode/ArTrackingOverlayConfiguration'; import { BackgroundStyle } from '../common/Common'; import { BadgeStyle } from '../common/Common'; import { BadgedButton } from '../common/Common'; import { ButtonConfiguration } from '../common/Common'; import { PartiallyConstructible } from '../../utils'; import { FindAndPickArOverlayPolygonConfiguration } from '../barcode/ArTrackingOverlayConfiguration'; import { FindAndPickBadgeConfiguration } from '../barcode/ArTrackingOverlayConfiguration'; import { ForegroundStyle } from '../common/Common'; import { IconStyle } from '../common/Common'; import { ManualCountEditDialog } from '../barcode/MultipleScanningModeUseCase'; import { PolygonStyle } from '../common/Common'; import { ScanbotAlertDialog } from '../common/ScanbotAlertDialog'; import { SheetContent } from '../barcode/MultipleScanningModeUseCase'; import { Sheet } from '../barcode/MultipleScanningModeUseCase'; import { StyledText } from '../common/Common'; import { SwipeToDelete } from '../barcode/MultipleScanningModeUseCase'; /** Configuration of the barcode to find and scan. */ export class ExpectedBarcode extends PartiallyConstructible { /** Value of the barcode to find. If not set, any barcode value will be accepted. */ /** Title of the barcode to find. */ /** Image of the barcode to find. */ /** Number of barcodes with given symbology/value required to scan. Default is 1 */ count = 1; /** Use this key to display the original barcode image */ static barcodeImageKey = 'BARCODE_IMAGE'; /** @param source {@displayType `DeepPartial<ExpectedBarcode>`} */ constructor(source = {}) { super(); if (source.barcodeValue !== undefined) { this.barcodeValue = source.barcodeValue; } else { throw new Error('barcodeValue must be present in constructor argument'); } if (source.title !== undefined) { this.title = source.title != null ? source.title : null; } else { throw new Error('title must be present in constructor argument'); } if (source.image !== undefined) { this.image = source.image != null ? source.image : null; } else { throw new Error('image must be present in constructor argument'); } if (source.count !== undefined) { this.count = source.count; } } } /** Configuration of the Find and Pick barcode scanning mode. */ export class FindAndPickScanningMode extends PartiallyConstructible { _type = 'FindAndPickScanningMode'; /** Color of the selected barcode. Default is "?sbColorPositive" */ scanningCompletedColor = '?sbColorPositive'; /** Color of the partially scanned barcode. Default is "?sbColorWarning" */ scanningPartiallyColor = '?sbColorWarning'; /** Color of the not scanned barcode . Default is "?sbColorOutline" */ scanningNotScannedColor = '?sbColorOutline'; /** If the user is allowed to finish the scanning process without scanning all the expected barcodes. Default is false */ allowPartialScan = false; /** List of barcodes that the user has to find and scan. */ expectedBarcodes = []; /** Time interval in milliseconds before a barcode is counted again. 0 = no delay. The default value is 1000. Default is 1000 */ countingRepeatDelay = 1000; /** Configuration of the preview mode for the barcodes required to be found and scanned. */ sheet = new Sheet({ mode: 'COLLAPSED_SHEET', collapsedVisibleHeight: 'SMALL', listButton: new BadgedButton({ badgeBackgroundColor: '?sbColorSurface', badgeForegroundColor: '?sbColorPrimary', visible: true, backgroundColor: '?sbColorSurfaceHigh', foregroundColor: '?sbColorOnPrimary', activeBackgroundColor: '?sbColorSurfaceHigh', activeForegroundColor: '?sbColorOnPrimary' }) }); /** Configuration of the list of barcodes required to be found and scanned. */ sheetContent = new SheetContent({ sheetColor: '?sbColorSurface', dividerColor: '?sbColorOutline', manualCountChangeEnabled: true, manualCountOutlineColor: '?sbColorOutline', manualCountChangeColor: '?sbColorPrimary', title: new StyledText({ visible: true, text: '?findAndPickSheetTitle', color: '?sbColorOnSurface', useShadow: false }), clearAllButton: new ButtonConfiguration({ visible: true, text: '?sheetResetButton', background: new BackgroundStyle({ strokeColor: '#00000000', fillColor: '#00000000', strokeWidth: 1.0 }), foreground: new ForegroundStyle({ iconVisible: false, color: '?sbColorOnSurface', useShadow: false }) }), barcodeItemTitle: new StyledText({ text: 'BARCODE_TITLE', color: '?sbColorOnSurface' }), barcodeItemSubtitle: new StyledText({ text: '?findAndPickSheetBarcodeItemSubtitle', color: '?sbColorOnSurfaceVariant' }), barcodeItemImageVisible: true, submitButton: new ButtonConfiguration({ visible: true, text: '?sheetSubmitButton', background: new BackgroundStyle({ strokeColor: '#00000000', fillColor: '#00000000', strokeWidth: 1.0 }), foreground: new ForegroundStyle({ iconVisible: false, color: '?sbColorOnSurface', useShadow: false }) }), startScanningButton: new ButtonConfiguration({ visible: true, text: '?sheetStartScanningButton', background: new BackgroundStyle({ strokeColor: '?sbColorPrimary', fillColor: '?sbColorPrimary', strokeWidth: 1.0 }), foreground: new ForegroundStyle({ iconVisible: false, color: '?sbColorOnPrimary', useShadow: false }) }), placeholderTitle: new StyledText({ text: '?sheetPlaceholderTitle', color: '?sbColorOnSurface' }), placeholderSubtitle: new StyledText({ text: '?sheetPlaceholderSubtitle', color: '?sbColorOnSurfaceVariant' }), placeholderIconBackground: '?sbColorOutline', placeholderIcon: new IconStyle({ visible: true, color: '?sbColorOnSurface' }), swipeToDelete: new SwipeToDelete({ enabled: false, backgroundColor: '?sbColorNegative', iconColor: '?sbColorOnPrimary' }) }); /** Configuration of the dialog to manually edit the barcode count. */ manualCountEditDialog = new ManualCountEditDialog({ sheetColor: '?sbColorSurface', dividerColor: '?sbColorOutline', modalOverlayColor: '?sbColorModalOverlay', title: new StyledText({ text: '?manualCountEditDialogTitle', color: '?sbColorOnSurface' }), info: new StyledText({ text: '?manualCountEditDialogInfo', color: '?sbColorOnSurfaceVariant' }), updateButton: new ButtonConfiguration({ visible: true, text: '?manualCountEditDialogUpdateButton', background: new BackgroundStyle({ strokeColor: '?sbColorPrimary', fillColor: '?sbColorPrimary', strokeWidth: 1.0 }), foreground: new ForegroundStyle({ iconVisible: false, color: '?sbColorOnPrimary', useShadow: false }) }), cancelButton: new ButtonConfiguration({ visible: true, text: '?manualCountEditDialogCancelButton', background: new BackgroundStyle({ strokeColor: '#00000000', fillColor: '#00000000', strokeWidth: 1.0 }), foreground: new ForegroundStyle({ iconVisible: false, color: '?sbColorPrimary', useShadow: false }) }), clearTextButton: new IconStyle({ visible: true, color: '?sbColorOnSurfaceVariant' }) }); /** Configuration of the AR overlay. */ arOverlay = new ArOverlayFindAndPickConfiguration({ visible: true, automaticSelectionEnabled: true, polygon: new FindAndPickArOverlayPolygonConfiguration({ partiallyScanned: new PolygonStyle({ strokeColor: '?sbColorWarning', fillColor: '#00000000', strokeWidth: 3.0, cornerRadius: 5.0 }), rejected: new PolygonStyle({ strokeColor: '?sbColorSurface', fillColor: '#00000000', strokeWidth: 3.0, cornerRadius: 5.0 }), completed: new PolygonStyle({ strokeColor: '?sbColorPositive', fillColor: '#00000000', strokeWidth: 3.0, cornerRadius: 5.0 }) }), badge: new FindAndPickBadgeConfiguration({ partiallyScanned: new BadgeStyle({ visible: true, background: new BackgroundStyle({ strokeColor: '#000000FF', fillColor: '?sbColorWarning', strokeWidth: 0.0 }), foregroundColor: '?sbColorOnSurface' }), rejected: new BadgeStyle({ visible: true, background: new BackgroundStyle({ strokeColor: '#000000FF', fillColor: '?sbColorSurface', strokeWidth: 0.0 }), foregroundColor: '?sbColorOnSurface' }), completed: new BadgeStyle({ visible: true, background: new BackgroundStyle({ strokeColor: '#000000FF', fillColor: '?sbColorPositive', strokeWidth: 0.0 }), foregroundColor: '?sbColorOnSurface' }) }) }); /** If the partial scanned alert dialog is enabled. Default is true */ partialScannedAlertDialogEnabled = true; /** Configuration of the partial scanned alert dialog. */ partialScannedAlertDialog = new ScanbotAlertDialog({ title: new StyledText({ text: '?findAndPickPartialAlertTitle', color: '?sbColorOnSurface' }), subtitle: new StyledText({ text: '?findAndPickPartialAlertSubtitle', color: '?sbColorOnSurfaceVariant' }), sheetColor: '?sbColorSurface', modalOverlayColor: '?sbColorModalOverlay', dividerColor: '?sbColorOutline', okButton: new ButtonConfiguration({ visible: true, text: '?findAndPickPartialAlertSubmitButton', background: new BackgroundStyle({ strokeColor: '?sbColorPrimary', fillColor: '?sbColorPrimary', strokeWidth: 1.0 }), foreground: new ForegroundStyle({ iconVisible: true, color: '?sbColorOnPrimary', useShadow: false }) }), cancelButton: new ButtonConfiguration({ visible: true, text: '?findAndPickPartialAlertCancelButton', background: new BackgroundStyle({ strokeColor: '#00000000', fillColor: '#00000000', strokeWidth: 1.0 }), foreground: new ForegroundStyle({ iconVisible: false, color: '?sbColorPrimary', useShadow: false }) }) }); /** If the confirmation alert dialog is enabled. Default is false */ confirmationAlertDialogEnabled = false; /** Configuration of the confirmation alert dialog. */ confirmationAlertDialog = new ScanbotAlertDialog({ title: new StyledText({ text: '?findAndPickCompleteAlertTitle', color: '?sbColorOnSurface' }), subtitle: new StyledText({ text: '?findAndPickCompleteAlertSubtitle', color: '?sbColorOnSurfaceVariant' }), sheetColor: '?sbColorSurface', modalOverlayColor: '?sbColorModalOverlay', dividerColor: '?sbColorOutline', okButton: new ButtonConfiguration({ visible: true, text: '?findAndPickCompleteAlertSubmitButton', background: new BackgroundStyle({ strokeColor: '?sbColorPrimary', fillColor: '?sbColorPrimary', strokeWidth: 1.0 }), foreground: new ForegroundStyle({ iconVisible: true, color: '?sbColorOnPrimary', useShadow: false }) }), cancelButton: new ButtonConfiguration({ visible: true, text: '?findAndPickCompleteAlertCancelButton', background: new BackgroundStyle({ strokeColor: '#00000000', fillColor: '#00000000', strokeWidth: 1.0 }), foreground: new ForegroundStyle({ iconVisible: false, color: '?sbColorPrimary', useShadow: false }) }) }); /** @param source {@displayType `DeepPartial<FindAndPickScanningMode>`} */ constructor(source = {}) { super(); if (source.scanningCompletedColor !== undefined) { this.scanningCompletedColor = source.scanningCompletedColor; } if (source.scanningPartiallyColor !== undefined) { this.scanningPartiallyColor = source.scanningPartiallyColor; } if (source.scanningNotScannedColor !== undefined) { this.scanningNotScannedColor = source.scanningNotScannedColor; } if (source.allowPartialScan !== undefined) { this.allowPartialScan = source.allowPartialScan; } if (source.expectedBarcodes !== undefined) { this.expectedBarcodes = source.expectedBarcodes.map(it => new ExpectedBarcode(it)); } if (source.countingRepeatDelay !== undefined) { this.countingRepeatDelay = source.countingRepeatDelay; } if (source.sheet !== undefined) { this.sheet = new Sheet(source.sheet); } if (source.sheetContent !== undefined) { this.sheetContent = new SheetContent(source.sheetContent); } if (source.manualCountEditDialog !== undefined) { this.manualCountEditDialog = new ManualCountEditDialog(source.manualCountEditDialog); } if (source.arOverlay !== undefined) { this.arOverlay = new ArOverlayFindAndPickConfiguration(source.arOverlay); } if (source.partialScannedAlertDialogEnabled !== undefined) { this.partialScannedAlertDialogEnabled = source.partialScannedAlertDialogEnabled; } if (source.partialScannedAlertDialog !== undefined) { this.partialScannedAlertDialog = new ScanbotAlertDialog(source.partialScannedAlertDialog); } if (source.confirmationAlertDialogEnabled !== undefined) { this.confirmationAlertDialogEnabled = source.confirmationAlertDialogEnabled; } if (source.confirmationAlertDialog !== undefined) { this.confirmationAlertDialog = new ScanbotAlertDialog(source.confirmationAlertDialog); } } } //# sourceMappingURL=FindAndPickScanningModeUseCase.js.map