{"version":3,"file":"936.chunk.js","mappings":"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","sources":["../node_modules/@luxottica/capture-component/src/helpers/AuthHelper.ts","../node_modules/@luxottica/capture-component/src/interfaces/CaptureParameters.ts","../node_modules/@luxottica/capture-component/src/app/functions/WarmUp.ts","../node_modules/@luxottica/capture-component/src/FrameAdvisorCapture.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/errors/errors.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/constants/DefaultPrivacyLocalization.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/helpers/LocalizationHelper.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/interfaces/PrivacyLocalization.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/helpers/ParameterHelper.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/components/ErrorIcon.tsx","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/components/BipaBiometricForm.tsx","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/components/YesNoCheckbox.tsx","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/components/PrivacyAgreement.tsx","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/helpers/CookieHelper.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/helpers/RequestHelper.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/BipaOverlay.tsx","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/constants/Styling.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/bipa-manager/src/BipaManager.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/vm-posetracker-faceweb/src/interfaces/GuidanceCommand.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/vm-posetracker-faceweb/src/helpers/Helper.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/vm-posetracker-faceweb/src/interfaces/TrackResult.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/vm-posetracker-faceweb/src/helpers/CallbackHelper.ts","../node_modules/@luxottica/capture-component/node_modules/@luxottica/vm-posetracker-faceweb/src/PoseTracker.ts"],"sourcesContent":["import { RemoteLogConfig } from '@luxottica/vm-remotelog';\nimport { name, version } from '../../package.json';\nimport { AuthenticationOptions } from '../interfaces/InitializeParameters';\n\nlet access_token: string;\nlet refresh_token: string;\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, 'RequestHelper');\n\nconst getAuthData = (): AuthenticationOptions => {\n return {\n accessToken: access_token,\n refreshToken: refresh_token,\n };\n};\n\nconst setAuthData = (authData: Partial) => {\n if (!!authData?.accessToken && !! authData?.refreshToken) {\n access_token = authData.accessToken;\n refresh_token = authData.refreshToken;\n logger.debug('authentication data has been updated');\n }\n};\n\nconst resetAuthData = () => {\n access_token = undefined;\n refresh_token = undefined;\n logger.debug('authentication data has been DELETED');\n};\n\nexport {\n getAuthData,\n setAuthData,\n resetAuthData,\n};\n","import type { TrackingOptions } from '@luxottica/vm-posetracker-faceweb';\n\ninterface CaptureParameters {\n target: string;\n options?: CaptureOptions;\n}\n\ninterface CaptureOptions {\n tracking?: TrackingOptions;\n enableCountdown?: boolean;\n countdownDuration?: number;\n countdownDelay?: number;\n showLoading?: boolean;\n showCaptureTips?: boolean;\n enableMachineLearning?: boolean;\n enableVto?: boolean;\n debugMeasurement?: boolean;\n earlyFeedbacks?: PhotoQualityCheck[];\n ignorePrivacyPolicy?: boolean;\n enableVmp?: boolean;\n}\n\ninterface VtoCaptureParameters {\n target: string;\n options?: VtoCaptureOptions;\n}\n\ninterface VtoCaptureOptions {\n tracking?: TrackingOptions;\n showLoading?: boolean;\n enableMachineLearning?: boolean;\n enableVto?: boolean;\n ignorePrivacyPolicy?: boolean\n}\n\ninterface UploadImageParameters {\n target: string;\n options?: UploadOptions;\n}\n\ninterface UploadImageDataParameters {\n imageData: ImageData;\n options?: UploadOptions;\n}\n\ninterface UploadOptions {\n showLoading?: boolean;\n enableMachineLearning?: boolean;\n enableVto?: boolean;\n ignorePrivacyPolicy?: boolean\n}\n\ntype FrameAdvisorResult = {\n properties?: FrameAdvisorProperty[];\n videoId?: string;\n}\n\ninterface FrameAdvisorProperty {\n key: string,\n valueType: string,\n stringValue: string,\n numericValue: number,\n booleanValue: boolean,\n confidence: number,\n listStringValue: string[],\n listNumericValue: number[],\n listBooleanValue: boolean[],\n listListStringValue: string[][],\n listListNumericValue: number[][],\n listListBooleanValue: boolean[][],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n errors: any[],\n}\n\n/**\n * Map of high level features that can be enabled or disabled\n */\nconst PhotoQualityCheck = {\n LIGHT_CONDITIONS: 'LIGHT_CONDITIONS',\n} as const;\ntype PhotoQualityCheck = typeof PhotoQualityCheck[keyof typeof PhotoQualityCheck];\n\n\nexport {\n CaptureParameters,\n CaptureOptions,\n VtoCaptureParameters,\n VtoCaptureOptions,\n UploadImageParameters,\n UploadImageDataParameters,\n UploadOptions,\n FrameAdvisorResult,\n FrameAdvisorProperty,\n PhotoQualityCheck,\n};\n","/**\n * This method can be used to download and load in memory heavy parts of VM libraries, like for example the pose estimation webassembly\n * It does not return a promise even if internally it will produce some network calls.\n * You can call this method when your page is ready for the interactions.\n * @param environment 'STAGING' | 'ACCEPTANCE' | 'PRODUCTION'\n */\nexport const warmUp: (environment: MicroserviceEnvironment) => void = (environment) => {\n if (!environment) {\n environment = 'PRODUCTION';\n }\n import('@luxottica/vm-posetracker-faceweb')\n .then(({PoseTracker}) => {\n PoseTracker.warmUp({environment: environment == 'PRODUCTION' ? 'PRODUCTION' : 'TEST'});\n });\n };","import { AgreementType, BipaManager, BipaPage, PrivacyLocalization } from '@luxottica/bipa-manager';\nimport { GuidanceCommand } from '@luxottica/vm-posetracker-faceweb';\nimport { MicroserviceEnvironment as Environment} from '@luxottica/vto-microservices';\nimport { version } from '../package.json';\nimport { resetAuthData } from './helpers/AuthHelper';\nimport { CaptureParameters, FrameAdvisorProperty, FrameAdvisorResult, PhotoQualityCheck, UploadImageDataParameters, UploadImageParameters, VtoCaptureParameters } from './interfaces/CaptureParameters';\nimport { FrameAdvisorCallbacks, FrameAdvisorRegion, InitializeParameters, PrivacyOptions } from './interfaces/InitializeParameters';\nimport { InitializeResult } from './interfaces/InitializeResult';\nimport { warmUp } from './app/functions/WarmUp';\n\nconst FrameAdvisorCapture = {\n\n version(): string {\n return 'v' + version;\n },\n\n /**\n * @param environment 'STAGING' | 'ACCEPTANCE' | 'PRODUCTION' - defaults to 'PRODUCTION'\n * @param key the license key, if you pass the license key here VM will try to warm up those components that usually are licensed\n */\n warmUp(environment?: Environment): void {\n warmUp(environment);\n },\n\n initialize(\n initParams: InitializeParameters\n ): Promise {\n return import('./app/functions/Initialize')\n .then(({initialize}) => {\n return initialize(initParams);\n });\n },\n\n resetBipaState(): void {\n document.cookie = `${BipaManager.getCookieName(AgreementType.BIOMETRIC)}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`;\n },\n\n resetAuthToken(): void {\n resetAuthData();\n },\n\n capture(\n captureParams: CaptureParameters\n ): Promise {\n return import('./app/functions/Capture')\n .then(({capture}) => {\n return capture(captureParams);\n });\n },\n\n close(): void {\n import('./app/functions/CloseCapture')\n .then(({closeCapture}) => {\n closeCapture();\n });\n },\n\n vtoCapture(\n vtoCaptureParams: VtoCaptureParameters\n ): Promise {\n return import('./app/functions/VtoCapture')\n .then(({vtoCapture}) => {\n return vtoCapture(vtoCaptureParams);\n });\n },\n\n closeVtoCapture(): void {\n import('./app/functions/CloseVtoCapture')\n .then(({closeVtoCapture}) => {\n closeVtoCapture();\n });\n },\n\n uploadImage(\n uploadParams: UploadImageParameters\n ): Promise {\n return import('./app/functions/UploadImage')\n .then(({uploadImage}) => {\n return uploadImage(uploadParams);\n });\n },\n\n uploadImageData(\n uploadParams: UploadImageDataParameters\n ): Promise {\n return import('./app/functions/UploadImageData')\n .then(({uploadImageData}) => {\n return uploadImageData(uploadParams);\n });\n },\n\n closeUploadImage(): void {\n import('./app/functions/CloseUploadImage')\n .then(({closeUploadImage}) => {\n closeUploadImage();\n });\n },\n};\n\nexport {\n FrameAdvisorCapture,\n GuidanceCommand,\n InitializeParameters,\n FrameAdvisorCallbacks,\n FrameAdvisorRegion,\n CaptureParameters,\n FrameAdvisorResult,\n FrameAdvisorProperty,\n BipaPage,\n PrivacyOptions,\n PrivacyLocalization,\n Environment,\n PhotoQualityCheck,\n};\n","import { FieldError } from '../interfaces/FieldError';\n\nclass BipaError extends Error {\n public type: string;\n\n constructor(type: string, message: string, error?: Error) {\n super(message);\n this.type = type;\n this.name = type;\n this.message = message;\n this.stack = error?.stack;\n\n Object.setPrototypeOf(this, BipaError.prototype);\n }\n}\n\nclass MissingTranslationError extends BipaError {\n public static type = 'MissingTranslationError';\n\n constructor(locale: string) {\n super(MissingTranslationError.type, `translation missing for locale: ${locale}`);\n Object.setPrototypeOf(this, MissingTranslationError.prototype);\n }\n}\n\nclass PrivacyError extends BipaError {\n public static type = 'PrivacyError';\n\n constructor(message: string, error?: Error) {\n super(PrivacyError.type, message, error);\n Object.setPrototypeOf(this, PrivacyError.prototype);\n }\n}\n\nclass BipaServiceError extends BipaError {\n public static type = 'BipaServiceError';\n\n constructor(message: string, error?: Error) {\n super(BipaServiceError.type, message, error);\n Object.setPrototypeOf(this, BipaServiceError.prototype);\n }\n}\n\nclass BipaSubmissionError extends BipaError {\n public static type = 'BipaSubmissionError';\n public fieldErrors: FieldError[];\n\n constructor(message: string, fieldErrors?: FieldError[], error?: Error) {\n super(BipaSubmissionError.type, message, error);\n this.fieldErrors = fieldErrors;\n Object.setPrototypeOf(this, BipaSubmissionError.prototype);\n }\n}\n\nexport {\n MissingTranslationError,\n PrivacyError,\n BipaServiceError,\n BipaSubmissionError\n};\n","import { PrivacyLocalization } from '../interfaces/PrivacyLocalization';\n\nexport const DefaultPrivacyLocalization: PrivacyLocalization = {\n PRIVACY_AGREEMENT_TITLE: 'Biometric data consent',\n PRIVACY_FIRST_AGREEMENT: 'We need your consent to record your face\\'s biometric data and proceed with our eyewear suggestion experience. We will not store any of your information in our database and once the process is finished, we will delete all of your personal data.',\n PRIVACY_IMPLICIT_AGREEMENT: 'By continuing you accept',\n PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS: 'Terms and Conditions',\n PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION: ' and ',\n PRIVACY_IMPLICIT_PRIVACY_POLICY: 'Privacy Policy',\n PRIVACY_BUTTON_SUBMIT: 'Submit',\n PRIVACY_BUTTON_CANCEL: 'Cancel',\n BIPA_FORM_TITLE: 'Biometric data consent',\n BIPA_CITIZEN_DECLARATION: 'I declare I\\'m an Illinois citizen',\n BIPA_FORM_SUBTITLE: 'Due to some Illinois regulations we need to ask you some information, please fill in your details below.',\n BIPA_FORM_NAME: 'Name',\n BIPA_FORM_SURNAME: 'Surname',\n BIPA_FORM_EMAIL: 'E-mail',\n BIPA_IMPLICIT_AGREEMENT: 'By continuing you accept',\n BIPA_IMPLICIT_TERMS_AND_CONDITIONS: 'Terms and Conditions',\n BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION: ' and ',\n BIPA_IMPLICIT_PRIVACY_POLICY: 'Privacy Policy',\n BIPA_FORM_IMPLICIT_AGREEMENT: 'By continuing you accept Luxottica\\'s Terms and Conditions and below BIPA Notice.',\n BIPA_FORM_BUTTON_SUBMIT: 'Submit',\n BIPA_FORM_BUTTON_CANCEL: 'Cancel',\n BIPA_SERVER_ERROR: 'There was a problem with the server, please check insered informations or network connection'\n};\n","import { DefaultPrivacyLocalization } from '../constants/DefaultPrivacyLocalization';\nimport { PrivacyLocalization, PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\n\nlet currentLocalizationText: PrivacyLocalization;\n\nconst LocalizationHelper = {\n setText: (localizationText: PrivacyLocalization): void => {\n currentLocalizationText = {\n ...currentLocalizationText,\n ...DefaultPrivacyLocalization,\n ...localizationText\n };\n },\n\n getText: (key: PrivacyLocalizationKey): string => {\n return (!!currentLocalizationText[key]) ? currentLocalizationText[key] : '';\n }\n};\n\nexport {\n LocalizationHelper\n};","enum PrivacyLocalizationKey {\n PRIVACY_AGREEMENT_TITLE = 'PRIVACY_AGREEMENT_TITLE',\n PRIVACY_AGREEMENT_TEXT = 'PRIVACY_AGREEMENT_TEXT',\n PRIVACY_FIRST_AGREEMENT = 'PRIVACY_FIRST_AGREEMENT',\n PRIVACY_IMPLICIT_AGREEMENT = 'PRIVACY_IMPLICIT_AGREEMENT',\n PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS = 'PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS',\n PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION = 'PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION',\n PRIVACY_IMPLICIT_PRIVACY_POLICY = 'PRIVACY_IMPLICIT_PRIVACY_POLICY',\n PRIVACY_BUTTON_SUBMIT = 'PRIVACY_BUTTON_SUBMIT',\n PRIVACY_BUTTON_CANCEL = 'PRIVACY_BUTTON_CANCEL',\n BIPA_CITIZEN_DECLARATION = 'BIPA_CITIZEN_DECLARATION',\n BIPA_CITIZEN_QUESTION = 'BIPA_CITIZEN_QUESTION',\n BIPA_FORM_TITLE = 'BIPA_FORM_TITLE',\n BIPA_FORM_SUBTITLE = 'BIPA_FORM_SUBTITLE',\n BIPA_FORM_NAME = 'BIPA_FORM_NAME',\n BIPA_FORM_SURNAME = 'BIPA_FORM_SURNAME',\n BIPA_FORM_EMAIL = 'BIPA_FORM_EMAIL',\n BIPA_FORM_ERROR = 'BIPA_FORM_ERROR',\n BIPA_FORM_ERROR_MAIL = 'BIPA_FORM_ERROR_MAIL',\n BIPA_FORM_MANDATORY_FIELD = 'BIPA_FORM_MANDATORY_FIELD',\n BIPA_IMPLICIT_AGREEMENT = 'BIPA_IMPLICIT_AGREEMENT',\n BIPA_IMPLICIT_TERMS_AND_CONDITIONS = 'BIPA_IMPLICIT_TERMS_AND_CONDITIONS',\n BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION = 'BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION',\n BIPA_IMPLICIT_PRIVACY_POLICY = 'BIPA_IMPLICIT_PRIVACY_POLICY',\n BIPA_FORM_IMPLICIT_AGREEMENT = 'BIPA_FORM_IMPLICIT_AGREEMENT',\n BIPA_FORM_BIPA_AGREEMENT = 'BIPA_FORM_BIPA_AGREEMENT',\n BIPA_FORM_BUTTON_SUBMIT = 'BIPA_FORM_BUTTON_SUBMIT',\n BIPA_FORM_BUTTON_CANCEL = 'BIPA_FORM_BUTTON_CANCEL',\n BIPA_NO = 'BIPA_NO',\n BIPA_SERVER_ERROR = 'BIPA_SERVER_ERROR',\n BIPA_YES = 'BIPA_YES',\n}\n\ntype PrivacyLocalization = {\n [key in PrivacyLocalizationKey]?: string;\n}\n\nexport {\n PrivacyLocalizationKey,\n PrivacyLocalization\n};\n","import { BipaFormData } from '../interfaces/BipaFormData';\nimport { FieldError } from '../interfaces/FieldError';\n\nconst NOT_BLANK = 'NotBlank';\nconst SIZE = 'Size';\nconst PATTERN = 'Pattern';\n\nconst EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nconst createFieldError = (field: string, message: string): FieldError => { return { objectName: 'bipaConsentPublic', field, message }; };\n\nconst ParameterHelper = {\n validateBipaForm: (bipaForm: BipaFormData): FieldError[] => {\n const fieldErrors: FieldError[] = [];\n\n if (!bipaForm?.firstName) { \n fieldErrors.push(createFieldError('firstName', NOT_BLANK));\n } else if (!!bipaForm?.firstName && bipaForm.firstName.trim().length < 2) {\n fieldErrors.push(createFieldError('firstName', SIZE));\n }\n\n if (!bipaForm?.lastName) { \n fieldErrors.push(createFieldError('lastName', NOT_BLANK));\n } else if (!!bipaForm?.lastName && bipaForm.lastName.trim().length < 2) {\n fieldErrors.push(createFieldError('lastName', SIZE));\n }\n\n if (!bipaForm?.email) { \n fieldErrors.push(createFieldError('email', NOT_BLANK));\n } else if (!!bipaForm?.email && bipaForm.email.trim().length < 2) {\n fieldErrors.push(createFieldError('email', SIZE));\n } else if (!!bipaForm?.email && !bipaForm.email.trim().match(EMAIL_REGEX)) {\n fieldErrors.push(createFieldError('email', PATTERN));\n }\n\n return fieldErrors;\n }\n};\n\nexport {\n ParameterHelper\n};\n","import React from 'react';\n\nconst ErrorIcon = () => {\n return (\n \n \n \n \n \n );\n};\n\nexport {\n ErrorIcon\n};\n","import { MicroserviceEnvironment, submitBipaFormRequest } from '@luxottica/vto-microservices';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { BipaServiceError } from '../errors/errors';\nimport { LocalizationHelper } from '../helpers/LocalizationHelper';\nimport { ParameterHelper } from '../helpers/ParameterHelper';\nimport { BipaCallbacks } from '../interfaces/BipaCallbacks';\nimport { BipaFormData } from '../interfaces/BipaFormData';\nimport { PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\nimport { BipaPrivacyOptions } from '../interfaces/PrivacyOptions';\nimport './BipaBiometricForm.scss';\nimport { ErrorIcon } from './ErrorIcon';\n\ninterface BipaBiometricFormProps {\n source: string;\n environment: MicroserviceEnvironment;\n accessToken: string;\n refreshToken: string;\n bipaVersion: number;\n formPrefill?: Partial;\n privacyOptions: BipaPrivacyOptions;\n callbacks: BipaCallbacks;\n onBipaSubmit: (formData: BipaFormData) => void;\n onCancel: () => void;\n onError: (e: Error) => void;\n}\n\nconst BipaBiometricForm = (props: BipaBiometricFormProps) => {\n\n const [firstName, setFirstName] = useState((!!props.formPrefill?.firstName) ? props.formPrefill.firstName : '');\n const [firstNameError, setFirstNameError] = useState(false);\n\n const [lastName, setLastName] = useState((!!props.formPrefill?.lastName) ? props.formPrefill.lastName : '');\n const [lastNameError, setLastNameError] = useState(false);\n\n const [email, setEmail] = useState((!!props.formPrefill?.email) ? props.formPrefill.email : '');\n const [emailError, setEmailError] = useState(false);\n\n const [serverError, setServerError] = useState(false);\n\n const topInputRef = useRef(undefined);\n\n useEffect(() => {\n props.callbacks?.onDisplayPage?.('BIOMETRIC_FORM');\n }, []);\n\n const onSubmitForm = () => {\n const formData = {\n firstName: firstName,\n lastName: lastName,\n email: email\n };\n\n if (!serverError) { setServerError(false); }\n\n const fieldErrors = ParameterHelper.validateBipaForm(formData).map(error => error.field);\n\n if (!firstName) { setFirstNameError(true); }\n if (!lastName) { setLastNameError(true); }\n if (!email) { setEmailError(true); }\n\n if (!firstName || !lastName || !email) {\n topInputRef.current.scrollIntoView();\n\n } else if (fieldErrors.length > 0) {\n if (fieldErrors.includes('firstName')) { setFirstNameError(true); }\n if (fieldErrors.includes('lastName')) { setLastNameError(true); }\n if (fieldErrors.includes('email')) { setEmailError(true); }\n topInputRef.current.scrollIntoView();\n\n } else {\n submitBipaFormRequest({\n source: props.source,\n environment: props.environment,\n accessToken: props.accessToken,\n refreshToken: props.refreshToken,\n firstName: formData.firstName,\n lastName: formData.lastName,\n email: formData.email,\n bipaVersion: props.bipaVersion,\n onAuthUpdated: props.callbacks.onAuthUpdated\n }).then((response) => {\n if (response.ok) {\n props.onBipaSubmit(formData);\n } else if (response.status < 404) {\n response.json().then((json) => {\n const errorFields: string[] = (!!json?.fieldErrors) ? json.fieldErrors.map(error => error.field) : [];\n console.info(errorFields);\n \n if (errorFields.includes('firstName')) { setFirstNameError(true); }\n if (errorFields.includes('lastName')) { setLastNameError(true); }\n if (errorFields.includes('email')) { setEmailError(true); }\n });\n } else {\n setServerError(true);\n props.onError(new BipaServiceError(`failed to submit bipa form due to response=${response.status} ${response.statusText}`));\n }\n }).catch((e) => {\n setServerError(true);\n props.onError(e);\n });\n }\n };\n\n const handleInputChange = (\n element: React.ChangeEvent,\n dispatch: React.Dispatch>\n ) => {\n if (!!element.target.value && element.target.value !== '') {\n dispatch(element.target.value);\n } else {\n dispatch('');\n }\n };\n\n const confirmButtonDisabled = firstName === undefined || firstName === ''\n || lastName === undefined || lastName === ''\n || email === undefined || email === '';\n const showFieldWarning = firstNameError || lastNameError || emailError;\n\n return (\n
\n\n
\n

{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_TITLE)}

\n\n

{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_SUBTITLE)}

