capacitor-plugin-scanbot-sdk
Version:
Scanbot Document and Barcode Scanner SDK for Capacitor
431 lines • 17.3 kB
JavaScript
import { PartiallyConstructible } from '../../utils';
import { ArOverlayFindAndPickConfiguration, FindAndPickArOverlayPolygonConfiguration, FindAndPickBadgeConfiguration, } from '../barcode/ArTrackingOverlayConfiguration';
import { ManualCountEditDialog, SheetContent, Sheet, SwipeToDelete, } from '../barcode/MultipleScanningModeUseCase';
import { ForegroundStyle, StyledText, BadgedButton, BadgeStyle, BackgroundStyle, PolygonStyle, IconStyle, ButtonConfiguration, } from '../common/Common';
import { ScanbotAlertDialog } from '../common/ScanbotAlertDialog';
/**
Configuration of the barcode to find and scan.
*/
export class ExpectedBarcode extends PartiallyConstructible {
/** @param source {@displayType `DeepPartial<ExpectedBarcode>`} */
constructor(source = {}) {
super();
/**
Number of barcodes with given symbology/value required to scan.
Default is 1
*/
this.count = 1;
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;
}
}
}
/**
Use this key to display the original barcode image
*/
ExpectedBarcode.barcodeImageKey = 'BARCODE_IMAGE';
/**
Configuration of the Find and Pick barcode scanning mode.
*/
export class FindAndPickScanningMode extends PartiallyConstructible {
/** @param source {@displayType `DeepPartial<FindAndPickScanningMode>`} */
constructor(source = {}) {
super();
this._type = 'FindAndPickScanningMode';
/**
Color of the selected barcode.
Default is "?sbColorPositive"
*/
this.scanningCompletedColor = '?sbColorPositive';
/**
Color of the partially scanned barcode.
Default is "?sbColorWarning"
*/
this.scanningPartiallyColor = '?sbColorWarning';
/**
Color of the not scanned barcode .
Default is "?sbColorOutline"
*/
this.scanningNotScannedColor = '?sbColorOutline';
/**
If the user is allowed to finish the scanning process without scanning all the expected barcodes.
Default is false
*/
this.allowPartialScan = false;
/**
List of barcodes that the user has to find and scan.
*/
this.expectedBarcodes = [];
/**
Time interval in milliseconds before a barcode is counted again. 0 = no delay. The default value is 1000.
Default is 1000
*/
this.countingRepeatDelay = 1000;
/**
Configuration of the preview mode for the barcodes required to be found and scanned.
*/
this.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.
*/
this.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.
*/
this.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.
*/
this.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
*/
this.partialScannedAlertDialogEnabled = true;
/**
Configuration of the partial scanned alert dialog.
*/
this.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
*/
this.confirmationAlertDialogEnabled = false;
/**
Configuration of the confirmation alert dialog.
*/
this.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,
}),
}),
});
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