import type { SignatureConfig } from '../config/SignatureConfig'; import { SignatureScreenOrientation } from '../config/SignatureScreenOrientation'; const defaultConfig: SignatureConfig = { licenseKey: '', screenOrientation: SignatureScreenOrientation.PORTRAIT, pencilColor: '#000000', pencilWidth: 5, backgroundColor: '#FFFFFF', overlayColor: '#80000000', fontFamily: 'signaturesdk_opensans_bold', titleText: { enabled: true, content: 'Captura de assinatura digital', textColor: '#FFFFFF', textSize: 20, }, backButton: { enabled: true, backgroundColor: '#00000000', buttonPadding: 0, buttonSize: { width: 56, height: 56 }, iconOptions: { enabled: true, iconFile: 'signaturesdk_ic_close', iconColor: '#FFFFFF', iconSize: { width: 32, height: 32 }, }, labelOptions: { enabled: false, content: 'Voltar', textColor: '#323232', textSize: 14, }, }, saveButton: { enabled: true, backgroundColor: '#FFFFFF', buttonPadding: 0, buttonSize: { width: 56, height: 56 }, iconOptions: { enabled: true, iconFile: 'signaturesdk_ic_save', iconColor: '#323232', iconSize: { width: 32, height: 32 }, }, labelOptions: { enabled: false, content: 'Salvar', textColor: '#323232', textSize: 14, }, }, deleteButton: { enabled: true, backgroundColor: '#FFFFFF', buttonPadding: 0, buttonSize: { width: 56, height: 56 }, iconOptions: { enabled: true, iconFile: 'signaturesdk_ic_delete', iconColor: '#323232', iconSize: { width: 32, height: 32 }, }, labelOptions: { enabled: false, content: 'Deletar', textColor: '#323232', textSize: 14, }, }, undoButton: { enabled: true, backgroundColor: '#FFFFFF', buttonPadding: 0, buttonSize: { width: 56, height: 56 }, iconOptions: { enabled: true, iconFile: 'signaturesdk_ic_undo', iconColor: '#323232', iconSize: { width: 32, height: 32 }, }, labelOptions: { enabled: false, content: 'Desfazer', textColor: '#323232', textSize: 14, }, }, }; export function mergeConfigs(config: SignatureConfig): SignatureConfig { return { ...defaultConfig, ...config, titleText: { ...defaultConfig.titleText, ...config.titleText, }, 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, }, }, saveButton: { ...defaultConfig.saveButton, ...config.saveButton, buttonSize: { ...defaultConfig.saveButton?.buttonSize, ...config.saveButton?.buttonSize, }, iconOptions: { ...defaultConfig.saveButton?.iconOptions, ...config.saveButton?.iconOptions, iconSize: { ...defaultConfig.saveButton?.iconOptions?.iconSize, ...config.saveButton?.iconOptions?.iconSize, }, }, labelOptions: { ...defaultConfig.saveButton?.labelOptions, ...config.saveButton?.labelOptions, }, }, deleteButton: { ...defaultConfig.deleteButton, ...config.deleteButton, buttonSize: { ...defaultConfig.deleteButton?.buttonSize, ...config.deleteButton?.buttonSize, }, iconOptions: { ...defaultConfig.deleteButton?.iconOptions, ...config.deleteButton?.iconOptions, iconSize: { ...defaultConfig.deleteButton?.iconOptions?.iconSize, ...config.deleteButton?.iconOptions?.iconSize, }, }, labelOptions: { ...defaultConfig.deleteButton?.labelOptions, ...config.deleteButton?.labelOptions, }, }, undoButton: { ...defaultConfig.undoButton, ...config.undoButton, buttonSize: { ...defaultConfig.undoButton?.buttonSize, ...config.undoButton?.buttonSize, }, iconOptions: { ...defaultConfig.undoButton?.iconOptions, ...config.undoButton?.iconOptions, iconSize: { ...defaultConfig.undoButton?.iconOptions?.iconSize, ...config.undoButton?.iconOptions?.iconSize, }, }, labelOptions: { ...defaultConfig.undoButton?.labelOptions, ...config.undoButton?.labelOptions, }, }, }; }