\n\n { showFieldWarning &&\n

{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_ERROR)}

\n }\n\n { serverError &&\n

{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_SERVER_ERROR)}

\n }\n\n
\n {\n setFirstNameError(false);\n handleInputChange(element, setFirstName);\n }}\n placeholder={LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_NAME)}/>\n { firstNameError && }\n
\n
\n {\n setLastNameError(false);\n handleInputChange(element, setLastName);\n }}\n placeholder={LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_SURNAME)}/>\n { lastNameError && }\n
\n
\n {\n setEmailError(false);\n handleInputChange(element, setEmail);\n }}\n placeholder={LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_EMAIL)}/>\n { emailError && }\n
\n { emailError &&
{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_ERROR_MAIL)}
}\n
{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_MANDATORY_FIELD)}
\n
\n\n
\n
\n \n\n \n
\n
\n
\n );\n};\n\nexport {\n BipaBiometricForm\n};\n","import React from 'react';\nimport { LocalizationHelper } from '../helpers/LocalizationHelper';\nimport { PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\nimport './YesNoCheckBox.scss';\n\ninterface YesNoCheckBoxProps {\n tabIndex: number;\n checked: boolean;\n onChange: (checked: boolean) => void;\n}\n\nconst YesNoCheckBox = (props: YesNoCheckBoxProps) => {\n\n return (\n
\n {LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_NO)}\n \n {LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_YES)}\n
\n );\n};\n\nexport {\n YesNoCheckBox\n};\n","import React, { useEffect, useState } from 'react';\nimport { LocalizationHelper } from '../helpers/LocalizationHelper';\nimport { BipaCallbacks } from '../interfaces/BipaCallbacks';\nimport { PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\nimport { BipaPrivacyOptions } from '../interfaces/PrivacyOptions';\n\nimport './PrivacyAgreement.scss';\nimport { YesNoCheckBox } from './YesNoCheckbox';\n\ninterface PrivacyAgreementProps {\n region: string,\n isIllinoisUser: boolean;\n privacyOptions: BipaPrivacyOptions;\n callbacks: BipaCallbacks;\n onSetIllinoisUser: (isIllinois: boolean) => void;\n onSubmit: () => void;\n onCancel: () => void;\n}\n\nconst PrivacyAgreement = (props: PrivacyAgreementProps) => {\n \n const [showGradient, setShowGradient] = useState(true);\n\n useEffect(() => {\n props.callbacks?.onDisplayPage?.('PRIVACY');\n\n try {\n if (document.getElementsByClassName('scrollable-container')[0].clientHeight >= document.getElementsByClassName('scrollable-content')[0].clientHeight) {\n setShowGradient(false);\n }\n } catch (e) { }\n }, []);\n\n const trackScrolling = (e: React.UIEvent) => {\n if (e.currentTarget.scrollTop < 2) {\n !showGradient && setShowGradient(true);\n } else {\n showGradient && setShowGradient(false);\n }\n };\n\n return (\n
\n\n
\n\n
\n\n

{LocalizationHelper.getText(PrivacyLocalizationKey.PRIVACY_AGREEMENT_TITLE)}

\n\n \n\n {props.region === 'US' &&\n <>\n
\n \n
\n\n
\n { props.onSetIllinoisUser(checked); }}/>\n
\n \n }\n\n \n\n {props.region === 'US' &&\n \n }\n\n
\n
\n\n
\n
\n\n \n
\n );\n};\n\nexport {\n PrivacyAgreement\n};\n","import { AgreementType } from '../constants/AgreementType';\n\nconst BASIC_COOKIE_NAME = 'BasicImageConsent=true';\nconst BIOMETRIC_COOKIE_NAME = 'MlProcessImageConsent=true';\nconst COOKIE_PATH = 'path=/';\n\nconst CookieHelper = {\n setBiometricCookie: (agreementType: AgreementType): void => {\n if (!CookieHelper.biometricCookieExists(agreementType)) {\n document.cookie = `${CookieHelper.getBiometricCookieName(agreementType)};${COOKIE_PATH}`;\n }\n },\n\n biometricCookieExists: (agreementType: AgreementType): boolean => {\n if (agreementType === AgreementType.BASIC) {\n return document.cookie.includes(CookieHelper.getBiometricCookieName(AgreementType.BASIC))\n || document.cookie.includes(CookieHelper.getBiometricCookieName(AgreementType.BIOMETRIC));\n\n } else if (agreementType === AgreementType.BIOMETRIC) {\n return document.cookie.includes(CookieHelper.getBiometricCookieName(AgreementType.BIOMETRIC));\n\n } else {\n return false;\n }\n },\n\n getBiometricCookieName: (agreementType: AgreementType): string => {\n return agreementType === AgreementType.BIOMETRIC ? BIOMETRIC_COOKIE_NAME : BASIC_COOKIE_NAME;\n }\n};\n\nexport {\n CookieHelper\n};","import { MicroserviceEnvironment } from '@luxottica/vto-microservices';\nimport { AgreementType } from '../constants/AgreementType';\nimport { MissingTranslationError } from '../errors/errors';\nimport { PrivacyLocalization } from '../interfaces/PrivacyLocalization';\n\nconst localizationBaseUrl = 'https://d5nhc6q3o19l2.cloudfront.net';\n\nconst fetchBipaJson = (\n agreementType: AgreementType,\n environment: MicroserviceEnvironment,\n locale: string\n): Promise => {\n if (agreementType === AgreementType.BASIC) {\n const localizationFileUrl = `${localizationBaseUrl}/vmmv/v1/${bipaJsonEnv(environment)}/privacy/application_${locale}.json`;\n return fetch(localizationFileUrl).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n throw new MissingTranslationError(locale);\n }\n });\n\n } else {\n const localizationFileUrl = `${localizationBaseUrl}/frame-advisor/v2/${bipaJsonEnv(environment)}/privacy/privacy_${locale}.json`;\n return fetch(localizationFileUrl).then((response) => {\n if (response.ok) {\n return response.json() as PrivacyLocalization;\n } else {\n throw new MissingTranslationError(locale);\n }\n });\n }\n\n};\n\nconst bipaJsonEnv = (environment: MicroserviceEnvironment): 'dev' | 'prod' | 'test' => {\n switch (environment) {\n case 'STAGING':\n return 'dev';\n\n case 'PRODUCTION':\n return 'prod';\n\n case 'ACCEPTANCE':\n default:\n return 'test';\n }\n};\n\nexport {\n fetchBipaJson\n};\n","import { bipaAgreementRequest, loginRequest, MicroserviceEnvironment } from '@luxottica/vto-microservices';\nimport React, { useEffect, useRef, useState } from 'react';\nimport './BipaOverlay.scss';\nimport { BipaBiometricForm } from './components/BipaBiometricForm';\nimport { PrivacyAgreement } from './components/PrivacyAgreement';\nimport { AgreementType } from './constants/AgreementType';\nimport { ROOT_STYLE_NAME } from './constants/Styling';\nimport { CookieHelper } from './helpers/CookieHelper';\nimport { LocalizationHelper } from './helpers/LocalizationHelper';\nimport { fetchBipaJson } from './helpers/RequestHelper';\nimport { BipaCallbacks } from './interfaces/BipaCallbacks';\nimport { BipaFormData } from './interfaces/BipaFormData';\nimport { BipaPage } from './interfaces/BipaPage';\nimport { BipaPrivacyOptions } from './interfaces/PrivacyOptions';\n\ninterface BipaOverlayProps {\n type: AgreementType;\n environment: MicroserviceEnvironment;\n tokenVersion: 1 | 2;\n accessToken: string;\n refreshToken: string;\n locale: string;\n region: string;\n source: string;\n formPrefill?: Partial;\n privacy: BipaPrivacyOptions;\n callbacks: BipaCallbacks;\n}\n\nconst BipaOverlay = (props: BipaOverlayProps) => {\n\n const isFirstRender = useRef(true);\n\n const [illinoisUser, setIlliniosUser] = useState(false);\n const [currentPage, setCurrentPage] = useState(undefined);\n const [bipaVersion, setBipaVersion] = useState(undefined);\n\n const onClickSubmit = () => {\n if (illinoisUser) {\n setCurrentPage('BIOMETRIC_FORM');\n } else {\n CookieHelper.setBiometricCookie(props.type);\n props.callbacks.onSubmit();\n }\n };\n\n const onClickBipaSubmit = (formData: BipaFormData) => {\n CookieHelper.setBiometricCookie(props.type);\n props.callbacks.onSubmit(formData);\n };\n\n const onClickCancel = () => {\n props.callbacks.onUserReject();\n };\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n\n loginRequest({\n environment: props.environment,\n version: props.tokenVersion,\n accessToken: props.accessToken,\n refreshToken: props.refreshToken,\n onAuthUpdated: props.callbacks.onAuthUpdated\n }).then((loginReturn) => {\n return Promise.all([\n fetchBipaJson(props.type, props.environment, props.locale),\n (props.region === 'US') ? bipaAgreementRequest({\n locale: props.locale,\n environment: props.environment,\n accessToken: loginReturn.accessToken,\n refreshToken: loginReturn.refreshToken,\n onAuthUpdated: props.callbacks.onAuthUpdated\n }) : Promise.resolve(undefined)\n ]);\n }).then((response) => {\n const bipaAgreementText = (!!response?.[1]?.text) ? response[1].text : undefined;\n const bipaAgreementVersion = (!!response?.[1]?.version) ? response[1].version : undefined;\n \n LocalizationHelper.setText({\n ...response[0],\n BIPA_FORM_BIPA_AGREEMENT: bipaAgreementText,\n ...props.privacy.localizationText,\n });\n setBipaVersion(bipaAgreementVersion);\n setCurrentPage('PRIVACY');\n }).catch((e) => {\n props.callbacks.onError(e);\n });\n }\n }, []);\n\n const renderPage = (props: BipaOverlayProps, currentPage: BipaPage) => {\n if (currentPage === 'PRIVACY') {\n return (\n { setIlliniosUser(isIllinoisUser); }}\n onSubmit={onClickSubmit}\n onCancel={onClickCancel}/>\n );\n } else if (currentPage === 'BIOMETRIC_FORM') {\n return (\n setCurrentPage('PRIVACY')}\n onError={props.callbacks.onError}/>\n );\n }\n };\n\n return (\n
\n
\n {renderPage(props, currentPage)}\n
\n
\n );\n};\n\nexport {\n BipaOverlay,\n BipaOverlayProps\n};\n","const ROOT_STYLE_NAME = 'bipa-overlay-root-style';\n\nexport {\n ROOT_STYLE_NAME\n};\n","import { bipaAgreementRequest, BipaAgreementReturn, MicroserviceEnvironment, submitBipaFormRequest } from '@luxottica/vto-microservices';\nimport { BipaOverlay, BipaOverlayProps } from './BipaOverlay';\nimport { AgreementType } from './constants/AgreementType';\nimport { BipaSubmissionError } from './errors/errors';\nimport { CookieHelper } from './helpers/CookieHelper';\nimport { ParameterHelper } from './helpers/ParameterHelper';\nimport { BipaCallbacks } from './interfaces/BipaCallbacks';\nimport { BipaVersionParameters, SaveBipaEntryParameters } from './interfaces/BipaConfiguration';\nimport { BipaFormData } from './interfaces/BipaFormData';\nimport { BipaPage } from './interfaces/BipaPage';\nimport { PrivacyLocalization, PrivacyLocalizationKey } from './interfaces/PrivacyLocalization';\nimport { BipaPrivacyOptions } from './interfaces/PrivacyOptions';\n\nconst BipaManager = {\n getCookieName: (agreementType: AgreementType): string => {\n return CookieHelper.getBiometricCookieName(agreementType);\n },\n\n biometricCookieExists: (agreementType: AgreementType): boolean => {\n return CookieHelper.biometricCookieExists(agreementType);\n },\n\n getBipaVersion: (config: BipaVersionParameters): Promise => {\n return bipaAgreementRequest({\n locale: config.locale,\n environment: config.environment,\n accessToken: config.accessToken,\n refreshToken: config.refreshToken,\n onAuthUpdated: config.onAuthUpdated\n });\n },\n\n saveBipaEntry: (\n config: SaveBipaEntryParameters\n ): Promise => {\n const fieldErrors = ParameterHelper.validateBipaForm(config.formData);\n if (fieldErrors.length > 0) {\n return Promise.reject(new BipaSubmissionError('failed client-side bipa form validation', fieldErrors));\n }\n\n return submitBipaFormRequest({\n environment: config.environment,\n accessToken: config.accessToken,\n refreshToken: config.refreshToken,\n onAuthUpdated: config.onAuthUpdated,\n bipaVersion: config.bipaVersion,\n source: config.source,\n firstName: config.formData.firstName,\n lastName: config.formData.lastName,\n email: config.formData.email\n }).then((response) => {\n return response.json().then((json) => {\n return {\n response: response,\n body: json\n };\n });\n }).then((responseData) => {\n if (responseData.response.ok) {\n return responseData.response;\n } else {\n return (!!responseData.body?.title && !!responseData.body?.message) ?\n Promise.reject(new BipaSubmissionError(`${responseData.body.title}: ${responseData.body.message}`, responseData.body.fieldErrors))\n :\n Promise.reject(new BipaSubmissionError('failed to contact bipa server', undefined));\n }\n }).catch((e) => {\n if (e instanceof BipaSubmissionError) {\n throw e;\n } else {\n throw new BipaSubmissionError('failed to contact bipa server', undefined);\n }\n });\n }\n};\n\nexport {\n AgreementType,\n MicroserviceEnvironment,\n BipaManager,\n BipaVersionParameters,\n SaveBipaEntryParameters,\n BipaPage,\n BipaOverlay,\n BipaOverlayProps,\n BipaFormData,\n BipaPrivacyOptions,\n PrivacyLocalization,\n PrivacyLocalizationKey,\n BipaCallbacks,\n};\n","export enum GuidanceCommand {\n NONE = 7,\n UNKNOWN = 8,\n MOVE_CENTER = 9,\n MOVE_CLOSER = 10,\n MOVE_FARTHER = 11,\n MOVE_UP = 12,\n MOVE_RIGHT = 13,\n MOVE_DOWN = 14,\n MOVE_LEFT = 15,\n LOOK_UP = 16,\n LOOK_RIGHT = 17,\n LOOK_DOWN = 18,\n LOOK_LEFT = 19,\n TILT_LEFT = 20,\n TILT_RIGHT = 21,\n STAY_STILL = 22,\n // early feedbacks\n EYE_ASPECT_RATIO_TOO_SMALL = 400,\n LOW_LIGHT_CONDITIONS = 401,\n BRIGHT_LIGHT_CONDITIONS = 402,\n TOO_BRIGHT_LEFT = 403,\n TOO_BRIGHT_RIGHT = 404\n}\n","// import { vec3 } from 'gl-matrix';\n\n// const radToDegK = (180 / Math.PI);\n\n// const radToDeg = (value: number, trailingDigits = 2): string => {\n// return (value * radToDegK).toFixed(trailingDigits);\n// };\n\nexport interface FormattedPose {\n position: {\n x: string,\n y: string,\n z: string,\n };\n rotation: {\n p: string,\n y: string,\n r: string\n };\n}\n\n// const axisAngleToEuler = (axisAngle: Float32Array) => {\n// const axis = vec3.fromValues(axisAngle[0], axisAngle[1], axisAngle[2]);\n// const angle = vec3.length(axis);\n// if (angle < 1e-6) {\n// return [0.0, 0.0, 0.0];\n// }\n// axis[0] /= angle;\n// axis[1] /= angle;\n// axis[2] /= angle;\n\n// const q = new Float32Array(4);\n// const sine = Math.sin(angle);\n// q[0] = Math.sqrt(2 + 2 * Math.cos(angle)) / 2;\n// q[1] = sine * axis[0] / (2 * q[0]);\n// q[2] = sine * axis[1] / (2 * q[0]);\n// q[3] = sine * axis[2] / (2 * q[0]);\n// const pitch = Math.atan2(2 * (q[0] * q[1] - q[2] * q[3]),\n// q[0] * q[0] - q[1] * q[1] - q[2] * q[2] + q[3] * q[3]);\n// const yaw = Math.asin(2 * (q[0] * q[2] + q[1] * q[3]));\n// const roll = Math.atan2(2 * (q[0] * q[3] - q[1] * q[2]),\n// q[0] * q[0] + q[1] * q[1] - q[2] * q[2] - q[3] * q[3]);\n// return [pitch, yaw, roll];\n// };\n\nexport const formatPose = (pose: Float32Array): FormattedPose => {\n return {\n position: {\n x: pose[3].toFixed(2),\n y: pose[4].toFixed(2),\n z: pose[5].toFixed(2),\n },\n rotation: {\n p: pose[0].toFixed(2),\n y: pose[1].toFixed(2),\n r: pose[2].toFixed(2),\n },\n };\n\n // if (!pose || !pose[3] || !pose[4] || !pose[5]) {\n // return undefined;\n // }\n // const eulerAngles: number[] = axisAngleToEuler(pose);\n // return {\n // position: {\n // x: pose[3].toFixed(2),\n // y: pose[4].toFixed(2),\n // z: pose[5].toFixed(2),\n // },\n // rotation: {\n // p: radToDeg(eulerAngles[0], 2),\n // y: radToDeg(eulerAngles[1], 2),\n // r: radToDeg(eulerAngles[2], 2),\n // },\n // };\n};","//import { IFaceMetrics } from \"@luxottica/face-web/faceRegions\";\nexport enum TrackResult {\n OK = 0,\n LostWillTryRecovery = -3,\n LostWillReset = -4,\n FaceFittingTooNarrow = -5,\n AnglesOutOfRange = -6,\n NoFaceFound = -10,\n FaceTooSmallDetected = -11,\n FaceDetectedWaitForMoreSamples = -12,\n TrackerStopped = -20\n}\n","import { FaceWebCallbacks } from '@luxottica/face-web';\n\nexport {\n CallbackHelper,\n setCallbacks\n};\n\nconst setCallbacks = (\n callbacks: FaceWebCallbacks\n) => {\n if (callbacks) {\n if (callbacks.onSegmenterInitializeStart) { CallbackHelper.onSegmenterInitializeStart = callbacks.onSegmenterInitializeStart; }\n if (callbacks.onSegmenterInitializeEnd) { CallbackHelper.onSegmenterInitializeEnd = callbacks.onSegmenterInitializeEnd; }\n }\n};\n\nconst CallbackHelper: FaceWebCallbacks = {\n onSegmenterInitializeStart: () => { return; },\n onSegmenterInitializeEnd: () => { return; },\n};\n","import {\n Defect,\n SmartRulerConfig,\n FaceWebResult,\n IFaceMetrics,\n InputMap,\n QualityScore,\n IRoi,\n FaceWeb, \n RulerStatus, \n DefectType, \n FaceWebEnvironment,\n FaceWebCallbacks\n} from '@luxottica/face-web';\n\nimport { GuidanceCommand } from './interfaces/GuidanceCommand';\nimport { formatPose, FormattedPose } from './helpers/Helper';\nimport { PoseResponse } from './interfaces/PoseResponse';\nimport { FilterOptions, TrackingOptions } from './interfaces/TrackingOptions';\nimport { TrackResult } from './interfaces/TrackResult';\n\nimport { CallbackHelper, setCallbacks } from './helpers/CallbackHelper';\n\n\nclass PoseTracker {\n\n private static faceWeb: FaceWeb;\n private static faceWebInitializationPromise: Promise;\n private ready = false;\n private metricsSubscribers = new Array<(IFaceMetrics)=>void>();\n private computePhotoQuality: boolean;\n private guidanceLightConditions: GuidanceCommand;\n private timerId: NodeJS.Timeout;\n\n private options: TrackingOptions;\n\n /**\n * @param processingVerticalFoVDeg: a number that represent the vertical FOV in degrees\n * @param filter: shall we continue to use filter options from outside?\n * @param environment: 'TEST' | 'PRODUCTION' choose where to load inner wasm and models\n * @param onWasmLoaded: callback to listen for internal loading state\n * @param onFail: wasm initialisation can fail, please listen here for errors\n * @param options: TrackingOptions\n */\n constructor(\n processingVerticalFoVDeg: number,\n filter: FilterOptions,\n environment: FaceWebEnvironment,\n onWasmLoaded: () => void,\n onFail?: () => void,\n options?: TrackingOptions,\n ) {\n this.options = options;\n\n PoseTracker.warmUp({\n verticalFovDeg: processingVerticalFoVDeg,\n environment: environment\n })\n .then(() => {\n return PoseTracker.faceWebInitializationPromise;\n })\n .then(()=>{\n if (options?.roi) {\n PoseTracker.faceWeb.applyRoi(options.roi);\n }\n this.ready = true;\n onWasmLoaded();\n })\n .catch(()=>{\n onFail();\n });\n\n if (filter) {\n this.setFilters(filter);\n }\n }\n\n public updateOptions(options: TrackingOptions) {\n if (options?.roi) {\n PoseTracker.faceWeb.applyRoi(options.roi);\n }\n\n this.options = options;\n\n if (!!options?.minTrackingConfidence) {\n PoseTracker.faceWeb.minTrackingConfidence = options.minTrackingConfidence;\n }\n\n if (!!options?.minDetectionConfidence) {\n PoseTracker.faceWeb.minDetectionConfidence = options.minDetectionConfidence;\n }\n }\n\n public setFps(fps: number){\n PoseTracker.faceWeb.fps = fps;\n }\n\n public setFilters(filter: FilterOptions): void {\n if (filter?.rotationFilter) {\n PoseTracker.faceWeb.rotationFilter = filter.rotationFilter;\n }\n if (filter?.translationFilter) {\n PoseTracker.faceWeb.translationFilter = filter.translationFilter;\n }\n }\n\n public reset(): void{\n PoseTracker.faceWeb.reset();\n }\n\n public formatPose = (pose: Float32Array) => {\n return formatPose(pose);\n };\n\n /**\n * \n * @returns Face web internal configuration state, useful for debug\n */\n public debugGetConfig = () => {\n return PoseTracker.faceWeb.debugGetConfig();\n };\n\n public set enableProminentSubjectSegmenter(value: boolean) {\n if (!PoseTracker.faceWebInitializationPromise) {\n // eslint-disable-next-line no-console\n console.warn('Can\\'t initialise the prominent subject segmenter while the PoseTracker is initialising');\n return;\n }\n PoseTracker.faceWebInitializationPromise.then(() => {\n PoseTracker.faceWeb.enableProminentSubjectSegmenter = value;\n });\n }\n\n public static warmUp(options: {verticalFovDeg?: number, environment: FaceWebEnvironment, callbacks?: FaceWebCallbacks}): Promise {\n if (PoseTracker.faceWeb) {\n PoseTracker.faceWeb.verticalFovDeg = options.verticalFovDeg;\n return Promise.resolve();\n }\n return import('@luxottica/face-web')\n .then(({FaceWeb}) => {\n if (PoseTracker.faceWeb === undefined) {\n PoseTracker.faceWeb = new FaceWeb({\n verticalFovDeg: options.verticalFovDeg ?? 52,\n environment: options.environment,\n });\n\n\n PoseTracker.faceWeb.usePoseSmoothing = true;\n PoseTracker.faceWeb.enableProminentSubjectSegmenter = false;\n PoseTracker.faceWeb.useLandmarksSmoothing = true;\n PoseTracker.faceWeb.velocityFilter = {\n windowSize: 15,\n velocityScale: 0.25,\n };\n PoseTracker.faceWeb.translationFilter.velocityFilter = {\n windowSize: 5,\n velocityScale: 0.3,\n };\n PoseTracker.faceWeb.rotationFilter.velocityFilter = {\n windowSize: 5,\n velocityScale: 0.6,\n };\n\n setCallbacks(options.callbacks)\n \n PoseTracker.faceWebInitializationPromise = PoseTracker.faceWeb.initialize(\n {\n onSegmenterInitializeStart: () => (CallbackHelper.onSegmenterInitializeStart()),\n onSegmenterInitializeEnd: () => (CallbackHelper.onSegmenterInitializeEnd()),\n }\n );\n \n } else {\n PoseTracker.faceWeb.verticalFovDeg = options.verticalFovDeg;\n }\n });\n }\n\n public isReady(): boolean {\n return this.ready;\n }\n\n public static destroy(): Promise {\n return PoseTracker.faceWebInitializationPromise.then(() => {\n PoseTracker.faceWeb.close();\n PoseTracker.faceWeb = undefined;\n PoseTracker.faceWebInitializationPromise = undefined;\n });\n }\n\n public usePoseSmoothing(smoothing: boolean){\n PoseTracker.faceWeb.usePoseSmoothing = smoothing;\n }\n\n public useLandmarksSmoothing(smoothing: boolean){\n PoseTracker.faceWeb.useLandmarksSmoothing = smoothing;\n }\n\n public startRuler(configuration?: SmartRulerConfig): Promise{\n PoseTracker.faceWeb.startRuler(configuration);\n return Promise.resolve();\n }\n\n public getMetrics(): Promise {\n return new Promise((resolve)=>{\n this.metricsSubscribers.push(resolve);\n });\n }\n\n checkPoseDefects(pose){\n const rotationBound = 0.2;\n const xyBound = 30;\n const loopData = [\n {lBound: -rotationBound, hBound: rotationBound, value: pose[0], lCommand: GuidanceCommand.LOOK_DOWN, hCommand: GuidanceCommand.LOOK_UP},\n {lBound: -rotationBound, hBound: rotationBound, value: pose[1], lCommand: GuidanceCommand.LOOK_RIGHT, hCommand: GuidanceCommand.LOOK_LEFT},\n {lBound: -rotationBound, hBound: rotationBound, value: pose[2], lCommand: GuidanceCommand.TILT_LEFT, hCommand: GuidanceCommand.TILT_RIGHT},\n {lBound: -xyBound, hBound: xyBound, value: pose[3], lCommand: GuidanceCommand.MOVE_LEFT, hCommand: GuidanceCommand.MOVE_RIGHT},\n {lBound: -xyBound, hBound: xyBound, value: pose[4], lCommand: GuidanceCommand.MOVE_UP, hCommand: GuidanceCommand.MOVE_DOWN},\n {\n lBound: this.options ? this.options.standstill?.depthRange.min : 300,\n hBound: this.options ? this.options.standstill?.depthRange.max : 500,\n value: pose[5],\n lCommand: GuidanceCommand.MOVE_FARTHER,\n hCommand: GuidanceCommand.MOVE_CLOSER\n },\n ];\n\n /*const loopData = [\n {lBound: -xyBound, hBound: xyBound, value: pose[3], lCommand: GuidanceCommand.MOVE_LEFT, hCommand: GuidanceCommand.MOVE_RIGHT},\n {lBound: -xyBound, hBound: xyBound, value: pose[4], lCommand: GuidanceCommand.MOVE_UP, hCommand: GuidanceCommand.MOVE_DOWN},\n ]*/\n\n for(const g of loopData){\n if(g.value < g.lBound) return g.lCommand;\n if(g.value > g.hBound) return g.hCommand;\n }\n\n return GuidanceCommand.STAY_STILL;\n }\n\n mapFaceWebDefects(defects: Defect[]){\n if(!defects)\n return GuidanceCommand.STAY_STILL;\n for(const d of defects){\n if(d.presence){\n switch(d.type as DefectType){\n case 'PITCH_TOO_HIGH' as DefectType: return GuidanceCommand.LOOK_UP;\n case 'PITCH_TOO_LOW' as DefectType: return GuidanceCommand.LOOK_DOWN;\n case 'YAW_TOO_HIGH' as DefectType: return GuidanceCommand.LOOK_RIGHT;\n case 'YAW_TOO_LOW' as DefectType: return GuidanceCommand.LOOK_LEFT;\n case 'TX_TOO_LEFT' as DefectType: return GuidanceCommand.MOVE_RIGHT;\n case 'TX_TOO_RIGHT' as DefectType: return GuidanceCommand.MOVE_LEFT;\n case 'TY_TOO_TOP' as DefectType: return GuidanceCommand.MOVE_DOWN;\n case 'TY_TOO_BOTTOM' as DefectType: return GuidanceCommand.MOVE_UP;\n case 'TZ_TOO_FAR' as DefectType: return GuidanceCommand.MOVE_CLOSER;\n case 'TZ_TOO_NEAR' as DefectType: return GuidanceCommand.MOVE_FARTHER;\n case 'PUPIL_TOO_SMALL' as DefectType: return GuidanceCommand.MOVE_CLOSER;\n case 'PUPIL_TOO_BIG' as DefectType: return GuidanceCommand.MOVE_FARTHER;\n case 'EYE_ASPECT_RATIO_TOO_SMALL' as DefectType: return GuidanceCommand.EYE_ASPECT_RATIO_TOO_SMALL;\n }\n }\n }\n return GuidanceCommand.STAY_STILL;\n }\n\n public stopPhotoQualityCheck(){\n clearInterval(this.timerId);\n this.computePhotoQuality = false;\n this.timerId = undefined;\n }\n\n public startPhotoQualityCheck(periodMS = 1000){\n if(this.timerId == undefined){\n this.guidanceLightConditions = GuidanceCommand.STAY_STILL; \n this.timerId = setInterval(() => { this.computePhotoQuality = true; }, periodMS);\n }\n }\n\n public static recreateFaceWeb(options: {verticalFovDeg?: number, environment: FaceWebEnvironment}): Promise {\n if (PoseTracker.faceWeb !== undefined) {\n PoseTracker.faceWeb.close();\n PoseTracker.faceWeb = undefined;\n }\n\n return PoseTracker.warmUp({\n verticalFovDeg: options.verticalFovDeg ?? 52,\n environment: options.environment,\n })\n .then(() => {\n return PoseTracker.faceWebInitializationPromise;\n });\n }\n\n public getPose(imageData: InputMap): Promise {\n\n // computing guidance command\n let guidance = GuidanceCommand.UNKNOWN;\n let guidanceFaceWeb = GuidanceCommand.UNKNOWN;\n let guidanceCapture = GuidanceCommand.UNKNOWN;\n\n if (PoseTracker.faceWeb.m_initializedFaceMesh === false) {\n \n const results = {\n hasFace: false,\n multiFaceLandmarks: undefined,\n multiFaceGeometry: undefined,\n image: undefined\n };\n \n return Promise.resolve({\n result: results,\n pose: undefined,\n renderDelay: false,\n guidanceCommand: guidance,\n wasmStatus: results.hasFace ? TrackResult.OK : TrackResult.NoFaceFound,\n wearsGlasses: false,\n guidanceInspection: {\n guidanceFaceWeb: GuidanceCommand[guidanceFaceWeb],\n guidanceCapture: GuidanceCommand[guidanceCapture],\n guidanceQuality: GuidanceCommand[this.guidanceLightConditions]\n }\n });\n }\n\n return PoseTracker.faceWeb.sendAndReturnResults(imageData, this.computePhotoQuality).then((results: FaceWebResult) => {\n // TODO the has face should be returned\n const pose = results.hasFace ? new Float32Array(results.vtoPoseArray) : undefined;\n \n if(results.metrics && results.metrics.rulerStatus == 'COMPLETED' as RulerStatus){\n for(const f of this.metricsSubscribers)\n f(results.metrics);\n }\n\n if(results.hasFace){\n guidance = GuidanceCommand.STAY_STILL;\n guidanceFaceWeb = this.mapFaceWebDefects(results.outlier?.defects);\n guidanceCapture = this.checkPoseDefects(pose);\n if(results.qualityScore && this.options)\n this.guidanceLightConditions = this.checkDefectsPQ(results.qualityScore);\n\n if(guidanceCapture != GuidanceCommand.STAY_STILL)\n guidance = guidanceCapture;\n \n if(guidanceFaceWeb != GuidanceCommand.STAY_STILL)\n guidance = guidanceFaceWeb;\n \n if(this.guidanceLightConditions != GuidanceCommand.STAY_STILL && this.options?.accountForLightingConditions)\n guidance = this.guidanceLightConditions;\n }\n this.computePhotoQuality = false;\n return {\n result: results,\n pose: pose,\n renderDelay: false,\n guidanceCommand: guidance,\n wasmStatus: results.hasFace ? TrackResult.OK : TrackResult.NoFaceFound,\n wearsGlasses: false,\n guidanceInspection: {\n guidanceFaceWeb: GuidanceCommand[guidanceFaceWeb],\n guidanceCapture: GuidanceCommand[guidanceCapture],\n guidanceQuality: GuidanceCommand[this.guidanceLightConditions],\n }\n };\n });\n }\n\n checkDefectsPQ(qualityScore: QualityScore): GuidanceCommand{\n\n if(qualityScore.global_status == 'OK')\n return GuidanceCommand.STAY_STILL;\n\n if(qualityScore.brightness_status == 'LOW')\n return GuidanceCommand.LOW_LIGHT_CONDITIONS;\n\n if(qualityScore.brighter_side_status == 'LEFT')\n return GuidanceCommand.TOO_BRIGHT_RIGHT;\n\n if(qualityScore.brighter_side_status == 'RIGHT')\n return GuidanceCommand.TOO_BRIGHT_LEFT;\n \n if(qualityScore.brightness_status == 'HIGH')\n return GuidanceCommand.BRIGHT_LIGHT_CONDITIONS;\n }\n \n}\n\nexport {\n GuidanceCommand,\n PoseResponse,\n FormattedPose,\n TrackingOptions,\n PoseTracker,\n TrackResult,\n IFaceMetrics,\n FaceWebEnvironment,\n IRoi as IArea,\n};\nexport type { InputMap };\n"],"names":["access_token","refresh_token","logger","RemoteLogConfig","getLoggerInfo","name","version","getAuthData","accessToken","refreshToken","setAuthData","authData","debug","PhotoQualityCheck","LIGHT_CONDITIONS","warmUp","environment","then","PoseTracker","FrameAdvisorCapture","initialize","initParams","resetBipaState","document","cookie","BipaManager","resetAuthToken","undefined","capture","captureParams","close","closeCapture","vtoCapture","vtoCaptureParams","closeVtoCapture","uploadImage","uploadParams","uploadImageData","closeUploadImage","BipaError","type","message","error","_this","stack","Object","setPrototypeOf","prototype","Error","MissingTranslationError","locale","_this2","BipaServiceError","_this4","BipaSubmissionError","fieldErrors","_this5","currentLocalizationText","PrivacyLocalizationKey","DefaultPrivacyLocalization","PRIVACY_AGREEMENT_TITLE","PRIVACY_FIRST_AGREEMENT","PRIVACY_IMPLICIT_AGREEMENT","PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS","PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION","PRIVACY_IMPLICIT_PRIVACY_POLICY","PRIVACY_BUTTON_SUBMIT","PRIVACY_BUTTON_CANCEL","BIPA_FORM_TITLE","BIPA_CITIZEN_DECLARATION","BIPA_FORM_SUBTITLE","BIPA_FORM_NAME","BIPA_FORM_SURNAME","BIPA_FORM_EMAIL","BIPA_IMPLICIT_AGREEMENT","BIPA_IMPLICIT_TERMS_AND_CONDITIONS","BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION","BIPA_IMPLICIT_PRIVACY_POLICY","BIPA_FORM_IMPLICIT_AGREEMENT","BIPA_FORM_BUTTON_SUBMIT","BIPA_FORM_BUTTON_CANCEL","BIPA_SERVER_ERROR","LocalizationHelper","localizationText","key","NOT_BLANK","SIZE","EMAIL_REGEX","createFieldError","field","objectName","ParameterHelper","bipaForm","firstName","trim","length","push","lastName","email","match","ErrorIcon","React","className","width","height","viewBox","fill","cx","cy","r","stroke","strokeWidth","d","x","y","rx","BipaBiometricForm","props","useState","formPrefill","_props$formPrefill","setFirstName","firstNameError","setFirstNameError","_props$formPrefill2","setLastName","lastNameError","setLastNameError","_props$formPrefill3","setEmail","emailError","setEmailError","serverError","setServerError","topInputRef","useRef","useEffect","callbacks","onDisplayPage","handleInputChange","element","dispatch","target","value","confirmButtonDisabled","showFieldWarning","id","BIPA_FORM_ERROR","ref","autoComplete","onChange","placeholder","BIPA_FORM_ERROR_MAIL","BIPA_FORM_MANDATORY_FIELD","onClick","onCancel","formData","map","includes","current","scrollIntoView","submitBipaFormRequest","source","bipaVersion","onAuthUpdated","response","ok","onBipaSubmit","status","json","errorFields","console","info","onError","statusText","e","disabled","YesNoCheckBox","checked","BIPA_NO","tabIndex","event","BIPA_YES","PrivacyAgreement","showGradient","setShowGradient","getElementsByClassName","clientHeight","onScroll","currentTarget","scrollTop","dangerouslySetInnerHTML","__html","region","htmlFor","BIPA_CITIZEN_QUESTION","isIllinoisUser","onSetIllinoisUser","PRIVACY_AGREEMENT_TEXT","BIPA_FORM_BIPA_AGREEMENT","rel","href","privacyOptions","termsAndConditions","onTermsAndConditionsClick","preventDefault","onSubmit","CookieHelper","setBiometricCookie","agreementType","biometricCookieExists","getBiometricCookieName","localizationBaseUrl","fetchBipaJson","localizationFileUrl","bipaJsonEnv","fetch","BipaOverlay","isFirstRender","illinoisUser","setIlliniosUser","currentPage","setCurrentPage","setBipaVersion","onClickSubmit","onClickBipaSubmit","onClickCancel","onUserReject","loginRequest","tokenVersion","loginReturn","Promise","all","bipaAgreementRequest","resolve","bipaAgreementText","_response$","text","bipaAgreementVersion","_response$2","privacy","renderPage","getCookieName","getBipaVersion","config","saveBipaEntry","reject","body","responseData","_responseData$body","title","_responseData$body2","GuidanceCommand","TrackResult","CallbackHelper","onSegmenterInitializeStart","onSegmenterInitializeEnd","processingVerticalFoVDeg","filter","onWasmLoaded","onFail","options","_classCallCheck","ready","metricsSubscribers","Array","formatPose","pose","position","toFixed","z","rotation","p","debugGetConfig","faceWeb","this","verticalFovDeg","faceWebInitializationPromise","roi","applyRoi","setFilters","_createClass","minTrackingConfidence","minDetectionConfidence","fps","rotationFilter","translationFilter","reset","set","enableProminentSubjectSegmenter","warn","smoothing","usePoseSmoothing","useLandmarksSmoothing","configuration","startRuler","rotationBound","lBound","hBound","lCommand","LOOK_DOWN","hCommand","LOOK_UP","LOOK_RIGHT","LOOK_LEFT","TILT_LEFT","TILT_RIGHT","MOVE_LEFT","MOVE_RIGHT","MOVE_UP","MOVE_DOWN","standstill","_this$options$standst","depthRange","min","_this$options$standst2","max","MOVE_FARTHER","MOVE_CLOSER","_i","g","STAY_STILL","defects","_step","presence","EYE_ASPECT_RATIO_TOO_SMALL","_iterator","clearInterval","timerId","computePhotoQuality","periodMS","guidanceLightConditions","setInterval","_this3","imageData","guidance","UNKNOWN","guidanceFaceWeb","guidanceCapture","m_initializedFaceMesh","results","hasFace","multiFaceLandmarks","multiFaceGeometry","image","result","renderDelay","guidanceCommand","wasmStatus","OK","NoFaceFound","wearsGlasses","guidanceInspection","guidanceQuality","sendAndReturnResults","Float32Array","vtoPoseArray","metrics","rulerStatus","_step2","f","_iterator2","mapFaceWebDefects","outlier","_results$outlier","checkPoseDefects","qualityScore","checkDefectsPQ","_this4$options","accountForLightingConditions","global_status","brightness_status","LOW_LIGHT_CONDITIONS","brighter_side_status","TOO_BRIGHT_RIGHT","TOO_BRIGHT_LEFT","BRIGHT_LIGHT_CONDITIONS","FaceWeb","_options$verticalFovD","velocityFilter","windowSize","velocityScale","_options$verticalFovD2"],"sourceRoot":""}