react-native-scanbot-sdk
Version:
Scanbot Document and Barcode Scanner SDK React Native Plugin for Android and iOS
165 lines (160 loc) • 6.05 kB
text/typescript
import { BackgroundStyle } from '../common/Common';
import { BarButtonConfiguration } from '../common/Common';
import { ButtonConfiguration } from '../common/Common';
import { CroppingBottomBar } from '../document/CroppingScreenConfiguration';
import { CroppingScreenConfiguration } from '../document/CroppingScreenConfiguration';
import { CroppingTextLocalization } from '../document/CroppingTextLocalization';
import { DeepPartial, PartiallyConstructible } from '../../utils';
import { DocumentAnalysisMode } from '../document/DocumentScannerOutputSettings';
import { ForegroundStyle } from '../common/Common';
import { IconStyle } from '../common/Common';
import { NavigationBarMode } from '../common/NavigationBarConfiguration';
import { OrientationLockMode } from '../common/Common';
import { Palette } from '../common/Common';
import { StatusBarMode } from '../common/TopBarConfiguration';
import { StyledText } from '../common/Common';
/**
Configuration of the general appearance for the cropping screen.
*/
export class CroppingAppearanceConfiguration extends PartiallyConstructible {
/**
Determines the visual mode used for the status bar icons.
Default is LIGHT
*/
public statusBarMode: StatusBarMode = 'LIGHT';
/**
Determines the visual mode used for the navigation bar icons. Android only.
Default is LIGHT
*/
public navigationBarMode: NavigationBarMode = 'LIGHT';
/**
The background color of the top bar. Only applicable when the visual mode is specified as 'SOLID', otherwise ignored.
Default is "?sbColorPrimary"
*/
public topBarBackgroundColor: string = '?sbColorPrimary';
/**
The background color of the bottom bar.
Default is "?sbColorPrimary"
*/
public bottomBarBackgroundColor: string = '?sbColorPrimary';
/**
Which mode to use when orientation should be locked to landscape or portrait.
Default is NONE
*/
public orientationLockMode: OrientationLockMode = 'NONE';
/** @param source {@displayType `DeepPartial<CroppingAppearanceConfiguration>`} */
public constructor(source: DeepPartial<CroppingAppearanceConfiguration> = {}) {
super();
if (source.statusBarMode !== undefined) {
this.statusBarMode = source.statusBarMode;
}
if (source.navigationBarMode !== undefined) {
this.navigationBarMode = source.navigationBarMode;
}
if (source.topBarBackgroundColor !== undefined) {
this.topBarBackgroundColor = source.topBarBackgroundColor;
}
if (source.bottomBarBackgroundColor !== undefined) {
this.bottomBarBackgroundColor = source.bottomBarBackgroundColor;
}
if (source.orientationLockMode !== undefined) {
this.orientationLockMode = source.orientationLockMode;
}
}
}
/**
Configuration of the standalone cropping screen.
*/
export class CroppingConfiguration extends PartiallyConstructible {
/**
Version number of the configuration object.
Default is "1.0"
*/
public version: string = '1.0';
/**
The configuration object should be applied for this screen.
Default is "CroppingConfiguration"
*/
public screen: string = 'CroppingConfiguration';
/**
Define the screen's base color values from which other colors are derived.
*/
public palette: Palette = new Palette({
sbColorPrimary: '#C8193C',
sbColorPrimaryDisabled: '#F5F5F5',
sbColorNegative: '#FF3737',
sbColorPositive: '#4EFFB4',
sbColorWarning: '#FFCE5C',
sbColorSecondary: '#FFEDEE',
sbColorSecondaryDisabled: '#F5F5F5',
sbColorOnPrimary: '#FFFFFF',
sbColorOnSecondary: '#C8193C',
sbColorSurface: '#FFFFFF',
sbColorOutline: '#EFEFEF',
sbColorOnSurfaceVariant: '#707070',
sbColorOnSurface: '#000000',
sbColorSurfaceLow: '#00000026',
sbColorSurfaceHigh: '#0000007A',
sbColorModalOverlay: '#000000A3',
});
/**
The UUID of the document to be cropped.
*/
public documentUuid: string;
/**
The UUID of the page of the document to be cropped.
*/
public pageUuid: string;
/**
Configuration of all the strings for the standalone cropping screen.
*/
public localization: CroppingTextLocalization = new CroppingTextLocalization({});
/**
Configuration of the general appearance for the cropping screen.
*/
public appearance: CroppingAppearanceConfiguration = new CroppingAppearanceConfiguration({});
/**
Configuration of the cropping screen.
*/
public cropping: CroppingScreenConfiguration = new CroppingScreenConfiguration({});
/**
Determines if the quality analysis for the acknowledgement mode will run on the filtered or the unfiltered image.
Default is UNFILTERED_DOCUMENT
*/
public documentAnalysisMode: DocumentAnalysisMode = 'UNFILTERED_DOCUMENT';
/** @param source {@displayType `DeepPartial<CroppingConfiguration>`} */
public constructor(source: DeepPartial<CroppingConfiguration> = {}) {
super();
if (source.version !== undefined) {
this.version = source.version;
}
if (source.screen !== undefined) {
this.screen = source.screen;
}
if (source.palette !== undefined) {
this.palette = new Palette(source.palette);
}
if (source.documentUuid !== undefined) {
this.documentUuid = source.documentUuid;
} else {
throw new Error('documentUuid must be present in constructor argument');
}
if (source.pageUuid !== undefined) {
this.pageUuid = source.pageUuid;
} else {
throw new Error('pageUuid must be present in constructor argument');
}
if (source.localization !== undefined) {
this.localization = new CroppingTextLocalization(source.localization);
}
if (source.appearance !== undefined) {
this.appearance = new CroppingAppearanceConfiguration(source.appearance);
}
if (source.cropping !== undefined) {
this.cropping = new CroppingScreenConfiguration(source.cropping);
}
if (source.documentAnalysisMode !== undefined) {
this.documentAnalysisMode = source.documentAnalysisMode;
}
}
}