@biopassid/face-sdk-react-native
Version:
BioPass ID Face React Native module.
316 lines (313 loc) • 8.95 kB
text/typescript
import { FaceCameraLensDirection } from '../config/enums/FaceCameraLensDirection';
import { FaceImageFormat } from '../config/enums/FaceImageFormat';
import { FaceMaskFormat } from '../config/enums/FaceMaskFormat';
import { FaceResolutionPreset } from '../config/enums/FaceResolutionPreset';
import type { FaceConfig } from '../config/FaceConfig';
const defaultConfig: FaceConfig = {
licenseKey: '',
resolutionPreset: FaceResolutionPreset.VERYHIGH,
lensDirection: FaceCameraLensDirection.FRONT,
imageFormat: FaceImageFormat.JPEG,
flashEnabled: false,
fontFamily: 'facesdk_opensans_bold',
liveness: {
enabled: false,
debug: false,
timeToCapture: 3000,
maxFaceDetectionTime: 60000,
minFaceProp: 0.1,
maxFaceProp: 0.4,
minFaceWidth: 150,
minFaceHeight: 150,
ied: 90,
bboxPad: 20,
faceDetectionThresh: 0.5,
rollThresh: 4.0,
pitchThresh: 4.0,
yawThresh: 4.0,
closedEyesThresh: 0.7,
smilingThresh: 0.7,
tooDarkThresh: 50,
tooLightThresh: 170,
faceCentralizationThresh: 0.05,
},
continuousCapture: {
enabled: false,
timeToCapture: 1000,
maxNumberFrames: 40,
},
faceDetection: {
enabled: true,
autoCapture: true,
multipleFacesEnabled: false,
timeToCapture: 3000,
maxFaceDetectionTime: 40000,
scoreThreshold: 0.7,
},
mask: {
enabled: true,
type: FaceMaskFormat.FACE,
backgroundColor: '#CC000000',
frameColor: '#FFFFFF',
frameEnabledColor: '#16AC81',
frameErrorColor: '#E25353',
},
titleText: {
enabled: true,
content: 'Capturing Face',
textColor: '#FFFFFF',
textSize: 20,
},
loadingText: {
enabled: true,
content: 'Processing...',
textColor: '#FFFFFF',
textSize: 14,
},
helpText: {
enabled: true,
content: 'Fit your face into the shape below',
textColor: '#FFFFFF',
textSize: 14,
},
feedbackText: {
enabled: true,
messages: {
noDetection: 'No faces detected',
multipleFaces: 'Multiple faces detected',
faceCentered: 'Face centered. Do not move',
tooClose: 'Turn your face away',
tooFar: 'Bring your face closer',
tooLeft: 'Move your face to the right',
tooRight: 'Move your face to the left',
tooUp: 'Move your face down',
tooDown: 'Move your face up',
invalidIED: 'Invalid inter-eye distance',
faceAngleMisaligned: 'Misaligned face angle',
closedEyes: 'Open your eyes',
smiling: 'Do not smile',
tooDark: 'Too dark',
tooLight: 'Too light',
},
textColor: '#FFFFFF',
textSize: 14,
},
backButton: {
enabled: true,
backgroundColor: '#00000000',
buttonPadding: 0,
buttonSize: { width: 56, height: 56 },
iconOptions: {
enabled: true,
iconFile: 'facesdk_ic_close',
iconColor: '#FFFFFF',
iconSize: { width: 32, height: 32 },
},
labelOptions: {
enabled: false,
content: 'Back',
textColor: '#FFFFFF',
textSize: 14,
},
},
flashButton: {
enabled: false,
backgroundColor: '#FFFFFF',
buttonPadding: 0,
buttonSize: { width: 56, height: 56 },
flashOnIconOptions: {
enabled: true,
iconFile: 'facesdk_ic_flash_on',
iconColor: '#FFCC01',
iconSize: { width: 32, height: 32 },
},
flashOnLabelOptions: {
enabled: false,
content: 'Flash On',
textColor: '#323232',
textSize: 14,
},
flashOffIconOptions: {
enabled: true,
iconFile: 'facesdk_ic_flash_off',
iconColor: '#323232',
iconSize: { width: 32, height: 32 },
},
flashOffLabelOptions: {
enabled: false,
content: 'Flash Off',
textColor: '#323232',
textSize: 14,
},
},
switchCameraButton: {
enabled: true,
backgroundColor: '#FFFFFF',
buttonPadding: 0,
buttonSize: { width: 56, height: 56 },
iconOptions: {
enabled: true,
iconFile: 'facesdk_ic_switch_camera',
iconColor: '#323232',
iconSize: { width: 32, height: 32 },
},
labelOptions: {
enabled: false,
content: 'Switch Camera',
textColor: '#323232',
textSize: 14,
},
},
captureButton: {
enabled: true,
backgroundColor: '#FFFFFF',
buttonPadding: 0,
buttonSize: { width: 56, height: 56 },
iconOptions: {
enabled: true,
iconFile: 'facesdk_ic_capture',
iconColor: '#323232',
iconSize: { width: 32, height: 32 },
},
labelOptions: {
enabled: false,
content: 'Capture',
textColor: '#323232',
textSize: 14,
},
},
};
export function mergeConfigs(config: FaceConfig): FaceConfig {
return {
...defaultConfig,
...config,
liveness: {
...defaultConfig.liveness,
...config.liveness,
},
continuousCapture: {
...defaultConfig.continuousCapture,
...config.continuousCapture,
},
faceDetection: {
...defaultConfig.faceDetection,
...config.faceDetection,
},
mask: {
...defaultConfig.mask,
...config.mask,
},
titleText: {
...defaultConfig.titleText,
...config.titleText,
},
loadingText: {
...defaultConfig.loadingText,
...config.loadingText,
},
helpText: {
...defaultConfig.helpText,
...config.helpText,
},
feedbackText: {
...defaultConfig.feedbackText,
...config.feedbackText,
messages: {
...defaultConfig.feedbackText?.messages,
...config.feedbackText?.messages,
},
},
backButton: {
...defaultConfig.backButton,
...config.backButton,
buttonSize: {
...defaultConfig.backButton?.buttonSize,
...config.backButton?.buttonSize,
},
iconOptions: {
...defaultConfig.backButton?.iconOptions,
...config.backButton?.iconOptions,
iconSize: {
...defaultConfig.backButton?.iconOptions?.iconSize,
...config.backButton?.iconOptions?.iconSize,
},
},
labelOptions: {
...defaultConfig.backButton?.labelOptions,
...config.backButton?.labelOptions,
},
},
flashButton: {
...defaultConfig.flashButton,
...config.flashButton,
buttonSize: {
...defaultConfig.flashButton?.buttonSize,
...config.flashButton?.buttonSize,
},
flashOnIconOptions: {
...defaultConfig.flashButton?.flashOnIconOptions,
...config.flashButton?.flashOnIconOptions,
iconSize: {
...defaultConfig.flashButton?.flashOnIconOptions?.iconSize,
...config.flashButton?.flashOnIconOptions?.iconSize,
},
},
flashOnLabelOptions: {
...defaultConfig.flashButton?.flashOnLabelOptions,
...config.flashButton?.flashOnLabelOptions,
},
flashOffIconOptions: {
...defaultConfig.flashButton?.flashOffIconOptions,
...config.flashButton?.flashOffIconOptions,
iconSize: {
...defaultConfig.flashButton?.flashOffIconOptions?.iconSize,
...config.flashButton?.flashOffIconOptions?.iconSize,
},
},
flashOffLabelOptions: {
...defaultConfig.flashButton?.flashOffLabelOptions,
...config.flashButton?.flashOffLabelOptions,
},
},
switchCameraButton: {
...defaultConfig.switchCameraButton,
...config.switchCameraButton,
buttonSize: {
...defaultConfig.switchCameraButton?.buttonSize,
...config.switchCameraButton?.buttonSize,
},
iconOptions: {
...defaultConfig.switchCameraButton?.iconOptions,
...config.switchCameraButton?.iconOptions,
iconSize: {
...defaultConfig.switchCameraButton?.iconOptions?.iconSize,
...config.switchCameraButton?.iconOptions?.iconSize,
},
},
labelOptions: {
...defaultConfig.switchCameraButton?.labelOptions,
...config.switchCameraButton?.labelOptions,
},
},
captureButton: {
...defaultConfig.captureButton,
...config.captureButton,
buttonSize: {
...defaultConfig.captureButton?.buttonSize,
...config.captureButton?.buttonSize,
},
iconOptions: {
...defaultConfig.captureButton?.iconOptions,
...config.captureButton?.iconOptions,
iconSize: {
...defaultConfig.captureButton?.iconOptions?.iconSize,
...config.captureButton?.iconOptions?.iconSize,
},
},
labelOptions: {
...defaultConfig.captureButton?.labelOptions,
...config.captureButton?.labelOptions,
},
},
};
}