{"version":3,"file":"612.chunk.js","mappings":"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","sources":["../node_modules/@luxottica/bipa-manager/src/errors/errors.ts","../node_modules/@luxottica/bipa-manager/src/constants/DefaultPrivacyLocalization.ts","../node_modules/@luxottica/bipa-manager/src/helpers/LocalizationHelper.ts","../node_modules/@luxottica/bipa-manager/src/interfaces/PrivacyLocalization.ts","../node_modules/@luxottica/bipa-manager/src/helpers/ParameterHelper.ts","../node_modules/@luxottica/bipa-manager/src/components/ErrorIcon.tsx","../node_modules/@luxottica/bipa-manager/src/components/BipaBiometricForm.tsx","../node_modules/@luxottica/bipa-manager/src/components/YesNoCheckbox.tsx","../node_modules/@luxottica/bipa-manager/src/components/PrivacyAgreement.tsx","../node_modules/@luxottica/bipa-manager/src/helpers/CookieHelper.ts","../node_modules/@luxottica/bipa-manager/src/helpers/RequestHelper.ts","../node_modules/@luxottica/bipa-manager/src/BipaOverlay.tsx","../node_modules/@luxottica/bipa-manager/src/constants/Styling.ts","../node_modules/@luxottica/bipa-manager/src/BipaManager.ts","../node_modules/@luxottica/vto-microservices/src/config/Config.ts","../node_modules/@luxottica/vto-microservices/src/error/errors.ts","../node_modules/@luxottica/vto-microservices/src/helpers/RequestHelper.ts","../node_modules/@luxottica/vto-microservices/src/request/RefreshRequest.ts","../node_modules/@luxottica/vto-microservices/src/request/BipaRequest.ts","../node_modules/@luxottica/vto-microservices/src/request/LoginRequest.ts","../node_modules/current-device/es/index.js"],"sourcesContent":["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","import { MicroserviceEnvironment } from '../constants/MicroserviceEnvironment';\nimport { ApiConfig } from '../interfaces/ApiConfig';\n\nconst envHost: Record = {\n STAGING: 'https://test-gateway-vtoprofile.luxdeepblue.com',\n ACCEPTANCE: 'https://acceptance-gateway-vtoprofile.luxdeepblue.com',\n PRODUCTION: 'https://gateway-vtoprofile.luxdeepblue.com'\n};\n\nconst envMap: Record = {\n STAGING: {\n loginFaUrl: `${envHost.STAGING}/auth/fradv/token`,\n loginVmUrl: `${envHost.STAGING}/auth/vm/token`,\n refreshUrl: `${envHost.STAGING}/auth/refresh`,\n bipaTextUrl: `${envHost.STAGING}/services/vtobipams/public/v2/bipa/version`,\n bipaSubmitFormUrl: `${envHost.STAGING}/services/vtobipams/public/v1/bipa-consent`,\n videoSessionUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v3/video`,\n enrichUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v1/ml-enrich`,\n vtoUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v1/basel-mesh`,\n additionalInfoUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v1/additional-info`,\n poseExtractionUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v1/poses-extraction`,\n statusUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v2/status`,\n pdStatusUrl: `${envHost.STAGING}/services/vtomedicalinfoms/public/v1/pupillary-distance/status`,\n profileUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v3/get-video-profile`,\n },\n ACCEPTANCE: {\n loginFaUrl: `${envHost.ACCEPTANCE}/auth/fradv/token`,\n loginVmUrl: `${envHost.ACCEPTANCE}/auth/vm/token`,\n refreshUrl: `${envHost.ACCEPTANCE}/auth/refresh`,\n bipaTextUrl: `${envHost.ACCEPTANCE}/services/vtobipams/public/v2/bipa/version`,\n bipaSubmitFormUrl: `${envHost.ACCEPTANCE}/services/vtobipams/public/v1/bipa-consent`,\n videoSessionUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v3/video`,\n enrichUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v1/ml-enrich`,\n vtoUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v1/basel-mesh`,\n additionalInfoUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v1/additional-info`,\n poseExtractionUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v1/poses-extraction`,\n statusUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v2/status`,\n pdStatusUrl: `${envHost.ACCEPTANCE}/services/vtomedicalinfoms/public/v1/pupillary-distance/status`,\n profileUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v3/get-video-profile`,\n },\n PRODUCTION: {\n loginFaUrl: `${envHost.PRODUCTION}/auth/fradv/token`,\n loginVmUrl: `${envHost.PRODUCTION}/auth/vm/token`,\n refreshUrl: `${envHost.PRODUCTION}/auth/refresh`,\n bipaTextUrl: `${envHost.PRODUCTION}/services/vtobipams/public/v2/bipa/version`,\n bipaSubmitFormUrl: `${envHost.PRODUCTION}/services/vtobipams/public/v1/bipa-consent`,\n videoSessionUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v3/video`,\n enrichUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v1/ml-enrich`,\n vtoUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v1/basel-mesh`,\n additionalInfoUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v1/additional-info`,\n poseExtractionUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v1/poses-extraction`,\n statusUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v2/status`,\n pdStatusUrl: `${envHost.PRODUCTION}/services/vtomedicalinfoms/public/v1/pupillary-distance/status`,\n profileUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v3/get-video-profile`,\n }\n};\n\nconst getConfig = (env: MicroserviceEnvironment, param: keyof ApiConfig): string => {\n return envMap[env][param];\n};\n\nexport {\n getConfig\n};\n","class MicroserviceError 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, MicroserviceError.prototype);\n }\n}\n\nclass EnvironmentError extends MicroserviceError {\n public static type = 'EnvironmentError';\n\n constructor(readonly env: string) {\n super(EnvironmentError.type, `microservice environment ${env} is not valid`);\n Object.setPrototypeOf(this, EnvironmentError.prototype);\n }\n}\n\nclass InvalidInputError extends MicroserviceError {\n public static type = 'InputError';\n\n constructor(message: string, error?: Error) {\n super(InvalidInputError.type, message, error);\n Object.setPrototypeOf(this, InvalidInputError.prototype);\n }\n}\n\nclass LocaleError extends MicroserviceError {\n public static type = 'LocaleError';\n\n constructor(readonly locale: string) {\n super(LocaleError.type, `bipa agreement text cannot be found for locale ${locale}`);\n Object.setPrototypeOf(this, LocaleError.prototype);\n }\n}\n\nclass RequestError extends MicroserviceError {\n public static type = 'RequestError';\n\n constructor(message: string, error?: Error) {\n super(RequestError.type, message, error);\n Object.setPrototypeOf(this, RequestError.prototype);\n }\n}\n\nclass TimeoutError extends MicroserviceError {\n public static type = 'TimeoutError';\n\n constructor(duration: number) {\n super(TimeoutError.type, `request has timed out after ${duration}ms`);\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n\nexport {\n InvalidInputError,\n EnvironmentError,\n LocaleError,\n RequestError,\n TimeoutError\n};\n","import { RemoteLogConfig } from '@luxottica/vm-remotelog';\nimport { name, version } from '../../package.json';\nimport { getConfig } from '../config/Config';\nimport { TimeoutError } from '../error/errors';\nimport { VtoRequest } from '../interfaces/Request';\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, 'RequestHelper');\n\nfunction delay(ms: number) {\n return new Promise(\n resolve => setTimeout(resolve, ms)\n );\n}\n\nconst pollPromise = (\n interval: number,\n timeout: number,\n promise: () => Promise,\n shouldCancel: () => boolean\n): Promise => {\n let completed = false;\n const startTime = Date.now();\n return new Promise(async (resolve, reject) => {\n\n while (true) {\n if (completed) { return; }\n if (shouldCancel()) { return; }\n if (Date.now() - startTime > timeout) { reject(new TimeoutError(timeout)); return; }\n\n await promise().then((result) => {\n completed = true;\n resolve(result);\n }).catch(() => {\n logger.debug('continue poll');\n });\n\n await delay(interval);\n }\n });\n};\n\nconst pollProcessingStatus = (\n request: VtoRequest,\n url: string,\n entryTypes: string[]\n): Promise => {\n \n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${request.accessToken}`,\n 'accept': '*/*',\n },\n }).then(response => {\n if (response.ok) {\n return response.json();\n } else {\n throw new Error('FAILED POLL');\n }\n }).then((json: PollingResponse) => {\n logger.debug(json);\n const pollingEntry = json.filter((entry) => { return entryTypes.includes(entry.type); });\n if (pollingEntry.length > 0) {\n const complete = pollingEntry.every(entry => ['OK', 'KO'].includes(entry.progress));\n const success = pollingEntry.every(entry => entry.progress === 'OK');\n if (complete) {\n return success;\n } else {\n throw new Error('processing incomplete');\n }\n } else {\n throw new Error('processing incomplete');\n }\n }).catch(err => {\n logger.debug(err);\n throw(err);\n });\n};\n\nconst parseJsonResponse = (\n response: Response\n): Promise => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n};\n\nexport {\n pollPromise,\n pollProcessingStatus,\n parseJsonResponse\n};\n","import { getConfig } from '../config/Config';\nimport { RefreshResponse, RefreshReturn } from '../interfaces/Refresh';\nimport { VtoRequest } from '../interfaces/Request';\n\nconst refreshRequest = (\n request: VtoRequest\n): Promise => {\n\n const url = getConfig(request.environment, 'refreshUrl');\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n refresh_token: request.refreshToken\n })\n\n }).then(response => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n\n }).then((json: RefreshResponse) => {\n // logger.debug(json);\n const refreshReturn = {\n accessToken: json.access_token,\n refreshToken: json.refresh_token\n };\n if (!!request.onAuthUpdated) { request.onAuthUpdated(refreshReturn); }\n return refreshReturn;\n\n }).catch(err => {\n // logger.error(err);\n throw(err);\n\n });\n};\n\nexport {\n refreshRequest\n};\n","import { getConfig } from '../config/Config';\nimport { LocaleError } from '../error/errors';\nimport { parseJsonResponse } from '../helpers/RequestHelper';\nimport { BipaAgreementRequestData, BipaAgreementResponse, BipaAgreementReturn, BipaTextResponse, SubmitBipaFormRequestData } from '../interfaces/Bipa';\nimport { refreshRequest } from './RefreshRequest';\n\nconst bipaAgreementFetch = (\n request: BipaAgreementRequestData\n): Promise => {\n const bipaAgreementUrl = getConfig(request.environment, 'bipaTextUrl');\n\n return fetch(bipaAgreementUrl, {\n method: 'GET',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`,\n },\n });\n};\n\nconst bipaAgreementRequest = (\n request: BipaAgreementRequestData\n): Promise => {\n\n let bipaVersion: number;\n let bipaDescription: string;\n\n return bipaAgreementFetch(request).then((bipaAgreementResponse) => {\n if (bipaAgreementResponse.status === 401) {\n return refreshRequest(request).then((refreshResponse) => {\n return bipaAgreementFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return bipaAgreementResponse;\n }\n\n }).then((response) => {\n return parseJsonResponse(response);\n\n }).then((json: BipaTextResponse) => {\n bipaVersion = json.version;\n bipaDescription = json.description;\n\n const bipaUrls = JSON.parse(json.jsonUrl);\n if (!!bipaUrls[request.locale]) {\n return fetch(bipaUrls[request.locale]);\n } else {\n throw new LocaleError(request.locale);\n }\n\n }).then((response) => {\n return parseJsonResponse(response);\n\n }).then((bipaAgreementResponse: BipaAgreementResponse) => {\n return {\n version: bipaVersion,\n description: bipaDescription,\n text: bipaAgreementResponse.BIPA_AGREEMENT,\n };\n });\n};\n\nconst submitBipaFormFetch = (\n request: SubmitBipaFormRequestData\n): Promise => {\n const bipaSubmitUrl = getConfig(request.environment, 'bipaSubmitFormUrl');\n\n return fetch(bipaSubmitUrl, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`,\n },\n body: `{ \"bipaVersion\": ${request.bipaVersion}, \"channel\": \"${request.source}\", \"firstName\": \"${request.firstName}\", \"lastName\": \"${request.lastName}\", \"email\": \"${request.email}\" }`\n });\n};\n\nconst submitBipaFormRequest = (\n request: SubmitBipaFormRequestData\n): Promise => {\n\n return submitBipaFormFetch(request).then((submitBipaResponse) => {\n if (submitBipaResponse.status === 401) {\n return refreshRequest(request).then((refreshResponse) => {\n return submitBipaFormFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return submitBipaResponse;\n }\n });\n};\n\nexport {\n bipaAgreementRequest,\n submitBipaFormRequest\n};\n","import { getConfig } from '../config/Config';\nimport { LoginRequestData, LoginResponse, LoginReturn } from '../interfaces/Login';\n\nconst loginRequest = (\n request: LoginRequestData\n): Promise => {\n\n if (!!request.accessToken && !!request.refreshToken) {\n return Promise.resolve({\n accessToken: request.accessToken,\n refreshToken: request.refreshToken\n });\n\n } else {\n const loginType = (request.version === 1) ? 'loginVmUrl' : 'loginFaUrl';\n const url = getConfig(request.environment, loginType);\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ rememberMe: true })\n }).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n }).then((json: LoginResponse) => {\n const authData = {\n accessToken: json.access_token,\n refreshToken: json.refresh_token\n };\n request.onAuthUpdated?.(authData);\n return authData;\n });\n }\n};\n\nexport {\n loginRequest\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n// Save the previous value of the device variable.\nvar previousDevice = window.device;\n\nvar device = {};\n\nvar changeOrientationList = [];\n\n// Add device as a global object.\nwindow.device = device;\n\n// The element.\nvar documentElement = window.document.documentElement;\n\n// The client user agent string.\n// Lowercase, so we can use the more efficient indexOf(), instead of Regex\nvar userAgent = window.navigator.userAgent.toLowerCase();\n\n// Detectable television devices.\nvar television = ['googletv', 'viera', 'smarttv', 'internet.tv', 'netcast', 'nettv', 'appletv', 'boxee', 'kylo', 'roku', 'dlnadoc', 'pov_tv', 'hbbtv', 'ce-html'];\n\n// Main functions\n// --------------\n\ndevice.macos = function () {\n return find('mac');\n};\n\ndevice.ios = function () {\n return device.iphone() || device.ipod() || device.ipad();\n};\n\ndevice.iphone = function () {\n return !device.windows() && find('iphone');\n};\n\ndevice.ipod = function () {\n return find('ipod');\n};\n\ndevice.ipad = function () {\n var iPadOS13Up = navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n return find('ipad') || iPadOS13Up;\n};\n\ndevice.android = function () {\n return !device.windows() && find('android');\n};\n\ndevice.androidPhone = function () {\n return device.android() && find('mobile');\n};\n\ndevice.androidTablet = function () {\n return device.android() && !find('mobile');\n};\n\ndevice.blackberry = function () {\n return find('blackberry') || find('bb10');\n};\n\ndevice.blackberryPhone = function () {\n return device.blackberry() && !find('tablet');\n};\n\ndevice.blackberryTablet = function () {\n return device.blackberry() && find('tablet');\n};\n\ndevice.windows = function () {\n return find('windows');\n};\n\ndevice.windowsPhone = function () {\n return device.windows() && find('phone');\n};\n\ndevice.windowsTablet = function () {\n return device.windows() && find('touch') && !device.windowsPhone();\n};\n\ndevice.fxos = function () {\n return (find('(mobile') || find('(tablet')) && find(' rv:');\n};\n\ndevice.fxosPhone = function () {\n return device.fxos() && find('mobile');\n};\n\ndevice.fxosTablet = function () {\n return device.fxos() && find('tablet');\n};\n\ndevice.meego = function () {\n return find('meego');\n};\n\ndevice.cordova = function () {\n return window.cordova && location.protocol === 'file:';\n};\n\ndevice.nodeWebkit = function () {\n return _typeof(window.process) === 'object';\n};\n\ndevice.mobile = function () {\n return device.androidPhone() || device.iphone() || device.ipod() || device.windowsPhone() || device.blackberryPhone() || device.fxosPhone() || device.meego();\n};\n\ndevice.tablet = function () {\n return device.ipad() || device.androidTablet() || device.blackberryTablet() || device.windowsTablet() || device.fxosTablet();\n};\n\ndevice.desktop = function () {\n return !device.tablet() && !device.mobile();\n};\n\ndevice.television = function () {\n var i = 0;\n while (i < television.length) {\n if (find(television[i])) {\n return true;\n }\n i++;\n }\n return false;\n};\n\ndevice.portrait = function () {\n if (screen.orientation && Object.prototype.hasOwnProperty.call(window, 'onorientationchange')) {\n return includes(screen.orientation.type, 'portrait');\n }\n if (device.ios() && Object.prototype.hasOwnProperty.call(window, 'orientation')) {\n return Math.abs(window.orientation) !== 90;\n }\n return window.innerHeight / window.innerWidth > 1;\n};\n\ndevice.landscape = function () {\n if (screen.orientation && Object.prototype.hasOwnProperty.call(window, 'onorientationchange')) {\n return includes(screen.orientation.type, 'landscape');\n }\n if (device.ios() && Object.prototype.hasOwnProperty.call(window, 'orientation')) {\n return Math.abs(window.orientation) === 90;\n }\n return window.innerHeight / window.innerWidth < 1;\n};\n\n// Public Utility Functions\n// ------------------------\n\n// Run device.js in noConflict mode,\n// returning the device variable to its previous owner.\ndevice.noConflict = function () {\n window.device = previousDevice;\n return this;\n};\n\n// Private Utility Functions\n// -------------------------\n\n// Check if element exists\nfunction includes(haystack, needle) {\n return haystack.indexOf(needle) !== -1;\n}\n\n// Simple UA string search\nfunction find(needle) {\n return includes(userAgent, needle);\n}\n\n// Check if documentElement already has a given class.\nfunction hasClass(className) {\n return documentElement.className.match(new RegExp(className, 'i'));\n}\n\n// Add one or more CSS classes to the element.\nfunction addClass(className) {\n var currentClassNames = null;\n if (!hasClass(className)) {\n currentClassNames = documentElement.className.replace(/^\\s+|\\s+$/g, '');\n documentElement.className = currentClassNames + ' ' + className;\n }\n}\n\n// Remove single CSS class from the element.\nfunction removeClass(className) {\n if (hasClass(className)) {\n documentElement.className = documentElement.className.replace(' ' + className, '');\n }\n}\n\n// HTML Element Handling\n// ---------------------\n\n// Insert the appropriate CSS class based on the _user_agent.\n\nif (device.ios()) {\n if (device.ipad()) {\n addClass('ios ipad tablet');\n } else if (device.iphone()) {\n addClass('ios iphone mobile');\n } else if (device.ipod()) {\n addClass('ios ipod mobile');\n }\n} else if (device.macos()) {\n addClass('macos desktop');\n} else if (device.android()) {\n if (device.androidTablet()) {\n addClass('android tablet');\n } else {\n addClass('android mobile');\n }\n} else if (device.blackberry()) {\n if (device.blackberryTablet()) {\n addClass('blackberry tablet');\n } else {\n addClass('blackberry mobile');\n }\n} else if (device.windows()) {\n if (device.windowsTablet()) {\n addClass('windows tablet');\n } else if (device.windowsPhone()) {\n addClass('windows mobile');\n } else {\n addClass('windows desktop');\n }\n} else if (device.fxos()) {\n if (device.fxosTablet()) {\n addClass('fxos tablet');\n } else {\n addClass('fxos mobile');\n }\n} else if (device.meego()) {\n addClass('meego mobile');\n} else if (device.nodeWebkit()) {\n addClass('node-webkit');\n} else if (device.television()) {\n addClass('television');\n} else if (device.desktop()) {\n addClass('desktop');\n}\n\nif (device.cordova()) {\n addClass('cordova');\n}\n\n// Orientation Handling\n// --------------------\n\n// Handle device orientation changes.\nfunction handleOrientation() {\n if (device.landscape()) {\n removeClass('portrait');\n addClass('landscape');\n walkOnChangeOrientationList('landscape');\n } else {\n removeClass('landscape');\n addClass('portrait');\n walkOnChangeOrientationList('portrait');\n }\n setOrientationCache();\n}\n\nfunction walkOnChangeOrientationList(newOrientation) {\n for (var index = 0; index < changeOrientationList.length; index++) {\n changeOrientationList[index](newOrientation);\n }\n}\n\ndevice.onChangeOrientation = function (cb) {\n if (typeof cb == 'function') {\n changeOrientationList.push(cb);\n }\n};\n\n// Detect whether device supports orientationchange event,\n// otherwise fall back to the resize event.\nvar orientationEvent = 'resize';\nif (Object.prototype.hasOwnProperty.call(window, 'onorientationchange')) {\n orientationEvent = 'orientationchange';\n}\n\n// Listen for changes in orientation.\nif (window.addEventListener) {\n window.addEventListener(orientationEvent, handleOrientation, false);\n} else if (window.attachEvent) {\n window.attachEvent(orientationEvent, handleOrientation);\n} else {\n window[orientationEvent] = handleOrientation;\n}\n\nhandleOrientation();\n\n// Public functions to get the current value of type, os, or orientation\n// ---------------------------------------------------------------------\n\nfunction findMatch(arr) {\n for (var i = 0; i < arr.length; i++) {\n if (device[arr[i]]()) {\n return arr[i];\n }\n }\n return 'unknown';\n}\n\ndevice.type = findMatch(['mobile', 'tablet', 'desktop']);\ndevice.os = findMatch(['ios', 'iphone', 'ipad', 'ipod', 'android', 'blackberry', 'macos', 'windows', 'fxos', 'meego', 'television']);\n\nfunction setOrientationCache() {\n device.orientation = findMatch(['portrait', 'landscape']);\n}\n\nsetOrientationCache();\n\nexport default device;"],"names":["BipaError","type","message","error","_this","name","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","undefined","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","environment","accessToken","refreshToken","bipaVersion","onAuthUpdated","then","response","ok","onBipaSubmit","status","json","errorFields","console","info","onError","statusText","e","disabled","YesNoCheckBox","checked","BIPA_NO","tabIndex","event","BIPA_YES","PrivacyAgreement","showGradient","setShowGradient","document","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","cookie","getBiometricCookieName","localizationBaseUrl","fetchBipaJson","localizationFileUrl","bipaJsonEnv","fetch","BipaOverlay","isFirstRender","illinoisUser","setIlliniosUser","currentPage","setCurrentPage","setBipaVersion","onClickSubmit","onClickBipaSubmit","onClickCancel","onUserReject","loginRequest","version","tokenVersion","loginReturn","Promise","all","bipaAgreementRequest","resolve","bipaAgreementText","_response$","text","bipaAgreementVersion","_response$2","privacy","renderPage","BipaManager","getCookieName","getBipaVersion","config","saveBipaEntry","reject","body","responseData","_responseData$body","title","_responseData$body2","envHost","envMap","STAGING","loginFaUrl","loginVmUrl","refreshUrl","bipaTextUrl","bipaSubmitFormUrl","videoSessionUrl","enrichUrl","vtoUrl","additionalInfoUrl","poseExtractionUrl","statusUrl","pdStatusUrl","profileUrl","ACCEPTANCE","PRODUCTION","getConfig","env","param","MicroserviceError","constructor","EnvironmentError","InvalidInputError","LocaleError","RequestError","TimeoutError","duration","RemoteLogConfig","getLoggerInfo","parseJsonResponse","catch","JSON","stringify","refreshRequest","request","url","method","headers","refresh_token","refreshReturn","access_token","err","bipaAgreementFetch","bipaAgreementUrl","Authorization","bipaDescription","bipaAgreementResponse","refreshResponse","description","bipaUrls","parse","jsonUrl","BIPA_AGREEMENT","submitBipaFormFetch","bipaSubmitUrl","submitBipaResponse","loginType","rememberMe","authData","_typeof","Symbol","iterator","obj","previousDevice","window","device","changeOrientationList","documentElement","userAgent","navigator","toLowerCase","television","haystack","needle","indexOf","find","hasClass","RegExp","addClass","currentClassNames","replace","removeClass","handleOrientation","landscape","walkOnChangeOrientationList","setOrientationCache","newOrientation","index","macos","ios","iphone","ipod","ipad","windows","iPadOS13Up","platform","maxTouchPoints","android","androidPhone","androidTablet","blackberry","blackberryPhone","blackberryTablet","windowsPhone","windowsTablet","fxos","fxosPhone","fxosTablet","meego","cordova","location","protocol","nodeWebkit","process","mobile","tablet","desktop","i","portrait","screen","orientation","hasOwnProperty","call","Math","abs","innerHeight","innerWidth","noConflict","this","onChangeOrientation","cb","orientationEvent","findMatch","arr","addEventListener","attachEvent","os"],"sourceRoot":""}