{"version":3,"sources":["utils/storage.ts","utils/constants.ts","utils/globalStyles.ts","utils/helpers.ts","utils/routes.ts","utils/security.ts","contexts/theme/themeReducer.ts","contexts/theme/themeContext.tsx","components/common/CustomCard.tsx","components/common/CustomCheckbox.tsx","components/common/CustomFormItem.tsx","components/common/CustomRadio.tsx","components/common/CustomSelect.tsx","components/common/CustomSpinner.tsx","components/common/CustomTable.tsx","components/common/Description.tsx","components/common/Header.tsx","components/common/SecondaryButton.tsx","components/common/PrimaryButton.tsx","components/common/CustomModal.tsx","components/common/LinkButton.tsx","components/common/AsteriskSign.tsx","components/common/CustomInput.tsx","components/common/CustomMaskedInput.tsx","components/common/CustomSwitch.tsx","components/common/AppVersion.tsx","components/common/CenteredCol.tsx","contexts/registration/registrationContext.tsx","components/common/YourDataTable.tsx","components/common/ScreeningsDetailsTable.tsx","components/common/CustomFuncModal.tsx","components/common/upload/ReferralUpload.tsx","utils/interceptors.ts","utils/invitation.ts","utils/validators.ts","components/features/accessibility/AccessibilityButton.tsx","components/features/accessibility/LanguageSelector.tsx","components/features/accessibility/MobileAccessbilityContainer.tsx","components/features/accessibility/AccessibilityButtons.tsx","components/features/accessibility/AccessibilityContainer.tsx","contexts/appVersion/AppVersionContext.tsx","assets/images/logo_portal_rejestracji.svg","components/layouts/MainLayout.tsx","components/features/counter/StudyDateCounter.tsx","api.ts","dal/territory.ts","dal/screening.ts","dal/phoneContact.ts","dal/referral.ts","dal/security.ts","dal/campaign.ts","dal/queue.ts","dal/funding.ts","dal/invitation.ts","components/views/ConfirmStudyDateView.tsx","hooks/useNonInitialEffect.tsx","hooks/useInvitationLink.ts","hooks/useSuccessInvitation.ts","hooks/useInvitation.ts","hooks/useTerritory.tsx","components/features/personalData/AddLocationForm.tsx","components/common/UnderlineLink.tsx","components/features/personalData/PersonalDataForm.tsx","components/views/FormView.tsx","components/features/homepage/HomePageCard.tsx","assets/images/breasts.png","assets/images/post.png","components/views/HomepageView.tsx","components/views/QuestionarieView.tsx","components/views/QueueView.tsx","components/features/studyView/PatientInformation.tsx","typings/enums.ts","components/common/CustomResult.tsx","components/features/studyView/ReferralStatusView.tsx","components/common/ScreeningDatesGroup.tsx","components/views/StudyDateView.tsx","utils/notifications.ts","components/views/PhoneContactView.tsx","components/views/SuccessfulRegistrationView.tsx","components/views/SuccessfulPaymentView.tsx","components/views/FailedPaymentView.tsx","components/features/upload/UploadFile.tsx","components/views/RegistrationReferralView.tsx","components/views/SendReferralView.tsx","components/views/SuccessfulReferralUploadView.tsx","components/features/invitation/InvitationForm.tsx","components/views/InvitationView.tsx","components/features/queue/QueuedPath.tsx","App.tsx","reportWebVitals.ts","locales/i18n.ts","index.tsx"],"names":["getItem","key","localStorage","setItem","value","constants","LANGUAGES","PL","EN","STORAGE_KEYS","LANGUAGE","SIZE","CONTRAST","FORECOLOR","BACKCOLOR","SESSION_TOKEN","COLOR","BACKGROUND","TEXT","PRIMARY","PRIMARY_SEMI_DARKEN","PRIMARY_DARKEN","LIGHT_PINK","WHITE","BLACK","INPUT","NOTIFICATION_BACKGROUND","GREY","GREY_DARKEN","RED","STYLES","MAX_INPUT_WIDTH","MAX_CONTENT_WIDTH","BUTTON_TEXT_SIZE","HEADER_TEXT_SIZE","DESCRIPTION_TEXT_SIZE","RADIO","DIMENSION","CHECK_DIMENSION","CHECK_POSITION","GAP","BORDER_WIDTH","CHECKBOX","MARGIN","BORDER_RADIUS","PADDING","LABEL","PADDING_BOTTOM","SWITCH","WIDTH","HEIGHT","CHECKED_DIMENSION","BUTTON","SELECT","PADDING_VERTICAL","NOTIFICATION","MODAL","TABLE","HOMEPAGE_CARD","PADDING_MOBILE","FONTS","REGULAR","MEDIUM","SEMI_BOLD","BOLD","BREAKPOINTS","MOBILE","DATE_FORMATS","DATE","DATE_TIME","DAY_NAME","TIMEOUTS","MAXIMUM_TIME_FOR_SELECT_STUDY_DATE","MAXIMUM_TIME_TO_CONFIRM_STUDY_DATE","CAPTCHA_ACTIONS","PERSONAL_DATA_FORM","FIND_DATES","CONFIRM_DATE","SEND_CONFIRMATION_CODE","BLOCK_SELECTED_DATE","UPLOAD_REFERRAL","PAY_FOR_REGISTRATION","VERIFY_INVITATION","INVITATION","THRESHOLDS","MAXIMUM_UPLOAD_FILE_SIZE","INPUT_MAX_LENGTH","MINIMUM_REGISTRATION_AGE","GENEVA_URL","GlobalStyle","createGlobalStyle","_templateObject","_taggedTemplateLiteral","props","backcolor","forecolor","concat","parseFloat","sizemode","validatePesel","pesel","length","controlNum","calculateControlSum","parseInt","toString","validateMinimumAge","calculateAgeFromPesel","input","weights","offset","arguments","undefined","controlSum","i","year","substring","month","day","dateOfBirth","Date","today","age","getFullYear","getMonth","getDate","validatePhoneNumber","phone","isPhoneValid","startsWith","isValidNumber","isValid","validatePassport","passport","test","getLetterValue","letter","letterValues","j","validateDO","number","toUpperCase","sum","validateBirthDate","birthAt","split","map","dayjs","capitalizeFirstLetter","string","charAt","slice","date","format","getDayName","hasPhoneNumber","mapToScreeningDateType","type","Routes","applicationTimestamp","getTime","applicationNonce","characters","result","Math","floor","random","generateRandomString","themeReducer","state","action","payload","accessibility","ThemeContext","React","createContext","theme","dispatch","useThemeContext","useContext","ThemeProvider","_ref","children","useReducer","_jsx","Provider","StyledCard","styled","Card","CustomCard","StyledCheckbox","Checkbox","CustomCheckbox","StyledFormItem","Form","Item","CustomFormItem","StyledRadio","Radio","CustomRadio","StyledSelect","Select","CustomSelect","dropdownClassName","allowClear","StyledSpinner","div","size","CustomSpinner","_jsxs","className","viewBox","cx","cy","r","fill","strokeWidth","strokeMiterlimit","title","CustomDescription","CustomTable","_props$dataSource","TableContanier","MobileTable","dataSource","Empty","style","marginBottom","Array","isArray","data","index","columns","column","fontWeight","marginTop","render","Pagination","display","justifyContent","showSizeChanger","hideOnSinglePage","onChange","page","onChangePage","pagination","DesktopTable","StyledTable","current","Table","_templateObject2","_templateObject3","_templateObject4","StyledParagraph","p","StyledHeader","h1","Header","StyledButton","Button","SecondaryButton","PrimaryButton","StyledModal","Modal","CustomModal","okText","cancelText","visible","okButtonProps","onOk","onCancel","maskClosable","destroyOnClose","width","footer","Row","onClick","underlined","LinkButton","StyledSpan","span","AsteriskSign","StyledInput","Input","CustomInput","StyledMaskedInput","MaskedInput","CustomMaskedInput","StyledSwitch","Switch","StyledContainer","StyledLabel","label","CustomSwitch","AppVersion","version","StyledCol","Col","CenteredCol","personalData","email","firstName","idCard","lastName","locations","nfz","paidResearch","policy","referral","insurance","selectedRegistration","homePage","questionnaire","bloodyWart","breastAilment","cancerInFamily","initialStudy","invalidUsg","retractionOfSkin","referralId","RegistrationContext","registrationReducer","Error","useRegistrationContext","RegistrationProvider","registration","YourDataTable","t","useTranslation","ScreeningsDetailsTable","_campaignRegistration","_campaignRegistration2","_campaignRegistration3","_campaignRegistration4","funding","campaignRegistration","isPaid","price","toFixed","name","startAt","hours","minutes","voivodeship","community","shortName","displayConfirm","confirm","backgroundColor","border","cancelButtonProps","color","displayWarning","warning","displaySuccess","success","displayError","error","IconWrapper","ReferralUpload","handleChange","modal","setModal","useState","_Fragment","Upload","customRequest","_ref2","onSuccess","setTimeout","_ref3","fileList","maxCount","beforeUpload","file","some","isValidFileExtension","closable","LIST_IGNORE","showUploadList","accept","flexDirection","alignItems","rowGap","ExclamationCircleOutlined","interceptApiError","history","_error$response","_error$response2","response","status","notification","message","description","CustomFuncModal","content","push","FORM_VIEW","invitationLinkRegex","getInvitationLink","match","window","location","pathname","customValidator","validator","required","translation","Promise","resolve","reject","bordered","AccessibilityButton","LanguageSelector","i18n","handleChangeLanguage","language","changeLanguage","locale","storage","Container","MobileAccessbilityContainer","AccessibilityButtons","changeContrast","changeSize","fontSize","resetAccesibilityMode","AccessibilityContainer","marginRight","VersionContext","currentVersion","StyledLayout","Layout","StyledLink","a","StyledLogo","img","MainLayout","_process$env","href","target","src","logo","alt","process","NODE_ENV","Content","time","allowColorizeTime","StudyDateCounter","api","axios","create","baseURL","interceptors","request","use","config","headers","sessionStorage","getProvinces","get","getDistricts","provinceTID","params","getCommunities","districtPOW","findAllCitiesByTerritory","findScreeningsDates","token","accessCode","post","sendConfirmationCode","registrationId","phoneNumber","then","res","verifySmsCode","code","confirmPayment","paymentId","catch","blockSindgleCampaignRegistration","registrationToken","payForCampaignRegistration","id","getScreeningInformation","updateRegistrationReferral","patch","createPhoneContactRequest","getAll","add","formData","validateCaptchaToken","isPatientAlreadyRegistered","keepQueueSessionAlive","connectionId","getFundings","verifyInvitation","verifyPortalRegistration","ConfirmStudyDateView","_data$personalData2","useHistory","executeRecaptcha","useGoogleReCaptcha","timeDeadline","setTimeDeadline","displaySmsConfirmation","setSmsConfirmation","isRegisteringPatient","setPatientRegistering","isSendingConfirmationCode","setSendingConfirmationCode","useEffect","timer","setInterval","prev","isNaN","clearInterval","_data$selectedRegistr","_data$selectedRegistr2","dal","handleFailedSendConfirmationCode","_error$response3","_error$response4","_error$response5","STUDY_DATE","_data$selectedRegistr3","_data$selectedRegistr4","_data$personalData","finally","Link","to","CONFIRM_STUDY_DATE","loading","htmlType","justify","gutter","lg","LeftOutlined","PHONE_CONTACT","textAlign","gap","onFinish","values","_selectedRegistration","privateFunding","patient","SUCCESSFUL_PATIENT_REGISTRATION","rules","mask","useNonInitialEffect","effect","deps","initialRender","useRef","effectReturns","useInvitationLink","verify","isLoadingInvitation","useInvitation","setLoading","Boolean","verifyAccess","invitation","accessCodeExists","campaignIdExists","personalDataIdExists","e","useSuccessInvitation","useCallback","territory","isPrivate","shouldAddLocation","city","postalCode","optionalId","district","province","defaultPersonalData","uuid","communityId","districtId","provinceId","mobileNumber","mergeObjects","obj1","obj2","hasOwnProperty","reducer","newState","Object","keys","forEach","oldValue","useTerritory","isLoading","updateProvince","updateCity","updateDistrict","updateCommunity","updateTerritory","StyledForm","emptyLocation","emptyCityLocation","AddLocationForm","onVisibilityChange","form","useForm","Option","provinces","setProvinces","districts","setDistricts","communities","setCommunites","foundLocations","setFoundLocations","fetchProvinces","provinceTid","districtPow","communityGmi","returnObjects","initialValues","md","PROVINCE","showSearch","labelInValue","placeholder","onSelect","setFieldsValue","optionFilterProp","filterOption","option","toLowerCase","indexOf","m","tId","DISTRICT","disabled","pow","COMMUNE","gmi","nazdod","CITY","max","c","loc","POSTAL_CODE","async","submit","validateFields","resetFields","UnderlineLink","PersonalDataForm","_data$personalData3","_data$personalData9","_fundings$fundings","setPesel","setPassport","setIdCard","setPhoneNumber","setFirstName","setLastName","hasReferral","setHasReferral","idCardValidationStatus","setIdCardValidationStatus","validateStatusMessage","setValidateStatusMessage","isAddingLocation","setIsAddingLocation","hasPesel","setHasPesel","isVerifyingRequest","setVeryfyingRequest","isLookingPrivateScreenings","setIsLookingPrivateScreenings","fundings","setFundings","defaultCheckedHasPesel","_data$personalData4","_data$personalData5","_data$personalData6","_data$personalData7","_data$personalData8","terms","locationColumns","dataIndex","displayFailedCaptchaExecutionMessage","displayFailedCaptchaVeryficationMessage","verifyCaptcha","isLocationAlreadyAdded","_data$personalData10","_data$personalData11","_data$personalData11$","margin","warn","REFERRAL","QUESTIONNAIRE","layout","maxWidth","Group","Space","direction","valuePropName","checked","INPUT_PLACEHOLDER","PERSONAL_DATA","FIRST_NAME","LAST_NAME","PHONE","normalize","parsePhoneNumber","formatInternational","formatNational","phoneFormatter","_","PHONE_NUMBER","EMAIL","PASSPORT","dependencies","minimumAge","validateStatus","isIdCardValid","help","CARD_ID","displayFundingsInRegistrationPortal","INSURANCE","f","POLICY_NUMBER","rowKey","emptyText","padding","CloseOutlined","FormView","Title","Text","Typography","HomePageCard","buttonText","headerText","icon","level","StyledRow","HomepageView","queryString","parse","search","SUCCESSFUL_PATIENT_PAYMENT","FAILED_PATIENT_PAYMENT","breasts","QuestionarieView","_data$type","_data$type2","optionChanged","setOptionChanged","studyType","setStudyType","handleOptionChanged","QueueView","displayAdditionalInformation","peoplesInQueue","maximumWaitingTime","PatientInformation","ewusStatus","simpStatus","reimbursedDatesStartsFrom","daysAmount","diff","getClosetsReinbursedDate","ReferralStatus","StyledResult","Result","CustomResult","ReferralStatusView","StudyCompleted","ScreeningDatesGroup","screeningDates","setRegistration","TERMS_TYPE","_screening$startAt","_screening$startAt2","_screening$startAt3","_screening$startAt4","screening","StudyDateView","setIsLoading","isCheckingIfPatientRegistered","setIsCheckingIfPatientRegistered","displaySessionTimeoutModal","setSessionTimeoutModal","setScreeningDates","setPatient","showConfirmModal","setShowConfirmModal","submitButtonDisabled","redirectToFormView","handleSuccessfulDataLoad","campaignScreeningDates","communityScreeningDates","districtScreeningDates","externalApiError","findDates","unknownError","selectCampaignRegistrationDate","noDatesAvailable","useMemo","every","align","confirmRegistrationDate","displayWarningNotification","duration","PhoneContactView","isSendingRequest","setSendingRequest","goBack","onSubmit","SUCCESS","ERROR","INTERNAL_SERVER_ERROR","SuccessfulRegistrationView","isPaying","setPaying","payForRegistration","_selectedRegistration2","open","redirectUri","SuccessfulPaymentView","FailedPaymentView","HOME_PAGE","UploadFile","studyDate","allowBackToPersonalData","allowMakePhoneRequest","isUploading","setUploading","fileName","setFileName","handleSuccessfulReferralSubmit","files","originFileList","el","originFileObj","FormData","append","_files$","RegistrationReferralView","handleCancel","SendReferralView","isUpdating","setUpdating","study","setStudy","handleSuccessfulStudyLoad","getStudyInitialInformation","Ok","UnknownError","handleSuccessfulUpdateRegistrationReferal","SUCCESSFUL_REFERRAL_UPLOAD","SuccessfulReferralUploadView","InvitationForm","buttons","maxLength","alignContent","InvitationView","QueuedPath","_connectionRef$curren8","_connectionRef$curren9","_connectionRef$curren10","_connectionRef$curren11","hasGetInitialInformation","setGetInitialInformation","interval","setIntervalTimer","timeout","setTimeoutTimer","allowReconnectSession","setAllowReconnectSession","queue","setQueue","peopleInQueue","permissions","connectionRef","handleFailedSocketConnection","useUnmount","stopSocketConnection","_connectionRef$curren","stop","setSessionConnection","HubConnectionBuilder","withUrl","withAutomaticReconnect","build","reconnectToSession","_connectionRef$curren2","keepAliveTimer","_connectionRef$curren3","err","clearTimeout","prevState","_connectionRef$curren4","_connectionRef$curren5","start","_connectionRef$curren6","_connectionRef$curren7","on","includes","QUEUE","getMaxiumWaitingTime","seconds","ceil","Route","require","App","Router","GoogleReCaptchaProvider","reCaptchaKey","exact","path","component","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","resources","pl","common","homepage","survey","confirmStudyDate","phoneContact","successfulRegistration","successfulPayment","failedPayment","en","initReactI18next","init","defaultNS","ns","lng","keySeparator","interpolation","escapeValue","ReactDOM","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.7137fde0.chunk.js","sourcesContent":["const getItem = (key: string): string => localStorage.getItem(key) || \"\";\r\n\r\nconst setItem = (key: string, value: string): void => localStorage.setItem(key, value);\r\n\r\nexport {\r\n getItem,\r\n setItem\r\n}\r\n","const constants = {\r\n LANGUAGES: {\r\n PL: \"pl\",\r\n EN: \"en\"\r\n },\r\n STORAGE_KEYS: {\r\n LANGUAGE: \"language\",\r\n SIZE: \"accessibility-size\",\r\n CONTRAST: {\r\n FORECOLOR: \"contrast-forecolor\",\r\n BACKCOLOR: \"contrast-backcolor\"\r\n },\r\n SESSION_TOKEN: \"token\"\r\n },\r\n COLOR: {\r\n BACKGROUND: \"#FFF\",\r\n TEXT: \"#000\",\r\n PRIMARY: \"#EA5D0C\",\r\n PRIMARY_SEMI_DARKEN: \"#DA5314\",\r\n PRIMARY_DARKEN: \"#CC4517\",\r\n LIGHT_PINK: \"#F8E3E7\",\r\n WHITE: \"#FFF\",\r\n BLACK: \"#000\",\r\n INPUT: \"#C6C6C6\",\r\n NOTIFICATION_BACKGROUND: \"#EF7E7F\",\r\n GREY: \"#EDEDED\",\r\n GREY_DARKEN: \"#DADADA\",\r\n RED: \"#FF0000\"\r\n },\r\n STYLES: {\r\n MAX_INPUT_WIDTH: 540,\r\n MAX_CONTENT_WIDTH: 800,\r\n BUTTON_TEXT_SIZE: 15,\r\n HEADER_TEXT_SIZE: 25,\r\n DESCRIPTION_TEXT_SIZE: 14,\r\n RADIO: {\r\n DIMENSION: \"27px\",\r\n CHECK_DIMENSION: \"17px\",\r\n CHECK_POSITION: \"3px\",\r\n GAP: \"8px\",\r\n BORDER_WIDTH: \"2px\"\r\n },\r\n CHECKBOX: {\r\n DIMENSION: \"25px\",\r\n GAP: \"8px\",\r\n BORDER_WIDTH: \"2px\",\r\n MARGIN: \"0 1px\"\r\n },\r\n INPUT: {\r\n BORDER_RADIUS: \"20px\",\r\n BORDER_WIDTH: \"2px\",\r\n PADDING: \"13px\"\r\n },\r\n LABEL: {\r\n PADDING_BOTTOM: \"4px\"\r\n },\r\n SWITCH: {\r\n WIDTH: \"47px\",\r\n HEIGHT: \"27px\",\r\n CHECKED_DIMENSION: \"18px\",\r\n BORDER_WIDTH: \"2px\",\r\n GAP: \"8px\"\r\n },\r\n BUTTON: {\r\n BORDER_RADIUS: \"25px\",\r\n BORDER_WIDTH: \"2px\",\r\n PADDING: \"12px\"\r\n },\r\n SELECT: {\r\n PADDING_VERTICAL: \"7px\"\r\n },\r\n NOTIFICATION: {\r\n BORDER_RADIUS: \"6px\",\r\n PADDING: \"16px\"\r\n },\r\n MODAL: {\r\n BORDER_WIDTH: \"2px\",\r\n BORDER_RADIUS: \"25px\"\r\n },\r\n TABLE: {\r\n BORDER_RADIUS: \"20px\"\r\n },\r\n HOMEPAGE_CARD: {\r\n BORDER_RADIUS: \"32px\",\r\n PADDING: \"48px\",\r\n PADDING_MOBILE: \"16px\"\r\n }\r\n },\r\n FONTS: {\r\n REGULAR: 400,\r\n MEDIUM: 500,\r\n SEMI_BOLD: 600,\r\n BOLD: 700\r\n },\r\n BREAKPOINTS: {\r\n MOBILE: 992\r\n },\r\n DATE_FORMATS: {\r\n DATE: \"DD.MM.YYYY\",\r\n DATE_TIME: \"DD.MM.YYYY HH:mm\",\r\n DAY_NAME: \"dddd\"\r\n },\r\n TIMEOUTS: {\r\n MAXIMUM_TIME_FOR_SELECT_STUDY_DATE: 180,\r\n MAXIMUM_TIME_TO_CONFIRM_STUDY_DATE: 120\r\n },\r\n CAPTCHA_ACTIONS: {\r\n PERSONAL_DATA_FORM: \"PERSONAL_DATA_FORM\",\r\n FIND_DATES: \"FIND_DATES\",\r\n CONFIRM_DATE: \"CONFIRM_DATE\",\r\n SEND_CONFIRMATION_CODE: \"SEND_CONFIRMATION_CODE\",\r\n BLOCK_SELECTED_DATE: \"BLOCK_SELECTED_DATE\",\r\n UPLOAD_REFERRAL: \"UPLOAD_REFERRAL\",\r\n PAY_FOR_REGISTRATION: \"PAY_FOR_REGISTRATION\",\r\n VERIFY_INVITATION: \"VERIFY_INVITATION\",\r\n INVITATION: \"INVITATION\"\r\n },\r\n THRESHOLDS: {\r\n MAXIMUM_UPLOAD_FILE_SIZE: 5242880, // 5 MB\r\n INPUT_MAX_LENGTH: 255\r\n },\r\n MINIMUM_REGISTRATION_AGE: 35,\r\n GENEVA_URL: \"https://www.genevatrust.pl/\"\r\n};\r\n\r\nexport default constants;\r\n","import { createGlobalStyle } from \"styled-components\";\r\nimport constants from \"./constants\";\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n ::-moz-selection {\r\n color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n background: ${props => props.forecolor || \"#3297FD\"};\r\n }\r\n\r\n ::selection {\r\n color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n background: ${props => props.forecolor || \"#3297FD\"};\r\n }\r\n\r\n .custom-select-list {\r\n background-color: ${props => props.backcolor};\r\n\r\n .ant-select-item {\r\n background-color: ${props => props.backcolor};\r\n\r\n .ant-select-item-option-content {\r\n color: ${props => props.forecolor};\r\n font-size: 1rem;\r\n line-height: 1rem;\r\n }\r\n\r\n &:hover {\r\n background-color: ${props => props.forecolor};\r\n\r\n .ant-select-item-option-content {\r\n color: ${props => props.backcolor};\r\n }\r\n }\r\n }\r\n }\r\n\r\n .custom-datepicker-dropdown {\r\n color: ${props => props.forecolor};\r\n \r\n a {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-picker-panel-container {\r\n background-color: ${props => props.backcolor};\r\n\r\n .ant-picker-header, .ant-picker-footer {\r\n border-color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-picker-footer {\r\n border-bottom: none;\r\n }\r\n }\r\n\r\n .ant-picker-cell-inner {\r\n background-color: ${props => props.backcolor};\r\n color: ${props => props.forecolor};\r\n\r\n &:hover {\r\n color: ${props => props.backcolor};\r\n background-color: ${props => props.forecolor} !important;\r\n }\r\n }\r\n\r\n .ant-picker-cell.ant-picker-cell-in-view {\r\n &:hover {\r\n .ant-picker-cell-inner {\r\n color: ${props => props.backcolor};\r\n background-color: ${props => props.forecolor} !important;\r\n }\r\n }\r\n }\r\n\r\n .ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before {\r\n border-color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-picker-panel {\r\n border-bottom: none;\r\n }\r\n\r\n button {\r\n &, &:hover {\r\n color: ${props => props.forecolor};\r\n background-color: ${props => props.backcolor};\r\n }\r\n }\r\n\r\n .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner, .ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner, .ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner {\r\n color: ${props => props.backcolor};\r\n background-color: ${props => props.forecolor};\r\n }\r\n }\r\n\r\n html,\r\n span {\r\n font-size: ${props => `${15 * parseFloat(props.sizemode || \"1\")}px`} !important;\r\n line-height: ${props => `${15 * parseFloat(props.sizemode || \"1\") + 10}px`} !important;\r\n }\r\n \r\n .ant-notification-notice {\r\n background-color: ${props => props.forecolor};\r\n \r\n .ant-notification-notice-message {\r\n color: ${props => props.backcolor};\r\n }\r\n\r\n .ant-notification-notice-with-icon {\r\n span {\r\n color: ${props => props.backcolor};\r\n }\r\n }\r\n \r\n .ant-notification-close-icon {\r\n color: ${props => props.backcolor};\r\n }\r\n }\r\n \r\n .ant-notification-notice-description {\r\n color: ${props => props.backcolor};\r\n }\r\n \r\n .custom-func-modal {\r\n .ant-modal-body {\r\n background-color: ${props => props.forecolor};\r\n \r\n .ant-modal-confirm-title,\r\n .ant-modal-confirm-content {\r\n color: ${props => props.backcolor};\r\n }\r\n \r\n .ant-btn-primary {\r\n background-color: ${props => props.backcolor} !important;\r\n color: ${props => props.forecolor} !important;\r\n }\r\n }\r\n }\r\n \r\n .ant-modal-confirm-error .ant-modal-confirm-body > .anticon {\r\n color: ${props => props.backcolor};\r\n }\r\n \r\n .ant-modal-mask {\r\n background-color: rgba(0, 0, 0, 0.5);\r\n }\r\n\r\n h2 {\r\n font-size: ${props => `${32 * parseFloat(props.sizemode || \"1\")}px`} !important;\r\n line-height: ${props => `${32 * parseFloat(props.sizemode || \"1\") + 10}px`} !important;\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n }\r\n\r\n .locations-dropdown {\r\n width: fit-content !important;\r\n }\r\n`;\r\n\r\nexport default GlobalStyle;\r\n","import constants from \"./constants\";\r\nimport dayjs from \"dayjs\";\r\nimport parsePhoneNumber from \"libphonenumber-js\";\r\nimport isValidNumber from \"libphonenumber-js/max\";\r\n\r\nconst validatePesel = (pesel: string): boolean => {\r\n const weights = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3];\r\n\r\n if (pesel.length !== 11) return false;\r\n\r\n const controlSum = calculateControlSum(pesel, weights);\r\n const controlNum = controlSum % 10;\r\n const controlDigit = 10 - controlNum === 10 ? 0 : 10 - controlNum;\r\n const lastDigit = parseInt(pesel[pesel.length - 1].toString());\r\n\r\n return controlDigit == lastDigit;\r\n};\r\n\r\nconst validateMinimumAge = (pesel: string): boolean => calculateAgeFromPesel(pesel) >= constants.MINIMUM_REGISTRATION_AGE;\r\n\r\nconst calculateControlSum = (input: string, weights: number[], offset = 0) => {\r\n let controlSum = 0;\r\n for (let i = 0; i < input.length - 1; i++) {\r\n controlSum += weights[i + offset] * parseInt(input[i].toString());\r\n }\r\n return controlSum;\r\n};\r\n\r\nconst calculateAgeFromPesel = (pesel: string): number => {\r\n let year = parseInt(pesel.substring(0, 2), 10); // First two digits - year\r\n let month = parseInt(pesel.substring(2, 4), 10); // Next two digits - month\r\n const day = parseInt(pesel.substring(4, 6), 10); // Next two digits - day\r\n\r\n if (month >= 1 && month <= 12) {\r\n year += 1900; // 1900-1999\r\n } else if (month >= 21 && month <= 32) {\r\n year += 2000; // 2000-2099\r\n month -= 20;\r\n } else if (month >= 41 && month <= 52) {\r\n year += 2100; // 2100-2199\r\n month -= 40;\r\n }\r\n\r\n const dateOfBirth = new Date(year, month - 1, day); // month is indexed from 0\r\n\r\n const today = new Date();\r\n let age = today.getFullYear() - dateOfBirth.getFullYear();\r\n\r\n const hadBirthdayThisYear =\r\n today.getMonth() > dateOfBirth.getMonth() || (today.getMonth() === dateOfBirth.getMonth() && today.getDate() >= dateOfBirth.getDate());\r\n\r\n if (!hadBirthdayThisYear) {\r\n age--;\r\n }\r\n\r\n return age;\r\n};\r\n\r\nconst validatePhoneNumber = (phone: string) => {\r\n if (!phone) return false;\r\n const isPhoneValid = phone.startsWith(\"+\") ? isValidNumber(phone) : isValidNumber(phone, \"PL\");\r\n return isPhoneValid?.isValid() || false;\r\n};\r\n\r\nconst phoneFormatter = (phone: string | undefined): string => {\r\n if ((phone || \"\").startsWith(\"+\")) {\r\n const phoneNumber = parsePhoneNumber(phone || \"\");\r\n if (phoneNumber) return phoneNumber.formatInternational();\r\n }\r\n\r\n const phoneNumber = parsePhoneNumber(phone || \"\", \"PL\");\r\n if (phoneNumber) return phoneNumber.formatNational();\r\n\r\n return phone ?? \"\";\r\n};\r\n\r\nconst validatePassport = (passport: string) => {\r\n const regex = /^(?!^0+$)[a-zA-Z0-9]{3,20}$/;\r\n\r\n if (regex.test(passport) === false) return false;\r\n\r\n return true;\r\n};\r\n\r\nconst getLetterValue = (letter: string) => {\r\n const letterValues = [\r\n \"0\",\r\n \"1\",\r\n \"2\",\r\n \"3\",\r\n \"4\",\r\n \"5\",\r\n \"6\",\r\n \"7\",\r\n \"8\",\r\n \"9\",\r\n \"A\",\r\n \"B\",\r\n \"C\",\r\n \"D\",\r\n \"E\",\r\n \"F\",\r\n \"G\",\r\n \"H\",\r\n \"I\",\r\n \"J\",\r\n \"K\",\r\n \"L\",\r\n \"M\",\r\n \"N\",\r\n \"O\",\r\n \"P\",\r\n \"Q\",\r\n \"R\",\r\n \"S\",\r\n \"T\",\r\n \"U\",\r\n \"V\",\r\n \"W\",\r\n \"X\",\r\n \"Y\",\r\n \"Z\"\r\n ];\r\n\r\n for (let j = 0; j < letterValues.length; j++) {\r\n if (letter === letterValues[j]) return j;\r\n }\r\n\r\n return -1;\r\n};\r\n\r\nconst validateDO = (number: string) => {\r\n if (number == null || number.length !== 9) return false;\r\n\r\n number = number.toUpperCase();\r\n\r\n for (let i = 0; i < 3; i++) {\r\n if (getLetterValue(number[i]) < 10) return false;\r\n }\r\n\r\n for (let i = 3; i < 9; i++) {\r\n if (getLetterValue(number[i]) < 0 || getLetterValue(number[i]) > 9) return false;\r\n }\r\n\r\n let sum =\r\n 7 * getLetterValue(number[0]) +\r\n 3 * getLetterValue(number[1]) +\r\n 1 * getLetterValue(number[2]) +\r\n 7 * getLetterValue(number[4]) +\r\n 3 * getLetterValue(number[5]) +\r\n 1 * getLetterValue(number[6]) +\r\n 7 * getLetterValue(number[7]) +\r\n 3 * getLetterValue(number[8]);\r\n\r\n sum %= 10;\r\n\r\n if (sum !== getLetterValue(number[3])) return false;\r\n\r\n return true;\r\n};\r\n\r\nconst validateDOwithSeparator = (number: string) => {\r\n if (number == null || number.length !== 10) return false;\r\n\r\n if (number[3] !== \" \" && number[3] !== \"-\") return false;\r\n\r\n number = number.replace(/[\\s-]/g, \"\");\r\n\r\n return validateDO(number);\r\n};\r\n\r\nconst validateBirthDate = (birthAt: string) => {\r\n if (!/^\\d{2}\\.\\d{2}\\.\\d{4}$/.test(birthAt)) {\r\n return false;\r\n }\r\n\r\n const [day, month, year] = birthAt.split(\".\").map(value => parseInt(value, 10));\r\n\r\n if (day < 0 || day > 31) {\r\n return false;\r\n }\r\n\r\n if (month < 0 || month > 12) {\r\n return false;\r\n }\r\n\r\n if (year < 1800 || year > dayjs().year()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst capitalizeFirstLetter = (string: string) => string.charAt(0).toUpperCase() + string.slice(1);\r\n\r\nconst getDate = (date: string, format = constants.DATE_FORMATS.DATE) => dayjs(date).format(format);\r\n\r\nconst getDateTime = (date: string, format = constants.DATE_FORMATS.DATE_TIME) => dayjs(date).format(format);\r\n\r\nconst getDayName = (date: string, format = constants.DATE_FORMATS.DAY_NAME) => dayjs(date).format(format);\r\n\r\nconst hasPhoneNumber = (phone: string) => phone && phone.length > 0;\r\n\r\nconst generateRandomString = (length: number) => {\r\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n const charactersLength = characters.length;\r\n\r\n var result = \"\";\r\n\r\n for (let i = 0; i < length; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst mapToScreeningDateType = (type: number) => {\r\n switch (type) {\r\n case 0:\r\n return \"CAMPAIGN\";\r\n case 1:\r\n return \"COMMUNITY\";\r\n case 2:\r\n return \"DISTRICT\";\r\n default:\r\n return \"DISTRICT\";\r\n }\r\n};\r\n\r\nexport {\r\n validatePesel,\r\n validateMinimumAge,\r\n validatePhoneNumber,\r\n phoneFormatter,\r\n validatePassport,\r\n validateDOwithSeparator,\r\n validateDO,\r\n validateBirthDate,\r\n capitalizeFirstLetter,\r\n getDate,\r\n getDateTime,\r\n getDayName,\r\n hasPhoneNumber,\r\n generateRandomString,\r\n mapToScreeningDateType\r\n};\r\n","export enum Routes {\r\n HOME_PAGE = \"/\",\r\n FORM_VIEW = \"/2\",\r\n QUESTIONNAIRE = \"/3\",\r\n STUDY_DATE = \"/4\",\r\n CONFIRM_STUDY_DATE = \"/5\",\r\n REFERRAL = \"/6\",\r\n PHONE_CONTACT = \"/7\",\r\n QUEUE = \"/queue\",\r\n SUCCESSFUL_PATIENT_REGISTRATION = \"/patient-registration\",\r\n SUCCESSFUL_PATIENT_PAYMENT = \"/patient-payment-success\",\r\n FAILED_PATIENT_PAYMENT = \"/patient-payment-failed\",\r\n SUCCESSFUL_REFERRAL_UPLOAD = \"/successful-referal-upload\",\r\n INVITATION = \"/invitation\"\r\n}\r\n","import {generateRandomString} from \"./helpers\";\r\n\r\nconst applicationTimestamp = new Date().getTime();\r\nconst applicationNonce = generateRandomString(32);\r\n\r\nexport {\r\n applicationTimestamp,\r\n applicationNonce\r\n}\r\n","export const themeReducer = (state: IAccessibility, action: IThemeAction): IAccessibility => {\r\n switch (action.type) {\r\n case \"SET_THEME\":\r\n return {\r\n ...state,\r\n forecolor: action.payload.forecolor,\r\n backcolor: action.payload.backcolor\r\n };\r\n case \"SET_SIZE\":\r\n return {\r\n ...state,\r\n sizemode: action.payload.sizemode,\r\n };\r\n case \"INITIAL_STATE_CHANGE\":\r\n return {\r\n ...state,\r\n ...action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import React, { useContext, useReducer } from 'react';\r\nimport { themeReducer } from './themeReducer';\r\n\r\nconst accessibility: IAccessibility = {\r\n forecolor: \"\",\r\n backcolor: \"\",\r\n sizemode: \"\"\r\n};\r\n\r\ntype ThemeStateProviderProps = {\r\n children: React.ReactChild | React.ReactChild[];\r\n};\r\n\r\nconst ThemeContext = React.createContext({\r\n theme: accessibility,\r\n dispatch: () => {}\r\n});\r\n\r\nexport const useThemeContext = () => useContext(ThemeContext);\r\n\r\nexport const ThemeProvider: React.FC = ({ children }: ThemeStateProviderProps) => {\r\n const [theme, dispatch] = useReducer(themeReducer, accessibility);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import { Card, CardProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends CardProps {}\r\n\r\nconst StyledCard = styled(Card)`\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n border: none;\r\n border-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n\r\n .ant-card-head {\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n background-color: ${props => props.backcolor || constants.COLOR.GREY};\r\n border-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n }\r\n\r\n .ant-card-extra {\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n }\r\n\r\n .ant-card-body {\r\n padding-bottom: 0;\r\n border-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n }\r\n\r\n .ant-card-body > p {\r\n text-align: left;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n }\r\n`;\r\n\r\nconst CustomCard: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomCard;\r\n","import Checkbox, { CheckboxProps } from \"antd/lib/checkbox/Checkbox\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends CheckboxProps {}\r\n\r\nconst StyledCheckbox = styled(Checkbox)`\r\n &,\r\n span {\r\n display: flex;\r\n gap: ${constants.STYLES.CHECKBOX.GAP};\r\n align-items: center;\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n white-space: pre-line;\r\n }\r\n\r\n .ant-checkbox-inner {\r\n width: ${constants.STYLES.CHECKBOX.DIMENSION};\r\n height: ${constants.STYLES.CHECKBOX.DIMENSION};\r\n border-color: ${constants.COLOR.INPUT};\r\n border-width: ${constants.STYLES.CHECKBOX.BORDER_WIDTH};\r\n margin: 0 1px;\r\n }\r\n\r\n .ant-checkbox {\r\n top: 0;\r\n }\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n outline: none;\r\n box-shadow: none;\r\n\r\n .ant-checkbox-checked {\r\n .ant-checkbox-inner {\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n\r\n &:after {\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n left: 30%;\r\n }\r\n }\r\n }\r\n\r\n .ant-checkbox-inner {\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n border-color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-checkbox-checked::after {\r\n border: none;\r\n }\r\n }\r\n\r\n @media screen and (max-width: 992px) {\r\n margin: 10px 0px;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst CustomCheckbox: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomCheckbox;\r\n","import { Form, FormItemProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends FormItemProps {}\r\n\r\nconst StyledFormItem = styled(Form.Item)`\r\n font-size: ${props => `${1 * parseFloat(props.sizemode || \"1\")}rem`};\r\n line-height: ${props => `${1 * parseFloat(props.sizemode || \"1\")}rem`};\r\n\r\n .ant-form-item-label {\r\n padding-bottom: ${constants.STYLES.LABEL.PADDING_BOTTOM};\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n }\r\n\r\n .ant-form-item-label label {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n font-size: ${props => `${1 * parseFloat(props.sizemode || \"1\")}rem`};\r\n line-height: ${props => `${1 * parseFloat(props.sizemode || \"1\")}rem`};\r\n }\r\n\r\n .ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n &.ant-form-item-has-error :not(.ant-input-disabled):not(.ant-input-borderless).ant-input,\r\n .ant-form-item-has-error :not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper,\r\n .ant-form-item-has-error :not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover,\r\n .ant-form-item-has-error :not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover {\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE} !important;\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n .ant-form-item-explain.ant-form-item-explain-error {\r\n color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n .ant-upload.ant-upload-select {\r\n display: initial;\r\n }\r\n`;\r\n\r\nconst CustomFormItem: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomFormItem;\r\n","import { Radio, RadioProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends RadioProps {}\r\n\r\nconst StyledRadio = styled(Radio)`\r\n display: flex;\r\n align-items: center;\r\n gap: ${constants.STYLES.RADIO.GAP};\r\n white-space: pre-line;\r\n margin: 5px 0px;\r\n\r\n &,\r\n span {\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n white-space: pre-line;\r\n }\r\n\r\n .ant-radio-inner {\r\n width: ${constants.STYLES.RADIO.DIMENSION};\r\n height: ${constants.STYLES.RADIO.DIMENSION};\r\n border-color: ${constants.COLOR.INPUT};\r\n border-width: ${constants.STYLES.RADIO.BORDER_WIDTH};\r\n }\r\n\r\n .ant-radio-inner::after {\r\n width: ${constants.STYLES.RADIO.CHECK_DIMENSION};\r\n height: ${constants.STYLES.RADIO.CHECK_DIMENSION};\r\n top: ${constants.STYLES.RADIO.CHECK_POSITION};\r\n left: ${constants.STYLES.RADIO.CHECK_POSITION};\r\n }\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n outline: none;\r\n font-weight: normal;\r\n\r\n .ant-radio-checked .ant-radio-inner {\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n .ant-radio-inner {\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n border-color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-radio-inner::after {\r\n background-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n }\r\n\r\n @media screen and (max-width: 992px) {\r\n margin: 10px 0px;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst CustomRadio: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomRadio;\r\n","import { Select, SelectProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends SelectProps {}\r\n\r\nconst StyledSelect = styled(Select)`\r\n outline: none;\r\n box-shadow: none;\r\n white-space: normal;\r\n background-color: ${props => props.backcolor};\r\n color: ${props => props.forecolor};\r\n\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n outline: none;\r\n box-shadow: none;\r\n white-space: normal;\r\n }\r\n\r\n &.ant-select:not(.ant-select-customize-input) .ant-select-selector {\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n border-color: ${props => props.forecolor || constants.COLOR.INPUT} !important;\r\n border-width: ${constants.STYLES.INPUT.BORDER_WIDTH};\r\n border-width-right: ${constants.STYLES.INPUT.BORDER_WIDTH} !important;\r\n border-radius: ${constants.STYLES.INPUT.BORDER_RADIUS};\r\n padding-top: ${constants.STYLES.SELECT.PADDING_VERTICAL};\r\n padding-bottom: ${constants.STYLES.SELECT.PADDING_VERTICAL};\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n height: fit-content;\r\n box-shadow: none !important;\r\n white-space: normal;\r\n }\r\n\r\n .ant-select-selection-search {\r\n display: flex;\r\n align-items: center;\r\n white-space: normal;\r\n }\r\n\r\n .ant-select-arrow,\r\n .ant-select-clear {\r\n color: ${props => props.forecolor};\r\n background-color: ${props => props.backcolor};\r\n }\r\n\r\n ::placeholder {\r\n color: ${props => props.forecolor};\r\n opacity: 1;\r\n }\r\n\r\n :-ms-input-placeholder {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n ::-ms-input-placeholder {\r\n color: ${props => props.forecolor};\r\n }\r\n`;\r\n\r\nconst CustomSelect: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomSelect;\r\n","import { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\nimport {CustomDescription} from \"./index\";\r\nimport {BasicProps} from \"antd/es/layout/layout\";\r\n\r\ninterface IProps extends BasicProps {\r\n size?: number;\r\n title?: string;\r\n}\r\n\r\nconst StyledSpinner = styled.div`\r\n text-align: center;\r\n\r\n .loader {\r\n position: relative;\r\n margin: 0 auto;\r\n width: ${props => props.size || 50}px;\r\n\r\n &:before {\r\n content: '';\r\n display: block;\r\n padding-top: 100%;\r\n }\r\n }\r\n\r\n .circular {\r\n animation: rotate 2s linear infinite;\r\n height: 100%;\r\n transform-origin: center center;\r\n width: 100%;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n margin: auto;\r\n }\r\n\r\n .path {\r\n stroke-dasharray: 1, 200;\r\n stroke-dashoffset: 0;\r\n animation: dash 1.5s ease-in-out infinite;\r\n stroke-linecap: round;\r\n stroke: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n @keyframes rotate {\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @keyframes dash {\r\n 0% {\r\n stroke-dasharray: 1, 200;\r\n stroke-dashoffset: 0;\r\n }\r\n 50% {\r\n stroke-dasharray: 89, 200;\r\n stroke-dashoffset: -35px;\r\n }\r\n 100% {\r\n stroke-dasharray: 89, 200;\r\n stroke-dashoffset: -124px;\r\n }\r\n }\r\n`;\r\n\r\nconst CustomSpinner: React.VFC = (props) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {props.title && {props.title}}\r\n
\r\n )\r\n}\r\n\r\nexport default CustomSpinner;\r\n","import { Empty, Pagination, Table } from \"antd\";\r\nimport styled from \"styled-components\";\r\nimport { TableProps } from \"antd/lib/table\";\r\nimport { constants } from \"utils\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\ninterface ICustomTableProps extends TableProps {\r\n noBorderRound?: boolean;\r\n onlyTopBorder?: boolean;\r\n onChangePage?: (page: number) => void;\r\n}\r\n\r\nexport default function CustomTable(props: ICustomTableProps) {\r\n const { theme } = useThemeContext();\r\n return (\r\n \r\n \r\n {props.dataSource?.length === 0 && (\r\n \r\n )}\r\n {props.dataSource &&\r\n Array.isArray(props.dataSource) &&\r\n props.dataSource.map((data: any, index: number) => (\r\n
\r\n {props.columns &&\r\n Array.isArray(props.columns) &&\r\n props.columns.map((column: any, index: number) => (\r\n
\r\n {column.title}:\r\n
\r\n {column.render ? column.render(data[column.key] || data, data) : data[column.key]}\r\n
\r\n
\r\n ))}\r\n
\r\n ))}\r\n props.onChangePage && props.onChangePage(page)}\r\n {...props.pagination}\r\n />\r\n
\r\n \r\n props.onChangePage && props.onChangePage(pagination.current)}\r\n />\r\n \r\n
\r\n );\r\n}\r\n\r\nconst StyledTable = styled(Table)`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n\r\n .ant-table-tbody > tr > td {\r\n background-color: ${props => props.backcolor};\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n border: none;\r\n\r\n &:not(:last-child) {\r\n border-right: 1px;\r\n border-right-style: solid;\r\n border-right-color: ${props => props.forecolor || constants.COLOR.GREY_DARKEN};\r\n }\r\n }\r\n\r\n .ant-table-tbody > tr.ant-table-row:hover > td {\r\n background-color: ${props => props.backcolor};\r\n }\r\n\r\n .ant-table-thead {\r\n background-color: ${props => props.backcolor || constants.COLOR.GREY};\r\n }\r\n\r\n .ant-table-thead > tr > th {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n border: none;\r\n background: unset;\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n text-align: center;\r\n\r\n &::before {\r\n display: none;\r\n }\r\n\r\n &:first-child {\r\n border-top-left-radius: ${constants.STYLES.TABLE.BORDER_RADIUS} !important;\r\n border-bottom-left-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n }\r\n\r\n &:last-child {\r\n border-top-right-radius: ${constants.STYLES.TABLE.BORDER_RADIUS} !important;\r\n border-bottom-right-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n }\r\n\r\n &:not(:last-child) {\r\n border-right: 1px;\r\n border-right-style: solid;\r\n border-right-color: ${props => props.forecolor || constants.COLOR.GREY_DARKEN};\r\n }\r\n }\r\n`;\r\n\r\nconst TableContanier = styled.div`\r\n .table-mobile {\r\n padding: 24px;\r\n }\r\n`;\r\n\r\nconst MobileTable = styled.div`\r\n display: none;\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n\r\n @media screen and (max-width: 1200px) {\r\n display: block;\r\n }\r\n`;\r\n\r\nconst DesktopTable = styled.div`\r\n display: block;\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n\r\n .ant-table {\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n }\r\n\r\n @media screen and (max-width: 1200px) {\r\n display: none;\r\n }\r\n`;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends BasicProps {}\r\n\r\nconst StyledParagraph = styled.p`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n text-align: center;\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n }\r\n`;\r\n\r\nconst CustomDescription: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomDescription;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends BasicProps {}\r\n\r\nconst StyledHeader = styled.h1`\r\n display: flex;\r\n justify-content: center;\r\n width: 100%;\r\n font-size: ${props => constants.STYLES.HEADER_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.HEADER_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n text-align: center;\r\n`;\r\n\r\nconst Header: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default Header;\r\n","import { Button, ButtonProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ButtonProps {}\r\n\r\nconst StyledButton = styled(Button)`\r\n border-style: solid;\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n border-width: ${constants.STYLES.BUTTON.BORDER_WIDTH};\r\n color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n border-radius: ${constants.STYLES.BUTTON.BORDER_RADIUS};\r\n font-size: ${props => constants.STYLES.BUTTON_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n padding: ${constants.STYLES.BUTTON.PADDING};\r\n background-color: transparent;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n text-transform: uppercase;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n width: 100%;\r\n height: fit-content;\r\n white-space: normal;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n &:focus {\r\n background-color: transparent;\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n &:hover {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY_SEMI_DARKEN};\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY_SEMI_DARKEN};\r\n }\r\n\r\n &:active {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY_DARKEN};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY_DARKEN};\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n }\r\n`;\r\n\r\nconst SecondaryButton: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default SecondaryButton;\r\n","import { Button, ButtonProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ButtonProps {}\r\n\r\nconst StyledButton = styled(Button)`\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n border-radius: ${constants.STYLES.BUTTON.BORDER_RADIUS};\r\n padding: ${constants.STYLES.BUTTON.PADDING};\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n text-transform: uppercase;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n font-size: ${props => constants.STYLES.BUTTON_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n width: 100%;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n height: fit-content;\r\n border: none;\r\n white-space: normal;\r\n\r\n &:focus {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY};\r\n border: none;\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n }\r\n\r\n &:hover {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY_SEMI_DARKEN};\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n border: none;\r\n }\r\n\r\n &:active {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY_DARKEN};\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n border: none;\r\n }\r\n`;\r\n\r\nconst PrimaryButton: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default PrimaryButton;\r\n","import { Modal, Row } from \"antd\";\r\nimport React, { ComponentProps } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\nimport SecondaryButton from \"./SecondaryButton\";\r\nimport PrimaryButton from \"./PrimaryButton\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\nconst StyledModal = styled(Modal) & IAccessibility>`\r\n border-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n padding: 0;\r\n\r\n .ant-modal-content {\r\n border-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n }\r\n\r\n .ant-modal-header {\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n\r\n border-top-right-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n border-top-left-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n }\r\n\r\n .ant-modal-title {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-modal-body {\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n color: ${props => props.forecolor};\r\n border-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n padding: 32px;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n }\r\n\r\n .ant-modal-close-x {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\n\r\ntype Props = React.ComponentProps & {\r\n children: React.ReactNode;\r\n visible: boolean;\r\n};\r\n\r\nconst CustomModal = ({ okText, cancelText, children, visible, okButtonProps, title, onOk, onCancel, ...props }: Props) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {children}\r\n {cancelText && (\r\n \r\n {cancelText}\r\n \r\n )}\r\n {okText && (\r\n \r\n \r\n {okText}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default CustomModal;\r\n","import { Button, ButtonProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ButtonProps {\r\n underlined?: boolean;\r\n}\r\n\r\nconst StyledButton = styled(Button)`\r\n font-size: ${props => 1 * parseFloat(props.sizemode || \"1\")}rem;\r\n line-height: ${props => 1 * parseFloat(props.sizemode || \"1\")}rem;\r\n\r\n span {\r\n text-decoration: ${props => (props.underlined ? \"underline\" : \"\")};\r\n }\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n }\r\n`;\r\n\r\nconst LinkButton: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default LinkButton;\r\n","import { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\nconst StyledSpan = styled.span`\r\n color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n`;\r\n\r\nconst AsteriskSign = () => {\r\n const { theme } = useThemeContext();\r\n\r\n return *;\r\n};\r\n\r\nexport default AsteriskSign;\r\n","import { Input, InputProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends InputProps {}\r\n\r\nconst StyledInput = styled(Input)`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n border-color: ${constants.COLOR.INPUT};\r\n border-width: ${constants.STYLES.INPUT.BORDER_WIDTH};\r\n border-radius: ${constants.STYLES.INPUT.BORDER_RADIUS};\r\n padding: ${constants.STYLES.INPUT.PADDING};\r\n outline: none;\r\n box-shadow: none;\r\n background-color: ${props => props.backcolor};\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n outline: none;\r\n box-shadow: none;\r\n }\r\n\r\n ::placeholder {\r\n color: ${props => props.forecolor || constants.COLOR.INPUT};\r\n opacity: 1;\r\n }\r\n\r\n :-ms-input-placeholder {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n ::-ms-input-placeholder {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n @media screen and (max-width: 500px) {\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH / 2}px;\r\n }\r\n`;\r\n\r\nconst CustomInput: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomInput;\r\n","import React from \"react\";\r\nimport MaskedInput from \"antd-mask-input\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { constants } from \"utils\";\r\nimport { InputProps } from \"antd\";\r\n\r\ninterface IProps extends InputProps {\r\n mask: string;\r\n name?: string;\r\n onChange?: React.ChangeEventHandler;\r\n}\r\n\r\nconst StyledMaskedInput = styled(MaskedInput as any)`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n border-color: ${constants.COLOR.INPUT};\r\n border-width: ${constants.STYLES.INPUT.BORDER_WIDTH};\r\n border-radius: ${constants.STYLES.INPUT.BORDER_RADIUS};\r\n padding: ${constants.STYLES.INPUT.PADDING};\r\n outline: none;\r\n box-shadow: none;\r\n background-color: ${props => props.backcolor};\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n outline: none;\r\n box-shadow: none;\r\n }\r\n\r\n ::placeholder {\r\n color: ${props => props.forecolor || constants.COLOR.INPUT};\r\n opacity: 1;\r\n }\r\n\r\n :-ms-input-placeholder {\r\n color: ${props => props.forecolor || constants.COLOR.INPUT};\r\n }\r\n\r\n ::-ms-input-placeholder {\r\n color: ${props => props.forecolor || constants.COLOR.INPUT};\r\n }\r\n`;\r\n\r\nconst CustomMaskedInput = (props: IProps) => {\r\n const { theme } = useThemeContext();\r\n\r\n return ;\r\n};\r\n\r\nexport default CustomMaskedInput;\r\n","import { Switch, SwitchProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\nconst StyledSwitch = styled(Switch)`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n border: ${props => (props.backcolor ? `1px solid ${props.forecolor}` : \"none\")};\r\n height: ${constants.STYLES.SWITCH.HEIGHT};\r\n width: ${constants.STYLES.SWITCH.WIDTH};\r\n border-style: solid;\r\n border-width: ${constants.STYLES.SWITCH.BORDER_WIDTH};\r\n border-color: ${props => (props.backcolor ? `$ solid ${props.forecolor}` : constants.COLOR.INPUT)};\r\n background-color: transparent;\r\n\r\n .ant-switch-handle {\r\n width: ${constants.STYLES.SWITCH.CHECKED_DIMENSION};\r\n height: ${constants.STYLES.SWITCH.CHECKED_DIMENSION};\r\n\r\n &::before {\r\n background-color: ${props => props.backcolor || constants.COLOR.INPUT};\r\n }\r\n }\r\n\r\n &.ant-switch-checked {\r\n border-color: ${props => (props.backcolor ? `$ solid ${props.forecolor}` : constants.COLOR.PRIMARY)};\r\n\r\n .ant-switch-handle {\r\n &::before {\r\n background-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst StyledContainer = styled.div`\r\n display: flex;\r\n gap: ${constants.STYLES.SWITCH.GAP};\r\n align-items: center;\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n color: ${props => props.forecolor};\r\n`;\r\n\r\ninterface IProps extends SwitchProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst CustomSwitch = (props: IProps) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomSwitch;\r\n","import React from \"react\";\r\n\r\ntype Props = {\r\n version: string;\r\n};\r\n\r\nconst style = { fontWeight: 600, marginTop: 8 };\r\n\r\nconst AppVersion = ({ version }: Props) => (\r\n
\r\n {version}\r\n
\r\n);\r\n\r\nexport default AppVersion;\r\n","import { Col } from \"antd\";\r\nimport { ComponentProps } from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\ntype Props = ComponentProps;\r\n\r\nconst StyledCol = styled(Col)`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n margin: 0 auto;\r\n`;\r\n\r\nconst CenteredCol = (props: Props) => {props.children};\r\n\r\nexport default CenteredCol;\r\n","import React, { useContext, useReducer } from \"react\";\r\n\r\nconst defaultPersonalData = {\r\n email: \"\",\r\n firstName: \"\",\r\n idCard: \"\",\r\n lastName: \"\",\r\n locations: [],\r\n nfz: true,\r\n paidResearch: true,\r\n passport: \"\",\r\n pesel: \"\",\r\n phone: \"\",\r\n policy: \"\",\r\n referral: true,\r\n insurance: \"\"\r\n};\r\n\r\nconst defaultQuestionnaire = {\r\n bloodyWart: false,\r\n breastAilment: false,\r\n cancerInFamily: false,\r\n initialStudy: false,\r\n invalidUsg: false,\r\n retractionOfSkin: false\r\n};\r\n\r\nconst defaultType: IType = {\r\n type: \"nfz\",\r\n referral: false\r\n};\r\n\r\nconst data: IRegistrationData = {\r\n personalData: defaultPersonalData,\r\n selectedRegistration: null,\r\n homePage: null,\r\n questionnaire: defaultQuestionnaire,\r\n referralId: null,\r\n type: defaultType\r\n};\r\n\r\ntype RegistrationStateProviderProps = {\r\n children: React.ReactChild | React.ReactChild[];\r\n};\r\n\r\nconst RegistrationContext = React.createContext({\r\n data,\r\n dispatch: () => {}\r\n});\r\n\r\nconst registrationReducer = (state: IRegistrationData, action: IRegistrationAction): IRegistrationData => {\r\n switch (action.type) {\r\n case \"SET_PERSONAL_DATA\": {\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n ...action.payload\r\n }\r\n };\r\n }\r\n case \"SET_LOCATIONS\": {\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n locations: action.payload\r\n }\r\n };\r\n }\r\n case \"SET_PHONE_NUMBER\": {\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n phone: action.payload\r\n }\r\n };\r\n }\r\n case \"SET_CAMPAIGN_REGISTRATION\": {\r\n return {\r\n ...state,\r\n selectedRegistration: action.payload\r\n };\r\n }\r\n case \"SET_QUESTIONNAIRE\": {\r\n return {\r\n ...state,\r\n questionnaire: action.payload\r\n };\r\n }\r\n case \"SET_REFERRAL\": {\r\n return {\r\n ...state,\r\n referralId: action.payload\r\n };\r\n }\r\n case \"SET_TYPE\": {\r\n return {\r\n ...state,\r\n type: action.payload\r\n };\r\n }\r\n default: {\r\n throw new Error(`Unhandled action type: ${action}`);\r\n }\r\n }\r\n};\r\n\r\nexport const useRegistrationContext = () => useContext(RegistrationContext);\r\n\r\nexport const RegistrationProvider: React.FC = ({ children }: RegistrationStateProviderProps) => {\r\n const [registration, dispatch] = useReducer(registrationReducer, data);\r\n\r\n return {children};\r\n};\r\n","import React from \"react\";\r\nimport CustomCard from \"./CustomCard\";\r\nimport CustomDescription from \"./Description\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst YourDataTable = () => {\r\n const { data } = useRegistrationContext();\r\n\r\n const { t } = useTranslation(\"confirmStudyDate\");\r\n\r\n const { personalData } = data || {};\r\n\r\n return (\r\n \r\n \r\n {t(\"FIRST_NAME\")}: {personalData.firstName}\r\n \r\n \r\n {t(\"LAST_NAME\")}: {personalData.lastName}\r\n \r\n \r\n {t(\"EMAIL\")}: {personalData.email}\r\n \r\n \r\n {t(\"PHONE_NUMBER\")}: {personalData.phone}\r\n \r\n \r\n {t(\"ID\")}: {personalData.pesel || personalData.idCard || personalData.passport}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default YourDataTable;\r\n","import React from \"react\";\r\nimport CustomCard from \"./CustomCard\";\r\nimport CustomDescription from \"./Description\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { capitalizeFirstLetter, getDate, getDayName } from \"utils/helpers\";\r\n\r\nconst ScreeningsDetailsTable = () => {\r\n const { data } = useRegistrationContext();\r\n\r\n const { funding, campaignRegistration } = data?.selectedRegistration || {};\r\n\r\n const { t } = useTranslation(\"confirmStudyDate\");\r\n\r\n return (\r\n \r\n \r\n {t(\"FINANCING_TYPE\")}: {t(funding?.isPaid ? \"PAID_DATES\" : \"REIMBURSER_DATES\")}{\" \"}\r\n {funding?.isPaid ? `${(funding?.price || 0).toFixed(2)} PLN` : funding?.name}\r\n \r\n \r\n {t(\"PRICE\")}: {funding?.isPaid ? (funding?.price || 0).toFixed(2) : 0.0} PLN ({t(funding?.isPaid ? \"PAID_DATES\" : \"REIMBURSER_DATES\")}{\" \"}\r\n {funding?.isPaid ? `${(funding?.price || 0).toFixed(2)} PLN` : funding?.name})\r\n \r\n \r\n {t(\"DATE\")}: {getDate(campaignRegistration?.date || \"\")} ({capitalizeFirstLetter(getDayName(campaignRegistration?.date || \"\"))}){\" \"}\r\n {campaignRegistration?.startAt?.hours}:\r\n {(campaignRegistration?.startAt?.minutes || 999) < 10 ? `0${campaignRegistration?.startAt?.minutes}` : campaignRegistration?.startAt?.minutes}\r\n \r\n \r\n {t(\"LOCATION\")}: {capitalizeFirstLetter(campaignRegistration?.voivodeship || \"\")}, {campaignRegistration?.community},{\" \"}\r\n {campaignRegistration?.shortName}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ScreeningsDetailsTable;\r\n","import { ModalFuncProps } from \"antd/lib/modal\";\r\nimport { Modal } from \"antd\";\r\nimport { constants } from \"../../utils\";\r\n\r\nexport function displayConfirm(props: ModalFuncProps) {\r\n return Modal.confirm({\r\n className: \"custom-func-modal\",\r\n okButtonProps: {\r\n style: {\r\n backgroundColor: constants.COLOR.PRIMARY,\r\n border: \"none\"\r\n }\r\n },\r\n cancelButtonProps: {\r\n type: \"link\",\r\n style: {\r\n color: constants.COLOR.PRIMARY\r\n }\r\n },\r\n width: 600,\r\n ...props\r\n });\r\n}\r\n\r\nexport function displayWarning(props: ModalFuncProps) {\r\n Modal.warning({\r\n className: \"custom-func-modal\",\r\n okButtonProps: {\r\n style: {\r\n backgroundColor: constants.COLOR.PRIMARY,\r\n border: \"none\"\r\n }\r\n },\r\n width: 600,\r\n ...props\r\n });\r\n}\r\n\r\nexport function displaySuccess(props: ModalFuncProps) {\r\n Modal.success({\r\n className: \"custom-func-modal\",\r\n okButtonProps: {\r\n style: {\r\n backgroundColor: constants.COLOR.PRIMARY,\r\n border: \"none\"\r\n }\r\n },\r\n width: 600,\r\n ...props\r\n });\r\n}\r\n\r\nexport function displayError(props: ModalFuncProps) {\r\n Modal.error({\r\n className: \"custom-func-modal\",\r\n okButtonProps: {\r\n style: {\r\n backgroundColor: constants.COLOR.PRIMARY,\r\n border: \"none\"\r\n }\r\n },\r\n width: 600,\r\n ...props\r\n });\r\n}\r\n","import React, { ComponentProps, useState } from \"react\";\r\nimport { Row, Upload } from \"antd\";\r\nimport { RcFile, UploadChangeParam } from \"antd/lib/upload\";\r\nimport { UploadFile } from \"antd/lib/upload/interface\";\r\nimport { CustomModal } from \"../index\";\r\nimport { constants } from \"../../../utils\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { ExclamationCircleOutlined } from \"@ant-design/icons\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\n\r\ninterface IProps {\r\n children: React.ReactNode;\r\n handleChange: (fileList: UploadFile[]) => void;\r\n}\r\n\r\nconst IconWrapper = styled(Row)`\r\n width: 48px;\r\n height: 48px;\r\n\r\n span {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n svg {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n`;\r\n\r\nconst ReferralUpload = ({ children, handleChange }: IProps) => {\r\n const { t } = useTranslation([\"common\"]);\r\n const [modal, setModal] = useState, \"visible\">>(null);\r\n\r\n const isValidFileExtension = (file: RcFile) => [\"image/png\", \"image/jpg\", \"image/jpeg\", \"application/pdf\"].some(type => type === file.type);\r\n\r\n const { theme } = useThemeContext();\r\n\r\n const beforeUpload = (file: RcFile) => {\r\n if (!isValidFileExtension(file)) {\r\n setModal({\r\n title: t(\"common:INVALID_FILE_SEND_TITLE\"),\r\n children: t(\"common:INVALID_FILE_TYPE\"),\r\n closable: true\r\n });\r\n return Upload.LIST_IGNORE;\r\n }\r\n\r\n if (file.size > constants.THRESHOLDS.MAXIMUM_UPLOAD_FILE_SIZE) {\r\n setModal({\r\n title: t(\"common:INVALID_FILE_SEND_TITLE\"),\r\n children: t(\"common:INVALID_FILE_SIZE\"),\r\n closable: true\r\n });\r\n return Upload.LIST_IGNORE;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const dummyRequest = ({ onSuccess }: any) => {\r\n setTimeout(() => {\r\n onSuccess(\"ok\");\r\n }, 0);\r\n };\r\n\r\n const onChange = ({ fileList }: UploadChangeParam) => handleChange(fileList);\r\n\r\n return (\r\n <>\r\n \r\n {children}\r\n \r\n {modal != null && (\r\n setModal(null)} {...modal}>\r\n \r\n \r\n \r\n \r\n {modal.children}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ReferralUpload;\r\n","import { AxiosError } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { CustomFuncModal } from \"../components/common\";\r\nimport { notification } from \"antd\";\r\nimport { Routes } from \"./index\";\r\n\r\nconst interceptApiError = (error: AxiosError | null, t: TFunction, history: any) => {\r\n if (error?.response?.status === 503) {\r\n notification.error({\r\n message: t(\"common:EXTERNAL_SERVICE_UNAVAILABLE\"),\r\n description: t(\"common:EXTERNAL_SERVICE_UNAVAILABLE_INFO\")\r\n });\r\n } else if (error?.response?.status === 401) {\r\n CustomFuncModal.displayError({\r\n title: t(\"common:SESSION_EXPIRED\"),\r\n content: t(\"common:SESSION_EXPIRED_INFO\"),\r\n okText: t(\"common:BACK_TO_PERSONAL_DATA\"),\r\n onCancel: () => history?.push(Routes.FORM_VIEW),\r\n onOk: () => history?.push(Routes.FORM_VIEW)\r\n });\r\n } else {\r\n notification.error({\r\n message: t(\"common:UNKNOWN_ERROR_OCCURED\"),\r\n description: t(\"common:UNKNOWN_ERROR_OCCURED_INFO\")\r\n });\r\n }\r\n};\r\n\r\nexport { interceptApiError };\r\n","const invitationLinkRegex = /\\/invitation\\/([a-zA-Z0-9]+)$/;\r\n\r\nexport const getInvitationLink = () => {\r\n const match = window.location.pathname.match(invitationLinkRegex);\r\n return match ? match[1] : null;\r\n};\r\n","export const customValidator = (validator: Function, value: string, required: boolean, translation: string) => {\r\n if (!required) return Promise.resolve();\r\n\r\n return validator(value) ? Promise.resolve() : Promise.reject(new Error(translation));\r\n};","import styled from \"styled-components\";\r\nimport { Button, ButtonProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ButtonProps, IAccessibility {\r\n bordered?: string;\r\n}\r\n\r\nconst StyledButton = styled(Button)`\r\n font-size: ${props => 1 * parseFloat(props.sizemode || \"1\")}rem;\r\n line-height: ${props => 1 * parseFloat(props.sizemode || \"1\")}rem;\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n background-color: ${props => props.backcolor};\r\n border: ${props => (props.bordered === \"true\" ? `1px solid ${constants.COLOR.TEXT}` : null)};\r\n border-radius: 0px;\r\n }\r\n`;\r\n\r\nconst AccessibilityButton: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default AccessibilityButton;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { LinkButton } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants, storage } from \"utils\";\r\nimport dayjs from \"dayjs\";\r\n\r\nconst LanguageSelector: React.VFC = props => {\r\n const { i18n } = useTranslation([\"example\"]);\r\n\r\n const handleChangeLanguage = (language: string): void => {\r\n i18n.changeLanguage(language);\r\n dayjs.locale(language);\r\n storage.setItem(constants.STORAGE_KEYS.LANGUAGE, language);\r\n };\r\n\r\n return (\r\n
\r\n handleChangeLanguage(constants.LANGUAGES.EN)}>\r\n EN\r\n \r\n handleChangeLanguage(constants.LANGUAGES.PL)}>\r\n PL\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default LanguageSelector;\r\n","import styled from \"styled-components\";\r\nimport AccessibilityButtons from \"./AccessibilityButtons\";\r\nimport LanguageSelector from \"./LanguageSelector\";\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n margin: 0 auto;\r\n\r\n .container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-wrap: wrap;\r\n }\r\n\r\n @media screen and (min-width: 800px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst MobileAccessbilityContainer: React.VFC = () => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default MobileAccessbilityContainer;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { LinkButton } from \"components/common\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants, storage } from \"utils\";\r\nimport { AccessibilityButton } from \"./\";\r\n\r\nconst AccessibilityButtons: React.VFC = props => {\r\n const { dispatch } = useThemeContext();\r\n const { t } = useTranslation([\"common\"]);\r\n\r\n const changeContrast = (forecolor: AccessibilityMode, backcolor: AccessibilityMode): void => {\r\n storage.setItem(constants.STORAGE_KEYS.CONTRAST.FORECOLOR, forecolor);\r\n storage.setItem(constants.STORAGE_KEYS.CONTRAST.BACKCOLOR, backcolor);\r\n\r\n dispatch({\r\n type: \"SET_THEME\",\r\n payload: {\r\n forecolor,\r\n backcolor,\r\n sizemode: \"\"\r\n }\r\n });\r\n };\r\n\r\n const changeSize = (sizemode: AccessibilitySize): void => {\r\n storage.setItem(constants.STORAGE_KEYS.SIZE, sizemode);\r\n\r\n dispatch({\r\n type: \"SET_SIZE\",\r\n payload: {\r\n forecolor: \"\",\r\n backcolor: \"\",\r\n sizemode\r\n }\r\n });\r\n };\r\n\r\n const resetAccesibilityMode = (): void => {\r\n changeSize(\"1\");\r\n changeContrast(\"\", \"\");\r\n };\r\n\r\n return (\r\n
\r\n
\r\n changeSize(\"1\")}>\r\n A\r\n \r\n changeSize(\"1.2\")}>\r\n A+\r\n \r\n changeSize(\"1.6\")}>\r\n A++\r\n \r\n
\r\n
\r\n changeContrast(\"white\", \"black\")} forecolor=\"white\" backcolor=\"black\" sizemode=\"\" bordered=\"true\">\r\n A\r\n \r\n changeContrast(\"black\", \"white\")} forecolor=\"black\" backcolor=\"white\" sizemode=\"\" bordered=\"true\">\r\n A\r\n \r\n changeContrast(\"pink\", \"black\")} forecolor=\"pink\" backcolor=\"black\" sizemode=\"\" bordered=\"true\">\r\n A\r\n \r\n changeContrast(\"black\", \"pink\")} forecolor=\"black\" backcolor=\"pink\" sizemode=\"\" bordered=\"true\">\r\n A\r\n \r\n
\r\n
\r\n \r\n {t(\"common:RESET_ACCESSIBILITY\")}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AccessibilityButtons;\r\n","import styled from \"styled-components\";\r\nimport AccessibilityButtons from \"./AccessibilityButtons\";\r\nimport LanguageSelector from \"./LanguageSelector\";\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n width: 100%;\r\n\r\n .container {\r\n display: flex;\r\n }\r\n\r\n @media screen and (max-width: 800px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst AccessibilityContainer: React.VFC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AccessibilityContainer;\r\n","import React, { useContext } from \"react\";\r\n\r\ninterface AppVersionContext {\r\n currentVersion: string;\r\n}\r\n\r\nconst VersionContext = React.createContext({\r\n currentVersion: `v. 2.81.335b16f8, 31.03.2025 PROD`\r\n});\r\n\r\nexport const useAppVersion = () => useContext(VersionContext);\r\n","export default __webpack_public_path__ + \"static/media/logo_portal_rejestracji.1fb65487.svg\";","import { LayoutProps, Layout } from \"antd\";\r\nimport { Content, Header } from \"antd/lib/layout/layout\";\r\nimport AccessibilityContainer from \"components/features/accessibility/AccessibilityContainer\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { useAppVersion } from \"../../contexts/appVersion/AppVersionContext\";\r\nimport styled from \"styled-components\";\r\nimport { constants, GlobalStyle } from \"utils\";\r\nimport logo from \"../../assets/images/logo_portal_rejestracji.svg\";\r\nimport { AppVersion } from \"../common\";\r\nimport { MobileAccessbilityContainer } from \"components/features/accessibility\";\r\n\r\ninterface IProps extends LayoutProps {}\r\n\r\nconst StyledLayout = styled(Layout)`\r\n min-height: 100vh;\r\n padding: 25px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n .app-version {\r\n display: flex;\r\n justify-content: flex-end;\r\n }\r\n\r\n &,\r\n .ant-layout-header,\r\n .ant-layout-content,\r\n .ant-layout-footer {\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n\r\n &,\r\n a {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n }\r\n }\r\n\r\n .ant-layout-content,\r\n .ant-layout-footer {\r\n width: 100%;\r\n padding-top: 50px;\r\n }\r\n\r\n @media screen and (max-width: 992px) {\r\n padding: 15px;\r\n\r\n .ant-layout-header {\r\n flex-direction: column;\r\n }\r\n\r\n .ant-layout-footer {\r\n display: flex;\r\n flex-direction: column;\r\n padding: 35px 0px;\r\n }\r\n }\r\n`;\r\n\r\nconst StyledLink = styled.a`\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst StyledHeader = styled(Header)`\r\n display: flex;\r\n justify-content: flex-end;\r\n flex-direction: column;\r\n align-items: center;\r\n position: relative;\r\n padding: 0px;\r\n height: auto;\r\n padding-bottom: 16px;\r\n\r\n @media screen and (max-width: 1500px) {\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst StyledLogo = styled.img`\r\n width: 353px;\r\n height: 58px;\r\n\r\n @media screen and (max-width: 800px) {\r\n width: 250px;\r\n height: 40px;\r\n }\r\n`;\r\n\r\nconst MainLayout: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n const { currentVersion } = useAppVersion();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {process.env?.NODE_ENV !== \"production\" && }\r\n {props.children}\r\n {/*
*/}\r\n {/* zakomentowana sekcja nawigacji która pozwala w debugowaniu, TODO usunąć gdy nie będzie potrzebna */}\r\n {/* \r\n Start\r\n \r\n \r\n Dane osobowe\r\n \r\n \r\n Ankieta\r\n \r\n \r\n Termin\r\n \r\n \r\n Potwierdzenie\r\n \r\n \r\n Skan skierowania\r\n \r\n \r\n Oczekiwanie\r\n \r\n \r\n Post-rejestracja\r\n \r\n \r\n Płatność-sukces\r\n \r\n \r\n Płatność-niepowodzenie\r\n */}\r\n\r\n {/*
*/}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MainLayout;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends BasicProps {\r\n time: number;\r\n allowColorizeTime?: boolean;\r\n}\r\n\r\nconst StyledContainer = styled.div`\r\n color: ${props => (props.time < 60 && props.allowColorizeTime ? \"red\" : props.forecolor || constants.COLOR.TEXT)};\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n`;\r\n\r\nconst StudyDateCounter: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children} {props.time}s\r\n \r\n );\r\n};\r\n\r\nexport default StudyDateCounter;\r\n","import axios, { AxiosError, AxiosResponse } from \"axios\";\r\nimport {constants} from \"./utils\";\r\nimport {applicationNonce, applicationTimestamp} from \"./utils/security\";\r\n\r\nexport const api = axios.create({\r\n baseURL: `/api/iris-registration`\r\n});\r\n\r\napi.interceptors.request.use(config => {\r\n config.headers['X-Authorization'] = `Bearer ${sessionStorage.getItem(constants.STORAGE_KEYS.SESSION_TOKEN) || \"none\"}`;\r\n config.headers['X-Timestamp'] = applicationTimestamp;\r\n config.headers['X-Nonce'] = applicationNonce;\r\n\r\n return config;\r\n});\r\n\r\napi.interceptors.response.use(\r\n (response: AxiosResponse) => Promise.resolve(response),\r\n (error: AxiosError) => Promise.reject(error)\r\n);\r\n","import { api } from \"api\";\r\n\r\nexport const getProvinces = () => api.get(\"/public/provinces\");\r\n\r\nexport const getDistricts = (provinceTID?: number) => api.get(`/public/districts`, { params: { provinceTID } });\r\n\r\nexport const getCommunities = (provinceTID?: number, districtPOW?: number) => api.get(`/public/communities`, { params: { provinceTID, districtPOW } });\r\n\r\ntype GetCitiesByTerritoryRequest = {\r\n provinceTid: number;\r\n districtPow: number;\r\n communityGmi: number;\r\n};\r\n\r\nexport const findAllCitiesByTerritory = (request: GetCitiesByTerritoryRequest) => api.get(\"/public/find-all-cities-per-territory\", { params: { ...request } });\r\n","import { api } from \"api\";\r\n\r\nexport const findScreeningsDates = (locations: ILocation[], pesel: string, paidResearch: boolean, nfz: boolean, token: string, accessCode: string | null) =>\r\n api.post(\"/public/screenings\", { locations, pesel, paidResearch, nfz, token, accessCode });\r\n\r\nexport const sendConfirmationCode = (registrationId: number, phoneNumber: string, token: string) =>\r\n api.post(`/reservation/${registrationId}`, { phoneNumber, token }).then(res => res.data);\r\n\r\nexport const verifySmsCode = (code: string, request: ConfirmRegistrationRequest) =>\r\n api.post(`/reservation/verify-sms-code`, {\r\n code,\r\n ...request\r\n });\r\n\r\nexport const confirmPayment = (paymentId: string) =>\r\n new Promise((resolve, reject) => {\r\n api.post(`/payments/${paymentId}/confirm`)\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n\r\nexport const blockSindgleCampaignRegistration = (registrationToken: string, token: string) =>\r\n new Promise((resolve, reject) => {\r\n api.post(`/reservation/${registrationToken}/block`, { token })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n\r\nexport const payForCampaignRegistration = (id: string, request: ConfirmRegistrationRequest) =>\r\n api.post(`/reservation/${id}/pay`, request).then(res => res.data);\r\n\r\nexport const getScreeningInformation = (registrationToken: string) =>\r\n new Promise((resolve, reject) => {\r\n api.get(`/screenings/${registrationToken}/info`)\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n\r\nexport const updateRegistrationReferral = (registrationToken: string, referralId: string, token: string) =>\r\n new Promise((resolve, reject) => {\r\n api.patch(`/screenings/${registrationToken}/referral`, { referralId, token })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n","import { api } from \"api\";\r\n\r\nexport const createPhoneContactRequest = (request: CreatePhoneContactRequest, token: string) => api.post('/phone-contact', { ...request, token }) \r\n\r\nexport const getAll = () => api.get('/phone-contact') \r\n","import { api } from \"api\";\r\n\r\nexport const add = (formData: FormData) => api.post(\"/referral\", formData).then(res => res.data);\r\n","import {api} from \"../api\";\r\n\r\nexport const validateCaptchaToken = (token: string): Promise => new Promise((resolve, reject) => {\r\n api\r\n .post(\"/security/captcha\", { token })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n})","import { api } from \"api\";\r\n\r\nexport const isPatientAlreadyRegistered = (pesel: string, passport: string, idCard: string, token: string) =>\r\n api.post(\"/public/campaign\", { pesel, passport, idCard, token });\r\n","import { api } from \"../api\";\r\n\r\nexport const keepQueueSessionAlive = (connectionId: string) =>\r\n new Promise((resolve, reject) =>\r\n api\r\n .post(`/queue/session`, { connectionId })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject)\r\n );\r\n","import { api } from \"api\";\r\n\r\nexport const getFundings = () => api.get(\"/fundings\").then(res => res.data);\r\n","import { api } from \"api\";\r\n\r\nexport const verifyInvitation = (request: VerifyInvitation, token: string) =>\r\n new Promise((resolve, reject) => {\r\n api.post('/public/invitation', { ...request, token })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n\r\n export const verifyPortalRegistration = (request: AccessCodeRequest, token: string) =>\r\n new Promise((resolve, reject) => {\r\n api.post('/public/invitation/portalRegistration', { ...request, token })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n","import { Col, Form, Row } from \"antd\";\r\nimport {\r\n CustomCard,\r\n CustomModal,\r\n CustomDescription,\r\n CustomFormItem,\r\n CustomMaskedInput,\r\n Header,\r\n PrimaryButton,\r\n SecondaryButton,\r\n YourDataTable,\r\n ScreeningsDetailsTable\r\n} from \"components/common\";\r\nimport { StudyDateCounter } from \"components/features/counter\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { hasPhoneNumber } from \"utils/helpers\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { useRegistrationContext } from \"../../contexts/registration/registrationContext\";\r\nimport { capitalizeFirstLetter, getDate, getDayName } from \"../../utils/helpers\";\r\nimport { ComponentProps, useEffect, useState } from \"react\";\r\nimport * as dal from \"../../dal\";\r\nimport { AxiosError } from \"axios\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { interceptApiError } from \"../../utils/interceptors\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { ExclamationCircleOutlined, LeftOutlined } from \"@ant-design/icons\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\nconst StyledContainer = styled.div`\r\n style={{ maxWidth: \"50%\", margin: \"0 auto\" }}\r\n max-width: 50%;\r\n margin: 0 auto;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n @media screen and (max-width: 992px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nconst IconWrapper = styled(Row)`\r\n width: 48px;\r\n height: 48px;\r\n\r\n span {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n svg {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n`;\r\n\r\nexport default function ConfirmStudyDateView() {\r\n const history = useHistory();\r\n const { t } = useTranslation([\"common\", \"confirmStudyDate\"]);\r\n const { data } = useRegistrationContext();\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const [timeDeadline, setTimeDeadline] = useState(constants.TIMEOUTS.MAXIMUM_TIME_TO_CONFIRM_STUDY_DATE);\r\n const [displaySmsConfirmation, setSmsConfirmation] = useState(false);\r\n const [isRegisteringPatient, setPatientRegistering] = useState(false);\r\n const [isSendingConfirmationCode, setSendingConfirmationCode] = useState(false);\r\n const [modal, setModal] = useState, \"visible\">>(null);\r\n\r\n const { funding, campaignRegistration } = data?.selectedRegistration || {};\r\n const { personalData } = data || {};\r\n\r\n const { theme } = useThemeContext();\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setTimeDeadline(prev => {\r\n const time = prev - 1;\r\n\r\n if (isNaN(time)) return prev;\r\n\r\n if (time <= 0) {\r\n history.push(Routes.FORM_VIEW);\r\n return prev;\r\n } else {\r\n return time;\r\n }\r\n });\r\n }, 1000);\r\n\r\n return () => clearInterval(timer);\r\n }, []);\r\n\r\n useEffect(() => {\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.BLOCK_SELECTED_DATE).then(token => {\r\n dal.screening\r\n .blockSindgleCampaignRegistration(data.selectedRegistration?.campaignRegistration?.token || \"\", token)\r\n .catch(error => interceptApiError(error, t, history));\r\n });\r\n }, []);\r\n\r\n const handleFailedSendConfirmationCode = (error: AxiosError) => {\r\n if (error.response?.data === \"INVALID_CAMPAIGN_REGISTRATION\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:CONFIRMATION_ERROR\"),\r\n children: t(\"confirmStudyDate:CAMPAIGN_NOT_FOUND\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:BACK_TO_DATES_LIST\"),\r\n onOk: () => history.push(Routes.STUDY_DATE)\r\n });\r\n }\r\n\r\n if (error.response?.data === \"PATIENT_REGISTERED\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:DATE_NOT_AVAILABLE\"),\r\n children: t(\"confirmStudyDate:DATE_NOT_AVAILABLE_INFO\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:BACK_TO_DATES_LIST\"),\r\n onOk: () => history.push(Routes.STUDY_DATE)\r\n });\r\n }\r\n\r\n if (error.response?.data === \"INVALID_REGISTRATION_CODE\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:BAD_CONFIRMATION_CODE\"),\r\n children: t(\"confirmStudyDate:BAD_CONFIRMATION_CODE_INFO\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:GENERATE_NEW_CODE\"),\r\n onOk: () => sendConfirmationCode()\r\n });\r\n }\r\n\r\n if (error.response?.data === \"CODE_HAS_BEEN_USED\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:CONFIRMATION_CODE_IS_USED\"),\r\n children: t(\"confirmStudyDate:CONFIRMATION_CODE_IS_USED_INFO\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:GENERATE_NEW_CODE\"),\r\n onOk: () => sendConfirmationCode()\r\n });\r\n }\r\n\r\n if (error.response?.data === \"CODE_HAS_EXPIRED\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:CONFIRMATION_CODE_EXPIRED\"),\r\n children: t(\"confirmStudyDate:CONFIRMATION_CODE_EXPIRED_INFO\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:GENERATE_NEW_CODE\"),\r\n onOk: () => sendConfirmationCode()\r\n });\r\n }\r\n };\r\n\r\n const sendConfirmationCode = () => {\r\n setSendingConfirmationCode(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.CONFIRM_DATE)\r\n .then(token => {\r\n dal.screening\r\n .sendConfirmationCode(data.selectedRegistration?.campaignRegistration?.registrationId || 0, data.personalData?.phone || \"\", token)\r\n .then(() => setSmsConfirmation(true))\r\n .catch(handleFailedSendConfirmationCode)\r\n .finally(() => setSendingConfirmationCode(false));\r\n })\r\n .catch(() => setSendingConfirmationCode(false));\r\n };\r\n\r\n const registerNewPatient = (values: any) => {\r\n setPatientRegistering(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.SEND_CONFIRMATION_CODE)\r\n .then(token => {\r\n const { selectedRegistration, referralId, type } = data || {};\r\n\r\n dal.screening\r\n .verifySmsCode(values.code, {\r\n registrationId: selectedRegistration?.campaignRegistration?.registrationId || 0,\r\n referralId: referralId || \"\",\r\n privateFunding: type.type === \"paid\",\r\n patient: personalData,\r\n token\r\n })\r\n .then(() => history.push(Routes.SUCCESSFUL_PATIENT_REGISTRATION))\r\n .catch(handleFailedSendConfirmationCode)\r\n .finally(() => setPatientRegistering(false));\r\n })\r\n .catch(() => setPatientRegistering(false));\r\n };\r\n\r\n return (\r\n \r\n
{t(\"confirmStudyDate:TITLE\")}
\r\n {t(\"confirmStudyDate:DESCRIPTION\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"confirmStudyDate:CONFIRM\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"common:BACK_AND_CHANGE_PERSONAL_DATA\")}\r\n \r\n \r\n \r\n \r\n {hasPhoneNumber(data.personalData?.phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n 0 ? timeDeadline : 0} allowColorizeTime>\r\n {t(\"confirmStudyDate:TIME_FOR_DECISION\")}\r\n \r\n setSmsConfirmation(false)}>\r\n \r\n \r\n \r\n \r\n {t(\"confirmStudyDate:CONFIRM_YOUR_RESERVATION\")}\r\n {t(\"confirmStudyDate:CONFIRM_YOUR_RESERVATION_INFO\")}\r\n \r\n 0 ? timeDeadline : 0}>\r\n {t(\"confirmStudyDate:TIME_FOR_DECISION\")}:\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {t(\"confirmStudyDate:CONFIRM_RESERVATION\")}\r\n \r\n \r\n \r\n
\r\n
\r\n {modal != null && (\r\n setModal(null)} {...modal}>\r\n \r\n \r\n \r\n \r\n {modal.children}\r\n \r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import { useEffect, EffectCallback, DependencyList, useRef } from \"react\";\r\n\r\n/**\r\n * This hook gets called only when the dependencies change but not during initial render.\r\n *\r\n * @param {EffectCallback} effect The `useEffect` callback function.\r\n * @param {DependencyList} deps An array of dependencies.\r\n *\r\n * @example\r\n * ```\r\n * useNonInitialEffect(()=>{\r\n * alert(\"Dependency changed!\");\r\n * },[dependency]);\r\n * ```\r\n */\r\nconst useNonInitialEffect = (effect: EffectCallback, deps?: DependencyList) => {\r\n const initialRender = useRef(true);\r\n\r\n useEffect(() => {\r\n let effectReturns: any;\r\n\r\n if (initialRender.current) {\r\n initialRender.current = false;\r\n } else {\r\n effectReturns = effect();\r\n }\r\n\r\n if (effectReturns && typeof effectReturns === \"function\") {\r\n return effectReturns;\r\n }\r\n }, deps);\r\n};\r\n\r\nexport default useNonInitialEffect;\r\n","import { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { interceptApiError } from \"utils/interceptors\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { invitation } from \"dal\";\r\nimport { useInvitation } from \"hooks\";\r\nimport { getInvitationLink } from \"utils/invitation\";\r\n\r\nconst accessCode = getInvitationLink();\r\n\r\nconst useInvitationLink = () => {\r\n const { push } = useHistory();\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n const { t } = useTranslation();\r\n const history = useHistory();\r\n const { verify, loading: isLoadingInvitation } = useInvitation();\r\n\r\n const [loading, setLoading] = useState(Boolean(accessCode));\r\n\r\n useEffect(() => {\r\n if (executeRecaptcha && accessCode) {\r\n setLoading(true);\r\n verifyAccess();\r\n } else {\r\n setLoading(false);\r\n }\r\n }, [executeRecaptcha, accessCode]);\r\n\r\n const verifyAccess = () => {\r\n if (!accessCode || !executeRecaptcha) {\r\n return;\r\n }\r\n\r\n executeRecaptcha(constants.CAPTCHA_ACTIONS.INVITATION)\r\n .then(token => {\r\n if (!token) throw new Error(\"Recaptcha token is missing\");\r\n\r\n return invitation.verifyPortalRegistration({ accessCode }, token);\r\n })\r\n .then(response => {\r\n if (!response.accessCodeExists) {\r\n push(Routes.FORM_VIEW); // Podany accessCode nie istnieje -> formularz\r\n } else if (response.accessCodeExists && response.campaignIdExists && response.personalDataIdExists) {\r\n push(Routes.INVITATION); // Wszystkie dane istnieją, należy podać prawidłową datę urodzenia -> formularz z wypełnionymi danymi\r\n } else if (response.accessCodeExists && response.campaignIdExists && !response.personalDataIdExists) {\r\n return verify({ accessCode, birthAt: \"\" }); // Brak ID pacjenta przkierowujemy od razu do formularza z wypełnioną kampanią\r\n } else if (response.accessCodeExists && !response.campaignIdExists && !response.personalDataIdExists) {\r\n push(Routes.FORM_VIEW); // Brak kampanii i danych osobowych -> formularz\r\n } else if (response.accessCodeExists && !response.campaignIdExists && response.personalDataIdExists) {\r\n push(Routes.INVITATION); // Brak kampanii, ale są dane osobowe, należy podać prawidłową datę urodzenia -> formularz z wypłenionymi danymi pacjenta\r\n }\r\n })\r\n .catch(e => {\r\n interceptApiError(e, t, history);\r\n })\r\n .finally(() => setLoading(false));\r\n };\r\n\r\n return { loading: loading || isLoadingInvitation };\r\n};\r\n\r\nexport default useInvitationLink;\r\n","import { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { useCallback } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Routes } from \"utils\";\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nconst useSuccessInvitation = () => {\r\n const { dispatch } = useRegistrationContext();\r\n const { push } = useHistory();\r\n\r\n return useCallback(\r\n ({ patient, territory, isPrivate }: IInvitationResponse) => {\r\n const shouldAddLocation = Boolean(territory);\r\n\r\n const {\r\n city = \"\",\r\n postalCode = \"\",\r\n community = { name: \"\", optionalId: 0 },\r\n district = { name: \"\", optionalId: 0 },\r\n province = { name: \"\", optionalId: 0 }\r\n } = territory ?? {};\r\n\r\n const defaultPersonalData: IPersonalData = {\r\n email: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n phone: \"\",\r\n pesel: \"\",\r\n locations: shouldAddLocation\r\n ? [\r\n {\r\n id: uuid(),\r\n city,\r\n postalCode,\r\n community: community.name,\r\n communityId: community.optionalId,\r\n district: district.name,\r\n districtId: district.optionalId,\r\n province: province.name,\r\n provinceId: province.optionalId\r\n }\r\n ]\r\n : [],\r\n idCard: \"\",\r\n insurance: \"\",\r\n nfz: !isPrivate,\r\n paidResearch: isPrivate,\r\n passport: \"\",\r\n policy: \"\",\r\n referral: false\r\n };\r\n\r\n const type: IType = {\r\n referral: false,\r\n type: isPrivate ? \"paid\" : \"nfz\"\r\n };\r\n\r\n if (!patient) {\r\n dispatch({ type: \"SET_PERSONAL_DATA\", payload: defaultPersonalData } as IRegistrationAction);\r\n dispatch({ type: \"SET_TYPE\", payload: type });\r\n push(Routes.FORM_VIEW);\r\n return;\r\n }\r\n\r\n const { email, pesel, firstName, lastName, mobileNumber, phoneNumber } = patient;\r\n\r\n dispatch({\r\n type: \"SET_PERSONAL_DATA\",\r\n payload: {\r\n ...defaultPersonalData,\r\n email,\r\n firstName,\r\n lastName,\r\n phone: mobileNumber || phoneNumber || \"\",\r\n pesel\r\n }\r\n } as IRegistrationAction);\r\n dispatch({ type: \"SET_TYPE\", payload: type });\r\n\r\n push(Routes.FORM_VIEW);\r\n },\r\n [dispatch, push]\r\n );\r\n};\r\n\r\nexport default useSuccessInvitation;\r\n","import { useState } from \"react\"\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { interceptApiError } from \"utils/interceptors\";\r\nimport useSuccessInvitation from \"./useSuccessInvitation\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { constants } from \"utils\";\r\nimport * as dal from 'dal';\r\n\r\nconst useInvitation = () => {\r\n const { t } = useTranslation();\r\n\r\n const history = useHistory();\r\n\r\n const [loading, setLoading] = useState(false);\r\n\r\n const onSuccess = useSuccessInvitation();\r\n\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const verify = (request: VerifyInvitation) => {\r\n setLoading(true);\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.VERIFY_INVITATION)\r\n .then(token => {\r\n dal.invitation\r\n .verifyInvitation(request, token)\r\n .then(onSuccess)\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => setLoading(false));\r\n })\r\n .catch(() => setLoading(false));\r\n };\r\n\r\n return { loading, verify };\r\n}\r\n\r\nexport default useInvitation;","import { useReducer } from \"react\";\r\n\r\ntype Location = \"province\" | \"district\" | \"community\" | \"city\";\r\n\r\ntype Payload = { id: number; name: string; isLoading: boolean };\r\n\r\ntype PayloadWithoutId = Omit;\r\n\r\ntype Territory = {\r\n [K in Location]: K extends \"city\" ? PayloadWithoutId : Payload;\r\n};\r\n\r\ntype UpdateTerritory = {\r\n [K in Location]: K extends \"city\" ? Partial : Partial;\r\n};\r\n\r\ntype Action =\r\n | { type: \"province\"; payload: Partial }\r\n | { type: \"district\"; payload: Partial }\r\n | { type: \"community\"; payload: Partial }\r\n | { type: \"city\"; payload: Partial }\r\n | { type: \"dynamic\"; payload: Partial };\r\n\r\ntype AnyObject = { [key: string]: any };\r\n\r\nfunction mergeObjects>(obj1: T, obj2: U): T {\r\n const result: T = obj1;\r\n\r\n for (const key in obj2) {\r\n if (obj2.hasOwnProperty(key) && obj2[key] !== undefined && key in obj1) {\r\n (result as AnyObject)[key] = obj2[key];\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nconst reducer = (state: Territory, action: Action) => {\r\n switch (action.type) {\r\n case \"province\":\r\n return { ...state, province: mergeObjects(state.province, action.payload) };\r\n case \"district\":\r\n return { ...state, district: mergeObjects(state.district, action.payload) };\r\n case \"community\":\r\n return { ...state, community: mergeObjects(state.community, action.payload) };\r\n case \"city\":\r\n return { ...state, city: mergeObjects(state.city, action.payload) };\r\n case \"dynamic\":\r\n const newState = { ...state };\r\n\r\n (Object.keys(action.payload) as Location[]).forEach(key => {\r\n const value = action.payload[key];\r\n const oldValue = newState[key];\r\n\r\n if (value) {\r\n newState[key] = mergeObjects(oldValue, value) as Payload;\r\n } else {\r\n newState[key] = oldValue as Payload;\r\n }\r\n });\r\n\r\n return newState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst useTerritory = () => {\r\n const [state, dispatch] = useReducer(reducer, {\r\n province: {\r\n isLoading: false,\r\n id: 0,\r\n name: \"\"\r\n },\r\n district: {\r\n isLoading: false,\r\n id: 0,\r\n name: \"\"\r\n },\r\n community: {\r\n isLoading: false,\r\n id: 0,\r\n name: \"\"\r\n },\r\n city: {\r\n isLoading: false,\r\n name: \"\"\r\n }\r\n });\r\n\r\n const updateProvince = (payload: Partial) => dispatch({ type: \"province\", payload });\r\n const updateCity = (payload: Partial) => dispatch({ type: \"city\", payload });\r\n const updateDistrict = (payload: Partial) => dispatch({ type: \"district\", payload });\r\n const updateCommunity = (payload: Partial) => dispatch({ type: \"community\", payload });\r\n const updateTerritory = (payload: Partial) => dispatch({ type: \"dynamic\", payload });\r\n\r\n return { territory: state, updateProvince, updateCity, updateDistrict, updateCommunity, updateTerritory };\r\n};\r\n\r\nexport default useTerritory;\r\n","import { useState, useEffect } from \"react\";\r\nimport { Col, Row, Form, Select } from \"antd\";\r\nimport { CustomSelect, PrimaryButton, SecondaryButton, CustomFormItem, CustomMaskedInput, CenteredCol } from \"components/common\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport * as dal from \"dal\";\r\nimport { useTerritory, useNonInitialEffect } from \"hooks\";\r\nimport { LabeledValue } from \"antd/lib/select\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants } from \"utils\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { interceptApiError } from \"../../../utils/interceptors\";\r\nimport styled from \"styled-components\";\r\n\r\ninterface IProps {\r\n onFinish: (location: ILocation) => void;\r\n onVisibilityChange: (isVisible: boolean) => void;\r\n}\r\n\r\nconst StyledForm = styled(Form)<{ theme: IAccessibility }>`\r\n margin-left: -32px;\r\n margin-right: -32px;\r\n padding: 32px;\r\n border-radius: ${constants.STYLES.BUTTON.BORDER_RADIUS};\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 133%;\r\n }\r\n`;\r\n\r\nconst emptyLocation = { id: 0, name: \"\", isLoading: false };\r\nconst emptyCityLocation = { name: \"\", isLoading: false };\r\n\r\nconst AddLocationForm = ({ onFinish, onVisibilityChange }: IProps) => {\r\n const [form] = Form.useForm();\r\n const history = useHistory();\r\n const { theme } = useThemeContext();\r\n const { t, i18n } = useTranslation([\"personalData\", \"common\"]);\r\n\r\n const { Option } = Select;\r\n\r\n const [provinces, setProvinces] = useState([]);\r\n const [districts, setDistricts] = useState([]);\r\n const [communities, setCommunites] = useState([]);\r\n const [foundLocations, setFoundLocations] = useState([]);\r\n\r\n const { territory, updateCity, updateCommunity, updateDistrict, updateProvince, updateTerritory } = useTerritory();\r\n\r\n const { INPUT_MAX_LENGTH } = constants.THRESHOLDS;\r\n\r\n useEffect(() => {\r\n fetchProvinces();\r\n }, []);\r\n\r\n const fetchProvinces = () => {\r\n updateProvince({ isLoading: true });\r\n\r\n dal.territory\r\n .getProvinces()\r\n .then(res => setProvinces(res.data))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => updateProvince({ isLoading: false }));\r\n };\r\n\r\n const fetchDistricts = () => {\r\n updateDistrict({ isLoading: true });\r\n\r\n dal.territory\r\n .getDistricts(territory.province.id)\r\n .then(res => setDistricts(res.data))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => updateDistrict({ isLoading: false }));\r\n };\r\n\r\n const fetchCommunities = () => {\r\n updateCommunity({ isLoading: true });\r\n\r\n dal.territory\r\n .getCommunities(territory.province.id, territory.district.id)\r\n .then(res => setCommunites(res.data))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => updateCommunity({ isLoading: false }));\r\n };\r\n\r\n const fetchLocations = () => {\r\n updateCity({ isLoading: true });\r\n\r\n dal.territory\r\n .findAllCitiesByTerritory({\r\n provinceTid: territory.province.id,\r\n districtPow: territory.district.id,\r\n communityGmi: territory.community.id\r\n })\r\n .then(res => setFoundLocations(res.data))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => updateCity({ isLoading: false }));\r\n };\r\n\r\n useNonInitialEffect(() => {\r\n if (territory.province.id !== 0) {\r\n setDistricts([]);\r\n setCommunites([]);\r\n setFoundLocations([]);\r\n fetchDistricts();\r\n }\r\n }, [territory.province.id]);\r\n\r\n useNonInitialEffect(() => {\r\n if (territory.district.id !== 0) {\r\n setCommunites([]);\r\n setFoundLocations([]);\r\n fetchCommunities();\r\n }\r\n }, [territory.district.id]);\r\n\r\n useNonInitialEffect(() => {\r\n if (territory.community.id !== 0) {\r\n setFoundLocations([]);\r\n fetchLocations();\r\n }\r\n }, [territory.community.id]);\r\n\r\n const onSubmit = async () => {\r\n form.submit();\r\n const isValid = await form.validateFields();\r\n\r\n if (isValid) {\r\n onFinish({\r\n ...isValid,\r\n districtId: territory.district.id,\r\n communityId: territory.community.id,\r\n provinceId: territory.province.id,\r\n id: uuid(),\r\n community: territory.community.name,\r\n district: territory.district.name,\r\n province: territory.province.name,\r\n city: territory.city.name\r\n });\r\n form.resetFields();\r\n }\r\n };\r\n\r\n const LABEL = t(\"personalData:FORM_LABEL\", { returnObjects: true });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n updateTerritory({\r\n province: {\r\n id: e.value as number,\r\n name: e.label as string\r\n },\r\n community: emptyLocation,\r\n district: emptyLocation,\r\n city: emptyCityLocation\r\n });\r\n\r\n form.setFieldsValue({\r\n provinceId: e,\r\n districtId: undefined,\r\n communityId: undefined,\r\n city: undefined\r\n });\r\n }}\r\n optionFilterProp=\"children\"\r\n filterOption={(input, option) => option?.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}\r\n >\r\n {provinces.length !== 0 &&\r\n provinces.map((m: IProvince) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n updateTerritory({\r\n district: {\r\n id: e.value as number,\r\n name: e.label as string\r\n },\r\n community: emptyLocation,\r\n city: emptyCityLocation\r\n });\r\n form.setFieldsValue({\r\n districtId: e,\r\n communityId: undefined,\r\n city: undefined\r\n });\r\n }}\r\n optionFilterProp=\"children\"\r\n filterOption={(input, option) => option?.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}\r\n >\r\n {provinces.length !== 0 &&\r\n districts.map((m: IDistrict) => (\r\n \r\n {`${m.name}`}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n updateTerritory({\r\n community: {\r\n id: e.value as number,\r\n name: e.label as string\r\n },\r\n city: emptyCityLocation\r\n });\r\n form.setFieldsValue({\r\n communityId: e,\r\n city: undefined\r\n });\r\n }}\r\n optionFilterProp=\"children\"\r\n filterOption={(input, option) => option?.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}\r\n >\r\n {communities.map((m: ICommunity) => (\r\n \r\n {`${m.name}(${m.nazdod})`}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n updateCity({ name: c });\r\n form.setFieldsValue({\r\n city: c\r\n });\r\n }}\r\n optionFilterProp=\"children\"\r\n >\r\n {foundLocations.map((loc: ITerritory) => (\r\n \r\n {loc.name}\r\n

{i18n.language === \"pl\" ? `rodz. ${loc.nazdod}` : `type ${loc.nazdod}`}

\r\n
\r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n form.setFieldsValue({\r\n postalCode: e.target.value\r\n })\r\n }\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n {t(\"personalData:CONFIRM\")}\r\n onVisibilityChange(false)}>{t(\"common:CANCEL\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddLocationForm;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends React.AnchorHTMLAttributes {}\r\n\r\nconst StyledLink = styled.a`\r\n text-decoration: underline;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n`;\r\n\r\nconst UnderlineLink: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default UnderlineLink;\r\n","import { ComponentProps, useEffect, useState } from \"react\";\r\nimport { Col, Form, FormProps, notification, Row, Select, Radio, Space } from \"antd\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { ColumnsType } from \"antd/lib/table\";\r\nimport {\r\n AsteriskSign,\r\n CenteredCol,\r\n CustomCheckbox,\r\n CustomDescription,\r\n CustomFormItem,\r\n CustomInput,\r\n CustomMaskedInput,\r\n CustomModal,\r\n CustomRadio,\r\n CustomSelect,\r\n CustomSwitch,\r\n CustomTable,\r\n Header,\r\n PrimaryButton,\r\n SecondaryButton\r\n} from \"components/common\";\r\nimport { CloseOutlined, ExclamationCircleOutlined } from \"@ant-design/icons\";\r\nimport AddLocationForm from \"./AddLocationForm\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { hasPhoneNumber, phoneFormatter, validateDO, validateMinimumAge, validatePassport, validatePesel, validatePhoneNumber } from \"utils/helpers\";\r\nimport { useNonInitialEffect } from \"hooks\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport * as dal from \"dal\";\r\nimport { AxiosError } from \"axios\";\r\nimport UnderlineLink from \"components/common/UnderlineLink\";\r\nimport { customValidator } from \"utils/validators\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { interceptApiError } from \"utils/interceptors\";\r\n\r\ninterface IProps extends FormProps {}\r\n\r\ntype FundingResponse = {\r\n fundings: IFunding[];\r\n displayFundingsInRegistrationPortal: boolean;\r\n};\r\n\r\nconst StyledForm = styled(Form)`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 64;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nconst IconWrapper = styled(Row)`\r\n width: 48px;\r\n height: 48px;\r\n\r\n span {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n svg {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n`;\r\n\r\nconst PersonalDataForm: React.VFC = props => {\r\n const [form] = Form.useForm();\r\n const history = useHistory();\r\n const { push } = history;\r\n const { dispatch, data } = useRegistrationContext();\r\n const { t } = useTranslation([\"personalData\", \"common\", \"studyDate\"]);\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n const [modal, setModal] = useState, \"visible\">>(null);\r\n\r\n const [pesel, setPesel] = useState(\"\");\r\n const [passport, setPassport] = useState(\"\");\r\n const [idCard, setIdCard] = useState(\"\");\r\n const [phoneNumber, setPhoneNumber] = useState(\"\");\r\n const [firstName, setFirstName] = useState(\"\");\r\n const [lastName, setLastName] = useState(\"\");\r\n const [hasReferral, setHasReferral] = useState(false);\r\n\r\n const [idCardValidationStatus, setIdCardValidationStatus] = useState(\"\");\r\n const [validateStatusMessage, setValidateStatusMessage] = useState(\"\");\r\n const [isAddingLocation, setIsAddingLocation] = useState(false);\r\n const [hasPesel, setHasPesel] = useState(true);\r\n const [isVerifyingRequest, setVeryfyingRequest] = useState(false);\r\n const { theme } = useThemeContext();\r\n\r\n const [isLookingPrivateScreenings, setIsLookingPrivateScreenings] = useState(false);\r\n\r\n const [fundings, setFundings] = useState();\r\n\r\n const LABEL = t(\"personalData:FORM_LABEL\", { returnObjects: true });\r\n const defaultCheckedHasPesel = Boolean(data.personalData?.pesel) || !(data.personalData?.passport || data.personalData?.idCard);\r\n const { INPUT_MAX_LENGTH } = constants.THRESHOLDS;\r\n\r\n useEffect(() => {\r\n setHasPesel(defaultCheckedHasPesel);\r\n setPassport(data.personalData?.passport);\r\n setIdCard(data.personalData?.idCard);\r\n setPhoneNumber(data.personalData?.phone);\r\n setFirstName(data.personalData?.firstName);\r\n setLastName(data.personalData?.lastName);\r\n setIsLookingPrivateScreenings(data.type.type === \"paid\");\r\n }, [data.personalData?.pesel]);\r\n\r\n useEffect(() => {\r\n dispatch({\r\n type: \"SET_REFERRAL\",\r\n payload: \"\"\r\n });\r\n\r\n const loadFundings = () => {\r\n dal.funding.getFundings().then((data: FundingResponse) => setFundings(data));\r\n };\r\n\r\n loadFundings();\r\n }, []);\r\n\r\n useNonInitialEffect(() => {\r\n if (!hasPesel) {\r\n setPesel(\"\");\r\n setIdCardValidationStatus(\"\");\r\n setValidateStatusMessage(\"\");\r\n form.setFieldsValue({\r\n pesel: \"\",\r\n idCard: \"\",\r\n passport: \"\",\r\n type: \"paid\",\r\n terms: false\r\n });\r\n } else {\r\n form.setFieldsValue({\r\n pesel: \"\",\r\n idCard: \"\",\r\n passport: \"\",\r\n type: \"nfz\",\r\n terms: false\r\n });\r\n }\r\n }, [hasPesel]);\r\n\r\n const locationColumns: ColumnsType | undefined = [\r\n {\r\n key: \"province\",\r\n title: LABEL.PROVINCE,\r\n dataIndex: \"province\"\r\n },\r\n {\r\n key: \"district\",\r\n title: LABEL.DISTRICT,\r\n dataIndex: \"district\"\r\n },\r\n {\r\n key: \"community\",\r\n title: LABEL.COMMUNE,\r\n dataIndex: \"community\"\r\n },\r\n {\r\n key: \"city\",\r\n title: LABEL.CITY,\r\n dataIndex: \"city\"\r\n }\r\n ];\r\n\r\n const onLocationAdd = (location: ILocation) => {\r\n dispatch({\r\n type: \"SET_LOCATIONS\",\r\n payload: [...(data?.personalData.locations || []), location]\r\n });\r\n setIsAddingLocation(false);\r\n };\r\n\r\n const displayFailedCaptchaExecutionMessage = () => {\r\n setModal({\r\n title: t(\"personalData:CAPTCHA_ERROR_TITLE\"),\r\n children: t(\"personalData:CAPTCHA_ERROR_INFO\"),\r\n okText: t(\"personalData:CAPTCHA_ERROR_CLOSE\")\r\n });\r\n\r\n setVeryfyingRequest(false);\r\n };\r\n\r\n const showAlreadyRegisteredModal = (): void => {\r\n setModal({\r\n children: (\r\n \r\n {t(\"studyDate:PATIENT_ALREADY_REGISTERED\")}\r\n {t(\"studyDate:PATIENT_ALREADY_REGISTERED_INFO\")}\r\n \r\n ),\r\n cancelText: t(\"studyDate:PATIENT_ALREADY_REGISTERED_SUBMIT\"),\r\n okButtonProps: { style: { display: \"none\" } },\r\n onCancel: () => setModal(null)\r\n });\r\n };\r\n\r\n const displayFailedCaptchaVeryficationMessage = (error: AxiosError) => {\r\n if (error.response?.data === \"CAPTCHA_VALIDATION_ERROR\") {\r\n setModal({\r\n title: t(\"personalData:CAPTCHA_ERROR_TITLE\"),\r\n children: t(\"personalData:CAPTCHA_ERROR_INFO\"),\r\n okText: t(\"personalData:CAPTCHA_ERROR_CLOSE\")\r\n });\r\n } else if (error.response?.data === \"SESSION_COULD_NOT_BE_ESTABLISHED\") {\r\n setModal({\r\n title: t(\"personalData:SESSION_ERROR_TITLE\"),\r\n children: t(\"personalData:SESSION_ERROR_INFO\"),\r\n okText: t(\"personalData:CAPTCHA_ERROR_CLOSE\")\r\n });\r\n } else {\r\n notification.error({\r\n message: t(\"personalData:UNKNOWN_ERROR_TITLE\"),\r\n description: t(\"personalData:SESSION_ERROR_INFO\")\r\n });\r\n }\r\n };\r\n\r\n const verifyCaptcha = async (action: string): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (!executeRecaptcha) {\r\n reject();\r\n }\r\n\r\n executeRecaptcha?.(action).then(resolve).catch(reject);\r\n });\r\n };\r\n\r\n const onFinish = (values: any) => {\r\n if (data.personalData.locations.length <= 0) {\r\n return notification.warn({\r\n message: t(\"personalData:MIN_LOCATIONS_WARN\")\r\n });\r\n }\r\n\r\n if (data.personalData.locations.length <= 0) {\r\n return notification.warn({\r\n message: t(\"personalData:MIN_INCLUDED_LOCATIONS\")\r\n });\r\n }\r\n\r\n if (data.personalData.locations.length > 4) {\r\n return notification.warn({\r\n message: t(\"personalData:MAX_AMOUNT_OF_LOCATIONS\")\r\n });\r\n }\r\n\r\n setVeryfyingRequest(true);\r\n\r\n verifyCaptcha?.(constants.CAPTCHA_ACTIONS.FIND_DATES)\r\n .then(token => {\r\n dal.campaign\r\n .isPatientAlreadyRegistered(values.pesel, values.passport, values.idCard, token)\r\n .then(({ data }) =>\r\n data\r\n ? showAlreadyRegisteredModal()\r\n : verifyCaptcha(constants.CAPTCHA_ACTIONS.PERSONAL_DATA_FORM)\r\n .then(token => {\r\n dal.security\r\n .validateCaptchaToken(token)\r\n .then(response => {\r\n dispatch({\r\n type: \"SET_PERSONAL_DATA\",\r\n payload: {\r\n ...values,\r\n pesel: hasPesel ? values.pesel : \"\",\r\n passport: (!hasPesel && values.passport) || \"\",\r\n idCard: (!hasPesel && values.idCard) || \"\"\r\n }\r\n });\r\n dispatch({\r\n type: \"SET_TYPE\",\r\n payload: {\r\n type: values.type,\r\n referral: values.referral\r\n }\r\n });\r\n sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_TOKEN, response.token);\r\n push(values.referral ? Routes.REFERRAL : Routes.QUESTIONNAIRE);\r\n })\r\n .catch(displayFailedCaptchaVeryficationMessage)\r\n .finally(() => setVeryfyingRequest(false));\r\n })\r\n .catch(displayFailedCaptchaExecutionMessage)\r\n )\r\n .catch(error => interceptApiError(error, t, history))\r\n .finally(() => setVeryfyingRequest(false));\r\n })\r\n .catch(displayFailedCaptchaExecutionMessage);\r\n };\r\n\r\n const isLocationAlreadyAdded = () => data.personalData?.locations && data.personalData?.locations?.length >= 1;\r\n\r\n const shouldDisplayLocationForm = () => isAddingLocation && !isLocationAlreadyAdded();\r\n\r\n const canAccessContactPage = () => {\r\n if (!hasPhoneNumber(phoneNumber)) return false;\r\n if (!firstName || firstName.length <= 0) return false;\r\n if (!lastName || lastName.length <= 0) return false;\r\n return true;\r\n };\r\n\r\n const isIdCardValid = (value: any) => {\r\n const isValid = validateDO(value);\r\n\r\n if (!isValid) {\r\n setIdCardValidationStatus(\"warning\");\r\n setValidateStatusMessage(t(\"common:INVALID_IDENTITY_CARD_NUMBER\"));\r\n } else {\r\n setValidateStatusMessage(\"\");\r\n setIdCardValidationStatus(\"\");\r\n }\r\n\r\n return Promise.resolve();\r\n };\r\n\r\n return (\r\n \r\n \r\n
{t(\"personalData:CHOOSE_EXAMINATION_TYPE\")}
\r\n {t(\"personalData:CHOOSE_EXAMINATION_TYPE_SUB_TITLE\")}\r\n \r\n {\r\n form.setFieldsValue({\r\n type: e.target.value,\r\n referral: false\r\n });\r\n setIsLookingPrivateScreenings(e.target.value === \"paid\");\r\n setHasReferral(false);\r\n }}\r\n >\r\n \r\n \r\n {t(\"personalData:LOOKING_NFZ\")}\r\n \r\n {t(\"personalData:LOOKING_PAID_RESEARCH\")}\r\n \r\n \r\n \r\n {isLookingPrivateScreenings && (\r\n \r\n {\r\n form.setFieldsValue({\r\n referral: e.target.checked\r\n });\r\n setHasReferral(e.target.checked);\r\n }}\r\n >\r\n {t(\"personalData:HAVE_REFERRAL\")}\r\n \r\n \r\n )}\r\n
\r\n\r\n \r\n
{LABEL.INPUT_PLACEHOLDER.PERSONAL_DATA}
\r\n {t(\"personalData:PERSONAL_DATA_SUB_TITLE\")}\r\n \r\n {t(\"common:REQUIRED_FIELD\")}\r\n \r\n \r\n \r\n \r\n {\r\n form.setFieldsValue({ firstName: e.target.value });\r\n setFirstName(e.target.value);\r\n }}\r\n placeholder={LABEL.INPUT_PLACEHOLDER.FIRST_NAME}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n form.setFieldsValue({ lastName: e.target.value });\r\n setLastName(e.target.value);\r\n }}\r\n placeholder={LABEL.INPUT_PLACEHOLDER.LAST_NAME}\r\n />\r\n \r\n \r\n \r\n phoneFormatter(value)}\r\n rules={[\r\n {\r\n required: true,\r\n message: t(\"common:REQUIRED_FORM_FIELD\")\r\n },\r\n {\r\n validator: (_, value) => customValidator(validatePhoneNumber, value, true, t(\"common:INVALID_PHONE_NUMBER\"))\r\n },\r\n {\r\n max: INPUT_MAX_LENGTH,\r\n message: t(\"common:TOO_LONG_INPUT\")\r\n }\r\n ]}\r\n >\r\n {\r\n setPhoneNumber(e.target.value);\r\n }}\r\n placeholder={LABEL.INPUT_PLACEHOLDER.PHONE_NUMBER}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setHasPesel(e)}>\r\n {t(\"personalData:HAVE_PESEL\")}\r\n \r\n \r\n \r\n {hasPesel ? (\r\n \r\n customValidator(validatePesel, value, true, t(\"common:INVALID_PESEL\"))\r\n },\r\n {\r\n validator: (_, value) => customValidator(validateMinimumAge, value, true, t(\"common:MINIMUM_AGE_ERROR\"))\r\n }\r\n ]}\r\n name=\"pesel\"\r\n label=\"PESEL\"\r\n >\r\n {\r\n form.setFieldsValue({\r\n pesel: e.target.value\r\n });\r\n setPesel(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n ) : (\r\n \r\n customValidator(validatePassport, value, !Boolean(idCard), t(\"common:INVALID_PASSPORT\"))\r\n },\r\n {\r\n max: INPUT_MAX_LENGTH,\r\n message: t(\"common:TOO_LONG_INPUT\")\r\n }\r\n ]}\r\n name=\"passport\"\r\n label={LABEL.PASSPORT}\r\n dependencies={[\"idCard\"]}\r\n >\r\n {\r\n form.setFieldsValue({\r\n passport: e.target.value\r\n });\r\n setPassport(e.target.value);\r\n }}\r\n placeholder={LABEL.INPUT_PLACEHOLDER.PASSPORT}\r\n />\r\n \r\n \r\n )}\r\n {!hasPesel && (\r\n <>\r\n \r\n (value ? Promise.resolve() : Promise.reject(new Error(t(\"common:REQUIRED_FORM_FIELD\"))))\r\n }\r\n ]}\r\n >\r\n \r\n form.setFieldsValue({\r\n minimumAge: e.target.checked\r\n })\r\n }\r\n >\r\n {t(\"common:MINIMUM_AGE_DECLARATION\")}\r\n \r\n \r\n \r\n \r\n (!Boolean(passport) ? isIdCardValid(value) : Promise.resolve())\r\n }\r\n ]}\r\n name=\"idCard\"\r\n help={validateStatusMessage}\r\n label={LABEL.CARD_ID}\r\n dependencies={[\"passport\"]}\r\n >\r\n {\r\n form.setFieldsValue({\r\n idCard: e.target.value\r\n });\r\n setIdCard(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n \r\n )}\r\n {fundings?.displayFundingsInRegistrationPortal && (\r\n <>\r\n \r\n \r\n \r\n {fundings?.fundings?.map(f => (\r\n {f.name}\r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n\r\n \r\n \r\n
{t(\"personalData:CHOOSE_EXAMINATION_LOCATION\")}
\r\n {t(\"personalData:CHOOSE_EXAMINATION_LOCATION_SUB_TITLE\")}\r\n \r\n {!isLocationAlreadyAdded() && !isAddingLocation && (\r\n \r\n setIsAddingLocation(prev => !prev)}>{t(\"personalData:ADD_NEW_LOCATION\")}\r\n \r\n )}\r\n {isLocationAlreadyAdded() && (\r\n \r\n
{t(\"personalData:STUDY_LOCATION\")}
\r\n \r\n \r\n dispatch({\r\n type: \"SET_LOCATIONS\",\r\n payload: []\r\n })\r\n }\r\n type=\"link\"\r\n style={{ width: \"fit-content\", textAlign: \"center\", padding: \"8px\" }}\r\n >\r\n {t(\"personalData:REMOVE_FROM_LIST\")}\r\n \r\n
\r\n )}\r\n {shouldDisplayLocationForm() && }\r\n
\r\n\r\n \r\n
{t(\"common:TERMS_AND_CONDITIONS\")}
\r\n \r\n (value ? Promise.resolve() : Promise.reject(new Error(t(\"common:REQUIRED_FORM_FIELD\"))))\r\n }\r\n ]}\r\n >\r\n \r\n form.setFieldsValue({\r\n terms: e.target.checked\r\n })\r\n }\r\n >\r\n {t(\"common:I_ACCEPT\")}{\" \"}\r\n \r\n {t(\"common:PORTAL_TERMS\")}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {canAccessContactPage() && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n {t(\"common:GO_FURTHER\")}\r\n \r\n \r\n {modal != null && (\r\n setModal(null)} {...modal}>\r\n \r\n \r\n \r\n \r\n {modal.children}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PersonalDataForm;\r\n","import { PersonalDataForm } from \"components/features/personalData\";\r\n\r\nconst FormView = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FormView;\r\n","import { Card, Typography, Row } from \"antd\";\r\nimport styled from \"styled-components\";\r\nimport { PrimaryButton } from \"components/common\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\nconst { Title, Text } = Typography;\r\n\r\nconst CustomCard = styled(Card)`\r\n background-color: ${props => props.backcolor || constants.COLOR.LIGHT_PINK};\r\n border-radius: ${constants.STYLES.HOMEPAGE_CARD.BORDER_RADIUS};\r\n text-align: center;\r\n padding: ${constants.STYLES.HOMEPAGE_CARD.PADDING};\r\n max-width: 475px;\r\n flex: 1;\r\n height: auto;\r\n width: 100%;\r\n\r\n .ant-typography {\r\n color: ${props => props.forecolor || constants.COLOR.BLACK};\r\n }\r\n\r\n .ant-card-body {\r\n padding: 0;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n gap: 48px;\r\n height: 100%;\r\n\r\n &::before,\r\n &::after {\r\n content: none !important;\r\n }\r\n }\r\n\r\n @media screen and (max-width: 992px) {\r\n padding: ${constants.STYLES.HOMEPAGE_CARD.PADDING_MOBILE};\r\n max-width: 400px;\r\n }\r\n`;\r\n\r\ntype Props = {\r\n buttonText: string;\r\n headerText: string;\r\n description: string;\r\n icon: React.ReactNode;\r\n href: Routes;\r\n};\r\n\r\nconst HomePageCard = ({ buttonText, headerText, description, icon, href }: Props) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n \r\n {icon}\r\n \r\n \r\n {headerText}\r\n \r\n {description}\r\n \r\n {buttonText}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default HomePageCard;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAA2CAYAAAA4T5zSAAAACXBIWXMAAAsSAAALEgHS3X78AAAE7klEQVR4nO2c3XXbNhiGH/fkXukEViewelPyzswE1QZmJog6QZgJqkwQeoJKE5S6A68iTRB6A2sC9QIfRAriv8jUtvCc44NjECJBvB/+PgC8ORwO+L6XAFv5WymVPuMYBd/3ZsAcmAHZjef9MQO+W+nWwFKpNPnJ+Xuz+L4XAhFwW4je3BwOB5MgQCszLyT6qlS6+Gm5fIOIxcfAnUStgRWwVSrdHgWwfhQCS2AC7IDANUvdkcJP0OW4AUKl0qyYplQA+fF7+fEd8KhUGo6X1beHlF+GLvy/lEqXZel+qbqBWHwAPAEP0kQ52mNakC9VhQ81AsBRhFD+dX1BS3zfmwIPwJNSaVSXtlYAABkJPQF/DpC3ayGQsNLyDY0CCCs4jpQczcwk3DYlbCuAGwF1YwbH1qOWtgI4RsIJMA4ZHOcBtbQVICje2NFIJuG0KWFbAWbA3p7FOSoxnW/QlLBRAKlGE/Ss2NGORMKgKWGbGhBKuOqXl+tDJrBr4K6pH2grwB4nQFdMeYV1iWoFEK/oBLdI04cV2nBDccyV0lQDIit0tEQMNkYbcKUfrVIAsf5bYONGP70xvqDuApC3XdFAmbk6xHAfgYkY9BmlAojT7R5t/ck42bsaIis8oaoGhBLGg2blCpFasAFuy7zJZwJIjz1Hz3zjkfN3LcQShvaFshowR/fccck1Rw/EkPfosj2hTIBAQjfxGpYVujM+EaGqBuxd5zs4xqCDYuSJAM7xNiqJhEEx0q4B5mKCY1BkZrwj3yEHnAswlbBxMdnRiy2cbm6wBWi9mOzoRSbh0TlnC1DptXMMQiLhcY3gnZXgDj1ru4jCZG4KxK/ZmSfDxhmQjNEyDL4rorCp9xvwGfhR5Yh66cjBlX/Q7/Gv73uNO926Msa2lBCrp6fFFr2Xhlj+vRX9SfZ9DsYYApT1I5MRnjM2047xvbAF2HGueleykriL+5X/gaQkbs9lQ/Qz47QFyOC4vboX4nh6LEQ98Qq3tiuVboGPhag9sLhwbdyMfhITYQvQekNRHXKa5jfgd6XSqbzMq0OM6Vfgg1Lp+wHc88YRl5mIkyNK4gv6jl4JCy58mKOAtCo/gJ1S6XEecFIDxFJ3wP3Qvb2jfJWxbBRkhozReHm5LmRutED3I3HxWpkAZkPRg6sFg7FAVhntTvxMAEkQyb/x2Dl760i/+hlt1JF9vXQiJscqTV/w6oaQLwVpemL5NyobwtbNhOdo1f621zEdrVmi3TLrPge1Mwo9d5vjNo4c3/di9FnhHTU7pCs/VVC4UYj2bAJ8HGuvkHT4K/RXWkZ5hjxnBTyP9ekFaXaW6MLfA7M6d3ybg9ox+ZT8m+97y7rt1n2QJm6Lrq7BkPe2njOV+z/4vpcMPcorfJzDWH5t4UOLGlBy8wnavxNdaqlSADG5A/BL09H+S7E+QrJHW+vyEh+P3DMCPknUGv1llMZ7thag8CBTvUCEoOMBDrH4kPzzBzu0oytpnZkL8X0vIh+fGyE6rd6JUS7IdxMah13c9h6dBCg8OEAXfNF1vUFb1pbyk/UB2hsYkK8PDFKT+iI1MCI3KNDGkKDfIyv52Yz8PcyHrXrXpF4CGOQFFpIZexWsCnPebKVU+iK2P0rNDtGW3GU9xHz9qvcRrosEKCJiTKnuRDPkM12DPHBEpIbPKF/de0a/RzLEs/4DKrjUSGC28cMAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAuCAYAAAB04nriAAAACXBIWXMAAAsSAAALEgHS3X78AAADSklEQVRogeXaPW8TMQDG8T8lA0JIdGSsxFAJITUSEvbGdYKNIjGxpJ0Z2o2RFjGw0W/QdOpYusFEJBbfRBmRQEq/QSohxILEYF/OcS45352dl/JMzZvqX5Pafs65JsTDBHiCzh+ublaBQQuNfTXnwcwsLef2T2AP+DWHscTKc+Al8Be43iL/GH8CHgNvgUSpdDCf8YWLlKILdIBL4AfwYMV6/B1wDGwAfSlFe+YjDBgHm2A+tTYYpdJtNPo20FtWtItVKj3PHltxn7zsaAv7DWjbWCgAwxB9wBKhpRSrUooeOTZRKu27zysEAyiV7gM75OitKCMNECnFKtADHpFjCyfdiWAApdIuOfpUSrEdcqAhYmE3KMFCCRhG0ABHi4SuigUPMCwm2sEeK5W2ffYOXmAYojfRU/1c0WYS7ZNjvcfiDQZQKu2hF/EMfVjl9SFisD30vFIJCxXBAGZdS9DoXbPuzSRNsVADDGPozizQDvagDhZqgmEEfUFktJQiIcfumD1CrdQGwxDdRi8JUdBmcvxMjm30OxqBAcxSkJCjz82S0TgGe2RuNsZCADCMoTfQW9FG6BhYCASGsGgLewlshsJCQDCMoM+oiTZre4ZNzNofLEHBoNFKpVvACRr9xbdemklvF/iNU9xDJTgYhvvce+bmfTw6tVXcAW6iZ//gCQ4uaDAnlFxIsLAXwGtzd5T9elDwhAbzgimXjAouybwhYjMLBp7WYMzP9tWTrpRiT0rRZ/SSzMA8v0ukZhYE7LOpN4hnwACNfI8+/jimoLjHamaNwVUajFLpB6XSNfS7twOsKZVuTyruMZqZe9RSKQUNZt/ndVXWVqXSc6s8dKQUTPujlqX2O2yuYvYI0GDKErKZ1QKbSeSUQA3GJ0XNrM7WtTI41qbeJ24zo8bWtRJ4ntgsTUuKNzhmg6maJmgvcOwGUyd1m1kp2GowY0eP847VzLJz7dKSMhU87Zx1kWId8ZaiJ4KdBrOw2Cy+59pjYHPO2mXKofKixgc9Arbq3ViDWZYUNLMRtA2+RcWjx0WNc6791a6XNviQK4DN4h7xAndAt6Ub5s67wHfgI7AnpZjxEKPlDHgKrIMG29+vXOeKfw2xBXTR/7v/Rf4Byab1Y5i5gcYAAAAASUVORK5CYII=\"","import { Col, Row } from \"antd\";\r\nimport { CustomSpinner, Header, LinkButton } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Routes } from \"utils\";\r\nimport queryString from \"querystring\";\r\nimport { useInvitationLink } from \"hooks\";\r\nimport { HomePageCard } from \"components/features/homepage\";\r\nimport breasts from \"../../assets/images/breasts.png\";\r\nimport post from \"../../assets/images/post.png\";\r\nimport styled from \"styled-components\";\r\n\r\nconst StyledRow = styled(Row)`\r\n width: 100%;\r\n margin: 0 auto;\r\n display: flex;\r\n gap: 64px;\r\n justify-content: center;\r\n\r\n @media screen and (max-width: 850px) {\r\n row-gap: 32px !important;\r\n flex-direction: column;\r\n align-items: center;\r\n }\r\n`;\r\n\r\nexport default function HomepageView() {\r\n const { t } = useTranslation([\"common\", \"homepage\"]);\r\n const history = useHistory();\r\n const { loading } = useInvitationLink();\r\n\r\n const { error, paymentId } = queryString.parse(window.location.search.slice(1));\r\n\r\n if (!error && paymentId) {\r\n history.push(Routes.SUCCESSFUL_PATIENT_PAYMENT);\r\n }\r\n\r\n if (error && paymentId) {\r\n history.push(Routes.FAILED_PATIENT_PAYMENT);\r\n }\r\n if (loading) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n
{t(\"homepage:WELCOME_HEADER\")}
\r\n \r\n }\r\n headerText={t(\"homepage:WANT_TO_REGISTER\")}\r\n description={t(\"homepage:REGISTER_DESCRIPTION\")}\r\n buttonText={t(\"homepage:START_REGISTRATION\")}\r\n href={Routes.FORM_VIEW}\r\n />\r\n }\r\n headerText={t(\"homepage:HAVE_INVITATION\")}\r\n description={t(\"homepage:INVITATION_DESCRIPTION\")}\r\n buttonText={t(\"homepage:START_WITH_CODE\")}\r\n href={Routes.INVITATION}\r\n />\r\n \r\n \r\n \r\n {t(\"common:TERMS_AND_CONDITIONS\")}\r\n \r\n \r\n {/* TODO
{t(\"common:PARTNERS\")}
*/}\r\n
\r\n );\r\n}\r\n","import { Col, Row, Form, Radio, Space } from \"antd\";\r\nimport { CustomCheckbox, CustomDescription, CustomFormItem, CustomRadio, Header, PrimaryButton, SecondaryButton } from \"components/common\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { hasPhoneNumber } from \"utils/helpers\";\r\nimport { useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { LeftOutlined } from \"@ant-design/icons\";\r\n\r\nconst StyledForm = styled(Form)`\r\n max-width: 50%;\r\n margin: 0 auto;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n @media screen and (max-width: 992px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function QuestionarieView() {\r\n const [form] = Form.useForm();\r\n const { theme } = useThemeContext();\r\n const { data, dispatch } = useRegistrationContext();\r\n const { push } = useHistory();\r\n const { t } = useTranslation([\"common\", \"survey\"]);\r\n const [optionChanged, setOptionChanged] = useState(false);\r\n const [studyType, setStudyType] = useState<\"first\" | \"next\">();\r\n\r\n const handleOptionChanged = () => {\r\n setOptionChanged(!optionChanged);\r\n };\r\n\r\n const onFinish = (values: IQuestionnaire) => {\r\n dispatch({ type: \"SET_QUESTIONNAIRE\", payload: values });\r\n push(Routes.STUDY_DATE);\r\n };\r\n\r\n return (\r\n initialValues={{ ...data.questionnaire, studyType: undefined }} form={form} onFinish={onFinish} onChange={handleOptionChanged}>\r\n
{t(\"survey:TITLE\")}
\r\n {t(\"survey:DESCRIPTION\")}\r\n \r\n \r\n setStudyType(e.target.value)}>\r\n \r\n \r\n {data?.type?.type === \"nfz\" ? t(\"survey:INITIAL_STUDY_PREVENTIVE\") : t(\"survey:INITIAL_STUDY_CLINICAL\")}\r\n \r\n \r\n {data?.type?.type === \"nfz\" ? t(\"survey:NEXT_STUDY_PREVENTIVE\") : t(\"survey:NEXT_STUDY_CLINICAL\")}\r\n \r\n \r\n \r\n \r\n {studyType && (\r\n <>\r\n \r\n \r\n {t(\"survey:CANCER_IN_FAMILY\")}\r\n \r\n \r\n \r\n \r\n {t(\"survey:BREAST_AILMENT\")}\r\n \r\n \r\n \r\n \r\n {t(\"survey:INVALID_USG\")}\r\n \r\n \r\n \r\n \r\n {t(\"survey:BLOODY_WART\")}\r\n \r\n \r\n \r\n \r\n {t(\"survey:RETRACTION_OF_SKIN\")}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {t(\"survey:SELECT_STUDY_DATE\")}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"common:BACK_AND_CHANGE_PERSONAL_DATA\")}\r\n \r\n \r\n \r\n \r\n {hasPhoneNumber(data.personalData?.phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { CustomDescription, CustomSpinner, Header } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport styled from \"styled-components\"\r\n\r\nconst StyledContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n flex-direction: column;\r\n position: absolute;\r\n bottom: 0;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n`;\r\n\r\ntype IProps = {\r\n displayAdditionalInformation: false;\r\n peoplesInQueue?: number;\r\n maximumWaitingTime?: string;\r\n children?: React.ReactNode;\r\n} | {\r\n displayAdditionalInformation: true;\r\n peoplesInQueue: number;\r\n maximumWaitingTime: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport default function QueueView({ displayAdditionalInformation, peoplesInQueue, maximumWaitingTime, children }: IProps) {\r\n const { t } = useTranslation([\"loading\"]);\r\n\r\n return (\r\n \r\n \r\n
\r\n {t(\"loading:TITLE\")}\r\n
\r\n {displayAdditionalInformation && (\r\n \r\n {t(\"loading:PATIENTS_IN_QUEUE\")}: {peoplesInQueue}. {t(\"loading:MAXIMUM_WAITING_TIME\")}: {maximumWaitingTime}\r\n \r\n )}\r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n}\r\n","import styled from \"styled-components\";\r\nimport { useThemeContext } from \"../../../contexts/theme\";\r\nimport { BasicProps } from \"antd/es/layout/layout\";\r\nimport { ExclamationCircleOutlined } from \"@ant-design/icons\";\r\nimport dayjs from \"dayjs\";\r\nimport { getDate } from \"../../../utils/helpers\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants } from \"utils\";\r\nimport { Row } from \"antd\";\r\n\r\ninterface IProps extends BasicProps {\r\n patient: IPatient | null;\r\n}\r\n\r\nconst StyledContainer = styled.div`\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n background-color: ${props => props.backcolor || constants.COLOR.NOTIFICATION_BACKGROUND};\r\n border-radius: ${constants.STYLES.NOTIFICATION.BORDER_RADIUS};\r\n padding: ${constants.STYLES.NOTIFICATION.PADDING};\r\n border ${props => (props.forecolor ? `1px solid ${props.forecolor}` : undefined)};\r\n margin: 0 auto;\r\n width: 75%;\r\n`;\r\n\r\nconst PatientInformation: React.VFC = props => {\r\n const { theme } = useThemeContext();\r\n const { t } = useTranslation([\"studyDate\"]);\r\n\r\n const { patient } = props;\r\n\r\n const getClosetsReinbursedDate = (date: string) => {\r\n const daysAmount = dayjs(date).diff(dayjs(), \"days\");\r\n return `${t(\"studyDate:CLOSETS_REIMBURSED_DAY\")} ${daysAmount} ${t(\"studyDate:CLOSETS_DAY\")} (${getDate(date, \"DD MMMM YYYY\")})`;\r\n };\r\n\r\n return (\r\n \r\n {patient?.ewusStatus !== 1 && ( // Inne niż pacjentka ubezpieczona\r\n \r\n {\" \"}\r\n {t(\"studyDate:EWUS_FAILED_VERIFICATION\")}\r\n \r\n )}\r\n {patient?.simpStatus !== 0 && ( // Inne niż pacjentka objęta programem (1 - pacjentka miała badanie w ciągu 2 lat, 5 pacjentka poza programem)\r\n \r\n {\" \"}\r\n {t(\"studyDate:SIMP_FAILED_VERIFICATION\")}{\" \"}\r\n {patient?.reimbursedDatesStartsFrom && getClosetsReinbursedDate(patient.reimbursedDatesStartsFrom)}\r\n {patient?.simpStatus === 1 && t(\"studyDate:PATIENT_STUDIED_IN_TWO_YEARS\")}\r\n {patient?.simpStatus === 5 && t(\"studyDate:PATIENT_OUT_OF_PROGRAM\")}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PatientInformation;\r\n","enum ReferralStatus {\r\n Ok,\r\n StudyCompleted,\r\n UnknownError\r\n}\r\n\r\nexport {\r\n ReferralStatus\r\n}\r\n","import { Result, ResultProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ResultProps {\r\n children?: React.ReactNode | React.ReactNode[];\r\n}\r\n\r\nconst StyledResult = styled(Result)`\r\n display: flex;\r\n justify-content: center;\r\n padding: 0;\r\n margin: 50px 0px;\r\n align-items: center;\r\n\r\n .ant-result-icon {\r\n margin: 0;\r\n }\r\n\r\n &.ant-result-success .ant-result-icon > .anticon,\r\n &.ant-result-error .ant-result-icon > .anticon {\r\n color: ${props => props.forecolor};\r\n font-size: 35px;\r\n }\r\n\r\n .ant-result-title {\r\n font-size: ${props => constants.STYLES.HEADER_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.HEADER_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n margin-left: 20px;\r\n color: ${props => props.forecolor};\r\n }\r\n`;\r\n\r\nconst CustomResult = (props: IProps) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomResult;\r\n","import {ReferralStatus} from \"../../../typings/enums\";\r\nimport CustomResult from \"../../common/CustomResult\";\r\nimport {CustomDescription} from \"../../common\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\ninterface IProps {\r\n status: ReferralStatus;\r\n}\r\n\r\nconst ReferralStatusView: React.VFC = ({ status }) => {\r\n const { t } = useTranslation([\"referral\"]);\r\n\r\n if (status === ReferralStatus.StudyCompleted) {\r\n return (\r\n <>\r\n \r\n \r\n {t(\"referral:STUDY_COMPLETED_INFO\")}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"referral:REFERRAL_UPLOAD_INFO\")}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default ReferralStatusView;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport CustomDescription from \"./Description\";\r\nimport { capitalizeFirstLetter, getDate, getDayName, mapToScreeningDateType } from \"utils/helpers\";\r\nimport constants from \"utils/constants\";\r\nimport CustomFormItem from \"./CustomFormItem\";\r\nimport { Radio } from \"antd\";\r\nimport CustomRadio from \"./CustomRadio\";\r\n\r\ntype Props = {\r\n screeningDates: IScreeningDate[];\r\n selectedRegistration: ICampaignRegistration | null;\r\n setRegistration: React.Dispatch>;\r\n};\r\n\r\nconst ScreeningDatesGroup = ({ screeningDates, selectedRegistration, setRegistration }: Props) => {\r\n const { t } = useTranslation([\"studyDate\"]);\r\n\r\n const TERMS_TYPE = t(\"studyDate:TERMS_TYPE\", { returnObjects: true });\r\n\r\n return (\r\n <>\r\n \r\n {TERMS_TYPE[mapToScreeningDateType(screeningDates[0].type)]}\r\n \r\n\r\n {screeningDates.map(({ screening, funding }) => (\r\n <>\r\n {funding.isPaid && funding.price && (\r\n {`${t(\r\n \"studyDate:PAID_DATES\"\r\n )} ${funding.price.toFixed(2)} PLN`}\r\n )}\r\n\r\n \r\n \r\n setRegistration({ funding: funding, campaignRegistration: screening })}\r\n >\r\n {getDate(screening?.date || \"\")} ({capitalizeFirstLetter(getDayName(screening?.date || \"\"))}) {screening?.startAt?.hours}:\r\n {screening?.startAt?.minutes < 10 ? `0${screening?.startAt?.minutes}` : screening?.startAt?.minutes} - {t(\"studyDate:LOCATION\")}\r\n : {capitalizeFirstLetter(screening?.voivodeship || \"\")}, {capitalizeFirstLetter(screening?.community || \"\")},{\" \"}\r\n {screening?.shortName}\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default ScreeningDatesGroup;\r\n","import { ComponentProps, useEffect, useMemo, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { Col, Form, Row } from \"antd\";\r\nimport { CustomModal, CustomDescription, CustomSpinner, Header, LinkButton, PrimaryButton, SecondaryButton } from \"components/common\";\r\nimport { StudyDateCounter } from \"components/features/counter\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport * as dal from \"dal\";\r\nimport { hasPhoneNumber } from \"../../utils/helpers\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { PatientInformation } from \"../features/studyView\";\r\nimport { useThemeContext } from \"../../contexts/theme\";\r\nimport { interceptApiError } from \"../../utils/interceptors\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { ExclamationCircleOutlined, LeftOutlined } from \"@ant-design/icons\";\r\nimport styled from \"styled-components\";\r\nimport { getInvitationLink } from \"utils/invitation\";\r\nimport ScreeningDatesGroup from \"components/common/ScreeningDatesGroup\";\r\n\r\nconst accessCode = getInvitationLink();\r\n\r\nconst StyledForm = styled(Form)`\r\n max-width: 50%;\r\n margin: 0 auto;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n @media screen and (max-width: 992px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nconst IconWrapper = styled(Row)`\r\n width: 48px;\r\n height: 48px;\r\n\r\n span {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n svg {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n`;\r\n\r\nexport default function StudyDateView() {\r\n const history = useHistory();\r\n const { data, dispatch } = useRegistrationContext();\r\n const { t } = useTranslation([\"common\", \"studyDate\"]);\r\n const { theme } = useThemeContext();\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const [modal, setModal] = useState, \"visible\"> | null>(null);\r\n\r\n const [timeDeadline, setTimeDeadline] = useState(constants.TIMEOUTS.MAXIMUM_TIME_FOR_SELECT_STUDY_DATE);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isCheckingIfPatientRegistered, setIsCheckingIfPatientRegistered] = useState(false);\r\n const [displaySessionTimeoutModal, setSessionTimeoutModal] = useState(false);\r\n const [screeningDates, setScreeningDates] = useState>({});\r\n const [patient, setPatient] = useState(null);\r\n const [selectedRegistration, setRegistration] = useState(null);\r\n const [showConfirmModal, setShowConfirmModal] = useState(false);\r\n\r\n const submitButtonDisabled = !selectedRegistration || isCheckingIfPatientRegistered;\r\n\r\n const redirectToFormView = () => {\r\n history.push(Routes.FORM_VIEW);\r\n };\r\n\r\n const handleSuccessfulDataLoad = ({\r\n patient,\r\n campaignScreeningDates,\r\n communityScreeningDates,\r\n districtScreeningDates\r\n }: {\r\n patient: IPatient;\r\n campaignScreeningDates: IScreeningDate[];\r\n communityScreeningDates: IScreeningDate[];\r\n districtScreeningDates: IScreeningDate[];\r\n }) => {\r\n const {\r\n type: { type }\r\n } = data || {};\r\n\r\n if (patient.externalApiError && type === \"nfz\") {\r\n setModal({\r\n children: (\r\n \r\n \r\n {t(\"studyDate:NO_EXTERNAL_API_CONNECTION\")}\r\n \r\n {t(\"studyDate:NO_EXTERNAL_API_INFO\")}\r\n \r\n ),\r\n okText: t(\"studyDate:TRY_AGAIN\"),\r\n cancelText: t(\"studyDate:CHANGE_TYPE\"),\r\n onOk: () => findDates(),\r\n onCancel: () => history.push(\"/2\")\r\n });\r\n }\r\n\r\n if (patient.unknownError && type === \"nfz\") {\r\n setModal({\r\n children: (\r\n \r\n \r\n {t(\"studyDate:EXTERNAL_API_ERROR\")}\r\n \r\n {t(\"studyDate:NO_EXTERNAL_API_INFO\")}\r\n \r\n ),\r\n okText: t(\"studyDate:TRY_AGAIN\"),\r\n cancelText: t(\"studyDate:CHANGE_TYPE\"),\r\n onOk: () => findDates(),\r\n onCancel: () => setModal(null)\r\n });\r\n }\r\n\r\n setPatient(patient);\r\n setScreeningDates({ campaignScreeningDates, communityScreeningDates, districtScreeningDates });\r\n };\r\n\r\n const findDates = () => {\r\n const {\r\n personalData: { locations, pesel }\r\n } = data || {};\r\n\r\n const paidResearch = data.type.type === \"paid\";\r\n const nfz = data.type.type === \"nfz\";\r\n\r\n setIsLoading(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.FIND_DATES)\r\n .then(token => {\r\n dal.screening\r\n .findScreeningsDates(locations, pesel, paidResearch, nfz, token, accessCode)\r\n .then(res => res.data)\r\n .then(handleSuccessfulDataLoad)\r\n .catch(error => interceptApiError(error, t, history))\r\n .finally(() => setIsLoading(false));\r\n })\r\n .catch(() => setIsLoading(false));\r\n };\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setTimeDeadline(prev => {\r\n const time = prev - 1;\r\n\r\n if (timeDeadline === null || isNaN(time)) return prev;\r\n\r\n if (time <= 0) {\r\n setShowConfirmModal(false);\r\n setSessionTimeoutModal(true);\r\n return time;\r\n }\r\n if (time <= -10) {\r\n redirectToFormView();\r\n return prev;\r\n }\r\n\r\n return time;\r\n });\r\n }, 1000);\r\n\r\n findDates();\r\n\r\n return () => clearInterval(timer);\r\n }, []);\r\n\r\n const selectCampaignRegistrationDate = () => {\r\n if (!selectedRegistration) return;\r\n\r\n setIsCheckingIfPatientRegistered(false);\r\n\r\n dispatch({\r\n type: \"SET_CAMPAIGN_REGISTRATION\",\r\n payload: selectedRegistration\r\n });\r\n\r\n history.push(Routes.CONFIRM_STUDY_DATE);\r\n };\r\n\r\n const confirmRegistrationDate = () => {\r\n if (!selectedRegistration) return;\r\n\r\n if (selectedRegistration?.funding?.isPaid) {\r\n setShowConfirmModal(true);\r\n } else {\r\n selectCampaignRegistrationDate();\r\n }\r\n };\r\n\r\n const {\r\n type: { type }\r\n } = data || {};\r\n\r\n const noDatesAvailable = useMemo(() => Object.values(screeningDates).every(value => !value || value?.length === 0), [screeningDates]);\r\n\r\n if (isLoading) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {t(\"studyDate:SESSION_TIMEOUT_DESCRIPTION\")}\r\n \r\n {type === \"nfz\" && }\r\n\r\n \r\n \r\n
{t(\"studyDate:TITLE\")}
\r\n {!noDatesAvailable && (\r\n \r\n {t(\"studyDate:DESCRIPTION\")}\r\n \r\n )}\r\n
\r\n {noDatesAvailable && (\r\n \r\n {t(\"studyDate:NOT_FOUND_DATES\")}{\" \"}\r\n \r\n {t(\"studyDate:NOT_FOUND_CLICK_HERE\")}\r\n \r\n {t(\"studyDate:NOT_FOUND_DATES_ADDITIONAL_INFO\")}\r\n \r\n )}\r\n\r\n {screeningDates?.campaignScreeningDates && screeningDates.campaignScreeningDates.length > 0 && (\r\n \r\n )}\r\n\r\n {screeningDates?.communityScreeningDates && screeningDates.communityScreeningDates.length > 0 && (\r\n \r\n )}\r\n\r\n {screeningDates?.districtScreeningDates && screeningDates.districtScreeningDates.length > 0 && (\r\n \r\n )}\r\n \r\n \r\n \r\n {t(\"studyDate:CONFIRM_DATE\")}\r\n \r\n \r\n \r\n \r\n \r\n {\" \"}\r\n {t(\"common:BACK_AND_CHANGE_PERSONAL_DATA\")}\r\n \r\n \r\n \r\n \r\n {hasPhoneNumber(data.personalData?.phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n 0 ? timeDeadline : 0} allowColorizeTime>\r\n {t(\"studyDate:TIME_FOR_DECISION\")}:\r\n \r\n \r\n
\r\n {modal != null ? : null}\r\n setShowConfirmModal(false)}\r\n visible={showConfirmModal}\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"studyDate:PAID_DATE_CONFIRMATION\")}\r\n {t(\"studyDate:PAID_DATE_CONFIRMATION_INFO\")}\r\n \r\n 0 ? timeDeadline : 0} allowColorizeTime style={{ marginTop: 20 }}>\r\n {t(\"studyDate:TIME_FOR_DECISION\")}:\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { notification } from \"antd\"\r\nimport { ArgsProps } from \"antd/lib/notification\"\r\n\r\nexport const displayWarningNotification = (values: ArgsProps) => {\r\n notification.warning({\r\n duration: 10,\r\n ...values\r\n });\r\n}\r\n","import { Row, Col, Space, notification } from \"antd\";\r\nimport { PrimaryButton, SecondaryButton, Header, CustomDescription } from \"components/common\";\r\nimport styled from \"styled-components\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport * as dal from \"dal\";\r\nimport { displayWarningNotification } from \"utils/notifications\";\r\nimport { interceptApiError } from \"../../utils/interceptors\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { constants } from \"../../utils\";\r\nimport { useState } from \"react\";\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n max-width: 60%;\r\n margin: 0 auto;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nconst PhoneContactView = () => {\r\n const history = useHistory();\r\n\r\n const {\r\n data: { personalData }\r\n } = useRegistrationContext();\r\n const { t } = useTranslation([\"common\", \"phoneContact\"]);\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const [isSendingRequest, setSendingRequest] = useState(false);\r\n\r\n const onSubmit = () => {\r\n const { firstName, lastName, phone } = personalData || {};\r\n const { SUCCESS, ERROR, INTERNAL_SERVER_ERROR } = t(\"phoneContact:SERVER_RESPONSE\", { returnObjects: true }) || {};\r\n\r\n if (!firstName || !lastName || !phone) return displayWarningNotification({ message: ERROR });\r\n\r\n setSendingRequest(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.CONFIRM_DATE)\r\n .then(token => {\r\n dal.phoneContact\r\n .createPhoneContactRequest(\r\n {\r\n firstName,\r\n lastName,\r\n phoneNumber: phone\r\n },\r\n token\r\n )\r\n .then(() => notification.success({ message: SUCCESS }))\r\n .then(() => history.goBack())\r\n .catch(error => interceptApiError(error, t, history))\r\n .catch(() => displayWarningNotification({ message: INTERNAL_SERVER_ERROR }))\r\n .finally(() => setSendingRequest(false));\r\n })\r\n .catch(() => setSendingRequest(false));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
{t(\"phoneContact:TITLE\")}
\r\n \r\n \r\n {t(\"phoneContact:SUBTITLE\")}\r\n {`${personalData?.firstName} ${personalData?.lastName} ${personalData?.phone}`} \r\n \r\n \r\n \r\n {t(\"common:CANCEL\")}\r\n \r\n \r\n {t(\"phoneContact:CONFIRM\")}\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PhoneContactView;\r\n","import { CustomDescription, Header, PrimaryButton, ScreeningsDetailsTable, SecondaryButton, YourDataTable } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useRegistrationContext } from \"../../contexts/registration/registrationContext\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { Col, Row } from \"antd\";\r\nimport { constants, Routes } from \"../../utils\";\r\nimport { hasPhoneNumber } from \"../../utils/helpers\";\r\nimport { useState } from \"react\";\r\nimport * as dal from \"dal\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { interceptApiError } from \"../../utils/interceptors\";\r\nimport styled from \"styled-components\";\r\n\r\nconst StyledContainer = styled.div`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function SuccessfulRegistrationView() {\r\n const { t } = useTranslation([\"common\", \"successfulRegistration\"]);\r\n const { data } = useRegistrationContext();\r\n const { type } = data;\r\n const { funding } = data?.selectedRegistration || {};\r\n const { phone } = data?.personalData || {};\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n const history = useHistory();\r\n\r\n const [isPaying, setPaying] = useState(false);\r\n\r\n const payForRegistration = () => {\r\n setPaying(true);\r\n\r\n const { personalData, selectedRegistration, referralId } = data || {};\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.PAY_FOR_REGISTRATION)\r\n .then(token => {\r\n dal.screening\r\n .payForCampaignRegistration(selectedRegistration?.campaignRegistration?.token || \"\", {\r\n patient: personalData,\r\n token,\r\n registrationId: selectedRegistration?.campaignRegistration?.registrationId || 0,\r\n referralId: referralId || \"\",\r\n privateFunding: type.type === \"paid\"\r\n })\r\n .then(res => window.open(res.redirectUri, \"_self\"))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => setPaying(false));\r\n })\r\n .catch(() => setPaying(false));\r\n };\r\n\r\n return (\r\n \r\n
{t(\"successfulRegistration:TITLE\")}
\r\n {type.type === \"paid\" ? (\r\n <>\r\n {t(\"successfulRegistration:SELECTED_PAID_DATE\")}\r\n \r\n \r\n \r\n \r\n {hasPhoneNumber(phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n {t(\"successfulRegistration:PAID_NOW_ONLINE\")} ({(funding?.price || 0).toFixed(2)} PLN)\r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n {t(\"successfulRegistration:DESCRIPTION\")}\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import { CustomDescription } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport CustomResult from \"../common/CustomResult\";\r\nimport { useEffect } from \"react\";\r\nimport * as dal from \"dal\";\r\nimport queryString from \"querystring\";\r\nimport styled from \"styled-components\";\r\n\r\nconst StyledContainer = styled.div`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function SuccessfulPaymentView() {\r\n const { t } = useTranslation([\"common\", \"successfulPayment\"]);\r\n\r\n useEffect(() => {\r\n const { paymentId } = queryString.parse(window.location.search.slice(1));\r\n\r\n const updatePaymentInformation = () => {\r\n dal.screening.confirmPayment(paymentId.toString() || \"\").catch();\r\n };\r\n\r\n updatePaymentInformation();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {t(\"successfulPayment:DESCRIPTION\")}\r\n \r\n );\r\n}\r\n","import { CustomDescription, SecondaryButton } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport CustomResult from \"../common/CustomResult\";\r\nimport { Col, Row } from \"antd\";\r\nimport { Routes } from \"../../utils\";\r\nimport styled from \"styled-components\";\r\n\r\nconst StyledContainer = styled.div`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function FailedPaymentView() {\r\n const { t } = useTranslation([\"common\", \"failedPayment\"]);\r\n\r\n return (\r\n \r\n \r\n {t(\"failedPayment:DESCRIPTION\")}\r\n \r\n {t(\"failedPayment:COME_BACK_HOME_PAGE\")}\r\n \r\n \r\n );\r\n}\r\n","import { Row, Form, Col, notification } from \"antd\";\r\nimport { CustomCard, CustomDescription, CustomFormItem, Header, LinkButton, PrimaryButton, SecondaryButton, Upload } from \"components/common\";\r\nimport CustomInput from \"components/common/CustomInput\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { getDate, hasPhoneNumber } from \"utils/helpers\";\r\nimport * as dal from \"dal\";\r\nimport { IReferralFormSubmitValues } from \"typings/referral\";\r\nimport { RcFile } from \"antd/lib/upload\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { useState } from \"react\";\r\nimport { interceptApiError } from \"../../../utils/interceptors\";\r\nimport styled from \"styled-components\";\r\nimport { LeftOutlined } from \"@ant-design/icons\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\ninterface IProps {\r\n firstName: string;\r\n lastName: string;\r\n studyDate?: string;\r\n allowBackToPersonalData?: boolean;\r\n allowMakePhoneRequest?: boolean;\r\n onFinish: (referralId: string) => void;\r\n onCancel?: () => void;\r\n}\r\n\r\nconst StyledContainer = styled.div`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function UploadFile({ firstName, lastName, studyDate, allowBackToPersonalData, allowMakePhoneRequest, onFinish, onCancel }: IProps) {\r\n const { t } = useTranslation([\"common\", \"referral\"]);\r\n const { data, dispatch } = useRegistrationContext();\r\n const { theme } = useThemeContext();\r\n const history = useHistory();\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const [form] = Form.useForm();\r\n const [isUploading, setUploading] = useState(false);\r\n const [fileName, setFileName] = useState(\"\");\r\n\r\n const handleSuccessfulReferralSubmit = (data: any) => {\r\n onFinish(data?.id);\r\n };\r\n\r\n const uplaodFile = ({ files }: IReferralFormSubmitValues) => {\r\n if (files.length <= 0 && files.length > 1) return notification.warn({ message: \"Należy załączyć skierowanie\" });\r\n\r\n const {\r\n personalData: { pesel, idCard, passport }\r\n } = data;\r\n const originFileList = files.map(el => el.originFileObj)[0] as RcFile;\r\n\r\n const formData = new FormData();\r\n\r\n formData.append(\"file\", originFileList);\r\n\r\n setUploading(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.UPLOAD_REFERRAL)\r\n .then(token => {\r\n formData.append(\"token\", token);\r\n\r\n dal.referral\r\n .add(formData)\r\n .then(handleSuccessfulReferralSubmit)\r\n .catch(error => interceptApiError(error, t, history))\r\n .finally(() => setUploading(false));\r\n })\r\n .catch(() => setUploading(false));\r\n };\r\n\r\n const onFileAdd = (files: any) => {\r\n setFileName(files?.[0]?.name || \"\");\r\n form.setFieldsValue({ files });\r\n };\r\n\r\n return (\r\n \r\n
{t(\"referral:TITLE\")}
\r\n {t(\"referral:DESCRIPTION\")}\r\n \r\n \r\n \r\n \r\n {t(\"referral:PATIENT_NAME\")}: {firstName} {lastName}\r\n \r\n {studyDate && (\r\n \r\n {t(\"referral:STUDY_DATE\")}: {getDate(studyDate)}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"referral:UPLOAD_FILE_TYPE_INFO\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n form.submit()} style={{ marginBottom: 24 }}>\r\n {t(\"referral:CONFIRM\")}\r\n \r\n \r\n \r\n {allowBackToPersonalData && (\r\n \r\n {t(\"common:BACK_AND_CHANGE_PERSONAL_DATA\")}\r\n \r\n )}\r\n \r\n \r\n {allowMakePhoneRequest && hasPhoneNumber(data.personalData?.phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import {UploadFile} from \"../features/upload\";\r\nimport {useHistory} from \"react-router-dom\";\r\nimport {Routes} from \"../../utils\";\r\nimport {useRegistrationContext} from \"../../contexts/registration/registrationContext\";\r\n\r\nconst RegistrationReferralView: React.VFC = () => {\r\n const history = useHistory();\r\n const { data, dispatch } = useRegistrationContext();\r\n \r\n const handleFinish = (id: string) => {\r\n dispatch({\r\n type: \"SET_REFERRAL\",\r\n payload: id\r\n });\r\n history.push(Routes.STUDY_DATE);\r\n }\r\n \r\n const handleCancel = () => {\r\n history.push(Routes.FORM_VIEW);\r\n }\r\n \r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default RegistrationReferralView;\r\n","import {UploadFile} from \"../features/upload\";\r\nimport {useGoogleReCaptcha} from \"react-google-recaptcha-v3\";\r\nimport {useEffect, useState} from \"react\";\r\nimport {CustomSpinner} from \"../common\";\r\nimport {constants, Routes} from \"../../utils\";\r\nimport * as dal from \"dal\";\r\nimport * as queryString from \"querystring\";\r\nimport {interceptApiError} from \"../../utils/interceptors\";\r\nimport {useTranslation} from \"react-i18next\";\r\nimport {useHistory} from \"react-router-dom\";\r\nimport {ReferralStatusView} from \"../features/studyView\";\r\nimport {ReferralStatus} from \"../../typings/enums\";\r\n\r\nconst SendReferralView: React.VFC = () => {\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n const { t } = useTranslation([\"common\"]);\r\n const history = useHistory();\r\n \r\n const [isLoading, setLoading] = useState(true);\r\n const [isUpdating, setUpdating] = useState(false);\r\n const [study, setStudy] = useState(null);\r\n\r\n const verifyCaptcha = async (): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (!executeRecaptcha) {\r\n reject();\r\n }\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.UPLOAD_REFERRAL).then(resolve).catch(reject);\r\n });\r\n };\r\n\r\n const handleSuccessfulStudyLoad = (study: any) => {\r\n setStudy(study);\r\n setLoading(false);\r\n }\r\n\r\n const getStudyInitialInformation = () => {\r\n const { registration } = queryString.parse(window.location.search.slice(1));\r\n\r\n verifyCaptcha()\r\n .then(token => {\r\n dal.security\r\n .validateCaptchaToken(token)\r\n .then(response => {\r\n sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_TOKEN, response.token);\r\n\r\n dal.screening\r\n .getScreeningInformation(registration?.toString())\r\n .then(handleSuccessfulStudyLoad)\r\n .catch(e => interceptApiError(e, t, history));\r\n });\r\n })\r\n .catch();\r\n }\r\n \r\n useEffect(() => {\r\n getStudyInitialInformation();\r\n }, [executeRecaptcha]);\r\n \r\n if (isLoading || isUpdating) {\r\n return (\r\n \r\n );\r\n }\r\n \r\n if (study?.status !== ReferralStatus.Ok) {\r\n return (\r\n \r\n )\r\n }\r\n \r\n const handleSuccessfulUpdateRegistrationReferal = (response: IScreeningReferralResult) => {\r\n if (response.status === ReferralStatus.Ok) {\r\n history.push(Routes.SUCCESSFUL_REFERRAL_UPLOAD);\r\n } else {\r\n interceptApiError(null, t, history);\r\n }\r\n }\r\n \r\n const updateRegistrationReferral = (id: string) => {\r\n setUpdating(true);\r\n \r\n executeRecaptcha?.()\r\n .then(token => {\r\n const { registration } = queryString.parse(window.location.search.slice(1));\r\n \r\n dal.screening\r\n .updateRegistrationReferral(registration.toString(), id, token)\r\n .then(handleSuccessfulUpdateRegistrationReferal)\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => setUpdating(false));\r\n })\r\n .catch(() => setUpdating(false));\r\n }\r\n \r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default SendReferralView;\r\n","import CustomResult from \"../common/CustomResult\";\r\nimport {CustomDescription} from \"../common\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst SuccessfulReferralUploadView: React.VFC = () => {\r\n const { t } = useTranslation([\"referral\"]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"referral:REFERRAL_UPLOADED_INFO\")}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default SuccessfulReferralUploadView;","import { Col, Form, Row } from \"antd\";\r\nimport { AsteriskSign, CustomFormItem, CustomInput, CustomMaskedInput, CustomRadio } from \"components/common\";\r\nimport UnderlineLink from \"components/common/UnderlineLink\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants } from \"utils\";\r\nimport { validateBirthDate } from \"utils/helpers\";\r\nimport { customValidator } from \"utils/validators\";\r\n\r\ntype Props = {\r\n initialValues: any;\r\n buttons: React.ReactElement;\r\n onFinish: (request: VerifyInvitation) => void;\r\n};\r\n\r\nconst InvitationForm: React.FC = ({ buttons, initialValues, onFinish }) => {\r\n const { t } = useTranslation();\r\n const [form] = Form.useForm();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n customValidator(validateBirthDate, value, true, t(\"common:INVALID_BIRTH_DATE\"))\r\n }\r\n ]}\r\n >\r\n \r\n \r\n \r\n\r\n \r\n (value ? Promise.resolve() : Promise.reject(new Error(t(\"common:REQUIRED_FORM_FIELD\"))))\r\n }\r\n ]}\r\n >\r\n \r\n {t(\"common:I_ACCEPT\")}{\" \"}\r\n \r\n {t(\"common:PORTAL_TERMS\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {buttons}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default InvitationForm;\r\n","import { Row } from \"antd\";\r\nimport styled from \"styled-components\";\r\nimport { AsteriskSign, CustomDescription, Header, LinkButton, PrimaryButton, SecondaryButton } from \"components/common\";\r\nimport InvitationForm from \"components/features/invitation/InvitationForm\";\r\nimport { useInvitation } from \"hooks\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { getInvitationLink } from \"utils/invitation\";\r\n\r\nconst accessCode = getInvitationLink();\r\n\r\nconst StyledContainer = styled.div`\r\n width: 80%;\r\n margin: 0 auto;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 32px;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n`;\r\n\r\nconst InvitationView = () => {\r\n const { t } = useTranslation();\r\n const { verify } = useInvitation();\r\n\r\n return (\r\n \r\n
{t(\"invitation:TITLE\")}
\r\n\r\n {t(\"invitation:DESCRIPTION\")}\r\n\r\n \r\n {t(\"common:REQUIRED_FIELD\")}\r\n \r\n\r\n \r\n \r\n {t(\"invitation:PERSONAL_DATA_LINK\")}\r\n \r\n\r\n {t(\"invitation:SUBMIT\")}\r\n \r\n }\r\n />\r\n\r\n \r\n \r\n {t(\"common:TERMS_AND_CONDITIONS\")}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default InvitationView;\r\n","import { useEffect, useRef, useState } from \"react\";\r\n\r\nimport { useUnmount } from \"ahooks\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Route, RouteProps, useHistory } from \"react-router-dom\";\r\nimport { HubConnectionBuilder, HubConnection } from \"@microsoft/signalr\";\r\n\r\nimport { QueueView } from \"components/views\";\r\nimport { displayWarningNotification } from \"utils/notifications\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { PrimaryButton } from \"../../common\";\r\nimport { queue as dal } from \"dal\";\r\nimport { interceptApiError } from \"utils/interceptors\";\r\n\r\nconst QueuedPath: React.FC = props => {\r\n const { t } = useTranslation([\"queue\"]);\r\n const history = useHistory();\r\n\r\n const [hasGetInitialInformation, setGetInitialInformation] = useState(false);\r\n const [interval, setIntervalTimer] = useState(null);\r\n const [timeout, setTimeoutTimer] = useState(null);\r\n const [allowReconnectSession, setAllowReconnectSession] = useState(false);\r\n const [queue, setQueue] = useState({\r\n peopleInQueue: 0,\r\n maximumWaitingTime: 0,\r\n permissions: 1\r\n });\r\n\r\n const connectionRef = useRef(null);\r\n\r\n const handleFailedSocketConnection = () => {\r\n setAllowReconnectSession(true);\r\n\r\n displayWarningNotification({\r\n message: t(\"queue:CANNOT_CONNECT_TO_SOCKET\")\r\n });\r\n };\r\n\r\n const stopSocketConnection = () => {\r\n connectionRef?.current?.stop();\r\n };\r\n\r\n useUnmount(() => {\r\n stopSocketConnection();\r\n });\r\n\r\n const setSessionConnection = () => {\r\n connectionRef.current = new HubConnectionBuilder().withUrl(\"/hubs/queue\").withAutomaticReconnect().build();\r\n };\r\n\r\n const reconnectToSession = () => {\r\n if (connectionRef) {\r\n connectionRef.current?.stop().then(setSessionConnection);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setSessionConnection();\r\n\r\n const keepAliveTimer = setInterval(async () => {\r\n await dal.keepQueueSessionAlive(connectionRef?.current?.connectionId || \"\").catch(err => interceptApiError(err, t, history));\r\n }, 10_000);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n clearInterval(keepAliveTimer);\r\n clearTimeout(timeout);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (interval) {\r\n clearInterval(interval);\r\n }\r\n\r\n const timer = setInterval(() => {\r\n setQueue(prevState => ({\r\n ...prevState,\r\n maximumWaitingTime: prevState.maximumWaitingTime > 0 ? prevState.maximumWaitingTime - 1 : 0\r\n }));\r\n }, 1000);\r\n\r\n setIntervalTimer(timer);\r\n }, [queue.peopleInQueue]);\r\n\r\n useEffect(() => {\r\n if (connectionRef && connectionRef.current?.state === \"Disconnected\") {\r\n connectionRef.current\r\n ?.start()\r\n .then(() => {\r\n setGetInitialInformation(true);\r\n\r\n connectionRef.current?.on(\"Synchronize\", (message: IQueueDetails) => {\r\n setQueue({\r\n ...message,\r\n maximumWaitingTime: message.peopleInQueue > 0 ? message.peopleInQueue * constants.TIMEOUTS.MAXIMUM_TIME_FOR_SELECT_STUDY_DATE : 0\r\n });\r\n });\r\n\r\n connectionRef.current?.on(\"Disconnect\", () => {\r\n if (history.location.pathname.includes(Routes.QUEUE)) {\r\n history.push(Routes.FORM_VIEW);\r\n }\r\n });\r\n })\r\n .catch(handleFailedSocketConnection);\r\n }\r\n }, [connectionRef.current?.state]);\r\n\r\n const validateSocketConnection = () => {\r\n setAllowReconnectSession(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n\r\n const timer = setTimeout(() => validateSocketConnection(), 3000);\r\n setTimeoutTimer(timer);\r\n }, [connectionRef.current?.state]);\r\n\r\n const getMaxiumWaitingTime = (time: number): string => {\r\n const minutes = Math.floor(time / 60);\r\n const seconds = Math.ceil(time % 60);\r\n\r\n return `${minutes > 0 ? `${minutes}m` : \"\"} ${`${seconds}s`}`;\r\n };\r\n\r\n if (connectionRef.current?.state !== \"Connected\" || !hasGetInitialInformation) {\r\n return (\r\n \r\n {allowReconnectSession && queue.peopleInQueue === 0 && (\r\n reconnectToSession()}>{t(\"queue:RECONNECT\")}\r\n )}\r\n \r\n );\r\n }\r\n\r\n if (connectionRef.current?.state === \"Connected\" && queue.permissions === 1) {\r\n return (\r\n \r\n {allowReconnectSession && queue.peopleInQueue === 0 && (\r\n reconnectToSession()}>{t(\"queue:RECONNECT\")}\r\n )}\r\n \r\n );\r\n }\r\n\r\n return {props.children};\r\n};\r\n\r\nexport default QueuedPath;\r\n","import { useEffect } from \"react\";\r\nimport { constants, storage } from \"utils\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { MemoryRouter as Router, Route, Switch } from \"react-router-dom\";\r\nimport { MainLayout } from \"components/layouts\";\r\nimport {\r\n ConfirmStudyDateView,\r\n FormView,\r\n HomepageView,\r\n QuestionarieView,\r\n QueueView,\r\n StudyDateView,\r\n PhoneContactView,\r\n SuccessfulRegistrationView,\r\n SuccessfulPaymentView,\r\n FailedPaymentView,\r\n RegistrationReferralView,\r\n SendReferralView,\r\n SuccessfulReferralUploadView,\r\n InvitationView\r\n} from \"components/views\";\r\nimport { QueuedPath } from \"components/features/queue\";\r\nimport { Routes } from \"./utils\";\r\nimport { GoogleReCaptchaProvider } from \"react-google-recaptcha-v3\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./App.css\";\r\n\r\nrequire(\"dayjs/locale/pl\");\r\nrequire(\"dayjs/locale/en\");\r\n\r\nfunction App() {\r\n const { i18n } = useTranslation();\r\n const { dispatch } = useThemeContext();\r\n\r\n useEffect(() => {\r\n const language = storage.getItem(constants.STORAGE_KEYS.LANGUAGE) || constants.LANGUAGES.PL;\r\n\r\n i18n.changeLanguage(language);\r\n dayjs.locale(language);\r\n dispatch({\r\n type: \"INITIAL_STATE_CHANGE\",\r\n payload: {\r\n forecolor: storage.getItem(constants.STORAGE_KEYS.CONTRAST.FORECOLOR) as AccessibilityMode,\r\n backcolor: storage.getItem(constants.STORAGE_KEYS.CONTRAST.BACKCOLOR) as AccessibilityMode,\r\n sizemode: storage.getItem(constants.STORAGE_KEYS.SIZE) as AccessibilitySize\r\n }\r\n });\r\n }, [i18n, dispatch]);\r\n\r\n if (window.location.search.length > 0 && window.location.search.indexOf(\"registration\") >= 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport { constants } from 'utils';\r\nimport { en, pl } from '.';\r\n\r\nexport const resources = {\r\n pl: {\r\n common: pl.common,\r\n homepage: pl.homepage,\r\n survey: pl.survey,\r\n studyDate: pl.studyDate,\r\n confirmStudyDate: pl.confirmStudyDate,\r\n referral: pl.referral,\r\n loading: pl.loading,\r\n personalData: pl.personalData,\r\n queue: pl.queue,\r\n phoneContact: pl.phoneContact,\r\n successfulRegistration: pl.successfulRegistration,\r\n successfulPayment: pl.successfulPayment,\r\n failedPayment: pl.failedPayment,\r\n invitation: pl.invitation,\r\n },\r\n en: {\r\n common: en.common,\r\n homepage: en.homepage,\r\n survey: en.survey,\r\n studyDate: en.studyDate,\r\n confirmStudyDate: en.confirmStudyDate,\r\n referral: en.referral,\r\n loading: en.loading,\r\n personalData: en.personalData,\r\n queue: en.queue,\r\n phoneContact: en.phoneContact,\r\n successfulRegistration: en.successfulRegistration,\r\n successfulPayment: en.successfulPayment,\r\n failedPayment: en.failedPayment,\r\n invitation: en.invitation,\r\n },\r\n} as const;\r\n\r\ni18n.use(initReactI18next).init({\r\n resources,\r\n defaultNS: 'common',\r\n ns: [\r\n 'personalData',\r\n 'common',\r\n 'homepage',\r\n 'survey',\r\n 'studyDate',\r\n 'confirmStudyDate',\r\n 'referral',\r\n 'loading',\r\n 'phoneContact',\r\n 'successfulRegistration',\r\n 'invitation',\r\n ],\r\n lng: constants.LANGUAGES.PL,\r\n keySeparator: false,\r\n interpolation: {\r\n escapeValue: false,\r\n }\r\n});\r\n\r\nexport default i18n;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nimport './locales/i18n';\r\nimport 'antd/dist/antd.css';\r\n\r\nimport { ThemeProvider } from 'contexts/theme/themeContext';\r\nimport { RegistrationProvider } from 'contexts/registration/registrationContext';\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}