{"version":3,"sources":["../../shared/components/OnlineChat/OnlineChat.module.scss","../../shared/components/ExamQuestion/ExamQuestion.module.scss","../../shared/components/TheoreticalQuestionRedactor/TheoreticalQuestionRedactor.module.scss","../../shared/components/Sidebar/Sidebar.module.scss","components/QuestionsChooseAnswer/QuestionsChooseAnswer.module.scss","../../shared/components/Card/Card.module.scss","../../shared/components/Header/Header.module.scss","../../shared/components/EditExperts/EditExperts.module.scss","../../shared/components/Identification/Identification.module.scss","../../shared/components/Common/CustomRadio/CustomRadio.module.scss","../../shared/components/assets/svg/auth_top_logo.svg","../../shared/components/ExamTable/ExamTable.module.scss","../../shared/components/Pagination/Pagination.module.scss","../../shared/components/Common/InputPassword/InputPassword.module.scss","../../shared/components/Common/CustomCheckbox/CustomCheckbox.module.scss","../../shared/components/assets/svg/back_arrow.svg","../../shared/components/assets/svg/dashboard_logo_SPK.svg","../../shared/components/assets/svg/avatar.svg","../../shared/components/assets/svg/news_icon.svg","../../shared/components/Common/Modals/PhoneModal/PhoneModal.module.scss","../../shared/components/ProfileInfoBlock/ProfileInfoBlock.module.scss","components/OnlineModal/OnlineModal.module.scss","../../shared/components/EditableTable/EditableTable.module.scss","../../shared/components/QualificationDetails/QualificationDetails.module.scss","containers/ExamPollContainer/ExamPollContainer.module.scss","../../shared/components/Common/CustomSwitch/CustomSwitch.module.scss","../../shared/components/MultiSelectSection/MultiSelectSection.module.scss","../../shared/components/PracticalQuestionRedactor/PracticalQuestionRedactor.module.scss","../../shared/components/DocumentUpLoader/DropZone/DropZone.module.scss","../../shared/components/CertificateModal/CertificateModal.module.scss","../../shared/components/UserVideo/UserVideo.module.scss","../../shared/components/Dropdown/Dropdown.module.scss","../../shared/components/Common/Modals/SmsSignModal/SmsSignModal.module.scss","../../shared/components/DateTimePicker/DateTimePicker.module.scss","../../shared/components/OnlineVideo/OnlineVideo.module.scss","../../shared/components/DotsSettings/DotsSettings.module.scss","../../shared/components/ExamWithPayment/ExamWithPayment.module.scss","../../shared/components/WebCamSwitch/WebCamSwitch.module.scss","../../shared/components/DocumentUpLoader/TemplateGroup/TemplateGroup.module.scss","../../shared/components/DocumentUpLoader/UploadedDocument/UploadedDocument.module.scss","components/QuestionsNavigation/QuestionsNavigation.module.scss","../../shared/components/assets/svg/link_icon.svg","../../shared/components/Common/Modals/WarningModal/WarningModal.module.scss","../../shared/components/Common/Modals/CheckBoxModal/CheckBoxModal.module.scss","../../shared/components/Common/AdvancedTable/AdvancedTable.module.scss","../../shared/components/Details/Details.module.scss","../../shared/components/VerifyEmailInput/VerifyEmailInput.module.scss","components/ExamPlaceholder/ExamPlaceholder.module.scss","components/QuestionsProgressBar/QuestionsProgressBar.module.scss","components/FinishExamPart/FinishExamPart.module.scss","../../shared/components/assets/svg/qec/empty_certificate_icon.svg","../../shared/components/EventButtons/EventButtons.module.scss","../../shared/components/Common/Modals/RejectModal/RejectModal.module.scss","../../shared/components/ExamApplicationsTable/ExamApplicationsTable.module.scss","../../shared/components/Common/ErrorPlaceholder/ErrorPlaceholder.module.scss","../../shared/components/CheckedTable/CheckedTable.module.scss","../../shared/components/ExamApplicationDetails/ExamApplicationDetails.module.scss","../../shared/components/ApplicantExamDetailsTabs/ResultAndStatusTab/ResultAndStatusTab.module.scss","../../shared/components/ApplicantDocuments/ApplicantDocuments.module.scss","../../shared/components/TextLink/TextLink.module.scss","../../shared/components/StatementTab/StatementTab.module.scss","../../shared/components/SignedExpert/SignedExpert.module.scss","components/WarningAlert/WarningAlert.module.scss","components/QuestionsMarks/QuestionsMarks.module.scss","containers/SidebarContainer/SidebarContainer.module.scss","../../shared/components/Common/Loader/Loader.module.scss","../../shared/components/OccupationalStandardDetails/OccupationalStandardDetails.module.scss","../../shared/components/QecTotalInfo/QecTotalInfo.module.scss","../../shared/components/EcDetails/EcDetails.module.scss","../../shared/components/UsersPage/index.module.scss","../../shared/components/Common/LoaderBtn/LoaderBtn.module.scss","../../shared/components/Common/EmptySection/EmptySection.module.scss","../../shared/components/ExamDetailsTabs/NokOrAkProtocolTab/NokOrAkProtocolTab.module.scss","../../shared/components/Common/BubbleLoader/BubbleLoader.module.scss","../../shared/components/DocumentUpLoader/DocumentUpLoader.module.scss","../../shared/components/PhoneInput/PhoneInput.module.scss","components/TimeLeft/TimeLeft.module.scss","../../shared/components/assets/svg/empty_expert_table.svg","../../shared/components/assets/svg/dnd_icon.svg","../../shared/components/Common/Modals/ResetPasswordModal/ResetPasswordModal.module.scss","../../shared/components/ProtocolLink/ProtocolLink.module.scss","../../shared/components/Common/InputText/InputText.module.scss","../../shared/components/ExpertTabs/PersonalData/PersonalData.module.scss","../../shared/components/ExpertTabs/Connected/Connected.module.scss","../../shared/components/Common/ExtendedSelect/ExtendedSelect.module.scss","../../shared/components/Common/NotificationBundle/index.module.scss","../../shared/components/DragDrop/DragDrop.module.scss","../../shared/components/MultiSelectGroup/MultiSelectGroup.module.scss","../../shared/components/DocFileLink/DocFileLink.module.scss","../../shared/components/EmailConfirmationNotification/EmailConfirmationNotification.module.scss","../../shared/components/ExamDetailsTabs/SovietProtocolTab/SovietProtocolTab.module.scss","../../shared/components/AlertText/AlertText.module.scss","../../shared/components/Row/Row.module.scss","../../shared/components/AnimatedTabs/AnimatedTabs.module.scss","../../shared/components/assets/svg/cancel_icon.svg","../../shared/components/Common/FetchSelect/FetchSelect.module.scss","../../shared/components/ExamDetailsTabs/VideoTab/VideoTab.module.scss","../../shared/components/AddressLink/AddressLink.module.scss","../../shared/components/OverlayTrigger/OverlayTrigger.module.scss","../../shared/components/SexRadios/SexRadios.module.scss","../../shared/components/Status/Status.module.scss","../../shared/components/Textarea/Textarea.module.scss","../../shared/components/assets/svg/exam/arrow-right.svg","../../shared/components/assets/svg/sort_icon.svg","../../shared/components/ProtocolLink/download_icon.svg","../../shared/components/assets/svg/Loader_svg.svg","../../shared/components/Common/SimpleTable/SimpleTable.module.scss","../../shared/components/assets/svg/status_icon.svg","../../shared/components/AuthenticationForm/AuthenticationForm.module.scss","../../shared/components/assets/svg/spkfr/qec_admin_empty_table.svg","../../shared/components/assets/svg/applicants_icon.svg","../../shared/components/assets/svg/error_icon.svg","../../shared/components/assets/svg/empty_payment_icon.svg","../../shared/components/ExamLog/ExamLog.module.scss","../../shared/components/assets/svg/attachment_Icon.svg","../../shared/components/CKText/CKText.module.scss","../../shared/components/assets/svg/add_icon.svg","../../shared/components/assets/svg/chairman_Icon.svg","../../shared/components/ExamDetailsTabs/ApplicantsTab/ApplicantsTab.module.scss","../../shared/components/ExamDetailsTabs/RulesTab/RulesTab.module.scss","../../shared/components/ExamDetailsTabs/SendProtocolModal/SendProtocolModal.module.scss","../../shared/components/ApplicantExamDetailsTabs/ApplicantExamDetailsTabs.module.scss","../../shared/components/CustomRadioGroup/CustomRadioGroup.module.scss","../../shared/components/UserVideo/exclamation.svg","../../shared/components/UserVideo/full-screen-icon.png","../../shared/components/assets/svg/message_icon.svg","../../shared/components/assets/svg/alert_icon.svg","../../shared/components/assets/svg/documents_icon.svg","../../shared/components/DocumentUpLoader/TemplateGroup/rightArrow_icon.svg","../../shared/components/DocumentUpLoader/TemplateGroup/document_icon.svg","../../shared/components/DocumentUpLoader/UploadedDocument/upload_icon.svg","../../shared/components/DocumentUpLoader/UploadedDocument/delete_icon.svg","../../shared/components/DocumentUpLoader/DropZone/drop_icon.svg","../../shared/components/QualificationInfoDetails/cert-preview.jpg","../../shared/components/QualificationInfoDetails/QualificationInfoDetails.module.scss","../../shared/components/assets/svg/pen_icon.svg","../../shared/components/assets/svg/wait_time_icon.svg","../../shared/components/CertificateTab/CertificateTab.module.scss","../../shared/components/DotsSettings/dots_icon.svg","../../shared/components/VerifyEmailInput/convert_icon.svg","../../shared/components/VerifyEmailInput/arrows_icon.svg","../../shared/components/Dropdown/icons/arrow.svg","../../shared/components/Dropdown/icons/drop.svg","containers/ProfileContainer/ProfileContainer.module.scss","../../shared/components/assets/svg/exam/start_exam_bg.svg","../../shared/components/assets/svg/exam/tick.svg","../../shared/components/assets/svg/exam/paused.svg","../../shared/components/assets/svg/exam/webcam_icon.svg","../../shared/components/assets/svg/exam/screen_icon.svg","../../shared/components/assets/svg/exam/expert_chat_icon.svg","../../shared/components/assets/gif/test_cam.gif","../../shared/components/assets/gif/test_display.gif","../../shared/components/assets/gif/not_allowed_camera.gif","layouts/auth/AuthorizedLayout.module.scss","../../shared/_helpers/localStorageHelpers/localStorageHelper.ts","../../shared/_helpers/localStorageHelpers/localStorageHeaderTitle.ts","../../shared/_helpers/const/Colors.ts","../../shared/_helpers/localStorageHelpers/hasAccessToken.ts","../../shared/_helpers/formatHelpers/formatPhoneNumber.ts","../../shared/_helpers/formatHelpers/serialNumberToChar.ts","../../shared/_helpers/ColorStatus.ts","../../shared/_helpers/SocketConnector/OnlineModels.ts","../../shared/_helpers/VersionReader.ts","../../shared/_helpers/unsavedFormDetector.ts","../../shared/_helpers/WebRTC/MediaConstraints.ts","../../shared/_helpers/WebRTC/IceServers.ts","../../shared/_helpers/WebRTC/MediaStreamProxy.ts","../../shared/_helpers/WebRTC/WebRTCPresenter.ts","../../shared/_helpers/getImageUrlFromText.ts","../../shared/_helpers/const/RegExp.ts","../../shared/_helpers/TimingSynchronizer.ts","../../shared/_helpers/errors/ApiError.ts","../../shared/_helpers/const/Protocols.ts","../../shared/_helpers/ApiConnector/types.ts","../../shared/components/DatePicker/DatePicker.tsx","../../shared/_helpers/ApiConnector/index.ts","../../shared/_helpers/audio/NotificationsPlayer.ts","layouts/unauth/UnAuthorizedLayout.tsx","../../shared/components/Header/Header.tsx","../../shared/components/Common/CustomCheckbox/CustomCheckbox.tsx","../../shared/components/Card/Card.tsx","../../shared/components/Common/InputPassword/index.ts","../../shared/components/Common/InputPassword/InputPassword.tsx","../../shared/components/Sidebar/NavList.tsx","../../shared/components/Sidebar/index.ts","../../shared/components/Sidebar/Sidebar.tsx","../../shared/components/enums.ts","../../shared/components/Common/Modals/WarningModal/WarningModal.tsx","../../shared/components/Common/CustomSwitch/CustomSwitch.tsx","../../shared/components/Common/Loader/Loader.tsx","../../shared/components/UnsavedFormModal/UnsavedFormModal.tsx","../../shared/components/ExamRequirement/ExamRequirement.tsx","../../shared/components/Common/InputText/InputText.tsx","../../shared/components/UsersPage/UsersPage.tsx","../../shared/components/AuthenticationForm/AuthenticationForm.tsx","../../shared/components/Common/ExtendedSelect/ExtendedSelect.tsx","../../shared/components/ResetPasswordSteps/ResetPasswordFirstStep.tsx","../../shared/components/ResetPasswordSteps/ResetPasswordSecondStep.tsx","../../shared/components/ResetPasswordSteps/ResetPasswordThirdStep.tsx","../../shared/components/Common/LoaderBtn/LoaderBtn.tsx","../../shared/components/Common/ErrorBoundary/index.tsx","../../shared/components/Identification/Identification.tsx","../../shared/components/TheoreticalQuestionRedactor/types.ts","../../shared/components/Common/ErrorPlaceholder/ErrorPlaceholder.tsx","../../shared/components/Common/NotificationBundle/index.tsx","../../shared/components/Captcha/Captcha.tsx","../../shared/components/DragDrop/withDragDropContext.tsx","../../shared/components/DragDrop/drag-drop.ts","../../shared/components/ExamWithPayment/ExamWithPayment.tsx","../../shared/components/DragDrop/DragDrop.tsx","../../shared/components/TheoreticalQuestionRedactor/QuestionVariant.tsx","../../shared/components/TheoreticalQuestionRedactor/QuestionSelect.tsx","../../shared/components/TheoreticalQuestionRedactor/MatchingRightVariant.tsx","../../shared/components/TheoreticalQuestionRedactor/TheoreticalQuestionRedactor.tsx","../../shared/components/TheoreticalQuestionRedactor/MatchingOrOrderingTheoreticalQuestion.tsx","../../shared/components/ExamQuestionImage/ExamQuestionImage.tsx","../../shared/components/MultiSelectSection/MultiSelectSection.tsx","../../shared/components/PracticalQuestionRedactor/types.ts","../../shared/components/CKText/CKText.tsx","../../shared/components/PracticalQuestionRedactor/PracticalQuestionRedactor.tsx","../../shared/components/EditableTable/helpers.ts","../../shared/components/ExamApplicationTabs/ExamApplicationTabs.tsx","../../shared/components/EditableTable/RowRenderer.tsx","../../shared/components/EditableTable/EditableTable.tsx","../../shared/components/AutoGrowTextArea/AutoGrowTextArea.tsx","../../shared/components/ExamDetailsTabs/ExamDetailsTabs.tsx","../../shared/components/ApplicantExamDetailsTabs/ApplicantExamDetailsTabs.tsx","../../shared/components/WebCamSwitch/WebCamSwitch.tsx","../../shared/components/UserVideo/UserVideo.tsx","../../shared/hooks/useAutoScroll.ts","../../shared/hooks/useMouseLeaveDetector.ts","../../shared/components/OnlineChat/OnlineChat.tsx","../../shared/components/OnlineChat/OnlineChatAlert.tsx","../../shared/components/OnlineChat/OnlineChatMessage.tsx","../../shared/components/Common/BubbleLoader/BubbleLoader.tsx","../../shared/components/OnlineChat/LoadingPlaceholder.tsx","../../shared/components/ApplicantDetailsTabs/ApplicantDetailsTabs.tsx","../../shared/components/PhoneInput/PhoneInput.tsx","../../shared/components/NotFound/NotFound.tsx","../../shared/components/DotsSettings/DotsSettings.tsx","../../shared/components/Dropdown/Dropdown.tsx","containers/ResetPasswordContainer/ResetPasswordContainer.tsx","containers/LoginContainer/LoginContainer.tsx","containers/ProfileContainer/ProfileContainer.tsx","components/WarningAlert/WarningAlert.tsx","components/ExamPlaceholder/Clock/Clock.tsx","components/ExamPlaceholder/ExamPlaceholder.tsx","components/QuestionsMarks/QuestionsMarks.tsx","components/QuestionsNavigation/QuestionsNavigation.tsx","components/QuestionsProgressBar/QuestionsProgressBar.tsx","components/TimeLeft/TimeLeft.tsx","api/ApiClient.ts","api/OnlineEvents.ts","redux/models/exam.ts","api/ApiConnector.ts","config/apiConfig.default.ts","api/OnlineMethods.ts","components/OnlineModal/OnlineModal.tsx","components/FinishExamPart/FinishExamPart.tsx","components/QuestionsChooseAnswer/QuestionsMatchingAnswer.tsx","components/QuestionsChooseAnswer/QuestionsMultipleAnswer.tsx","components/QuestionsChooseAnswer/QuestionsOpenAnswer.tsx","components/QuestionsChooseAnswer/QuestionsOrderingAnswer.tsx","components/QuestionsChooseAnswer/QuestionsTabularAnswer.tsx","components/OnlineModal/OnlineModalText.ts","containers/SidebarContainer/SidebarContainer.tsx","containers/ExamContainer/ExamContainer.tsx","containers/ExamPollContainer/ExamPollContainer.tsx","containers/LoginToOnlineExamContainer/LoginToOnlineExamContainer.tsx","pages/ResetPasswordPage/ResetPasswordPage.tsx","pages/LoginPage/LoginPage.tsx","pages/ExamPage/ExamPage.tsx","pages/ProfilePage/ProfilePage.tsx","pages/NotFoundPage/NotFoundPage.tsx","pages/LoginToOnlineExamPage/LoginToOnlineExamPage.tsx","routes/UnAuthorizedHandler.tsx","routes/listOfRoutes.ts","layouts/auth/AuthorizedLayout.tsx","routes/AuthorizedHandler.tsx","routes/Routes.tsx","Root.tsx","redux/models/auth.ts","../../shared/_helpers/localStorageHelpers/localStorageAuth.ts","redux/models/errors.ts","redux/models/online.ts","redux/store/configureStore.ts","index.tsx"],"names":["module","exports","chatContainer","tabsContainer","tab","active","docs","document","document_image","document_title","document_text","document_switch","document_content","chat","fixed","loading","chat_field","newMessage","chat_field_body","alert","chat_icon","blue","rose","chat_userName","chat_userNameContainer","chat_connectStatus","messageTime","footer","textAreaContainer","hideInput","textArea","question","list","list_item","question_title","question_text","question_text_correct","question_text_wrong","success_text","failed_text","checkbox","checkbox_checked","checkbox_correct","matching","matching_correct","caption","font-extra-small","answer_container","check_box","radio_section","radio_block","id_input","matchingAdditionalBtn","matchingAddBtn","answer","answer_select","answer_multiple","dndButton","changeLink","answer_inputGroup","navButtons","navButtons_margin","nav__link","info_link","nav__list","nav__link_icon","caret","rotate-180","sidebar","sidebar__wrapper","mobileHideSidebarIcon","adaptive","logo__container","logo","user_name","notification","bg","container","title","answer_open","answer_essay","answers","card","card_title","card_title_small","card_title_withoutMargin","card__header","titleBorder","category","content__withoutPadding","headerChildContainer","title__withButton","fullHeight","errorPlaceholder","exitModalTitle","header","header__link","collapseButton","hideMenuIcon","showMenuIcon","headerTitle","buttons_container","pagination","filterBtnContainer","modal_radio_btn","modalTitle","switchContainer","tdClassName","align_center","practicalAnswer","col","radio__blue","radio_label","table","table__header","table__body","qualification","qualification__name","qualification__centerName","qualification__address","placeholder","placeholder__title","placeholder__text","placeholder__button","page_button","disabled","page_info","per_page_info","InputPassword","InputPassword__container","eye_open","eye_closed","phone_input__helper","phone_container","invalid","signModal","signModal__header","signModal__body","body__text","body__input","body__sendAgain","signModal__footer","field_container","field_container_disabled","profile_data__value","marginRow","phone_form__container","dateLabel","change_button","profile__btnContainer","cancelBtn","saveBtn","icon","videoContainer","largeVideo","video","waitChatContainer","waitChatContainer_text","switchContainer_text","switchContainer_text_secondary","onlineChat","request","requestText","editable_table","drop_target","dnd_button","delete_button","empty_th","delete_row_btn","add_row_btn","add_btn_row","total_row","editable_table_moving","pre","label","createBtn","small_field","exam","exam__category","exam__content","exam__text","assertion_title","assertion","assertion_text","exam__controlPanel","exam__btn","limit","hoverContainer","pinOn","pinOff","switchOff","switchOn","pin","iconContainer","iconOn","iconOff","loader","fields","selectGroup","field_title","field_value","date_container","date_group","loadButton","review","drop","drop_text","drop_link","drop_fieldContainer","drop_icon","document_dropZone","document_dropZone_uploaded","document_dropZone_uploadedTitle","document_button","document_row","document_icon","certificateRow","certificateRow_regNumber","certificateRow_date","video_container","connectionLost","fullScreenButton","dropdown","dropdown__menu","show","dropdown__item","dropdown__divider","commonButton","dropIcon","dropIcon_rotate","activeIcon","menuContainer","date","date_border","date_text","switch","infoContainer","examPart","iconsContainer","flare","dotsIcon","button","button_red","button_green","svg","buttonContainer","switchRow","modalDialog","amountDescription","amountDescription__block","switch_darkness","switchIcon_webCam","switchIcon_webCam_white","switchIcon_screen","switchIcon_screen_white","switchPin","switchPin_white","document_disabled","document_button_hide","uploadedFile","uploadedFile_textContainer","uploadedFile_text","uploadedFile_text_progress","uploadedFile_progressBar","uploadedFile_deleteIcon","navigation","nextButton","prevButton","text","text_limit_left","text_limit_right","modal","modal_large","modal_overflow_off","modal__header","modal__body","modal__footer","submitButton","checkBoxModal","checkBoxModal__header","checkBoxModal__title","checkBoxModal__body","checkBoxModal__footer","checkBoxModal_green","checkBoxModal_red","sortBtn","selectOptions","tableDate","info__row","info__label","info__label_dark","info__value","info__valueManyRow","verifyContainer","verifyContainer_rotate","verifyContainer_low_right","convertIcon","arrowsIcon_rotate","rotate","inputGroup","startExam__header","startExam__headerImage","startExam__body","startExam__bodyTitle","startExam__bodyText","startExam__startButton","startExam__watch","progressBar__background","progressBar__progress","numbers","subText","modal__alarmTitle","modal__alarmText","button_delete","button_add","rejectModal","rejectModal__header","rejectModal__body","rejectModal__footer","table_header_text","th","wrapper","statusSelectOptions","groupClassName","datePicker","datePickerField","checked_table","incorrect_cell_auto","incorrect_cell_manual","address_icon","reviewText","link","row","link_text","link_icon","text_end","text_address","expertSignStatus","expertSignStatus_signed","signedButton","backdrop","mark","mark__selected","mark__paused","mark__done","questionsLine","endButton","badge","control","container_full","container_bg","interactiveElement","code_field","template-container","font-small","delete-template-btn","eventButtonsContainer","internalNumberField","repeatInviteBtn","phoneHelper","loaderBtn","btn_content","btn_content_offset","detailsContainer","protocolsContainer","protocolsDetailsContainer","bubble","fillCircle","content","phone_input__helper_disabled","phone_input__helper_withPadding","phone_input__helper_fixTop","time","customProgressBar","row_input","downloadButton","documentUrl","downloadButton_disabled","prependContent","group","darkLabel","form","add_button","feedbackText","dark_style","light_style","dnd_btn","select_group","select","select_text","fileInfo","warningTitle","notificationText","toastContainer","container_title","container_text","row_title","row_value","TabBorder","Tabs_inModal","Tabs","videoTab","address_link","tooltip","copy","status","subStatus","textarea","textarea_resize","log_text","categoryTitle","RulesTab","recommendation","qualificationImage","image","profile__container","__webpack_require__","p","loadFromLocalStorage","key","localStorage","getItem","removeFromLocalStorage","removeItem","Color","hasAccessTokenInLocalStorage","accessToken","Boolean","formatPhoneNumber","phone","match","concat","replace","serialNumberToChar","num","String","fromCharCode","ChatMessageType","VideoType","ColorStatus","color","Object","classCallCheck","this","KurentoResponseIds","VideoTypeMapping","_VideoTypeMapping","defineProperty","Cam","Screen","KurentoRequestIds","AlertsTypes","_AlertsTypes","Violation","LightRed","Info","LightPurple","Error","Orange","Message","Default","appVersion","scripts","Array","prototype","slice","call","querySelectorAll","chunkCss","filter","href","includes","chunkJs","script","src","length","map","f","sp","split","sort","n","join","e","console","error","getVersion","formDetector","UnsavedFormDetector","_this","getSubmittedInputs","submitted","keys","changedInputs","forEach","obj","oldValue","value","objectSpread","formSubmitted","detectChanges","isSubmit","detect","_this2","find","MediaConstraints","default","audio","width","height","frameRate","aspectRatio","screen","timeout","window","__mediaConstraints","subDomain","spHost","location","host","IceServers","StunServers","urls","TurnServers","credential","username","__iceServers","WebRTC_MediaStreamProxy","getVideoStreamWithTryAnotherDevices","_callee","options","videoDevices","regenerator_default","a","wrap","_context","prev","next","getVideoStream","abrupt","sent","t0","navigator","mediaDevices","enumerateDevices","then","devices","d","kind","getVideoStreamWithAllDevices","stop","_callee2","constraintsCreator","i","_context2","createVideoConstraints","bind","deviceId","newOptions","_callee3","videoStream","_context3","videoMediaStream","getUserMedia","audioMediaStream","getAudioTracks","MediaStream","getDisplayStream","_callee4","displayStream","_context4","displayMediaStream","getDisplayMedia","track","addTrack","WebRTCPresenter","type","_constraints","timeoutBeforeReconnect","candidatesQueue","connected","start","asyncToGenerator","localStream","peerConnection","initStream","startPeerConnection","setVideoProps","_this$video","getTracks","removeTrack","close","subscribeToConnectEvent","callback","oniceconnectionstatechange","iceConnectionState","clearReconnectTimeout","onconnectionstatechange","connectionState","_type","sendToReconnect","log","handleMessage","_ref2","data","id","Response","IceCandidate","handleResponseOffer","handleRemoteIceCandidate","handleError","_x","apply","arguments","_ref3","description","initPeerConnection","addLocalStream","onicecandidate","handleLocalIceCandidate","createOffer","setLocalDescription","sendOffer","_x2","initLocalVideo","initScreenShare","_callee5","constraints","media","_context5","_videoConstraints","MediaStreamProxy","onended","handleEndedStream","_callee6","_context6","_onStopStream","undefined","iceServers","RTCPeerConnection","_ref7","_callee7","event","_context7","candidate","_onEvent","OnIceCandidate","videoType","warn","_x3","peer","stream","tracks","getVideoTracks","trackKey","_ref8","_callee8","_context8","Start","sdpOffer","sdp","_x4","props","_ref9","_callee9","_context9","remoteDescription","addIceCandidate","push","_x5","_ref10","_callee10","_this$video2","_context10","setRemoteDescription","RTCSessionDescription","sdpAnswer","Promise","all","splice","_x6","withoutReconnect","_onError","reconnectTimoutId","_onReconnect","setTimeout","clearTimeout","restart","_callee11","_context11","getImageUrlFromText","imageUrls","textParts","sortedQuestionText","hasUrl","startImgUrl","imageUrl","toConsumableArray","RegExpConst","PHONE","EMAIL","NAME","PASSWORD","NUMBER","TimingSynchronizer","offset","moment","locale","serverTime","diff","Date","applyOffset","zoneOffset","tz","setDefault","now","calcOffset","instance","AppExceptionType","timingSynchronizer","getInstance","Protocol","ApiConnector","ApiClient","apiConfig","onlineEventsSubscriber","onlineMethods","initOnline","dispatch","_onlineEventsSubscriber","_connection","token","HubConnectionBuilder","withUrl","_url","accessTokenFactory","withAutomaticReconnect","build","_handleStartConnection","onreconnecting","onreconnected","onclose","_onlineMethodsClient","_onlineMethods","init","ev","on","method","t1","connection","sendSocketMessage","socketMethod","_startConnectionPromise","_sendSocketMessage","execApi","apiMethod","result","_result","_result2","suppressErrorAndReturnNull","apiClient","code","handleUnAuthorizeError","withoutErrorsHandle","eventStateRequest","errors","clean","_apiClient","eventsState","updateEventState","errorHandler","finish","startsWith","API_BASE_URL","fetch","fetchWithSetHeaderToken","resolve","createClass","_sendSocketMessage2","state","HubConnectionState","Connected","get","_ref4","url","customOptions","statusCode","response","serverVersion","headers","_","Authorization","unfetch","indexOf","reload","setDelta","_x7","createApiError","message","handle","JSON","parse","Unspecified","auth","logout","SOUNDS","opened","closed","SOUND_PATH","NotificationsPlayer","newAlert","chatOpened","sound","chatState","_audioUrl","Audio","play","UnAuthorizedLayout","children","react","className","style","display","alignItems","alt","Header","_ref","routes","sidebarToggled","dropdownItems","_useState","useState","_useState2","slicedToArray","emulateRequestError","toggleEmulateError","hasDropdownItems","useEffect","setItem","isSameLinks","pathname","endsWith","react_default","createElement","Navbar","variant","styles","cx","onClick","body","querySelector","classList","contains","remove","add","react_router_dom","to","activeRoute","route","isArray","getNameOfActivePage","dropdownContainer","dropdownContainer_withoutDropdown","components_Dropdown_Dropdown","items","process","REACT_APP_LOCAL_ENV","Common_CustomSwitch_CustomSwitch","containerClassName","name","CustomCheckbox","checked","onCheck","number","inline","rest","objectWithoutProperties","_React$useState","React","_React$useState2","isChecked","setIsChecked","classes","checkbox-inline","assign","onChange","htmlFor","Card","_cx","showLoader","apiError","cardClassName","hidden","calendar","plain","wizard","withoutBorder","textCenter","borderedTitle","withoutPaddingTitle","withBackButton","onClickBack","categoryClassName","withoutPadding","ctAllIcons","ctFullWidth","ctTextCenter","tableFullWidth","contentClassName","stats","legend","ftTextCenter","detectFormChanges","footerElement","saveAndCloseDetectFunc","smallTitle","headerChild","titleClassName","containerRef","show404Error","headerClassName","withoutTitleMargin","dotsButtons","without404Error","withoutBottomMargin","setDetectChanges","forms","submitButtons","onFormSubmit","setFormSubmit","addEventListener","removeEventListener","resetDetectState","Common_Loader_Loader","Fragment","Common_ErrorPlaceholder_ErrorPlaceholder","withCard","ref","backArrow","components_DotsSettings_DotsSettings","buttons","all-icons","content-full-width","text-center","table-full-width","failures","Alert","autoFocus","components_UnsavedFormModal_UnsavedFormModal","components_NotFound_NotFound","open","setOpen","FormControl","autoComplete","NavList","links","onClickMenuLink","isOpen","setIsOpen","isActiveBlock","escapedName","escapeString","changeOpenState","isActiveRoute","routeName","isSamePath","some","mergePathAndRoutes","path","search","el","string","toLocaleLowerCase","nameOfBlock","renderLinkIcon","nameWords","charAt","renderSimpleNavLink","prop","exact","activeClassName","events","Common_NotificationBundle","Collapse","in","renderCollapseBlock","Sidebar","profile","profileTabs","tabs","onLogout","sidebarRef","createRef","openAvatar","setOpenAvatar","detectMobileOutsideClick","clientWidth","target","closest","logoSPKFR","background","avatar","lastName","firstName","mini","Sidebar_NavList","days","day","toString","padStart","ExamStatus","WarningModal","onHide","onAccess","appendFooterItem","titleClassNames","bodyClassNames","footerClassNames","accessBtnTittle","closeBtnTittle","dialogClassName","withoutCancelButton","withoutCloseIcon","withoutTitlePadding","withoutOverflow","large","disableAccessButton","Modal","cn","data-test-warning-modal","centered","closeButton","Title","Body","Footer","Common_LoaderBtn_LoaderBtn","Button","ExamApplicationStatus","_MappedExamStatuses","AwaitingExpertConfirmation","IsApplying","Success","ApplyingFinished","IsPassing","Canceled","Red","Finishing","Finished","FinalizedResults","NokProtocolSigned","AkProtocolSigned","SovietProtocolSignedByMembers","SovietProtocolSignedByChairman","ExamSessionStatus","ExamSessionReadyStatuses","_MappedExamApplicatio","Draft","Primary","InReview","CorrectionsRequired","PaymentRequired","Paid","AdmittedToExam","Absent","NotPassed","Passed","WaitingForOnlineAccepting","HaveNotOnlineAuth","AppType","ExamType","DocumentType","IdentityDocType","Sex","FilteredExamStatus","_MappedExamSessionRea","WaitingForStart","ExamIsPassing","TheoreticalExamIsPassingAndSessionStarted","ExamSessionTimeout","PracticalExamIsPassingAndSessionStarted","ExamFinished","SessionFinished","PracticalQuestionType","TheoreticalQuestionType","ExamPartType","_MappedExamTypes","Online","Recertification","Intramural","CustomSwitchStatusEnum","Loader","showBg","svg_full","LoaderSvg","withRouter","history","modalVisible","setModalVisible","_React$useState3","_React$useState4","lastLocation","setLastLocation","_React$useState5","_React$useState6","confirmedNavigation","setConfirmedNavigation","closeModal","handleConfirmNavigationClick","res","getShowModal","onbeforeunload","react_router","when","nextLocation","Modals_WarningModal_WarningModal","CustomSwitch","_containerOptionalCla","_cn","_cn2","changed","pinClassName","iconClassName","isFixPosition","containerOptionalClasses","stopPropagation","data-test-switch","InputTotal","fieldFailures","setRef","inputGroupClassNames","labelTitle","labelColSize","labelClassNames","withoutLabel","inputClassNames","inputColSize","minLength","maxLength","withoutDetectChanges","pattern","withDarkLabel","hasError","setHasError","setChangedInput","has","Form","Group","Label","column","Col","sm","InputGroup","Prepend","Text","Control","node","isInvalid","Feedback","ExamRequirement","TabKey","InitFormErrors","password","captcha","InitFormData","rememberMe","AuthenticationForm","onLogin","subTitle","resetPasswordLink","registerLink","withRegister","withEmail","withPhone","withoutForgotPassword","formData","setFormData","formFieldErrors","setFormFieldErrors","processing","setProcessing","getFieldErrorFromApiError","fieldName","phoneError","emailError","passwordError","email","checkValidationErrors","test","isCaptchaValid","captchaError","handleSubmit","validResult","preventDefault","handleInputChange","onSubmit","components_Card_Card","FormGroup","Common_CustomCheckbox_CustomCheckbox","InputText","components_PhoneInput_PhoneInput","data-test-password-group","FormLabel","Common_InputPassword","components_Captcha_Captcha","captchaValid","setCaptcha","ExtendedSelect","withoutStrictValue","multi","onChangeMulti","noOptionsMessage","notSelectedOptions","onMenuOpen","invalidTitle","smSize","customStyle","base","border","multiOptions","selectedOptions","x","option","findValue","classNames","data-test-extended-select","react_select_browser_esm","isDisabled","isMulti","classNamePrefix","defaultValue","ResetPasswordFirstStep","sendCode","goNext","goBack","initPhone","setPhone","phoneValid","setPhoneValid","_React$useState7","_React$useState8","setCaptchaValid","_React$useState9","_React$useState10","doValidate","isPhoneValid","phoneExists","ResetPasswordSecondStep","checkCode","resendCode","waitingSeconds","setCode","codeValid","setCodeValid","timer","setTimer","_React$useState11","_React$useState12","phoneLetters","isCodeValid","codeExists","resendVerificationCode","calcTimer","data-test-verify-code-group","verificationCode","ResetPasswordThirdStep","authProcessing","resetPassword","setPassword","passwordValid","setPasswordValid","isPasswordValid","data-test-new-password-group","LoaderBtn","data-test-loader-btn","Component","DocType","logErrorToMyService","info","ErrorPlaceholder","placeholderIcon","renderBody","errorIcon","k","NotificationBundle","dark","Captcha","data-test-captcha-group","withDragDropContext","component","DragDropContext","HTML5Backend","_React$Component","inherits","ClassComponent","_super","withDragDropContext_createSuper","esm_extends","HOC","FilterState","rowDragSource","DragSource","beginDrag","rowIndex","connect","connectDragSource","dragSource","connectDragPreview","dragPreview","rowDropTarget","DropTarget","canDrop","monitor","item","didDrop","fromIndex","toIndex","onRowDrop","connectDropTarget","dropTarget","isOver","DragDrop","dndClassName","dndIcon","QuestionVariant","answerChar","handleChangeMatchingAnswerText","onAdd","onDelete","questionLeftLength","Container","esm_Row","mb-2","mb-4","QuestionSelect","correct","withoutNum","selectContainerClassName","right","onChangeSelect","getCurrentAnswer","matchingNumber","ans","questionNumber","Common_ExtendedSelect_ExtendedSelect","parseInt","MatchingRightVariant","handleChangeOrderingAnswerText","TheoreticalQuestionRedactor_QuestionSelect","createEmptyAnswer","onChangeLeftHeader","onChangeRightHeader","onAddQuestionVariant","onDeleteQuestionVariant","onDropAnswer","changeLeftHeader","setChangeLeftHeader","changeRightHeader","setChangeRightHeader","matchingOrOrderingAnswers","_question$matchingOrO","leftAnswersHeader","rightAnswersHeader","left","leftHeader","OrderingTheoretical","MatchingTheoretical","rightHeader","b","DragDrop_DragDrop","TheoreticalQuestionRedactor_QuestionVariant","TheoreticalQuestionRedactor_MatchingRightVariant","createEmptyMatchingAnswer","ExamQuestionImage","MultipleChoiceTheoretical","maxWidth","Processed","QuestionType","CKText","dangerouslySetInnerHTML","__html","OpenAnswerPractical","getTableHeader","separator","rowCount","reduce","acc","h","getHeaderRowCount","tableHeaders","fill","colSpan","headerArr","lastItem","last","newAcc","prepareTableHeaders","RowRendererDrag","disabledMoving","gridLength","handleDeleteClick","RowRenderer_RowRendererNotDrag","dragChild","deleteIcon","RowRendererNotDrag","headersLength","handleCLickRowAdd","renderAddRowBtn","addIcon","RowRenderer","convertGridToSolution","grid","r","c","headersSeparator","onlyWatch","submitSolution","fromAnswerRows","hideTitle","tableId","tableRef","headersArr","columns","multilineArr","multiline","readOnlyArr","readonly","headersWidth","_ref5","forbidMoving","prepareTaskGrid","tableRows","j","readOnly","answerRows","initialRows","setGrid","_useState3","_useState4","tableWidth","setTableWidth","current","newGrid","handleRowDrop","from","sourceRow","nGrid","rowNumber","createItemCb","emptyGrid","totalGrid","handleCellInputChange","currentTarget","renderFields","_ref6","components_AutoGrowTextArea_AutoGrowTextArea","onKeyPress","nRow","nCol","cell","focus","handleSelectNextCell","getHeaderWidth","Math","ceil","arr","EditableTable_RowRenderer","data-test-answer-table-cell","data-not-move","AutoGrowTextArea","areaRef","useMemo","autoGrowTextArea","onFocus","textField","clientHeight","scrollHeight","WebCamSwitch","webCam","darkness","UserVideo","muted","camSwitch","onSwitch","withoutFullScreen","useRef","isWebCam","useLayoutEffect","srcObject","handleSwitch","useCallback","load","poster","ExclamationIcon","autoPlay","srcLang","FullScreenIcon","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","components_WebCamSwitch_WebCamSwitch","useAutoScroll","initialRef","scrollTop","unsubscribeToEvents","mouseLeaveHandler","mouseEnterHandler","useMouseLeaveDetector","ChatTabs","isActive","delay","leaveTimeout","index","isLeaved","setIsLeaved","subscribeToEvents","OnlineChatAlert","created","format","OnlineChatMessage","shortName","isApplicant","expertId","isAuthor","fromApplicant","applicantName","expertName","role","word","nameInitials","BubbleLoader","LoadingPlaceholder","Common_BubbleLoader_BubbleLoader","OnlineChat","messages","onGetMessages","onSendMessage","Messages","setTab","textAreaRef","chatAreaRef","onReadMessages","messageText","setMessageText","Alerts","handleSendMessage","trim","handleChange","messagesTitle","chatMessages","reverse","m","withTabs","examApplicationDetails","Docs","documents","fileUrl","documentDescription","OnlineChat_LoadingPlaceholder","chatMessage","allMessages","OnlineChat_OnlineChatMessage","OnlineChat_OnlineChatAlert","rows","PhoneInput","val","phoneHelperClassName","fixTop","fixLeft","NotFound","DotsSettings","showButton","setShowButton","iconRef","handleClickOutside","iconType","viewBox","xmlns","fillRule","clipRule","buttonText","Dropdown","CustomMenu","forwardRef","aProps","renderDropdownContent","esm_Dropdown","Toggle","as","Menu","Item","eventKey","Link","Divider","effects","sendResetPasswordVerificationCode","sendResetPasswordVerificationCodeAsync","checkResetPasswordVerificationCode","checkResetPasswordVerificationCodeAsync","clearErrors","onGoBack","onPush","step","setStep","pagePhone","setPagePhone","pageCode","setPageCode","setWaitingSeconds","goToStep","newStep","step1Props","_sendCode","step2Props","_checkCode","_resendCode","step3Props","_resetPassword2","newPassword","ResetPasswordSteps_ResetPasswordFirstStep","ResetPasswordSteps_ResetPasswordSecondStep","ResetPasswordSteps_ResetPasswordThirdStep","login","components_AuthenticationForm_AuthenticationForm","WarningAlert","closeButtonText","backdropClassName","data-test-warning-alert","Clock","secondHand","minuteHand","hourHand","cy","shifter","hoursAngle","getHours","getMinutes","minuteAngle","secAngle","getSeconds","setAttribute","version","xmlnsXlink","y","stdDeviation","dx","dy","stroke","strokeWidth","x1","y1","x2","y2","transform","attributeName","attributeType","dur","repeatCount","ExamPlaceholder","ExamPlaceholder_Clock_Clock","QuestionsMarks","questions","chosenQuestion","onChooseQuestion","getMarkIcon","isDone","isPaused","tickIcon","pausedIcon","markClassName","backgroundImage","QuestionsNavigation","questionsLength","onPrev","onNext","arrowRight","QuestionsProgressBar","progress","totalAmount","percentOfDone","countOfDone","strokeDashoffset","TimeLeft","interval","utc","timeLeft","ProgressBar","min","max","duration","ApiClientBase","baseUrl","http","jsonParseReviver","url_","options_","stringify","Content-Type","Accept","_response","processSendResetPasswordVerificationCode","_headers","v","_responseText","resultData200","VerificationCodeSendingStatus","fromJS","result400","resultData400","ApiError","throwException","result500","resultData500","_this3","processCheckResetPasswordVerificationCode","_this4","_this5","processResetPassword","_this6","AuthResult","result404","resultData404","_this7","processLogin","_this8","result401","resultData401","_this9","processProfile","_this10","Applicant","_this11","processLoginToOnlineExam","_this12","_this13","processGetCaptcha","_this14","_this15","processStart","_this16","ExamSession","_this17","processSaveTheoreticalQuestionsAnswers","_this18","_this19","processFinishTheory","_this20","_this21","processStartPractice","_this22","_this23","processSavePracticalQuestionsAnswers","_this24","_this25","processFinish","_this26","_this27","processGetCurrent","_this28","_this29","processGetStatus","_this30","ExamSessionReadyStatus","_this31","processSetTime","_this32","_this33","processClearCaptcha","_this34","_this35","processReinitDbWithTestData","_this36","_this37","processRunScheduleLoop","_this38","AnswerPair","property","hasOwnProperty","_data","middleName","sex","birthDate","emailConfirmed","isExpert","toISOString","toJSON","CheckVerificationCode","Column","numeric","theoreticalQuestions","examId","qualificationTitle","examStartTime","startTime","theoryFinishTime","practiceStartTime","isPassedTheory","theoreticalPartDuration","timeoutDuration","practicalPartDuration","_step","_iterator","_createForOfIteratorHelper","s","done","TheoreticalQuestion","err","practicalQuestions","_step2","_iterator2","PracticalQuestion","theoreticalQuestionsAnswers","_step3","_iterator3","TheoreticalQuestionAnswer","practicalQuestionsAnswers","_step4","_iterator4","PracticalQuestionAnswer","_step5","_iterator5","_step6","_iterator6","_step7","_iterator7","_step8","_iterator8","online","examApplicationStatus","FinishExamSession","practicalAnswers","examSessionId","_step9","_iterator9","manual","_step10","_iterator10","FinishTheoreticalExamSession","theoreticalAnswers","_step11","_iterator11","_step12","_iterator12","LoginApplicant","LoginApplicantToOnlineExam","tabularQuestionTables","_step13","_iterator13","Table","_step14","_iterator14","questionId","tabularAnswers","_step15","_iterator15","TabularApplicantAnswer","_step16","_iterator16","ResetPassword","SavePracticalQuestionsAnswers","_step17","_iterator17","_step18","_iterator18","SaveTheoreticalQuestionsAnswers","_step19","_iterator19","_step20","_iterator20","SendVerificationCode","StartExamSessionPractice","_step21","_iterator21","exactEquality","_step22","_iterator22","_step23","_iterator23","_step24","_iterator24","_step25","_iterator25","_step26","_iterator26","_step27","_iterator27","_step28","_iterator28","TheoreticalAnswer","_step29","_iterator29","matchingAnswers","_step30","_iterator30","answersHeader","matchingAnswersHeader","_step31","_iterator31","_step32","_iterator32","_step33","_iterator33","openAnswer","_step34","_iterator34","wasSent","ApiException","_Error","ApiClient_createSuper","_this39","isApiException","wrapNativeSuper","_ApiClientBase","_super2","_this40","http2","baseUrl2","subscribeToOnlineEvents","FinishExamPartMessageType","apiConnector","unread","setUnread","handleNewMessageAsync","setMessages","handleKurentoMessage","OnlineMethods","send","getChatMessages","markAsRead","sendChatMessageToExpert","sendKurentoMessage","initState","examSession","examSessionStatus","examProgress","questionsState","lastStatusCheckTime","syncTime","partSwitchTime","currentInterval","questionsStateChanged","finishExamPartMessage","none","createModel","reducers","setExamSession","setExamSessionStatus","setExamApplicationStatus","setExamOnline","isOnlineExam","updateLastStatusCheckTime","updateQuestionsState","showFinishExamPartMessageIfNeed","finishTheoretical","finishPractical","updateCurrentInterval","updateSyncTime","updatePartSwitchTime","setFinishExamPartMessage","resetState","tryFinishTheoryAsync","_tryFinishTheoryAsync","root","finishTheoryAsync","cantFinishTheoretical","_finishTheoryAsync","curState","model","formatTheoreticalQuestionAnswers","api","finishTheory","getCurrent","startPracticeAsync","_startPracticeAsync","startPractice","formatQuestionsState","tryFinishExamAsync","_tryFinishExamAsync","cantFinishPractical","_x8","finishExamAsync","_finishExamAsync","formatPracticalQuestionAnswers","_x9","_x10","updateQuestionsStateAsync","_updateQuestionsStateAsync","curStatus","_model","saveTheoreticalQuestionsAnswers","save","savePracticalQuestionsAnswers","_x11","_x12","finishExamPartAsync","_finishExamPartAsync","submit","_x13","_x14","syncStateAsync","_syncStateAsync","_interval","_interval2","getStatus","formatCurrentInterval","examTheoryTimeLeft","examPracticeTimeLeft","_x15","_x16","q","an","selectedAnswers","durationInMinutes","finishTime","clone","FinishExamPart","finishExamPart","messageType","submitLabel","withoutCloseButton","alarmText","data-test-submit-exam-answers","QuestionsMatchingAnswer","onChangeAnswer","answer_matching","answerPairs","QuestionsMultipleAnswer","QuestionsOpenAnswer","Essay","controlId","QuestionsOrderingAnswer","answer_ordering","QuestionsTabularAnswer","components_EditableTable_EditableTable","OnlineModalText","VIDEOS_SRC","CAMERA","TestCamPoster","DISPLAY","TestDisplayPoster","CAMERA_ERROR","TestCamErrorPoster","OnlineModal","onClose","_ref$webRTC","webRTC","cam","onStartPresent","WebCam","activeTab","setActiveTab","webCamActive","setWebCamActive","isVideoLock","setLock","setVideoDevices","currentVideoDevice","setCurrentVideoDevice","isReadyForOnlineExam","isConnectedUser","values","every","isNotPaid","handleCloseModal","nextTab","tabsOrder","Exam","currentTabIndex","findIndex","t","nextTabValue","getVideoDevices","getUserVideo","_args2","getUserScreenShare","handleReadMessages","applicantId","device","activeTabIndex","handleSwitchVideoType","buttonHandler","isWaitingConnection","tabText","videoCamPoster","videoPoster","WebCamIcon","ScreenIcon","ExpertChatIcon","components_UserVideo_UserVideo","components_OnlineChat_OnlineChat","openedOnlineModal","tryFinishTheory","tryFinishExam","getMessages","getMessagesAsync","sendMessage","sendMessageAsync","startPresent","handleConnectPresenter","stopAllPresent","setOpenedOnlineModal","handleShowOnlineModal","handleCloseOnlineModal","newMessages","logs","isPracticeDefense","Offline","components_Sidebar","components_TimeLeft_TimeLeft","components_QuestionsProgressBar_QuestionsProgressBar","components_FinishExamPart_FinishExamPart","Badge","components_OnlineModal_OnlineModal","syncState","resetExamState","fetchProfile","sendViolation","sendViolationAsync","showWarningAlert","setShowWarningAlert","ipc","isConnectedOnlineUser","isExamInProcess","examStatusChecker","setInterval","clearInterval","components_ExamPlaceholder_ExamPlaceholder","components_WarningAlert_WarningAlert","containers_ExamPollContainer_ExamPollContainer","numOfChosenQuestion","setNumOfChosenQuestion","setChosenQuestion","cardRef","isAllowTag","tagName","oncopy","ondragstart","oncontextmenu","savePracticalExamQuestion","newQuestions","updatedChosenQuestion","handleChoseNewQuestion","newQuestion","newNumOfQuestion","saveQuestionsState","nQuestionsState","handleNextQuestion","withoutSaveState","newChosenQuestion","nextNumber","handleSetPaused","isEmptyAnswer","checkQuestion","nQuestions","questionIndex","qst","handleChangeOpenAnswer","onChangeTheoryAnswer","answerPair","unionBy","onChangeMultiplyAnswer","union","handleChangeTabularAnswer","tableKey","handleChangePracticalOpenAnswer","disableSkipButton","disableSubmitButton","AutoCheckTabular","ManualCheckTabular","components_QuestionsMarks_QuestionsMarks","components_QuestionsNavigation_QuestionsNavigation","prevNumber","_getImageUrlFromText","components_CKText_CKText","components_ExamQuestionImage_ExamQuestionImage","renderTextParts","Matching","Ordering","renderAssertionTitle","assertion_number","QuestionsChooseAnswer_QuestionsMatchingAnswer","QuestionsChooseAnswer_QuestionsOrderingAnswer","MultipleChoice","QuestionsChooseAnswer_QuestionsMultipleAnswer","OpenAnswer","QuestionsChooseAnswer_QuestionsOpenAnswer","QuestionsChooseAnswer_QuestionsTabularAnswer","renderQuestionsChooseAnswer","data-test-apply-exam-answer","loginToOnlineExamAsync","ResetPasswordPage","containers_ResetPasswordContainer_ResetPasswordContainer","LoginPage","containers_LoginContainer_LoginContainer","ExamPage","containers_ExamContainer_ExamContainer","ProfilePage","containers_ProfileContainer_ProfileContainer","NotFoundPage","containers_LoginToOnlineExamContainer_LoginToOnlineExamContainer","params","UnAuthorizedHandler","unauth_UnAuthorizedLayout","LoginToOnlineExamPage","DASHBOARD_ROUTES","models","containers_SidebarContainer_SidebarContainer","components_Header_Header","data-test-authorized-content","AuthorizedHandler","auth_AuthorizedLayout","Suspense","fallback","render","routes_AuthorizedHandler","routes_UnAuthorizedHandler","Root","store","es","connected_react_router_esm","routes_Routes","setAuth","clear","_login","_fetchProfile","_sendResetPasswordVerificationCodeAsync","_checkResetPasswordVerificationCodeAsync","_resetPassword","_loginToOnlineExamAsync","loginToOnlineExam","initialState","currentConnection","connectionQueue","setMessage","setCurrentTypeConnection","setConnected","setDisconnected","addToConnectionQueue","shiftFromConnectionQueue","updateWebRTC","presenter","newState","clearWebRTC","newWebRTC","_handleNewMessageAsync","rootState","_getMessagesAsync","socket","_sendMessageAsync","_sendViolationAsync","_markAsRead","handlePeerConnectionEvents","_handlePeerConnectionEvents","handlePresenterConnected","_handlePresenterConnected","onEvent","nextQueueItem","_handleConnectPresenter","payload","addToQueue","func","handleReconnectPresenter","_handleReconnectPresenter","restartPresent","_startPresent","newPresenter","onStopStream","stopPresent","onError","onReconnect","_restartPresent","_addToQueue","_callee12","_context12","_nextQueueItem","_callee13","_context13","_handleKurentoMessage","_callee14","_context14","_x17","_x18","_handleError","_callee15","_context15","_x19","_stopPresent","_callee16","_context16","_x20","_x21","_stopAllPresent","_callee17","_context17","_x22","_x23","browserHistory","createHistory","require","createBrowserHistory","plugins","createLoadingPlugin","blacklist","redux","router","connectRouter","middlewares","routerMiddleware","devtoolOptions","actionsBlacklist","REACT_APP_LOCAL_ELECTRON","ReactDOM","src_Root","getElementById"],"mappings":"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","file":"static/js/main.28ef62d0.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"chatContainer\":\"OnlineChat_chatContainer__2wc4F\",\"tabsContainer\":\"OnlineChat_tabsContainer__3Ff7_\",\"tab\":\"OnlineChat_tab__3HOBU\",\"active\":\"OnlineChat_active__DJM1q\",\"docs\":\"OnlineChat_docs__fcN01\",\"document\":\"OnlineChat_document__2Ostk\",\"document_image\":\"OnlineChat_document_image__3ldyh\",\"document_title\":\"OnlineChat_document_title__5qvjl\",\"document_text\":\"OnlineChat_document_text__1jTSP\",\"document_switch\":\"OnlineChat_document_switch__zEebL\",\"document_content\":\"OnlineChat_document_content__2cVkZ\",\"chat\":\"OnlineChat_chat__iiVHN\",\"fixed\":\"OnlineChat_fixed__2I4uU\",\"loading\":\"OnlineChat_loading__1C1sh\",\"chat_field\":\"OnlineChat_chat_field__2l1xM\",\"newMessage\":\"OnlineChat_newMessage__2gYSM\",\"chat_field_body\":\"OnlineChat_chat_field_body__1bEHG\",\"alert\":\"OnlineChat_alert__O0v-Q\",\"chat_icon\":\"OnlineChat_chat_icon__2g4az\",\"blue\":\"OnlineChat_blue__1fixU\",\"rose\":\"OnlineChat_rose__3mj-V\",\"chat_userName\":\"OnlineChat_chat_userName__22GVm\",\"chat_userNameContainer\":\"OnlineChat_chat_userNameContainer__3FLLi\",\"chat_connectStatus\":\"OnlineChat_chat_connectStatus__3WQh6\",\"messageTime\":\"OnlineChat_messageTime__2pz2Z\",\"footer\":\"OnlineChat_footer__1j_rS\",\"textAreaContainer\":\"OnlineChat_textAreaContainer__3J2Cd\",\"hideInput\":\"OnlineChat_hideInput__ApDjs\",\"textArea\":\"OnlineChat_textArea__Ui0Wt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"question\":\"ExamQuestion_question__1Incf\",\"list\":\"ExamQuestion_list__11Hef\",\"list_item\":\"ExamQuestion_list_item__27cJU\",\"question_title\":\"ExamQuestion_question_title__3PxRd\",\"question_text\":\"ExamQuestion_question_text__3nHpq\",\"question_text_correct\":\"ExamQuestion_question_text_correct__1X4dH\",\"question_text_wrong\":\"ExamQuestion_question_text_wrong__1dq9L\",\"success_text\":\"ExamQuestion_success_text__7unVV\",\"failed_text\":\"ExamQuestion_failed_text__-pu9Q\",\"checkbox\":\"ExamQuestion_checkbox__3cg1M\",\"checkbox_checked\":\"ExamQuestion_checkbox_checked__1_aG0\",\"checkbox_correct\":\"ExamQuestion_checkbox_correct__31WPc\",\"matching\":\"ExamQuestion_matching__M41BA\",\"matching_correct\":\"ExamQuestion_matching_correct__3L5BS\",\"caption\":\"ExamQuestion_caption__2C-J9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"font-extra-small\":\"TheoreticalQuestionRedactor_font-extra-small__36lLd\",\"answer_container\":\"TheoreticalQuestionRedactor_answer_container__eJNeD\",\"check_box\":\"TheoreticalQuestionRedactor_check_box__1_RUe\",\"radio_section\":\"TheoreticalQuestionRedactor_radio_section__1nTsE\",\"radio_block\":\"TheoreticalQuestionRedactor_radio_block__39Vri\",\"id_input\":\"TheoreticalQuestionRedactor_id_input__2MgeO\",\"matchingAdditionalBtn\":\"TheoreticalQuestionRedactor_matchingAdditionalBtn__2zqm0\",\"matchingAddBtn\":\"TheoreticalQuestionRedactor_matchingAddBtn__36Oba\",\"answer\":\"TheoreticalQuestionRedactor_answer__NaE6b\",\"answer_select\":\"TheoreticalQuestionRedactor_answer_select__3vYSQ\",\"answer_multiple\":\"TheoreticalQuestionRedactor_answer_multiple__6qPbz\",\"dndButton\":\"TheoreticalQuestionRedactor_dndButton__N6df4\",\"changeLink\":\"TheoreticalQuestionRedactor_changeLink__3QSeV\",\"answer_inputGroup\":\"TheoreticalQuestionRedactor_answer_inputGroup__2jJ0G\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navButtons\":\"Sidebar_navButtons__tYuM5\",\"navButtons_margin\":\"Sidebar_navButtons_margin__7CgEH\",\"nav__link\":\"Sidebar_nav__link__30p86\",\"info_link\":\"Sidebar_info_link__26RZX\",\"nav__list\":\"Sidebar_nav__list__1-xsf\",\"nav__link_icon\":\"Sidebar_nav__link_icon__2szK-\",\"caret\":\"Sidebar_caret__7hxH5\",\"rotate-180\":\"Sidebar_rotate-180__NA4qs\",\"sidebar\":\"Sidebar_sidebar__2xLub\",\"sidebar__wrapper\":\"Sidebar_sidebar__wrapper__3auDL\",\"mobileHideSidebarIcon\":\"Sidebar_mobileHideSidebarIcon__3wTnd\",\"adaptive\":\"Sidebar_adaptive__lrpsH\",\"logo__container\":\"Sidebar_logo__container__28nRK\",\"logo\":\"Sidebar_logo__1aQPx\",\"user_name\":\"Sidebar_user_name__1APz8\",\"notification\":\"Sidebar_notification__U8TLH\",\"bg\":\"Sidebar_bg__2SR2l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"QuestionsChooseAnswer_container__3Hs80\",\"title\":\"QuestionsChooseAnswer_title__34fNT\",\"answer_open\":\"QuestionsChooseAnswer_answer_open__3BXJz\",\"answer_essay\":\"QuestionsChooseAnswer_answer_essay__3Gm30\",\"answers\":\"QuestionsChooseAnswer_answers__m7a2t\",\"answer\":\"QuestionsChooseAnswer_answer__3K6QL\",\"answer_select\":\"QuestionsChooseAnswer_answer_select__3WiDR\",\"answer_multiple\":\"QuestionsChooseAnswer_answer_multiple__3CzB6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"card\":\"Card_card__2NHnT\",\"card_title\":\"Card_card_title__31qR2\",\"card_title_small\":\"Card_card_title_small__34b9k\",\"card_title_withoutMargin\":\"Card_card_title_withoutMargin__3RekW\",\"card__header\":\"Card_card__header__1nv4Q\",\"titleBorder\":\"Card_titleBorder__2Birb\",\"category\":\"Card_category__bH9rD\",\"content__withoutPadding\":\"Card_content__withoutPadding__10zpl\",\"headerChildContainer\":\"Card_headerChildContainer__2ufW_\",\"title__withButton\":\"Card_title__withButton__1fE8E\",\"fullHeight\":\"Card_fullHeight__1pO_H\",\"errorPlaceholder\":\"Card_errorPlaceholder__1wQzs\",\"exitModalTitle\":\"Card_exitModalTitle__2-Ne8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"Header_header__22N0S\",\"header__link\":\"Header_header__link__39Zxj\",\"collapseButton\":\"Header_collapseButton__1SHZp\",\"hideMenuIcon\":\"Header_hideMenuIcon__160n1\",\"showMenuIcon\":\"Header_showMenuIcon__2Cc0l\",\"adaptive\":\"Header_adaptive__2M9s1\",\"headerTitle\":\"Header_headerTitle__3mdtX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttons_container\":\"EditExperts_buttons_container__1D26V\",\"pagination\":\"EditExperts_pagination__1uwkz\",\"filterBtnContainer\":\"EditExperts_filterBtnContainer__3-ShR\",\"modal_radio_btn\":\"EditExperts_modal_radio_btn__1I07V\",\"modalTitle\":\"EditExperts_modalTitle__2AXUT\",\"switchContainer\":\"EditExperts_switchContainer__o7EB6\",\"tdClassName\":\"EditExperts_tdClassName__1dEjx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"align_center\":\"Identification_align_center__1x02V\",\"practicalAnswer\":\"Identification_practicalAnswer__1CWde\",\"col\":\"Identification_col__n4hdt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radio__blue\":\"CustomRadio_radio__blue__3qAjw\",\"radio_label\":\"CustomRadio_radio_label__33YqX\"};","module.exports = \"/static/media/auth_top_logo.02ef0149.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ExamTable_container__gYYHN\",\"table\":\"ExamTable_table__GRuD0\",\"table__header\":\"ExamTable_table__header__3h89d\",\"table__body\":\"ExamTable_table__body__3SB-B\",\"qualification\":\"ExamTable_qualification__2jnxe\",\"qualification__name\":\"ExamTable_qualification__name__SxeA5\",\"qualification__centerName\":\"ExamTable_qualification__centerName__1s7gq\",\"qualification__address\":\"ExamTable_qualification__address__n1YrO\",\"placeholder\":\"ExamTable_placeholder__3El93\",\"placeholder__title\":\"ExamTable_placeholder__title__3VIpZ\",\"placeholder__text\":\"ExamTable_placeholder__text__1izvN\",\"placeholder__button\":\"ExamTable_placeholder__button__1S-sR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pagination\":\"Pagination_pagination__2xIHd\",\"page_button\":\"Pagination_page_button__16cgS\",\"disabled\":\"Pagination_disabled__1K6xh\",\"page_info\":\"Pagination_page_info__3fJNg\",\"per_page_info\":\"Pagination_per_page_info__3sZix\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"InputPassword\":\"InputPassword_InputPassword__3Ori9\",\"InputPassword__container\":\"InputPassword_InputPassword__container__U-noP\",\"eye_open\":\"InputPassword_eye_open__F96Sc\",\"eye_closed\":\"InputPassword_eye_closed__RsXB4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"blue\":\"CustomCheckbox_blue__3Uv-9\"};","module.exports = \"/static/media/back_arrow.031f4750.svg\";","module.exports = \"/static/media/dashboard_logo_SPK.56bccf1c.svg\";","module.exports = \"/static/media/avatar.9a7806dd.svg\";","module.exports = \"/static/media/news_icon.99f024b3.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"phone_input__helper\":\"PhoneModal_phone_input__helper__CWZvE\",\"phone_container\":\"PhoneModal_phone_container__2cL77\",\"invalid\":\"PhoneModal_invalid__2undl\",\"align_center\":\"PhoneModal_align_center__1X6lp\",\"signModal\":\"PhoneModal_signModal__3sZ33\",\"signModal__header\":\"PhoneModal_signModal__header__2ziZ0\",\"signModal__body\":\"PhoneModal_signModal__body__1AFXK\",\"body__text\":\"PhoneModal_body__text__16_n3\",\"body__input\":\"PhoneModal_body__input__M3fJ8\",\"body__sendAgain\":\"PhoneModal_body__sendAgain__3e7kF\",\"signModal__footer\":\"PhoneModal_signModal__footer__3OTs8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"field_container\":\"ProfileInfoBlock_field_container__3b8nG\",\"field_container_disabled\":\"ProfileInfoBlock_field_container_disabled__2VHlw\",\"profile_data__value\":\"ProfileInfoBlock_profile_data__value__1JWLR\",\"marginRow\":\"ProfileInfoBlock_marginRow__3vbQJ\",\"phone_form__container\":\"ProfileInfoBlock_phone_form__container__2s7QJ\",\"dateLabel\":\"ProfileInfoBlock_dateLabel__2B9E_\",\"change_button\":\"ProfileInfoBlock_change_button__3zEbP\",\"profile__btnContainer\":\"ProfileInfoBlock_profile__btnContainer__3xxBO\",\"cancelBtn\":\"ProfileInfoBlock_cancelBtn__tlXUg\",\"saveBtn\":\"ProfileInfoBlock_saveBtn__xdTFT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabsContainer\":\"OnlineModal_tabsContainer__195YC\",\"tab\":\"OnlineModal_tab__9kQcR\",\"icon\":\"OnlineModal_icon__1Y48S\",\"active\":\"OnlineModal_active__2gUH8\",\"videoContainer\":\"OnlineModal_videoContainer__W8lFj\",\"largeVideo\":\"OnlineModal_largeVideo__3-ipR\",\"video\":\"OnlineModal_video__3HWPD\",\"waitChatContainer\":\"OnlineModal_waitChatContainer__3zTYi\",\"waitChatContainer_text\":\"OnlineModal_waitChatContainer_text__3IGbO\",\"switchContainer\":\"OnlineModal_switchContainer__1q8vh\",\"switchContainer_text\":\"OnlineModal_switchContainer_text__-OdYq\",\"switchContainer_text_secondary\":\"OnlineModal_switchContainer_text_secondary__3Qran\",\"footer\":\"OnlineModal_footer__jfoX8\",\"onlineChat\":\"OnlineModal_onlineChat__3-vUI\",\"request\":\"OnlineModal_request__1E_iF\",\"requestText\":\"OnlineModal_requestText__2bXkE\",\"modalTitle\":\"OnlineModal_modalTitle__1SlTx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"editable_table\":\"EditableTable_editable_table__zV6bJ\",\"drop_target\":\"EditableTable_drop_target__M_Fiy\",\"dnd_button\":\"EditableTable_dnd_button__1zFuJ\",\"delete_button\":\"EditableTable_delete_button__29az9\",\"empty_th\":\"EditableTable_empty_th__346dJ\",\"delete_row_btn\":\"EditableTable_delete_row_btn__2G2bb\",\"add_row_btn\":\"EditableTable_add_row_btn__1QpMf\",\"add_btn_row\":\"EditableTable_add_btn_row__3gRUb\",\"total_row\":\"EditableTable_total_row__12P9C\",\"editable_table_moving\":\"EditableTable_editable_table_moving__2T-Sa\",\"caption\":\"EditableTable_caption__3KZHA\",\"pre\":\"EditableTable_pre__Faup1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label\":\"QualificationDetails_label__3cJMJ\",\"buttons_container\":\"QualificationDetails_buttons_container__MbcLn\",\"createBtn\":\"QualificationDetails_createBtn__3mfQq\",\"cancelBtn\":\"QualificationDetails_cancelBtn__2dJiu\",\"small_field\":\"QualificationDetails_small_field__3e7R_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"exam\":\"ExamPollContainer_exam__29pAH\",\"exam__category\":\"ExamPollContainer_exam__category__1lafn\",\"exam__content\":\"ExamPollContainer_exam__content__eeX7U\",\"exam__text\":\"ExamPollContainer_exam__text__2RBtt\",\"assertion_title\":\"ExamPollContainer_assertion_title__1fMG3\",\"assertion\":\"ExamPollContainer_assertion__1MKxp\",\"assertion_text\":\"ExamPollContainer_assertion_text__1OUx2\",\"exam__controlPanel\":\"ExamPollContainer_exam__controlPanel__2QUx0\",\"exam__btn\":\"ExamPollContainer_exam__btn__1AEhA\",\"limit\":\"ExamPollContainer_limit__fCKGg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CustomSwitch_container__2vltn\",\"hoverContainer\":\"CustomSwitch_hoverContainer__3NlXq\",\"pinOn\":\"CustomSwitch_pinOn__3496E\",\"pinOff\":\"CustomSwitch_pinOff__18a-b\",\"switchOff\":\"CustomSwitch_switchOff__ylVaO\",\"switchOn\":\"CustomSwitch_switchOn__Lmly9\",\"pin\":\"CustomSwitch_pin__3BP0Q\",\"iconContainer\":\"CustomSwitch_iconContainer__2OAK3\",\"iconOn\":\"CustomSwitch_iconOn__3lLdI\",\"iconOff\":\"CustomSwitch_iconOff__3qXDQ\",\"loader\":\"CustomSwitch_loader__YW--7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MultiSelectSection_container__2f4jJ\",\"fields\":\"MultiSelectSection_fields__ET1SL\",\"selectGroup\":\"MultiSelectSection_selectGroup__21iph\",\"field_title\":\"MultiSelectSection_field_title__31Zhu\",\"field_value\":\"MultiSelectSection_field_value__12mQS\",\"date_container\":\"MultiSelectSection_date_container__2qY2D\",\"date_group\":\"MultiSelectSection_date_group__3koMS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radio_block\":\"PracticalQuestionRedactor_radio_block__2TUqn\",\"radio_section\":\"PracticalQuestionRedactor_radio_section__2VbcA\",\"id_input\":\"PracticalQuestionRedactor_id_input___PKAO\",\"caption\":\"PracticalQuestionRedactor_caption__2GG53\",\"loadButton\":\"PracticalQuestionRedactor_loadButton__h462B\",\"review\":\"PracticalQuestionRedactor_review__2LoMn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"drop\":\"DropZone_drop__3Rc5P\",\"drop_text\":\"DropZone_drop_text__1ePLW\",\"drop_link\":\"DropZone_drop_link__1VUQZ\",\"drop_fieldContainer\":\"DropZone_drop_fieldContainer__XFWSF\",\"drop_icon\":\"DropZone_drop_icon__E1TDC\",\"document\":\"DropZone_document__2JD_Q\",\"document_dropZone\":\"DropZone_document_dropZone__1tah4\",\"document_dropZone_uploaded\":\"DropZone_document_dropZone_uploaded__3jYMG\",\"document_dropZone_uploadedTitle\":\"DropZone_document_dropZone_uploadedTitle__2zX7s\",\"document_text\":\"DropZone_document_text__3X1Is\",\"document_title\":\"DropZone_document_title__1LsIM\",\"document_button\":\"DropZone_document_button__1UyNx\",\"document_row\":\"DropZone_document_row__mSk2d\",\"document_icon\":\"DropZone_document_icon__ZjWtn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"signModal\":\"CertificateModal_signModal__2OMbt\",\"signModal__header\":\"CertificateModal_signModal__header__1GVAL\",\"signModal__body\":\"CertificateModal_signModal__body__3qqXZ\",\"body__input\":\"CertificateModal_body__input__3ysKK\",\"signModal__footer\":\"CertificateModal_signModal__footer___unHI\",\"certificateRow\":\"CertificateModal_certificateRow__1ytp0\",\"certificateRow_regNumber\":\"CertificateModal_certificateRow_regNumber__1xi2Z\",\"certificateRow_date\":\"CertificateModal_certificateRow_date__2Qs6t\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video\":\"UserVideo_video__34hKJ\",\"video_container\":\"UserVideo_video_container__2co1M\",\"connectionLost\":\"UserVideo_connectionLost__2AIg7\",\"loader\":\"UserVideo_loader__ijhfX\",\"switchContainer\":\"UserVideo_switchContainer__1vrpU\",\"switchContainer_text\":\"UserVideo_switchContainer_text__28Wm3\",\"switchContainer_text_secondary\":\"UserVideo_switchContainer_text_secondary__1Fico\",\"fullScreenButton\":\"UserVideo_fullScreenButton__l3tn8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropdown\":\"Dropdown_dropdown__1NHNO\",\"dropdown__menu\":\"Dropdown_dropdown__menu__1kXyA\",\"show\":\"Dropdown_show__2lnKV\",\"dropdown__item\":\"Dropdown_dropdown__item__1npQB\",\"dropdown__divider\":\"Dropdown_dropdown__divider__3fIVK\",\"commonButton\":\"Dropdown_commonButton__14ki8\",\"dropIcon\":\"Dropdown_dropIcon__3IWeN\",\"dropIcon_rotate\":\"Dropdown_dropIcon_rotate__22hP_\",\"activeIcon\":\"Dropdown_activeIcon__1JcWX\",\"menuContainer\":\"Dropdown_menuContainer__25QS0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"signModal\":\"SmsSignModal_signModal__omBF9\",\"signModal__header\":\"SmsSignModal_signModal__header__2OR-j\",\"signModal__body\":\"SmsSignModal_signModal__body__23Yr2\",\"body__text\":\"SmsSignModal_body__text__3DnZh\",\"body__input\":\"SmsSignModal_body__input__2YRLx\",\"body__sendAgain\":\"SmsSignModal_body__sendAgain__2Vmj7\",\"signModal__footer\":\"SmsSignModal_signModal__footer__2hB3f\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"date_group\":\"DateTimePicker_date_group__3_h8B\",\"date_container\":\"DateTimePicker_date_container__1Hbpy\",\"date\":\"DateTimePicker_date__JT6og\",\"date_border\":\"DateTimePicker_date_border__1GCHq\",\"date_text\":\"DateTimePicker_date_text__1uM3B\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"switch\":\"OnlineVideo_switch__1liEp\",\"loader\":\"OnlineVideo_loader__2mHs2\",\"videoContainer\":\"OnlineVideo_videoContainer__WMAcC\",\"video\":\"OnlineVideo_video__1hvuX\",\"infoContainer\":\"OnlineVideo_infoContainer__1xn02\",\"title\":\"OnlineVideo_title__274dV\",\"examPart\":\"OnlineVideo_examPart__3QwKd\",\"iconsContainer\":\"OnlineVideo_iconsContainer__3L1r5\",\"icon\":\"OnlineVideo_icon__3LtYg\",\"flare\":\"OnlineVideo_flare__2wPMD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"DotsSettings_container__1Y0H-\",\"dotsIcon\":\"DotsSettings_dotsIcon__2CSvy\",\"button\":\"DotsSettings_button__2me-B\",\"button_red\":\"DotsSettings_button_red__3oCR4\",\"button_green\":\"DotsSettings_button_green__3ySoo\",\"svg\":\"DotsSettings_svg__1g9G8\",\"buttonContainer\":\"DotsSettings_buttonContainer__3H444\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"qualification\":\"ExamWithPayment_qualification__h6cbi\",\"qualification__name\":\"ExamWithPayment_qualification__name__2uK-l\",\"qualification__centerName\":\"ExamWithPayment_qualification__centerName__2CsET\",\"qualification__address\":\"ExamWithPayment_qualification__address__3IPoP\",\"switchRow\":\"ExamWithPayment_switchRow__2ImFt\",\"modalDialog\":\"ExamWithPayment_modalDialog__3Jf2Q\",\"amountDescription\":\"ExamWithPayment_amountDescription__1vVga\",\"amountDescription__block\":\"ExamWithPayment_amountDescription__block__AhTk_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"switch\":\"WebCamSwitch_switch__vav_p\",\"switch_darkness\":\"WebCamSwitch_switch_darkness__jZBNB\",\"switchIcon_webCam\":\"WebCamSwitch_switchIcon_webCam__akz4P\",\"switchIcon_webCam_white\":\"WebCamSwitch_switchIcon_webCam_white__1JNhL\",\"switchIcon_screen\":\"WebCamSwitch_switchIcon_screen__3_3NJ\",\"switchIcon_screen_white\":\"WebCamSwitch_switchIcon_screen_white__3cuo9\",\"switchPin\":\"WebCamSwitch_switchPin__2ZccV\",\"switchPin_white\":\"WebCamSwitch_switchPin_white__1hRJ6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"document\":\"TemplateGroup_document__eBPod\",\"document_button\":\"TemplateGroup_document_button__234tL\",\"document_disabled\":\"TemplateGroup_document_disabled__3SpKh\",\"document_button_hide\":\"TemplateGroup_document_button_hide__2OjWq\",\"document_title\":\"TemplateGroup_document_title__1RFXi\",\"document_row\":\"TemplateGroup_document_row__1RYtN\",\"document_text\":\"TemplateGroup_document_text__2utfj\",\"document_icon\":\"TemplateGroup_document_icon__1DnyB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"uploadedFile\":\"UploadedDocument_uploadedFile__DUtLu\",\"uploadedFile_textContainer\":\"UploadedDocument_uploadedFile_textContainer__3dgO0\",\"uploadedFile_text\":\"UploadedDocument_uploadedFile_text__1pKRA\",\"uploadedFile_text_progress\":\"UploadedDocument_uploadedFile_text_progress__1sqQj\",\"uploadedFile_progressBar\":\"UploadedDocument_uploadedFile_progressBar__1tury\",\"uploadedFile_deleteIcon\":\"UploadedDocument_uploadedFile_deleteIcon__2Wxis\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navigation\":\"QuestionsNavigation_navigation__3YTYW\",\"nextButton\":\"QuestionsNavigation_nextButton__30wHr\",\"prevButton\":\"QuestionsNavigation_prevButton__2fuCj\",\"limit\":\"QuestionsNavigation_limit__2tL7h\",\"text\":\"QuestionsNavigation_text__1pjm3\",\"text_limit_left\":\"QuestionsNavigation_text_limit_left__pMflo\",\"text_limit_right\":\"QuestionsNavigation_text_limit_right__3TEaD\"};","module.exports = \"/static/media/link_icon.195b3231.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"WarningModal_modal__3E78_\",\"modal_large\":\"WarningModal_modal_large__3I8d4\",\"modal_overflow_off\":\"WarningModal_modal_overflow_off__uH_Iw\",\"modal__header\":\"WarningModal_modal__header__31uvD\",\"modal__body\":\"WarningModal_modal__body__tp3Zz\",\"modal__footer\":\"WarningModal_modal__footer__2C_Yj\",\"submitButton\":\"WarningModal_submitButton__FCeQL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkBoxModal\":\"CheckBoxModal_checkBoxModal__7jhkU\",\"checkBoxModal__header\":\"CheckBoxModal_checkBoxModal__header__FJiLl\",\"checkBoxModal__title\":\"CheckBoxModal_checkBoxModal__title__34hVE\",\"checkBoxModal__body\":\"CheckBoxModal_checkBoxModal__body__1GKeL\",\"checkBoxModal__footer\":\"CheckBoxModal_checkBoxModal__footer__32zL7\",\"checkBoxModal_green\":\"CheckBoxModal_checkBoxModal_green__VudgK\",\"checkBoxModal_red\":\"CheckBoxModal_checkBoxModal_red__2XNgv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pagination\":\"AdvancedTable_pagination__Z1U58\",\"sortBtn\":\"AdvancedTable_sortBtn__3oAk_\",\"selectOptions\":\"AdvancedTable_selectOptions__VT0f5\",\"tableDate\":\"AdvancedTable_tableDate__2Arac\",\"date_container\":\"AdvancedTable_date_container__3YTgx\",\"date_group\":\"AdvancedTable_date_group__2frRf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"Details_title__2vsEX\",\"info__row\":\"Details_info__row__1iJjX\",\"info__label\":\"Details_info__label__2igw7\",\"info__label_dark\":\"Details_info__label_dark__1npL_\",\"info__value\":\"Details_info__value__1uQzO\",\"info__valueManyRow\":\"Details_info__valueManyRow__sNxjZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"verifyContainer\":\"VerifyEmailInput_verifyContainer__1RYog\",\"verifyContainer_rotate\":\"VerifyEmailInput_verifyContainer_rotate__2y43N\",\"verifyContainer_low_right\":\"VerifyEmailInput_verifyContainer_low_right__28WVR\",\"convertIcon\":\"VerifyEmailInput_convertIcon__1lLca\",\"arrowsIcon_rotate\":\"VerifyEmailInput_arrowsIcon_rotate__2aYRv\",\"rotate\":\"VerifyEmailInput_rotate__ysu9l\",\"inputGroup\":\"VerifyEmailInput_inputGroup__p7m_z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"startExam__header\":\"ExamPlaceholder_startExam__header__10OXR\",\"startExam__headerImage\":\"ExamPlaceholder_startExam__headerImage__3OyA9\",\"startExam__body\":\"ExamPlaceholder_startExam__body__38DRa\",\"startExam__bodyTitle\":\"ExamPlaceholder_startExam__bodyTitle__3j9s3\",\"startExam__bodyText\":\"ExamPlaceholder_startExam__bodyText__3a-hs\",\"startExam__startButton\":\"ExamPlaceholder_startExam__startButton__339cz\",\"startExam__watch\":\"ExamPlaceholder_startExam__watch__R1VXE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"progressBar__background\":\"QuestionsProgressBar_progressBar__background__3mXXl\",\"progressBar__progress\":\"QuestionsProgressBar_progressBar__progress__2wXpd\",\"text\":\"QuestionsProgressBar_text__H3xJw\",\"numbers\":\"QuestionsProgressBar_numbers__JJbLj\",\"subText\":\"QuestionsProgressBar_subText__3PZPp\",\"container\":\"QuestionsProgressBar_container__1TnCf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"FinishExamPart_modal__2e37b\",\"modal__header\":\"FinishExamPart_modal__header__2XH3K\",\"modal__body\":\"FinishExamPart_modal__body__1Lc4p\",\"modal__alarmTitle\":\"FinishExamPart_modal__alarmTitle__tJ0-u\",\"modal__alarmText\":\"FinishExamPart_modal__alarmText__2s0J6\",\"modal__footer\":\"FinishExamPart_modal__footer__3ISWt\"};","module.exports = \"/static/media/empty_certificate_icon.42b6079c.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"EventButtons_button__3XJ9x\",\"button_delete\":\"EventButtons_button_delete__3wvaz\",\"button_add\":\"EventButtons_button_add__28wb9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rejectModal\":\"RejectModal_rejectModal__bn3kB\",\"rejectModal__header\":\"RejectModal_rejectModal__header__erJVM\",\"rejectModal__body\":\"RejectModal_rejectModal__body__3f0wE\",\"rejectModal__footer\":\"RejectModal_rejectModal__footer__4Lvpk\",\"title\":\"RejectModal_title__21L2_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"table__body\":\"ExamApplicationsTable_table__body__3C98b\",\"table_header_text\":\"ExamApplicationsTable_table_header_text__1SwwF\",\"th\":\"ExamApplicationsTable_th__3I3TZ\",\"wrapper\":\"ExamApplicationsTable_wrapper__3lbvl\",\"placeholder\":\"ExamApplicationsTable_placeholder__171qV\",\"placeholder__title\":\"ExamApplicationsTable_placeholder__title__2MeTD\",\"placeholder__text\":\"ExamApplicationsTable_placeholder__text__sl_R9\",\"placeholder__button\":\"ExamApplicationsTable_placeholder__button__2EOUe\",\"selectOptions\":\"ExamApplicationsTable_selectOptions__1m9F0\",\"statusSelectOptions\":\"ExamApplicationsTable_statusSelectOptions__1RyBL\",\"groupClassName\":\"ExamApplicationsTable_groupClassName__1HYJL\",\"datePicker\":\"ExamApplicationsTable_datePicker__MRKoa\",\"datePickerField\":\"ExamApplicationsTable_datePickerField__3uZsC\",\"tableDate\":\"ExamApplicationsTable_tableDate__EJHGR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"placeholder\":\"ErrorPlaceholder_placeholder__odPuh\",\"placeholder__title\":\"ErrorPlaceholder_placeholder__title__2j_Xm\",\"placeholder__text\":\"ErrorPlaceholder_placeholder__text__2jvBX\",\"placeholder__button\":\"ErrorPlaceholder_placeholder__button__3P6fz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checked_table\":\"CheckedTable_checked_table__2101H\",\"empty_th\":\"CheckedTable_empty_th__2jk_U\",\"incorrect_cell_auto\":\"CheckedTable_incorrect_cell_auto__3Rky1\",\"incorrect_cell_manual\":\"CheckedTable_incorrect_cell_manual__3k3D2\",\"caption\":\"CheckedTable_caption__1XTOa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"address_icon\":\"ExamApplicationDetails_address_icon__141vG\",\"reviewText\":\"ExamApplicationDetails_reviewText__3SmOb\",\"link\":\"ExamApplicationDetails_link__3XyXs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"ResultAndStatusTab_row__dgYGJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"document\":\"ApplicantDocuments_document__1AXR9\",\"document_image\":\"ApplicantDocuments_document_image__3-GOk\",\"document_title\":\"ApplicantDocuments_document_title__3-Xno\",\"document_text\":\"ApplicantDocuments_document_text__2RpQX\",\"document_switch\":\"ApplicantDocuments_document_switch__12R93\",\"document_content\":\"ApplicantDocuments_document_content__1MPzR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"link\":\"TextLink_link__14vYM\",\"link_text\":\"TextLink_link_text__8WFdR\",\"link_icon\":\"TextLink_link_icon__1IJq5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"text\":\"StatementTab_text__3qgfR\",\"text_end\":\"StatementTab_text_end__pDCan\",\"text_address\":\"StatementTab_text_address__1ZjRY\",\"textArea\":\"StatementTab_textArea__3sdaG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"expertSignStatus\":\"SignedExpert_expertSignStatus__Gny56\",\"expertSignStatus_signed\":\"SignedExpert_expertSignStatus_signed__1_I9i\",\"signedButton\":\"SignedExpert_signedButton__2LJPc\",\"icon\":\"SignedExpert_icon__3E5nj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"backdrop\":\"WarningAlert_backdrop__--Toa\",\"modal\":\"WarningAlert_modal__3s0Qm\",\"modal__header\":\"WarningAlert_modal__header__1Vyn5\",\"modal__body\":\"WarningAlert_modal__body__3f1c6\",\"modal__footer\":\"WarningAlert_modal__footer__rQ3rT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mark\":\"QuestionsMarks_mark__1EHWU\",\"mark__selected\":\"QuestionsMarks_mark__selected__3hbdS\",\"mark__paused\":\"QuestionsMarks_mark__paused__3rX4g\",\"mark__done\":\"QuestionsMarks_mark__done__EaD_k\",\"questionsLine\":\"QuestionsMarks_questionsLine__RoGAQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"endButton\":\"SidebarContainer_endButton__2MLvh\",\"badge\":\"SidebarContainer_badge__1Nd7o\",\"control\":\"SidebarContainer_control__IiAIu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svg\":\"Loader_svg__36Kfr\",\"container_full\":\"Loader_container_full__3aY-k\",\"container_bg\":\"Loader_container_bg__iN_S_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttons_container\":\"OccupationalStandardDetails_buttons_container__UuQWm\",\"createBtn\":\"OccupationalStandardDetails_createBtn__3Qxyh\",\"cancelBtn\":\"OccupationalStandardDetails_cancelBtn__2jyjk\",\"font-extra-small\":\"OccupationalStandardDetails_font-extra-small__gStgV\",\"interactiveElement\":\"OccupationalStandardDetails_interactiveElement__3yPme\",\"code_field\":\"OccupationalStandardDetails_code_field__1OC-O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"template-container\":\"QecTotalInfo_template-container__Uy2hO\",\"buttons_container\":\"QecTotalInfo_buttons_container__3Edy7\",\"createBtn\":\"QecTotalInfo_createBtn__2n-uA\",\"cancelBtn\":\"QecTotalInfo_cancelBtn__NiX5l\",\"font-small\":\"QecTotalInfo_font-small__1mCdd\",\"font-extra-small\":\"QecTotalInfo_font-extra-small__2aSDK\",\"delete-template-btn\":\"QecTotalInfo_delete-template-btn__3Co3f\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttons_container\":\"EcDetails_buttons_container__NqZ5L\",\"createBtn\":\"EcDetails_createBtn__15R6V\",\"cancelBtn\":\"EcDetails_cancelBtn__ooRFt\",\"eventButtonsContainer\":\"EcDetails_eventButtonsContainer__1PwqK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttons_container\":\"UsersPage_buttons_container__bAFZe\",\"createBtn\":\"UsersPage_createBtn__2K799\",\"cancelBtn\":\"UsersPage_cancelBtn__1BJNH\",\"font-small\":\"UsersPage_font-small__1XOKN\",\"font-extra-small\":\"UsersPage_font-extra-small__1g62v\",\"internalNumberField\":\"UsersPage_internalNumberField__28s3N\",\"interactiveElement\":\"UsersPage_interactiveElement__3vPoG\",\"repeatInviteBtn\":\"UsersPage_repeatInviteBtn__3Na2W\",\"phoneHelper\":\"UsersPage_phoneHelper__812JM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loaderBtn\":\"LoaderBtn_loaderBtn__2Xz65\",\"btn_content\":\"LoaderBtn_btn_content__2wvuq\",\"btn_content_offset\":\"LoaderBtn_btn_content_offset__3ySDd\",\"loader\":\"LoaderBtn_loader__3Ypxn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"placeholder\":\"EmptySection_placeholder__3NcRs\",\"placeholder__title\":\"EmptySection_placeholder__title__65HCj\",\"placeholder__text\":\"EmptySection_placeholder__text__3RFGz\",\"placeholder__button\":\"EmptySection_placeholder__button__3oTs_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"detailsContainer\":\"NokOrAkProtocolTab_detailsContainer__1ah_s\",\"protocolsContainer\":\"NokOrAkProtocolTab_protocolsContainer__2GLqZ\",\"protocolsDetailsContainer\":\"NokOrAkProtocolTab_protocolsDetailsContainer__1opGQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"BubbleLoader_container__2uYsI\",\"bubble\":\"BubbleLoader_bubble__276XX\",\"fillCircle\":\"BubbleLoader_fillCircle__2Y3Bs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"DocumentUpLoader_content__1P-kc\",\"button\":\"DocumentUpLoader_button__1SHxl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"phone_form__container\":\"PhoneInput_phone_form__container__1_mP8\",\"phone_input__helper\":\"PhoneInput_phone_input__helper__2ni0S\",\"phone_input__helper_disabled\":\"PhoneInput_phone_input__helper_disabled__3zV6o\",\"phone_input__helper_withPadding\":\"PhoneInput_phone_input__helper_withPadding__21tHu\",\"phone_input__helper_fixTop\":\"PhoneInput_phone_input__helper_fixTop__1FvJO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"TimeLeft_container__2ARzy\",\"text\":\"TimeLeft_text__20AS-\",\"time\":\"TimeLeft_time__2x8F_\",\"customProgressBar\":\"TimeLeft_customProgressBar__1Oz15\"};","module.exports = \"/static/media/empty_expert_table.c8086229.svg\";","module.exports = \"/static/media/dnd_icon.8f794b71.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row_input\":\"ResetPasswordModal_row_input__3qWsr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"downloadButton\":\"ProtocolLink_downloadButton__2m6RB\",\"documentUrl\":\"ProtocolLink_documentUrl__2z-94\",\"downloadButton_disabled\":\"ProtocolLink_downloadButton_disabled__26T-l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"prependContent\":\"InputText_prependContent__1DtEk\",\"group\":\"InputText_group__33wgi\",\"darkLabel\":\"InputText_darkLabel___9mMu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"align_center\":\"PersonalData_align_center__2r4rm\",\"form\":\"PersonalData_form__3oR1m\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"add_button\":\"Connected_add_button__1VeaW\",\"radio_section\":\"Connected_radio_section__1xfVk\",\"radio_block\":\"Connected_radio_block__3zaAB\",\"align_center\":\"Connected_align_center__1imMX\",\"switch\":\"Connected_switch__3KUfR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ExtendedSelect_container__31lCQ\",\"feedbackText\":\"ExtendedSelect_feedbackText__3vC7q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notification\":\"NotificationBundle_notification__1-3LT\",\"dark_style\":\"NotificationBundle_dark_style__XlOBo\",\"light_style\":\"NotificationBundle_light_style__zHpb7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"drop_target\":\"DragDrop_drop_target__3fwxl\",\"dnd_btn\":\"DragDrop_dnd_btn__3EPsq\",\"container\":\"DragDrop_container__1Z9yd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"select_group\":\"MultiSelectGroup_select_group__1JQjF\",\"select\":\"MultiSelectGroup_select__Gjtvv\",\"select_text\":\"MultiSelectGroup_select_text__214mI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"DocFileLink_title__mbcrw\",\"fileInfo\":\"DocFileLink_fileInfo__3mF4O\",\"text\":\"DocFileLink_text__3q4dH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"warningTitle\":\"EmailConfirmationNotification_warningTitle__3t0Ci\",\"notificationText\":\"EmailConfirmationNotification_notificationText__2xIBB\",\"toastContainer\":\"EmailConfirmationNotification_toastContainer__BPqjF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"detailsContainer\":\"SovietProtocolTab_detailsContainer__3F6R_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"AlertText_container__1pfOE\",\"container_title\":\"AlertText_container_title__2NZA4\",\"container_text\":\"AlertText_container_text__2dUC3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"Row_row__2By0w\",\"row_title\":\"Row_row_title__VDd7w\",\"row_value\":\"Row_row_value__1OOEz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TabBorder\":\"AnimatedTabs_TabBorder__3aifl\",\"Tabs_inModal\":\"AnimatedTabs_Tabs_inModal__ApyrS\",\"Tabs\":\"AnimatedTabs_Tabs__20bCw\"};","module.exports = \"/static/media/cancel_icon.c160a9ae.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"FetchSelect_container__29Mda\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video\":\"VideoTab_video__1DH1N\",\"videoTab\":\"VideoTab_videoTab__1z5Go\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"address_icon\":\"AddressLink_address_icon__35YUy\",\"address_link\":\"AddressLink_address_link__GJeFs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tooltip\":\"OverlayTrigger_tooltip__3DhB-\",\"copy\":\"OverlayTrigger_copy__1e_Qw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"SexRadios_row__Ytbn6\",\"container\":\"SexRadios_container__2-ZXl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"status\":\"Status_status__F4xC6\",\"subStatus\":\"Status_subStatus__2dnwl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"textarea\":\"Textarea_textarea__txPdr\",\"textarea_resize\":\"Textarea_textarea_resize__371eg\"};","module.exports = \"/static/media/arrow-right.075fcae8.svg\";","module.exports = \"/static/media/sort_icon.503a4912.svg\";","module.exports = \"/static/media/download_icon.aff6524f.svg\";","module.exports = \"/static/media/Loader_svg.8edb5b9a.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sortBtn\":\"SimpleTable_sortBtn__14XiR\"};","module.exports = \"/static/media/status_icon.94367a97.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"AuthenticationForm_content__elh13\"};","module.exports = \"/static/media/qec_admin_empty_table.ffc377de.svg\";","module.exports = \"/static/media/applicants_icon.af759383.svg\";","module.exports = \"/static/media/error_icon.7b3b7769.svg\";","module.exports = \"/static/media/empty_payment_icon.8e384d05.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"log_text\":\"ExamLog_log_text__2ymcR\"};","module.exports = \"/static/media/attachment_Icon.ef1cfdff.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CKText_container__281k8\"};","module.exports = \"/static/media/add_icon.ca22bb26.svg\";","module.exports = \"/static/media/chairman_Icon.2f725b0d.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"categoryTitle\":\"ApplicantsTab_categoryTitle__3I6iZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"RulesTab\":\"RulesTab_RulesTab__gQzGw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"SendProtocolModal_button__ozwmm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"recommendation\":\"ApplicantExamDetailsTabs_recommendation__3x1Wj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CustomRadioGroup_container__3d5ZC\"};","module.exports = \"/static/media/exclamation.22a812e8.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAAj0lEQVRIie2V0Q2AIAxEr8YxZAoYwkkcShdxiDIFg9QfMNBolKgfJrw/juNKSQCgcQHlA+/9KCILgCHXnXOFL8HMoqRARJO1dk1Cl8+KyKzDKzExY6fXBuB8xxrtix2ZXCs6+IL/F2g0XoaZ5eB9ebT+/xft8wL6NQ0AjD7Hiv8gZewUHRDRpA2VhJjRuM8GGPcywis8sxoAAAAASUVORK5CYII=\"","module.exports = \"/static/media/message_icon.1eb737ba.svg\";","module.exports = \"/static/media/alert_icon.dc706fdf.svg\";","module.exports = \"/static/media/documents_icon.0a1f9cb9.svg\";","module.exports = \"/static/media/rightArrow_icon.d76b6465.svg\";","module.exports = \"/static/media/document_icon.66cccc0b.svg\";","module.exports = \"/static/media/upload_icon.e49bb5ba.svg\";","module.exports = \"/static/media/delete_icon.745442b1.svg\";","module.exports = \"/static/media/drop_icon.6846552b.svg\";","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QDKRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAARAAAAcgEyAAIAAAAUAAAAhIdpAAQAAAABAAAAmAAAAAAAAABIAAAAAQAAAEgAAAABUGl4ZWxtYXRvciAzLjMuMQAAMjAyMDowNzowNiAxNTowNzo3NAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAZKADAAQAAAABAAAAZAAAAAD/4QmSaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJQaXhlbG1hdG9yIDMuMy4xIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wNy0wNlQxNTowNzo3NCIvPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz4A/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8A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\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"qualificationImage\":\"QualificationInfoDetails_qualificationImage__1G4NZ\"};","module.exports = \"/static/media/pen_icon.e8752ffd.svg\";","module.exports = \"/static/media/wait_time_icon.e710c631.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image\":\"CertificateTab_image__1fdrg\"};","module.exports = \"/static/media/dots_icon.d68d5d90.svg\";","module.exports = \"/static/media/convert_icon.e51b3c4b.svg\";","module.exports = \"/static/media/arrows_icon.e0a5c2d2.svg\";","module.exports = \"/static/media/arrow.d3186e59.svg\";","module.exports = \"/static/media/drop.baa208f4.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"profile__container\":\"ProfileContainer_profile__container__29who\"};","module.exports = \"/static/media/start_exam_bg.0f7b7a27.svg\";","module.exports = \"/static/media/tick.5cc8d9fe.svg\";","module.exports = \"/static/media/paused.f0ed2039.svg\";","module.exports = \"/static/media/webcam_icon.0d4c3e6b.svg\";","module.exports = \"/static/media/screen_icon.ca257f4b.svg\";","module.exports = \"/static/media/expert_chat_icon.f2df39b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/test_cam.948a41a3.gif\";","module.exports = __webpack_public_path__ + \"static/media/test_display.774f78a4.gif\";","module.exports = __webpack_public_path__ + \"static/media/not_allowed_camera.f20eb189.gif\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"AuthorizedLayout_content__319oF\"};","export function saveToLocalStorage(key: string, data: string): void {\n return localStorage.setItem(key, data);\n}\n\nexport function loadFromLocalStorage(key: string): string | null {\n return localStorage.getItem(key);\n}\n\nexport function removeFromLocalStorage(key: string): void {\n return localStorage.removeItem(key);\n}\n","export const setHeaderTitle = (headerTitle: string) => localStorage.setItem('headerTitle', headerTitle);\n\nexport const clearHeaderTitle = () => localStorage.removeItem('headerTitle');\n\nexport const getHeaderTitle = () => localStorage.getItem('headerTitle');\n","export enum Color {\n Success = '--success',\n Primary = '--primary',\n Red = '--red',\n Orange = '--orange',\n Default = '--text-main',\n LightPurple = '--light-purple',\n LightRed = '--light-red',\n}\n","import { loadFromLocalStorage } from './localStorageHelper';\n\nexport const hasAccessTokenInLocalStorage = (): boolean => {\n const accessToken = loadFromLocalStorage('token');\n return Boolean(accessToken);\n};\n","export const formatPhoneNumber = (phone: string) => {\n const cleaned = (`${phone}`).replace(/\\D/g, '');\n\n const match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$/);\n\n if (match) {\n return `+7 (${match[1]}) ${match[2]}-${match[3]}-${match[4]}`;\n }\n\n return null;\n};\n\nexport const formatSecretPhoneNumber = (phone: string) => phone.replace(/(\\d{3})(\\d{3})(\\d{2})(\\d{2})/, '+7 ($1) ***-**-$4');\n","// 1 - A, 2 - B, ...\nexport const serialNumberToChar = (num: number) => String.fromCharCode(64 + num);\n","import { Color } from './const/Colors';\n\nexport class ColorStatus implements ColorStatus {\n public color: Color;\n\n public text: string;\n\n public subStatus?: {\n color: Color;\n text: string;\n };\n\n public constructor(color: Color, text: string, subText?: ColorStatus['subStatus']) {\n this.color = color;\n this.text = text;\n this.subStatus = subText;\n }\n}\n","import { Moment } from 'moment';\nimport { Color } from '../const/Colors';\nimport { ColorStatus } from '../ColorStatus';\n\nexport class Unread {\n messages!: number;\n logs!: number;\n}\n\nexport class ChatMessage {\n id!: string;\n applicantId!: string;\n applicantName!: string;\n examApplicationId!: string;\n message!: string;\n created!: string;\n dateTime?: Moment;\n fromApplicant!: boolean;\n type!: ChatMessageType;\n expertId?: string;\n expertName?: string;\n}\n\nexport enum ChatMessageType\n{\n Message = 'message',\n Violation = 'violation',\n Info = 'info',\n Error = 'error',\n}\n\nexport enum VideoType\n{\n Cam = 'cam',\n Screen = 'screen'\n}\n\nexport const VideoTypeMapping = {\n [VideoType.Cam]: 'Веб-камера',\n [VideoType.Screen]: 'Экран',\n};\n\nexport class KurentoResponse {\n id!: KurentoResponseIds;\n response?: string;\n message?: string;\n sdpAnswer?: string;\n candidate?: RTCIceCandidate;\n requestId?: KurentoRequestIds;\n presenterId?: string;\n videoType?: VideoType;\n}\n\nexport enum KurentoResponseIds {\n Error= 'error',\n IceCandidate = 'iceCandidate',\n Response = 'response',\n}\n\nexport class KurentoRequest {\n id!: string;\n presenterId?: string;\n videoType?: string;\n sdpOffer?: string;\n candidate?: RTCIceCandidate;\n}\n\nexport enum KurentoRequestIds {\n Start = 'start',\n OnIceCandidate = 'onIceCandidate',\n Stop = 'stop',\n Switch = 'switch',\n}\n\nexport const AlertsTypes = {\n [ChatMessageType.Violation]: new ColorStatus(Color.LightRed, 'Нарушение'),\n [ChatMessageType.Info]: new ColorStatus(Color.LightPurple, 'Событие'),\n [ChatMessageType.Error]: new ColorStatus(Color.Orange, 'Технический сбой'),\n [ChatMessageType.Message]: new ColorStatus(Color.Default, 'Сообщение'),\n};\n","class VersionReader {\n public static getVersion() {\n try {\n const scripts: HTMLScriptElement[] = Array.prototype.slice.call(document.querySelectorAll('script'));\n const links: HTMLLinkElement[] = Array.prototype.slice.call(document.querySelectorAll('link'));\n\n const chunkCss = links.filter(link => link.href.includes('chunk.css'));\n const chunkJs = scripts.filter(script => script.src.includes('chunk.js'));\n\n if (!chunkJs.length || !chunkCss.length) return 'local';\n\n const files = chunkCss.map((f) => {\n const sp = f.href.split('/');\n return sp[sp.length - 1];\n }).sort().concat(chunkJs.map((f) => {\n const sp = f.src.split('/');\n return sp[sp.length - 1];\n }).sort());\n\n return files.map(n => n.split('.')[1]).join('.');\n } catch (e) {\n console.error(e);\n return 'local';\n }\n }\n}\n\nexport const appVersion = VersionReader.getVersion();\n","class UnsavedFormDetector {\n constructor() {\n this.changedInputs = {};\n this.formSubmitted = false;\n this.detectChanges = false;\n }\n\n private changedInputs: { [key: string]: IInput };\n private formSubmitted: boolean;\n private detectChanges: boolean;\n\n private getSubmittedInputs = () => {\n let submitted: { [key: string]: IInput } = {};\n\n Object.keys(this.changedInputs).forEach((key) => {\n const obj: IInput = {\n oldValue: this.changedInputs[key].value,\n value: this.changedInputs[key].value,\n };\n\n submitted = { ...submitted, [key]: obj };\n });\n\n return submitted;\n };\n\n public setChangedInput(key: string, value: string) {\n if (this.detectChanges) {\n this.formSubmitted = false;\n\n if (!this.changedInputs[key]) {\n this.changedInputs[key] = {\n oldValue: value,\n value,\n };\n } else {\n this.changedInputs[key] = {\n ...this.changedInputs[key],\n value,\n };\n }\n }\n }\n\n public setFormSubmit(isSubmit: boolean) {\n if (this.detectChanges) {\n this.changedInputs = this.getSubmittedInputs();\n this.formSubmitted = isSubmit;\n }\n }\n\n public setDetectChanges(detect: boolean) {\n this.detectChanges = detect;\n }\n\n public getShowModal() {\n if (this.detectChanges) {\n const inputsChanged = Object.keys(this.changedInputs).find(key => this.changedInputs[key].oldValue !== this.changedInputs[key].value);\n\n return !!inputsChanged && !this.formSubmitted;\n }\n\n return false;\n }\n\n public resetDetectState() {\n this.changedInputs = {};\n this.formSubmitted = false;\n this.detectChanges = false;\n }\n}\n\nexport const formDetector = new UnsavedFormDetector();\n\ninterface IInput {\n oldValue: string;\n value: string;\n}\n","/* eslint-disable @typescript-eslint/no-object-literal-type-assertion */\nconst MediaConstraints = {\n default: {\n audio: true,\n video: {\n width: 960,\n height: 720,\n frameRate: 8,\n aspectRatio: 1.33,\n } as MediaTrackConstraints,\n },\n\n screen: {\n audio: false,\n video: {\n width: 1280,\n height: 720,\n frameRate: 5,\n },\n },\n\n timeout: 10000,\n};\n\n// eslint-disable-next-line no-underscore-dangle\n(window as any).__mediaConstraints = MediaConstraints;\n\nexport default MediaConstraints;\n","let subDomain = 'dev.';\nconst spHost = document.location.host.split('.');\nif (spHost.length === 3 && spHost[1] === 'spkfr') { // prod: spkfr.ru\n subDomain = '';\n} else if (spHost.length === 4 && spHost[1] !== 'dev') { // other test hosts\n subDomain = `${spHost[1]}.`;\n}\nconst IceServers = {\n StunServers: {\n urls: [],\n },\n TurnServers: {\n urls: [`turn:kurento.${subDomain}spkfr.ru:3478`],\n credential: 'kms',\n username: 'kms',\n },\n};\n\n// eslint-disable-next-line no-underscore-dangle\n(window as any).__iceServers = IceServers;\n\nexport default IceServers;\n","class MediaStreamProxy {\n audioMediaStream?: MediaStream;\n\n videoMediaStream?: MediaStream;\n\n displayMediaStream?: MediaStream;\n\n getVideoStreamWithTryAnotherDevices = async (options: MediaStreamConstraints): Promise => {\n try {\n return await this.getVideoStream(options);\n } catch (_) {\n const videoDevices = await navigator.mediaDevices.enumerateDevices()\n .then(devices => devices.filter(d => d.kind === 'videoinput'));\n return this.getVideoStreamWithAllDevices(options, videoDevices);\n }\n }\n\n getVideoStreamWithAllDevices = async (options: MediaStreamConstraints, videoDevices: MediaDeviceInfo[]) => {\n const constraintsCreator = this.createVideoConstraints.bind(this, options);\n let error;\n for (let i = 0; i < videoDevices.length; i += 1) {\n try {\n // eslint-disable-next-line no-await-in-loop\n return await this.getVideoStream(constraintsCreator(videoDevices[i].deviceId));\n } catch (e) {\n error = e;\n }\n }\n throw error;\n }\n\n createVideoConstraints = (options: MediaStreamConstraints, deviceId: string): MediaStreamConstraints => {\n const newOptions = { ...options };\n if (typeof newOptions.video === 'boolean') {\n newOptions.video = { };\n } else {\n newOptions.video = { ...(newOptions.video || {}) };\n }\n newOptions.video.deviceId = deviceId;\n return newOptions;\n }\n\n getVideoStream = async (options: MediaStreamConstraints): Promise => {\n if (this.videoMediaStream) return this.videoMediaStream;\n const videoStream = await navigator.mediaDevices.getUserMedia(options);\n\n this.videoMediaStream = videoStream;\n\n if (!this.audioMediaStream && videoStream.getAudioTracks().length) {\n this.audioMediaStream = new MediaStream(videoStream.getAudioTracks());\n }\n return videoStream;\n }\n\n getDisplayStream = async (options: MediaStreamConstraints): Promise => {\n if (this.displayMediaStream) return this.displayMediaStream;\n const displayStream: MediaStream = await (navigator.mediaDevices as any).getDisplayMedia(options);\n\n if (!this.audioMediaStream && options.audio) {\n this.audioMediaStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n }\n\n if (this.audioMediaStream && options.audio) {\n this.audioMediaStream.getAudioTracks().forEach(track => displayStream.addTrack(track));\n }\n\n this.displayMediaStream = displayStream;\n\n return displayStream;\n }\n}\n\nexport default new MediaStreamProxy();\n","/* eslint-disable no-underscore-dangle,arrow-parens,no-param-reassign,no-console */\nimport MediaConstraints from './MediaConstraints';\nimport {\n KurentoRequestIds,\n KurentoResponse,\n KurentoResponseIds,\n VideoType,\n} from '_helpers';\nimport IceServers from './IceServers';\nimport { VideoTypeMapping } from '../SocketConnector/OnlineModels';\nimport MediaStreamProxy from './MediaStreamProxy';\n\nexport default class WebRTCPresenter implements WebRTCPresenterType {\n private readonly _type: VideoType;\n private readonly _videoConstraints?: MediaTrackConstraints;\n private _onEvent?: onSendOfferType & onLocalIceCandidateType;\n private _onReconnect?: onReconnectType;\n private _onError?: onErrorType;\n private _onStopStream?: onStopStreamType;\n private timeoutBeforeReconnect: number = MediaConstraints.timeout;\n private reconnectTimoutId?: number;\n video: IVideo = { candidatesQueue: [], connected: false };\n\n constructor(type: VideoType, _constraints?: MediaTrackConstraints) {\n this._type = type;\n this._videoConstraints = _constraints;\n }\n\n get type() {\n return this._type;\n }\n\n set onEvent(callback: onSendOfferType & onLocalIceCandidateType) {\n this._onEvent = callback;\n }\n\n set onError(callback: onErrorType) {\n this._onError = callback;\n }\n\n set onReconnect(callback: onReconnectType) {\n this._onReconnect = callback;\n }\n\n set onStopStream(callback: onStopStreamType) {\n this._onStopStream = callback;\n }\n\n start = async () => {\n const localStream = await this.initStream();\n\n if (!localStream) {\n return;\n }\n\n const peerConnection = await this.startPeerConnection(localStream);\n\n\n this.setVideoProps({\n localStream,\n peerConnection,\n });\n };\n\n stop = () => {\n const { peerConnection, localStream } = this.video;\n\n if (localStream) {\n localStream.getTracks().forEach(track => {\n track.stop();\n localStream.removeTrack(track);\n });\n }\n\n if (peerConnection) {\n peerConnection.close();\n }\n\n delete this.video.localStream;\n delete this.video.peerConnection;\n\n this.setVideoProps({ candidatesQueue: [], connected: false });\n };\n\n subscribeToConnectEvent = (callback: () => void) => {\n const { peerConnection } = this.video;\n\n if (peerConnection) {\n peerConnection.oniceconnectionstatechange = () => {\n if (peerConnection.iceConnectionState === 'connected') {\n this.setVideoProps({\n connected: true,\n });\n callback();\n this.clearReconnectTimeout();\n }\n };\n\n peerConnection.onconnectionstatechange = () => {\n switch (peerConnection.connectionState) {\n case 'failed':\n console.error(`[Error] [${VideoTypeMapping[this._type]}] WebRTC Соединение разорвано:`, peerConnection);\n this.setVideoProps({ connected: false });\n this.sendToReconnect();\n break;\n case 'disconnected':\n console.error(`[Error] [${VideoTypeMapping[this._type]}] Соединение разорвано, WebRTC пытается восстановить соединение:`, peerConnection);\n break;\n case 'connected':\n console.log(`[Connected] [${VideoTypeMapping[this._type]}]`);\n break;\n default:\n console.log(`[${VideoTypeMapping[this._type]}] Peer connection state changed: ${peerConnection.connectionState}`);\n }\n };\n }\n };\n\n handleMessage = async (data: KurentoResponse) => {\n switch (data.id) {\n case KurentoResponseIds.Response:\n await this.handleResponseOffer(data);\n break;\n case KurentoResponseIds.IceCandidate:\n await this.handleRemoteIceCandidate(data);\n break;\n case KurentoResponseIds.Error:\n console.error(`[Error] [${VideoTypeMapping[this._type]}] Получена ошибка от сервера:`, data);\n this.handleError(data);\n break;\n default:\n console.error(`[Error] [${VideoTypeMapping[this._type]}] Unrecognized message: `, data);\n }\n };\n\n private startPeerConnection = async (localStream: MediaStream) => {\n const peerConnection = this.initPeerConnection();\n\n this.addLocalStream(peerConnection, localStream);\n\n peerConnection.onicecandidate = this.handleLocalIceCandidate;\n const description = await peerConnection.createOffer();\n\n await peerConnection.setLocalDescription(description);\n await this.sendOffer(description);\n\n return peerConnection;\n };\n\n private initStream = async (): Promise => {\n try {\n if (this._type === VideoType.Cam) {\n return await this.initLocalVideo();\n }\n\n if (this._type === VideoType.Screen) {\n return await this.initScreenShare();\n }\n } catch (e) {\n console.error(`[Error] [${VideoTypeMapping[this._type]}] Ошибка инициализации стрима:`, e);\n this.handleError(e, true);\n }\n\n return null;\n };\n\n private initLocalVideo = async (): Promise => {\n if (navigator.mediaDevices) {\n const constraints = MediaConstraints.default;\n if (this._videoConstraints) {\n constraints.video = {\n ...constraints.video,\n ...this._videoConstraints,\n };\n }\n const media = await MediaStreamProxy.getVideoStreamWithTryAnotherDevices(constraints);\n media.getTracks().forEach((track: MediaStreamTrack) => {\n track.onended = this.handleEndedStream;\n });\n return media;\n }\n\n console.error(`[Error] [${VideoTypeMapping[this._type]}] getUserMedia not supported`);\n return null;\n };\n\n private initScreenShare = async (): Promise => {\n if (navigator.mediaDevices) {\n const media = await MediaStreamProxy.getDisplayStream(MediaConstraints.default);\n\n media.getTracks().forEach((track: MediaStreamTrack) => {\n track.onended = this.handleEndedStream;\n });\n return media;\n }\n\n console.error(`[Error] [${VideoTypeMapping[this._type]}] getDisplayMedia not supported`);\n return null;\n };\n\n private handleEndedStream = () => {\n if (this._onStopStream) {\n this._onStopStream(this._type);\n delete this._onStopStream;\n }\n };\n\n private initPeerConnection = (\n options: RTCConfiguration = { iceServers: [IceServers.TurnServers] },\n ): webkitRTCPeerConnection => new RTCPeerConnection(options);\n\n private handleLocalIceCandidate = async (event: RTCPeerConnectionIceEvent) => {\n if (event.candidate && this._onEvent) {\n this._onEvent({\n id: KurentoRequestIds.OnIceCandidate,\n candidate: event.candidate || undefined,\n videoType: this._type,\n });\n } else if (event.candidate) {\n console.warn(`[Warning] [${VideoTypeMapping[this._type]}] Local ice candidate event has been ignored:`, event);\n }\n };\n\n private addLocalStream = (peer: RTCPeerConnection, stream: MediaStream) => {\n const tracks: IMediaStreamTracks = {\n video: stream.getVideoTracks()[0],\n audio: stream.getAudioTracks()[0],\n };\n\n\n Object.keys(tracks).forEach((trackKey) => {\n const track = tracks[trackKey];\n if (!track) {\n return;\n }\n peer.addTrack(track);\n });\n };\n\n private sendOffer = async (description: RTCSessionDescriptionInit) => {\n if (this._onEvent) {\n this._onEvent({\n id: KurentoRequestIds.Start,\n sdpOffer: description.sdp,\n videoType: this._type,\n });\n }\n };\n\n private setVideoProps = (props: Pick | IVideo) => {\n this.video = {\n ...this.video,\n ...props,\n };\n };\n\n private handleRemoteIceCandidate = async (data: KurentoResponse) => {\n const { peerConnection } = this.video;\n if (!peerConnection) return;\n\n if (peerConnection.remoteDescription && data.candidate) {\n await peerConnection.addIceCandidate(data.candidate);\n } else if (data.candidate) {\n this.video.candidatesQueue.push(data.candidate);\n }\n };\n\n private handleResponseOffer = async (data: KurentoResponse) => {\n const { peerConnection, candidatesQueue } = this.video;\n if (peerConnection) {\n await peerConnection.setRemoteDescription(new RTCSessionDescription({\n sdp: data.sdpAnswer,\n type: 'answer',\n }));\n if (candidatesQueue.length) {\n await Promise.all(candidatesQueue.map(candidate => peerConnection.addIceCandidate(candidate)));\n\n candidatesQueue.splice(0);\n }\n }\n };\n\n private handleError = (data: KurentoResponse | Error, withoutReconnect: boolean = false) => {\n if (this._onError) {\n this._onError({ videoType: this._type, error: data });\n }\n\n if (this.video.peerConnection) {\n delete this.video.peerConnection.onconnectionstatechange;\n }\n\n if (!withoutReconnect) {\n this.sendToReconnect();\n } else {\n this.setVideoProps({\n error: data,\n });\n }\n };\n\n private sendToReconnect = () => {\n if (this.reconnectTimoutId === undefined && this._onReconnect && !this.video.connected) {\n console.log(`[Reconnect] [${VideoTypeMapping[this._type]}] Попытка переподключения через: ${this.timeoutBeforeReconnect / 1000} секунд`);\n\n this.reconnectTimoutId = window.setTimeout(\n () => {\n if (this._onReconnect) {\n this._onReconnect({\n type: this._type,\n constraints: this._videoConstraints,\n });\n } else {\n console.error('[Error] [Reconnect] Попытка переподключиться провалена. Нет функции для переподключения.');\n }\n delete this.reconnectTimoutId;\n },\n this.timeoutBeforeReconnect,\n );\n this.timeoutBeforeReconnect += MediaConstraints.timeout;\n }\n };\n\n private clearReconnectTimeout = () => {\n window.clearTimeout(this.reconnectTimoutId);\n delete this.reconnectTimoutId;\n };\n\n restart = async () => {\n let { localStream } = this.video;\n if (!localStream) {\n localStream = await this.initStream() || undefined;\n\n if (!localStream) {\n return;\n }\n }\n const peerConnection = await this.startPeerConnection(localStream);\n\n\n this.setVideoProps({\n localStream,\n peerConnection,\n });\n };\n}\n\n\ninterface IVideo {\n localStream?: MediaStream;\n peerConnection?: RTCPeerConnection;\n candidatesQueue: RTCIceCandidate[];\n connected: boolean;\n error?: KurentoResponse | Error;\n}\n\nexport interface IMediaStreamTracks {\n [key: string]: MediaStreamTrack;\n}\n\nexport interface WebRTCPresenterType {\n onEvent: onSendOfferType & onLocalIceCandidateType;\n start: () => Promise;\n restart: () => Promise;\n stop: () => void;\n handleMessage: (data: KurentoResponse) => void;\n subscribeToConnectEvent: (callback: () => void) => void;\n video: IVideo;\n type: VideoType;\n}\n\ntype onSendOfferType = (data: { id: string; sdpOffer: string | undefined; videoType: VideoType }) => void;\ntype onLocalIceCandidateType = (data: { id: string; candidate?: RTCIceCandidate; videoType: VideoType }) => void;\ntype onReconnectType = (options: {\n constraints?: MediaTrackConstraints;\n type: VideoType;\n}) => void;\ntype onErrorType = (data: { videoType: VideoType; error: KurentoResponse | Error }) => void;\ntype onStopStreamType = (videoType: VideoType) => void;\n","export const getImageUrlFromText = (text: string): {imageUrls: string[]; textParts: string[]} => {\n let imageUrls: string[] = [];\n let textParts: string[] = [];\n let sortedQuestionText = text;\n let hasUrl = true;\n\n do {\n const startImgUrl = sortedQuestionText.split('{{')[1];\n const imageUrl = startImgUrl ? startImgUrl.split('}}')[0] : null;\n textParts = !textParts.length ? [sortedQuestionText.split('{{')[0]] : textParts;\n\n if (imageUrl) {\n textParts = [...textParts, startImgUrl.split('}}')[1]];\n imageUrls = [...imageUrls, imageUrl];\n sortedQuestionText = sortedQuestionText.replace(`{{${imageUrl}}}`, '');\n } else {\n hasUrl = false;\n }\n } while (hasUrl);\n\n return { imageUrls, textParts };\n};\n","/* eslint-disable no-useless-escape */\nexport const RegExpConst = {\n PHONE: /^[0-9]{10}$/,\n EMAIL: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n NAME: /^([а-яёА-ЯЁ][а-яёА-ЯЁ\\- ]{0,28}[а-яёА-ЯЁ]|-)$/,\n PASSWORD: /^[\\\\#@$-/:-?{-~!\"^_`\\[\\]a-zA-Z0-9]{6,15}$/,\n NUMBER: /^[0-9]{1,15}$/,\n};\n","import moment from 'moment-timezone';\n// import moment from 'moment';\n// import moment from 'moment-timezone/moment-timezone-utils';\n\n class TimingSynchronizer {\n protected static instance = new TimingSynchronizer();\n\n private constructor() {\n moment.locale('ru');\n }\n\n private offset = 0;\n\n public setDelta(serverTime: string) {\n this.offset = moment(serverTime).diff(new Date());\n this.applyOffset();\n }\n\n public setTimeZone(zoneOffset: number) {\n this.offset = 0;\n // Нормально работает для zoneOffset от 1 до 12:\n moment.tz.setDefault(`Etc/GMT-${zoneOffset}`);\n }\n\n private applyOffset() {\n moment.now = this.calcOffset.bind(this);\n }\n\n private calcOffset() {\n return +new Date() + this.offset;\n }\n\n public static getInstance(): TimingSynchronizer {\n return TimingSynchronizer.instance;\n }\n}\n\nexport const timingSynchronizer = TimingSynchronizer.getInstance();\n","import _ from 'lodash';\n\nexport enum AppExceptionType {\n Unspecified = 'unspecified',\n Validation = 'validation',\n NotFound = 'notFound',\n AlreadyExists = 'alreadyExists',\n WrongVerificationCode = 'wrongVerificationCode',\n TooManyRequests = 'tooManyRequests',\n WrongCredentials = 'wrongCredentials',\n AuthUserNotFound = 'authUserNotFound',\n Forbidden = 'forbidden',\n Captcha = 'captcha',\n WrongIp = 'wrongIp',\n}\n\nexport interface ApiError {\n code: number;\n type: AppExceptionType;\n message: string;\n failures?: { [key: string]: string[] };\n}\n\nexport interface ApiErrorFailures { [key: string]: string }\n\nexport const isGlobalError = (apiError: ApiError) => _.isEmpty(apiError.failures);\n","export enum Protocol {\n Nok = 'nok-protocol',\n Ak = 'ak-protocol',\n Soviet = 'soviet-protocol',\n}\n","export interface IApiError {\n code: number;\n type: AppExceptionType;\n message: string;\n failures?: { [key: string]: string[] };\n}\n\nexport enum AppExceptionType {\n Unspecified = 'unspecified',\n Validation = 'validation',\n NotFound = 'notFound',\n AlreadyExists = 'alreadyExists',\n WrongVerificationCode = 'wrongVerificationCode',\n TooManyRequests = 'tooManyRequests',\n WrongCredentials = 'wrongCredentials',\n AuthUserNotFound = 'authUserNotFound',\n Forbidden = 'forbidden',\n Captcha = 'captcha',\n WrongIp = 'wrongIp',\n}\n\nexport interface ExecAPiOptions {\n withoutErrorsHandle?: boolean;\n eventStateRequest?: boolean;\n suppressErrorAndReturnNull?: boolean;\n}\n","import React from 'react';\nimport moment from 'moment';\nimport {\n Container, Row, Col, Form,\n} from 'react-bootstrap';\nimport { ExtendedSelect, IExtendedSelectEvent } from 'components';\nimport { formDetector } from '_helpers';\n\nconst monthsList: IMonth[] = [\n { value: '01', text: 'Январь' },\n { value: '02', text: 'Февраль' },\n { value: '03', text: 'Март' },\n { value: '04', text: 'Апрель' },\n { value: '05', text: 'Май' },\n { value: '06', text: 'Июнь' },\n { value: '07', text: 'Июль' },\n { value: '08', text: 'Август' },\n { value: '09', text: 'Сентябрь' },\n { value: '10', text: 'Октябрь' },\n { value: '11', text: 'Ноябрь' },\n { value: '12', text: 'Декабрь' },\n];\n\nconst days: string[] = [];\nfor (let i = 1; i <= 31; i += 1) {\n const day = i.toString().padStart(2, '0');\n\n days.push(day);\n}\n\nconst DatePicker = ({\n initialDate, onChange, from, to, disabled, withoutDetectChanges, datePickerSizeSm, isInvalid,\n}: IProps) => {\n const initialBirthDate: IDatePickerDate = {\n year: '',\n day: '',\n month: '',\n };\n\n const [datePickerDate, setDatePickerDate] = React.useState(initialBirthDate);\n\n React.useEffect(() => {\n if (initialDate) {\n const year = initialDate.format('YYYY');\n const day = initialDate.format('DD');\n const month = initialDate.format('MM');\n\n setDatePickerDate({ year, day, month });\n\n if (!withoutDetectChanges) {\n formDetector.setChangedInput('year', year);\n formDetector.setChangedInput('day', day);\n formDetector.setChangedInput('month', month);\n }\n } else {\n setDatePickerDate(initialBirthDate);\n }\n }, [initialDate]);\n\n const handleBirthDayChange = (event: IExtendedSelectEvent) => {\n const { name } = event;\n let { value } = event;\n const formData = datePickerDate;\n\n formData[name as keyof IDatePickerDate] = value;\n const isDateFilled = formData.year && formData.month && formData.day;\n\n if (name === 'day' && isDateFilled) {\n const daysInMonth = moment(`${formData.year}-${formData.month}`, 'YYYY-MM').daysInMonth();\n if (parseInt(value) > daysInMonth) {\n value = daysInMonth.toString();\n formData[name as keyof IDatePickerDate] = value;\n }\n }\n\n if (isDateFilled) {\n const ymd = `${formData.year}-${formData.month}-${formData.day}`;\n const momentDate = moment.utc(ymd);\n\n if (onChange) onChange(ymd, momentDate);\n }\n\n if (!withoutDetectChanges) {\n formDetector.setChangedInput(name, value);\n }\n\n setDatePickerDate(formData);\n };\n\n const getYears = () => {\n const years: string[] = [];\n const currentYear = new Date().getFullYear();\n const f = from !== undefined ? from : -100;\n const t = to !== undefined ? to : -16;\n\n for (let i = currentYear + f; i <= currentYear + t; i += 1) {\n years.push(i.toString());\n }\n\n return years;\n };\n\n const yearsList = getYears();\n\n return (\n \n \n \n ({ value: d, label: d }))}\n onChange={handleBirthDayChange}\n disabled={disabled}\n placeholder=\"День\"\n withoutDetectChanges={withoutDetectChanges}\n smSize={datePickerSizeSm}\n isInvalid={Boolean(isInvalid)}\n withoutStrictValue\n />\n \n \n ({ value: m.value, label: m.text }))}\n onChange={handleBirthDayChange}\n disabled={disabled}\n placeholder=\"Месяц\"\n withoutDetectChanges={withoutDetectChanges}\n smSize={datePickerSizeSm}\n isInvalid={Boolean(isInvalid)}\n withoutStrictValue\n />\n \n \n ({ value: y, label: y }))}\n onChange={handleBirthDayChange}\n disabled={disabled}\n placeholder=\"Год\"\n withoutDetectChanges={withoutDetectChanges}\n smSize={datePickerSizeSm}\n isInvalid={Boolean(isInvalid)}\n withoutStrictValue\n />\n \n \n {isInvalid}\n \n );\n};\n\ninterface IProps {\n initialDate?: moment.Moment;\n disabled?: boolean;\n from?: number;\n to?: number;\n withoutDetectChanges?: boolean;\n datePickerSizeSm?: boolean;\n isInvalid?: string;\n onChange?: (val: string, moment: moment.Moment) => void;\n}\n\ninterface IDatePickerDate {\n year: string;\n day: string;\n month: string;\n}\n\ninterface IMonth {\n value: string;\n text: string;\n}\n\nexport default DatePicker;\n","/* eslint-disable arrow-parens */\n/* eslint-disable no-underscore-dangle */\nimport {\n appVersion,\n loadFromLocalStorage,\n timingSynchronizer,\n hasAccessTokenInLocalStorage,\n} from '_helpers';\nimport { AppExceptionType, ExecAPiOptions, IApiError } from './types';\nimport { RematchDispatch } from '@rematch/core';\nimport { push } from 'connected-react-router';\nimport { HubConnection, HubConnectionBuilder, HubConnectionState } from '@microsoft/signalr';\n\nimport unfetch from 'unfetch';\nimport _ from 'lodash';\n\ninterface IApiConfig {\n API_BASE_URL: string;\n}\n\nexport interface IOnlineEvent {\n key: string;\n method: (...args: any[]) => void;\n}\n\nexport interface IOnlineMethods {\n init?: () => void;\n}\n\n\nexport class ApiConnector {\n private readonly _apiClient: T;\n private readonly _onlineEventsSubscriber?: (dispatch: RematchDispatch) => IOnlineEvent[];\n private readonly _url: string;\n private _startConnectionPromise?: Promise;\n private _handleStartConnection?: () => void;\n private _onlineMethodsClient?: { new(hubConnection: HubConnection): M };\n private _onlineMethods?: M & IOnlineMethods;\n private _connection?: HubConnection;\n\n constructor(\n ApiClient: { new(baseUrl?: string, http?: { fetch: (url: RequestInfo, init?: RequestInit | undefined) => Promise }): T },\n apiConfig: IApiConfig,\n onlineEventsSubscriber?: (dispatch: RematchDispatch) => IOnlineEvent[],\n onlineMethods?: { new(hubConnection: HubConnection): M },\n ) {\n if (window.location.href.startsWith('https:')) {\n this._url = apiConfig.API_BASE_URL.replace('http:', 'https:');\n } else this._url = apiConfig.API_BASE_URL;\n this._apiClient = new ApiClient(this._url, {\n fetch: fetchWithSetHeaderToken,\n });\n this._startConnectionPromise = new Promise(resolve => {\n this._handleStartConnection = () => {\n resolve();\n delete this._startConnectionPromise;\n };\n });\n this._onlineEventsSubscriber = onlineEventsSubscriber;\n this._onlineMethodsClient = onlineMethods;\n }\n\n get apiClient(): T {\n return this._apiClient;\n }\n\n get baceUrl() {\n return this._url;\n }\n\n private initOnline = (dispatch: RematchDispatch) => {\n if (!this._onlineEventsSubscriber || this._connection) return;\n\n const token = loadFromLocalStorage('token');\n if (!token) return;\n\n setTimeout(async () => {\n if (this._connection) return;\n this._connection = new HubConnectionBuilder()\n .withUrl(`${this._url}/api/online`, {\n accessTokenFactory: () => token,\n })\n .withAutomaticReconnect([0, 2, 10, 10, 20, 20, 30, 30, 60, 60, 120, 120, 240])\n .build();\n\n\n try {\n await this._connection.start();\n\n if (this._handleStartConnection) {\n this._handleStartConnection();\n }\n\n this._connection.onreconnecting(() => console.log('WebSocket Reconnecting'));\n this._connection.onreconnected(() => console.log('WebSocket Reconnected'));\n this._connection.onclose(() => console.log('WebSocket Closed'));\n\n if (this._onlineMethodsClient) {\n this._onlineMethods = new this._onlineMethodsClient(this._connection);\n try {\n if (this._onlineMethods && this._onlineMethods.init) await this._onlineMethods.init();\n } catch (e) {\n console.error(e);\n }\n if (this._onlineEventsSubscriber) {\n this._onlineEventsSubscriber(dispatch)\n .forEach(ev => this._connection && this._connection.on(ev.key, ev.method));\n }\n }\n } catch (err) {\n console.error(err);\n }\n\n (window as any).connection = this._connection;\n });\n };\n\n public sendSocketMessage = async (socketMethod: (socket: M & IOnlineMethods) => Promise): Promise => {\n if (this._startConnectionPromise) {\n return this._startConnectionPromise.then(() => this._sendSocketMessage(socketMethod));\n }\n\n return this._sendSocketMessage(socketMethod);\n };\n\n private async _sendSocketMessage(socketMethod: (socket: M & IOnlineMethods) => Promise): Promise {\n if (this._connection && this._onlineMethods && this._connection.state === HubConnectionState.Connected) {\n try {\n return await socketMethod(this._onlineMethods);\n } catch (e) {\n console.error(e);\n return null;\n }\n }\n\n return null;\n }\n\n public execApi = async (dispatch: any, apiMethod: (api: T) => Promise, options?: ExecAPiOptions): Promise => {\n try {\n if (options && options.suppressErrorAndReturnNull) {\n try {\n const result = await apiMethod(this.apiClient);\n return result;\n } catch (e) {\n console.error(e);\n\n if (e.code === 401 || e.status === 401) {\n handleUnAuthorizeError(e, dispatch);\n }\n\n return null;\n }\n }\n if (options && options.withoutErrorsHandle) {\n const result = await apiMethod(this.apiClient);\n return result;\n }\n try {\n if (!(options && options.eventStateRequest)) dispatch.errors.clean();\n const result = await apiMethod(this._apiClient);\n if (result && typeof (result) === 'object' && (result as any).eventsState && dispatch.eventsState && dispatch.eventsState.updateEventState) {\n dispatch.eventsState.updateEventState((result as any).eventsState);\n }\n return result;\n } catch (e) {\n errorHandler(e, dispatch, options);\n return null;\n }\n } finally {\n this.initOnline(dispatch);\n }\n };\n}\n\nconst fetchWithSetHeaderToken = async (url: RequestInfo, init?: RequestInit): Promise => {\n const customOptions = init || {};\n const token = loadFromLocalStorage('token');\n customOptions.headers = (customOptions.headers as {}) || {};\n\n if (!_.get(init, 'headers.Authorization') && token) {\n customOptions.headers.Authorization = `Bearer ${token}`;\n const statusCode = loadFromLocalStorage('statusCode');\n if (statusCode) customOptions.headers['X-Status-Code'] = statusCode;\n }\n\n customOptions.headers['X-App-Version'] = appVersion;\n\n const response = await unfetch(url, init);\n\n const serverVersion = response.headers.get('X-App-Version');\n if (serverVersion && serverVersion.indexOf(appVersion) !== 0) {\n document.location.reload();\n }\n\n const serverTime = response.headers.get('X-Server-Time');\n if (serverTime) timingSynchronizer.setDelta(serverTime);\n\n return response;\n};\n\nconst createApiError = (code: number, message: string, type: AppExceptionType): IApiError => ({\n code,\n message,\n type,\n});\n\nconst errorHandler = (e: any, dispatch: any, options?: ExecAPiOptions) => {\n if (options && options.eventStateRequest && (e.code || e.status !== 401)) {\n console.error(e);\n return;\n }\n\n switch (e.code || e.status) {\n case 401:\n handleUnAuthorizeError(e, dispatch);\n dispatch.errors.handle(e);\n return;\n case 400:\n case 404:\n dispatch.errors.handle(e.response ? JSON.parse(e.response) : e);\n return;\n case 500:\n dispatch.errors.handle(createApiError(e.code || e.status, 'Ошибка работы сервера', AppExceptionType.Unspecified));\n return;\n default:\n dispatch.errors.handle(createApiError(0, 'Ошибка подключения к серверу', AppExceptionType.Unspecified));\n }\n};\n\n\nconst handleUnAuthorizeError = (e: any, dispatch: any) => {\n if (hasAccessTokenInLocalStorage()) {\n dispatch.auth.logout();\n dispatch(push('/login'));\n window.location.reload();\n }\n};\n\nexport default ApiConnector;\n","/* eslint-disable no-underscore-dangle */\n\nconst SOUNDS = {\n opened: {\n alert: 'alert_violation',\n message: 'opened_chat_new_message',\n },\n closed: {\n alert: 'alert_violation',\n message: 'new_message',\n },\n};\nconst SOUND_PATH = '/assets/sounds';\n\nclass NotificationsPlayer {\n private readonly _audioUrl: string;\n constructor(newMessage: boolean, newAlert: boolean, chatOpened: boolean) {\n const chatState = chatOpened ? 'opened' : 'closed';\n\n let sound;\n if (newMessage) {\n sound = SOUNDS[chatState].message;\n } else if (newAlert) {\n sound = SOUNDS[chatState].alert;\n }\n\n this._audioUrl = sound ? `${SOUND_PATH}/${sound}.mp3` : '';\n }\n\n async play() {\n if (!this._audioUrl) {\n return;\n }\n\n await new Audio(this._audioUrl).play();\n }\n}\n\nexport default NotificationsPlayer;\n","import * as React from 'react';\n\nimport logo from 'components/assets/svg/auth_top_logo.svg';\n\ninterface AuthorizedLayoutProps {\n children: JSX.Element[] | JSX.Element;\n location?: Location;\n}\n\nconst UnAuthorizedLayout: React.FunctionComponent = (props) => {\n const { children } = props;\n\n return (\n
\n
\n
\n \"spkfr-logo\"\n
\n
\n
\n {children}\n
\n
\n );\n};\n\nexport default UnAuthorizedLayout;\n","import React, { useState, useEffect } from 'react';\nimport { Navbar } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport { Location } from 'history';\nimport { saveToLocalStorage, removeFromLocalStorage, getHeaderTitle } from '_helpers';\nimport { CustomSwitch, Dropdown, IDropdownItem } from 'components';\nimport styles from './Header.module.scss';\nimport cx from 'classnames';\n\nconst Header = ({\n location,\n routes,\n adaptive,\n sidebarToggled,\n dropdownItems,\n}: HeaderProps) => {\n const [emulateRequestError, toggleEmulateError] = useState(false);\n const headerTitle = getHeaderTitle();\n const hasDropdownItems = dropdownItems && dropdownItems.length > 1;\n\n useEffect(() => {\n if (emulateRequestError) {\n saveToLocalStorage('statusCode', '500');\n } else {\n removeFromLocalStorage('statusCode');\n }\n return () => {\n removeFromLocalStorage('statusCode');\n };\n }, [emulateRequestError]);\n\n const getNameOfActivePage = () => {\n const activeRoute = routes.find((route) => {\n if (Array.isArray(route.pathname)) {\n for (let i = 0; i < route.pathname.length; i += 1) {\n if (isSameLinks(route.pathname[i])) return true;\n }\n return false;\n }\n return isSameLinks(route.pathname);\n });\n return activeRoute && activeRoute.title;\n };\n\n const isSameLinks = (pathname: string) => {\n if (pathname.endsWith('/*')) return location.pathname.startsWith(pathname.split('/*')[0]);\n return pathname === location.pathname;\n };\n\n const renderEmulateErrorSwitch = () => (\n
\n
ON API ERROR:
\n toggleEmulateError(!emulateRequestError)}\n />\n
\n );\n\n const onToggleSidebar = () => {\n const body = document.querySelector('body');\n\n if (body && body.classList.contains('hide_sidebar')) {\n body.classList.remove('hide_sidebar');\n } else if (body) {\n body.classList.add('hide_sidebar');\n }\n };\n\n return (\n \n \n \n \n \n {getNameOfActivePage()}\n \n {headerTitle ? (\n
\n {dropdownItems && hasDropdownItems ? (\n \n ) : }\n
\n ) : null}\n {process.env.REACT_APP_LOCAL_ENV === 'dev' && renderEmulateErrorSwitch()}\n
\n );\n};\n\nexport default Header;\n\ninterface HeaderProps {\n location: Location;\n routes: HeaderRoutesTitle[];\n sidebarToggled?: boolean;\n adaptive?: boolean;\n dropdownItems?: IDropdownItem[] | null;\n}\n\ninterface HeaderRoutesTitle {\n pathname: string | string[];\n title: string;\n}\n","import React from 'react';\nimport cx from 'classnames';\nimport styles from './CustomCheckbox.module.scss';\n\nconst CustomCheckbox = ({\n checked, onCheck, number, label, inline, blue, className, ...rest\n}: CustomCheckboxProps) => {\n const [isChecked, setIsChecked] = React.useState(checked);\n\n const handleClick = () => {\n if (checked === undefined) {\n setIsChecked(!isChecked);\n }\n\n if (onCheck) {\n onCheck();\n }\n };\n\n const classes = cx('checkbox', { 'checkbox-inline': inline }, { [styles.blue]: blue }, className);\n\n return (\n
\n \n \n
\n );\n};\n\nexport default CustomCheckbox;\n\ninterface CustomCheckboxProps {\n checked?: boolean;\n number: string;\n className?: string;\n label?: string;\n inline?: boolean;\n blue?: boolean;\n onCheck?: () => void;\n}\n","/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport React from 'react';\nimport {\n ErrorPlaceholder,\n Loader,\n UnsavedFormModal,\n NotFound,\n DotsSettings,\n IDotsButtonProps,\n} from 'components';\nimport { Alert } from 'react-bootstrap';\nimport { IApiError } from '_helpers/ApiConnector/types';\nimport { formDetector } from '_helpers';\nimport cx from 'classnames';\nimport backArrow from 'components/assets/svg/back_arrow.svg';\nimport styles from './Card.module.scss';\n\nconst Card = ({\n showLoader,\n apiError,\n cardClassName,\n fullHeight,\n hidden,\n calendar,\n plain,\n wizard,\n withoutBorder,\n title,\n category,\n textCenter,\n borderedTitle,\n withoutPaddingTitle,\n withBackButton,\n onClickBack,\n categoryClassName,\n withoutPadding,\n ctAllIcons,\n ctFullWidth,\n ctTextCenter,\n tableFullWidth,\n contentClassName,\n children,\n stats,\n legend,\n ftTextCenter,\n detectFormChanges,\n footerElement,\n saveAndCloseDetectFunc,\n smallTitle,\n headerChild,\n titleClassName,\n containerRef,\n show404Error,\n headerClassName,\n withoutTitleMargin,\n dotsButtons,\n without404Error,\n withoutBottomMargin,\n}: CardProps) => {\n React.useEffect(() => {\n if (detectFormChanges) {\n formDetector.setDetectChanges(true);\n\n const forms = document.querySelectorAll('form');\n const submitButtons = document.querySelectorAll('button[type=submit]');\n const onFormSubmit = () => formDetector.setFormSubmit(true);\n\n forms.forEach(form => form.addEventListener('submit', onFormSubmit));\n submitButtons.forEach(form => form.addEventListener('click', onFormSubmit));\n\n return () => {\n forms.forEach(form => form.removeEventListener('submit', onFormSubmit));\n submitButtons.forEach(form => form.removeEventListener('click', onFormSubmit));\n formDetector.resetDetectState();\n };\n }\n\n return () => true;\n }, []);\n\n if (showLoader) return ;\n\n if (!without404Error && (apiError && (apiError.code === 404 || show404Error))) return ;\n\n return (\n <>\n {apiError && apiError.code === 500 ? : (\n \n {title !== undefined || category !== undefined ? (\n \n
\n {withBackButton && (\n \"goBack\"\n )}\n
\n \n {title}\n {dotsButtons ? : null}\n \n \n {category}\n

\n
\n
\n
\n {headerChild}\n
\n \n ) : (\n ''\n )}\n \n {children}\n \n {footerElement}\n {stats !== undefined || legend !== undefined ? (\n
\n {legend !== undefined ? (\n
{legend}
\n ) : null}\n {stats !== undefined ?
: null}\n {stats !== undefined ? (\n
{stats}
\n ) : null}\n
\n ) : null}\n\n {apiError && apiError.message !== 'Unauthorized' && apiError.code !== 500 && (!apiError.failures || !Object.keys(apiError.failures).length) && (\n \n {apiError.message}\n \n )}\n {detectFormChanges ? : null}\n \n )}\n \n );\n};\n\nexport interface CardProps {\n plain?: string;\n title?: string;\n category?: string;\n legend?: React.ReactNode;\n containerRef?: React.MutableRefObject;\n\n hidden?: boolean;\n textCenter?: boolean;\n ftTextCenter?: boolean;\n withoutPadding?: boolean;\n withoutPaddingTitle?: boolean;\n borderedTitle?: boolean;\n fullHeight?: boolean;\n withBackButton?: boolean;\n smallTitle?: boolean;\n titleClassName?: string;\n headerChild?: React.ReactNode;\n show404Error?: boolean;\n without404Error?: boolean;\n withoutBottomMargin?: boolean;\n\n ctAllIcons?: string;\n ctFullWidth?: string;\n ctTextCenter?: string;\n tableFullWidth?: string;\n stats?: {};\n\n calendar?: string;\n wizard?: string;\n\n withoutBorder?: boolean;\n withoutTitleMargin?: boolean;\n headerClassName?: string;\n categoryClassName?: string;\n cardClassName?: string;\n contentClassName?: string;\n children?: React.ReactNode;\n footerElement?: React.ReactNode;\n apiError?: IApiError | null;\n showLoader?: boolean;\n detectFormChanges?: boolean;\n dotsButtons?: IDotsButtonProps[];\n onClickBack?: () => void;\n saveAndCloseDetectFunc?: () => Promise;\n}\n\nexport default Card;\n","import InputPassword from './InputPassword';\n\nexport default InputPassword;\n","import React from 'react';\nimport { FormControl } from 'react-bootstrap';\nimport cx from 'classnames';\nimport styles from './InputPassword.module.scss';\n\nconst InputPassword = (props: ComponentProps) => {\n const [open, setOpen] = React.useState(false);\n\n return (\n
\n \n setOpen(!open)}\n />\n
\n );\n};\n\ninterface ComponentProps {\n size?: 'sm' | 'lg';\n plaintext?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n value?: string;\n name?: string;\n id?: string;\n isValid?: boolean;\n isInvalid?: boolean;\n className?: string;\n autoFocus?: boolean;\n required?: boolean;\n onChange?: (event: React.ChangeEvent) => void;\n}\n\nexport default InputPassword;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { Location } from 'history';\nimport { Collapse } from 'react-bootstrap';\nimport { NotificationBundle } from 'components';\nimport cx from 'classnames';\nimport styles from './Sidebar.module.scss';\nimport _ from 'lodash';\n\nconst NavList = ({ links, location, onClickMenuLink }: NavListProps) => {\n const [isOpen, setIsOpen] = React.useState<{[key: string]: boolean}>({});\n\n React.useEffect(() => {\n links.forEach((link: Tab) => {\n if (link.list && isActiveBlock(link.list)) {\n const escapedName = link.state || escapeString(link.name);\n changeOpenState(escapedName);\n }\n });\n }, []);\n\n const isActiveRoute = (routeName: string | string[] | undefined): boolean => {\n if (!routeName) return false;\n return isSamePath(routeName);\n };\n\n const isActiveBlock = (list: SubItem[] | undefined) => {\n if (!list) return false;\n return list.some((link: SubItem) => isActiveRoute(mergePathAndRoutes(link.path, link.routes)));\n };\n\n const isSamePath = (routeName: string | string[]) => {\n if (_.isArray(routeName)) {\n return routeName.some(route => isSameLinks(route));\n }\n return isSameLinks(routeName);\n };\n\n const isSameLinks = (routeName: string) => {\n const { pathname, search } = location;\n\n if (routeName.indexOf('/*') !== -1) {\n const sp = routeName.split('/*').filter(el => el.length !== 0);\n\n if (sp.length === 1) {\n return pathname.startsWith(sp[0]);\n }\n\n return pathname.startsWith(sp[0]) && search.endsWith(sp[1]);\n }\n\n return routeName === pathname;\n };\n\n const escapeString = (string: string) => string.toLocaleLowerCase().replace(/' '/g, '_');\n\n const changeOpenState = (nameOfBlock: string) => setIsOpen({\n ...isOpen,\n [nameOfBlock]: !isOpen[nameOfBlock],\n });\n\n const handleCollapseBlock = (nameOfBlock: string) => () => {\n changeOpenState(nameOfBlock);\n };\n\n const renderLinkIcon = (icon: string | undefined, name: string) => {\n const nameWords = name.split(' ');\n return (\n
\n {icon\n ? {name}\n : (\n
\n {nameWords[0].charAt(0)}\n {Boolean(nameWords[1]) && nameWords[nameWords.length - 1].charAt(0)}\n
\n )}\n
\n );\n };\n\n const mergePathAndRoutes = (path: string | undefined, routes: string | string[] | undefined): string | string[] | undefined => {\n if (!path) return routes;\n if (!routes) return path;\n if (_.isArray(routes)) {\n return [...routes, path];\n }\n return [routes, path];\n };\n\n const renderCollapseBlock = (prop: Tab, key: number) => {\n const escapedName = prop.state || escapeString(prop.name);\n return (\n \n \n \n {renderLinkIcon(prop.icon, prop.name)}\n

\n {prop.name}\n

\n {prop.events ? : null}\n {prop.list && (\n \n )}\n \n \n \n
    \n {prop.list && prop.list.map(renderSimpleNavLink)}\n
\n
\n
\n );\n };\n\n const renderSimpleNavLink = (prop: Tab | SubItem, key: number) => (\n \n \n {renderLinkIcon(prop.icon, prop.name)}\n

{prop.name}

\n {('list' in prop) && (\n \n )}\n {prop.events ? : null}\n \n \n );\n\n return (\n
    \n {links.map((prop: Tab, key: number) => {\n if (prop.list) {\n return renderCollapseBlock(prop, key);\n }\n return renderSimpleNavLink(prop, key);\n })}\n
\n );\n};\n\ninterface NavListProps {\n links: Tab[];\n location: Location;\n onClickMenuLink?: () => void;\n}\n\nexport interface Tab {\n name: string;\n icon: string;\n state: string;\n path?: string;\n routes?: string | string[];\n list?: SubItem[];\n events?: number;\n}\n\nexport interface SubItem {\n name: string;\n path: string;\n routes?: string[];\n icon?: string;\n events?: number;\n}\n\nexport default NavList;\n","import Sidebar, { ProfileTab as PT, SidebarMenuMapType as nSidebarMenuMapType } from './Sidebar';\nimport { Tab as SidebarTab, SubItem as nSubItem } from './NavList';\n\n\nexport default Sidebar;\n\nexport type Tab = SidebarTab;\nexport type ProfileTab = PT;\nexport type SubItem = nSubItem;\nexport type SidebarMenuMapType = nSidebarMenuMapType;\n","import React from 'react';\nimport { Collapse } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport { Location } from 'history';\nimport styles from './Sidebar.module.scss';\nimport logoSPKFR from '../assets/svg/dashboard_logo_SPK.svg';\nimport avatar from '../assets/svg/avatar.svg';\nimport NavList, { Tab } from './NavList';\nimport cx from 'classnames';\nimport _ from 'lodash';\nimport './SidebarHideStyles.scss';\n\nconst Sidebar = ({\n adaptive,\n location,\n profile,\n profileTabs,\n tabs,\n children,\n logo,\n onLogout,\n}: SidebarProps) => {\n const sidebarRef: React.RefObject = React.createRef();\n const [openAvatar, setOpenAvatar] = React.useState(false);\n\n const detectMobileOutsideClick = (event: MouseEvent) => {\n const body = document.querySelector('body');\n\n if (body\n && body.classList.contains('hide_sidebar')\n && document.body.clientWidth <= 740\n && !(event.target as Element).closest('.sidebar')\n && !(event.target as Element).closest('#minimizeSidebar')) {\n body.classList.remove('hide_sidebar');\n }\n };\n\n React.useEffect(() => {\n document.addEventListener('click', detectMobileOutsideClick);\n\n return () => {\n document.removeEventListener('click', detectMobileOutsideClick);\n };\n }, []);\n\n const isSamePath = (pathname: string, routeName: string) => pathname === routeName || pathname === `${routeName}/`;\n\n const isActiveRoute = (routeName: string) => {\n const { pathname } = location;\n return isSamePath(pathname, routeName);\n };\n\n const hideMobileSidebar = () => {\n const body = document.querySelector('body');\n\n if (body && body.classList.contains('hide_sidebar')) {\n body.classList.remove('hide_sidebar');\n }\n };\n\n const logout = () => {\n onLogout();\n window.location.reload();\n };\n\n return (\n \n
\n
\n \n \"spkfr-logo\"\n \n\n \n
\n
\n
\n
\n {/* {profile && profile.avatar\n ? \"Avatar\"\n : profile && ((profile.lastName ? profile.lastName.charAt(0) : '')\n + (profile.firstName ? profile.firstName.charAt(0) : '')).toUpperCase()\n } */}\n \"Avatar\"\n
\n \n
\n {tabs && tabs.length\n ? \n : children\n }\n
\n
\n );\n};\n\nexport default Sidebar;\n\ninterface SidebarProps {\n location: Location;\n profile: {\n firstName?: string;\n lastName?: string;\n avatar?: string;\n } | null;\n tabs: Tab[];\n profileTabs: ProfileTab[];\n adaptive?: boolean;\n logo?: string;\n children?: React.ReactNode;\n onLogout: () => void;\n}\n\nexport interface ProfileTab {\n name: string;\n path: string;\n mini: string;\n}\n\nexport interface SidebarMenuMapType { [key: string]: string | string[] }\n\nexport const updateTabEvents = (tab: Tab, events: { [key: string]: number }, menuMap: SidebarMenuMapType): Tab => {\n const newList = tab.list ? tab.list.map(l => ({\n ...l,\n events: (menuMap[l.name] && _.isArray(menuMap[l.name]) ? getEventsSum(events, menuMap[l.name] as string[]) : events[(menuMap[l.name] as string)]) || 0,\n })) : [];\n const newTab = {\n ...tab,\n events: newList.reduce((acc, l) => (l.events ? acc + l.events : acc), 0),\n list: newList,\n };\n return newTab;\n};\n\nconst getEventsSum = (events: { [key: string]: number }, eventsArr: string[]) => eventsArr.reduce((acc, event) => (events[event] ? acc + events[event] : acc), 0);\n","import { Color, ColorStatus } from '_helpers';\n\nexport enum ExamStatus {\n AwaitingExpertConfirmation = 'awaitingExpertConfirmation',\n IsApplying = 'isApplying',\n ApplyingFinished = 'applyingFinished',\n Canceled = 'canceled',\n IsPassing = 'isPassing',\n Finishing = 'finishing',\n Finished = 'finished',\n FinalizedResults = 'finalizedResults',\n NokProtocolSigned = 'nokProtocolSigned',\n AkProtocolSigned = 'akProtocolSigned',\n SovietProtocolSignedByMembers = 'sovietProtocolSignedByMembers',\n SovietProtocolSignedByChairman = 'sovietProtocolSignedByChairman',\n}\n\nexport const MappedExamStatuses = {\n [ExamStatus.AwaitingExpertConfirmation as string]: new ColorStatus(Color.Orange, 'Идет создание'),\n [ExamStatus.IsApplying as string]: new ColorStatus(Color.Success, 'Идет запись'),\n [ExamStatus.ApplyingFinished as string]: new ColorStatus(Color.Default, 'Запись завершена'),\n [ExamStatus.IsPassing as string]: new ColorStatus(Color.Success, 'Идет сдача'),\n [ExamStatus.Canceled as string]: new ColorStatus(Color.Red, 'Отменен'),\n [ExamStatus.Finishing as string]: new ColorStatus(Color.Default, 'Завершен'),\n [ExamStatus.Finished as string]: new ColorStatus(Color.Default, 'Финализация результатов'),\n [ExamStatus.FinalizedResults as string]: new ColorStatus(Color.Default, 'Подписание протокола НОК'),\n [ExamStatus.NokProtocolSigned as string]: new ColorStatus(Color.Default, 'Подписание протокола АК'),\n [ExamStatus.AkProtocolSigned as string]: new ColorStatus(Color.Default, 'Подписание решения Совета'),\n [ExamStatus.SovietProtocolSignedByMembers as string]: new ColorStatus(Color.Default, 'Подписание решения Совета'),\n [ExamStatus.SovietProtocolSignedByChairman as string]: new ColorStatus(Color.Success, 'Утвержден'),\n};\n\n\nexport enum ExamApplicationStatus {\n Draft = 'draft',\n InReview = 'inReview',\n CorrectionsRequired = 'correctionsRequired',\n PaymentRequired = 'paymentRequired',\n Canceled = 'canceled',\n Paid = 'paid',\n AdmittedToExam = 'admittedToExam',\n IsPassing = 'isPassing',\n Absent = 'absent',\n NotPassed = 'notPassed',\n Passed = 'passed',\n WaitingForOnlineAccepting = 'waitingForOnlineAccepting',\n HaveNotOnlineAuth = 'haveNotOnlineAuth',\n}\n\nexport const MappedExamApplicationStatuses = {\n [ExamApplicationStatus.Draft as string]: new ColorStatus(Color.Primary, 'Черновик'),\n [ExamApplicationStatus.InReview as string]: new ColorStatus(Color.Default, 'На рассмотрении'),\n [ExamApplicationStatus.CorrectionsRequired as string]: new ColorStatus(Color.Red, 'Требуются исправления'),\n [ExamApplicationStatus.PaymentRequired as string]: new ColorStatus(Color.Default, 'Одобрена, требуется оплата'),\n [ExamApplicationStatus.Canceled as string]: new ColorStatus(Color.Red, 'Отменен'),\n [ExamApplicationStatus.Paid as string]: new ColorStatus(Color.Default, 'Запись подтверждена'),\n [ExamApplicationStatus.AdmittedToExam as string]: new ColorStatus(Color.Success, 'Допущен к экзамену'),\n [ExamApplicationStatus.IsPassing as string]: new ColorStatus(Color.Default, 'Идет сдача'),\n [ExamApplicationStatus.Absent as string]: new ColorStatus(Color.Red, 'Неявка'),\n [ExamApplicationStatus.NotPassed as string]: new ColorStatus(Color.Red, 'Не сдан'),\n [ExamApplicationStatus.Passed as string]: new ColorStatus(Color.Success, 'Сдан'),\n [ExamApplicationStatus.WaitingForOnlineAccepting as string]: new ColorStatus(Color.Orange, 'Ожидает допуска'),\n [ExamApplicationStatus.HaveNotOnlineAuth as string]: new ColorStatus(Color.Default, 'Нет авторизации'),\n};\n\nexport enum ExamSessionStatus {\n Active = 'active',\n Completed = 'completed',\n}\n\nexport enum ExamSessionReadyStatuses {\n WaitingForStart = 'waitingForStart',\n ExamIsPassing = 'examIsPassing',\n TheoreticalExamIsPassingAndSessionStarted = 'theoreticalExamIsPassingAndSessionStarted',\n ExamSessionTimeout = 'examSessionTimeout',\n PracticalExamIsPassingAndSessionStarted = 'practicalExamIsPassingAndSessionStarted',\n ExamFinished = 'examFinished',\n SessionFinished = 'sessionFinished',\n}\n\nexport const MappedExamSessionReadyStatuses = {\n [ExamSessionReadyStatuses.WaitingForStart as string]: new ColorStatus(Color.Default, 'Ожидает начала'),\n [ExamSessionReadyStatuses.ExamIsPassing as string]: new ColorStatus(Color.Default, 'Идет сдача'),\n [ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted as string]: new ColorStatus(Color.Default, 'Идет сдача теоретической части экзамена'),\n [ExamSessionReadyStatuses.ExamSessionTimeout as string]: new ColorStatus(Color.Default, 'Перерыв'),\n [ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted as string]: new ColorStatus(Color.Default, 'Идет сдача практической части экзамена'),\n [ExamSessionReadyStatuses.ExamFinished as string]: new ColorStatus(Color.Default, 'Экзамен завершен'),\n [ExamSessionReadyStatuses.SessionFinished as string]: new ColorStatus(Color.Default, 'Сессия завершена'),\n};\n\nexport enum AppType {\n Applicant = 'applicant',\n Qec = 'qec',\n Ec = 'ec',\n Spkfr = 'spkfr',\n Exam = 'exam',\n Expert = 'expert'\n}\n\nexport enum ExamType {\n Intramural = 'intramural',\n Recertification = 'recertification',\n Online = 'online',\n}\n\nexport enum DocumentType {\n Other = 'other',\n IdentityDoc = 'identityDoc',\n SecondaryEducationConfirmation = 'secondaryEducationConfirmation',\n HigherEducationConfirmation = 'higherEducationConfirmation',\n WorkExperienceConfirmation = 'workExperienceConfirmation',\n ContinuingEducationConfirmation = 'continuingEducationConfirmation',\n CertificateForExchange = 'certificateForExchange',\n NoCriminalRecord = 'noCriminalRecord',\n QualificationCertificate = 'qualificationCertificate',\n ConsentToProcessingPersonalData = 'consentToProcessingPersonalData',\n}\n\nexport enum IdentityDocType {\n Passport = 'passport',\n Other = 'other',\n}\n\nexport enum Sex {\n Male = 'male',\n Female = 'female',\n}\n\nexport enum FilteredExamStatus {\n AwaitingExpertConfirmation = 'awaitingExpertConfirmation',\n IsApplying = 'isApplying',\n ApplyingFinished = 'applyingFinished',\n IsPassing = 'isPassing',\n Finished = 'finished',\n FinalizedResults = 'finalizedResults',\n NokProtocolSigned = 'nokProtocolSigned',\n AkProtocolSigned = 'akProtocolSigned',\n Processed = 'processed',\n Canceled = 'canceled',\n}\n\nexport const MappedExamTypes = {\n [ExamType.Online as string]: new ColorStatus(Color.Default, 'Онлайн'),\n [ExamType.Recertification as string]: new ColorStatus(Color.Default, 'Признание'),\n [ExamType.Intramural as string]: new ColorStatus(Color.Default, 'Очный'),\n};\n\nexport enum PracticalQuestionType {\n OpenAnswer = 'openAnswer',\n Essay = 'essay',\n ManualCheckTabular = 'manualCheckTabular',\n AutoCheckTabular = 'autoCheckTabular',\n Offline = 'offline',\n}\n\nexport enum TheoreticalQuestionType {\n MultipleChoice = 'multipleChoice',\n Matching = 'matching',\n OpenAnswer = 'openAnswer',\n Ordering = 'ordering',\n}\n\nexport enum ExamPartType {\n Theoretical = 'theoretical',\n Practical = 'practical',\n}\n","import React from 'react';\nimport { LoaderBtn, DotsSettings, IDotsButtonProps } from 'components';\nimport { Modal, Button } from 'react-bootstrap';\nimport styles from './WarningModal.module.scss';\nimport cn from 'classnames';\n\nconst WarningModal = ({\n show,\n onHide,\n title,\n onAccess,\n loading,\n appendFooterItem,\n titleClassNames,\n bodyClassNames,\n footerClassNames,\n accessBtnTittle,\n closeBtnTittle,\n children,\n dialogClassName,\n withoutCancelButton,\n withoutCloseIcon,\n withoutTitlePadding,\n withoutTitleMargin,\n withoutOverflow,\n large,\n dotsButtons,\n disableAccessButton,\n}: WarningModalProps) => (\n \n \n \n {title}\n {dotsButtons ? : null}\n \n \n \n {children}\n \n \n {onAccess\n ? (\n \n {accessBtnTittle || 'Подтвердить'}\n \n )\n : null}\n {!withoutCancelButton && }\n {appendFooterItem && appendFooterItem()}\n \n \n );\n\ninterface WarningModalProps {\n title: string;\n show: boolean;\n accessBtnTittle?: string;\n closeBtnTittle?: string;\n titleClassNames?: string;\n bodyClassNames?: string;\n footerClassNames?: string;\n dialogClassName?: string;\n loading?: boolean;\n children?: React.ReactNode;\n withoutCancelButton?: boolean;\n withoutCloseIcon?: boolean;\n withoutTitlePadding?: boolean;\n withoutTitleMargin?: boolean;\n withoutOverflow?: boolean;\n large?: boolean;\n dotsButtons?: IDotsButtonProps[];\n disableAccessButton?: boolean;\n onHide: () => void;\n onAccess?: () => void;\n appendFooterItem?: () => JSX.Element | string | null;\n}\n\n\nexport default WarningModal;\n","import React, { FormEvent } from 'react';\nimport cn from 'classnames';\nimport styles from './CustomSwitch.module.scss';\nimport { Loader } from 'components';\n\nconst CustomSwitch = ({\n value, name, onClick, changed, status, containerClassName, loading, disabled, pinClassName, iconClassName,\n}: Props) => {\n const handleToggle = (event: FormEvent) => {\n event.stopPropagation();\n\n if (isFixPosition()) return;\n\n const newState = !value;\n onClick({ name, value: newState });\n };\n\n const isFixPosition = () => loading || disabled || (!changed && (status === 'accept' || status === 'reject'));\n\n const containerOptionalClasses = {\n [styles.switchOn]: value,\n [styles.switchOff]: !value,\n 'bg-success': status === 'accept',\n 'bg-danger': status === 'reject',\n };\n\n return (\n \n \n {loading ? (\n \n ) : null}\n \n \n \n );\n};\n\nexport default CustomSwitch;\n\ninterface Props {\n name: string;\n value: boolean;\n changed?: boolean;\n loading?: boolean;\n disabled?: boolean;\n status?: CustomSwitchStatus;\n containerClassName?: string;\n pinClassName?: string;\n iconClassName?: string;\n onClick: (event: CustomSwitchEvent) => void;\n}\n\nexport interface CustomSwitchEvent {\n value: boolean;\n name: string;\n}\n\nexport enum CustomSwitchStatusEnum {\n Accept = 'accept',\n Reject = 'reject',\n Default = 'default',\n}\n\nexport type CustomSwitchStatus = 'accept' | 'reject' | 'default';\n","import React from 'react';\nimport cn from 'classnames';\nimport styles from './Loader.module.scss';\nimport LoaderSvg from '../../assets/svg/Loader_svg.svg';\n\nconst Loader = ({ className, fullHeight, showBg }: IProps) => (\n
\n \"загрузка...\"\n
\n);\n\nexport default Loader;\n\ninterface IProps {\n className?: string;\n fullHeight?: boolean;\n showBg?: boolean;\n}\n","import React from 'react';\nimport { WarningModal } from 'components';\nimport { formDetector } from '_helpers';\nimport { RouteComponentProps, withRouter, Prompt } from 'react-router';\nimport * as H from 'history';\n\nconst UnsavedFormModal = ({ history, saveAndCloseDetectFunc }: Props) => {\n const [modalVisible, setModalVisible] = React.useState(false);\n const [lastLocation, setLastLocation] = React.useState(null);\n const [confirmedNavigation, setConfirmedNavigation] = React.useState(false);\n\n React.useEffect(() => {\n if (confirmedNavigation && lastLocation) {\n formDetector.resetDetectState();\n history.push(lastLocation.pathname);\n }\n }, [confirmedNavigation]);\n\n const showModal = (location: H.Location) => {\n setModalVisible(true);\n setLastLocation(location);\n };\n\n const closeModal = () => {\n setModalVisible(false);\n };\n\n const handleBlockedNavigation = (nextLocation: H.Location) => {\n if (!confirmedNavigation) {\n showModal(nextLocation);\n return false;\n }\n\n return true;\n };\n\n const handleConfirmNavigationClick = async () => {\n let res;\n if (saveAndCloseDetectFunc) {\n res = await saveAndCloseDetectFunc();\n }\n\n closeModal();\n\n if (lastLocation && (saveAndCloseDetectFunc ? res : true)) {\n setConfirmedNavigation(true);\n }\n };\n\n if (formDetector.getShowModal()) {\n window.onbeforeunload = () => true;\n } else {\n window.onbeforeunload = null;\n }\n\n return (\n <>\n \n \n У вас несохраненные изменения\n \n \n );\n};\n\nexport default withRouter(UnsavedFormModal);\n\ninterface IProps {\n saveAndCloseDetectFunc?: () => Promise;\n}\n\ntype Props = RouteComponentProps & IProps;\n","import React from 'react';\nimport moment from 'moment';\nimport statusIcon from 'components/assets/svg/status_icon.svg';\nimport { Color, ColorStatus } from '_helpers';\nimport { AdvancedTable, AdvancedTableData, ExamApplicationStatus } from 'components';\n\nconst ExamRequirement = ({ examApplicationsList, getList, onRowClick }: IProps) => {\n const initialState: IState = {\n sortOrder: true,\n };\n\n const [sortOrder, setSortOrder] = React.useState(initialState.sortOrder);\n\n const tableHeaders = [\n { fieldName: 'applicantFullName', title: 'ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО' },\n { fieldName: 'applicantEmail', title: 'Почта' },\n { fieldName: 'applicantPhone', title: 'Телефон' },\n { fieldName: 'status', title: 'Результат' },\n ];\n\n const createStatus = (status: ExamApplicationStatus, finalized: boolean) => {\n let text = '';\n let color = Color.Primary;\n if (status === ExamApplicationStatus.Passed) {\n text = finalized ? 'Сдан' : 'Теория сдана';\n color = finalized ? Color.Primary : Color.Success;\n } else {\n text = 'Не сдан';\n color = finalized ? Color.Primary : Color.Red;\n }\n\n const styledStatus = new ColorStatus(color, text);\n\n return (\n \n {styledStatus.text} {finalized && status !== ExamApplicationStatus.Passed && \"address_icon\"}\n \n );\n };\n\n const createTableData = (\n examApplications: IApplication[],\n ): AdvancedTableData[] => examApplications.map(\n ({\n examApplicationId,\n applicantFullName,\n applicantEmail,\n applicantPhone,\n status,\n finalized,\n }) => ({\n id: examApplicationId,\n columns: [\n applicantFullName,\n applicantEmail,\n applicantPhone,\n createStatus(status, finalized),\n ],\n }),\n );\n\n const handleOrder = async (fieldName: string) => {\n setSortOrder(!sortOrder);\n await getList({ sortField: fieldName, sortOrder });\n };\n\n const handleSearch = (fieldName: string, value: string) => {\n getList({ searchField: fieldName, searchTerm: value });\n };\n\n return (\n \n );\n};\n\ninterface IProps {\n getList: (data: IGetList) => void;\n onRowClick: (applicantId: string) => void;\n examApplicationsList: IApplicationList;\n}\n\ninterface IState {\n sortOrder: boolean;\n}\n\ninterface IGetList {\n examId?: string;\n searchField?: string;\n searchTerm?: string;\n page?: number;\n pageSize?: number;\n sortOrder?: boolean;\n sortField?: string;\n}\n\ninterface IApplicationList {\n items: IApplication[];\n page: number;\n pageSize: number;\n total: number;\n admittedCount: number;\n}\n\ninterface IApplication {\n examApplicationId: string;\n applicantId: string;\n applicantFullName: string;\n applicantPhone: string;\n applicationSubmitDate: moment.Moment;\n applicantEmail: string;\n status: ExamApplicationStatus;\n statusChangeTime: moment.Moment;\n examSessionStatus?: ExamSessionStatus | undefined;\n recommendations?: string;\n finalized: boolean;\n}\n\nenum ExamSessionStatus {\n Active = 'active',\n Completed = 'completed'\n}\n\nexport default ExamRequirement;\n","import React, { useEffect, useState, ChangeEvent } from 'react';\nimport { Form, Col, InputGroup } from 'react-bootstrap';\nimport { formDetector } from '_helpers';\nimport cn from 'classnames';\nimport styles from './InputText.module.scss';\nimport _ from 'lodash';\n\nconst InputTotal = ({\n fieldFailures,\n name,\n setRef,\n onChange,\n inputGroupClassNames,\n labelTitle,\n labelColSize,\n labelClassNames,\n withoutLabel,\n inputClassNames,\n inputColSize,\n prependContent,\n disabled,\n value,\n minLength,\n maxLength,\n type,\n placeholder,\n children,\n withoutDetectChanges,\n pattern,\n autoFocus,\n withDarkLabel,\n}: Props) => {\n let ref: any;\n\n const [hasError, setHasError] = useState(false);\n\n useEffect(() => {\n if (value && !withoutDetectChanges) {\n formDetector.setChangedInput(name, value);\n }\n\n return () => {\n setHasError(false);\n };\n }, [value]);\n\n useEffect(() => {\n if (fieldFailures && _.has(fieldFailures, name) && fieldFailures[name].length > 0 && !hasError && setRef) {\n setHasError(true);\n setRef(ref);\n } else if (hasError && (!fieldFailures || !_.has(fieldFailures, name) || fieldFailures[name].length === 0)) {\n setHasError(false);\n }\n }, [fieldFailures]);\n\n const handleChangeInput = (event: any) => {\n const { target } = event as ChangeEvent;\n\n if (!withoutDetectChanges) {\n formDetector.setChangedInput(target.name, target.value);\n }\n\n onChange(target.name, target.value);\n };\n\n const onSetRef = (node: any) => {\n ref = node;\n };\n\n return (\n \n {withoutLabel\n ? null\n : (\n \n {labelTitle}\n \n )}\n \n \n {prependContent\n ? (\n \n {prependContent}\n \n )\n : null\n }\n 0)}\n pattern={pattern}\n autoFocus={autoFocus}\n />\n \n {fieldFailures && _.has(fieldFailures, name) && fieldFailures[name].length > 0\n ? fieldFailures[name]\n : null}\n \n \n {children}\n \n \n );\n};\n\nexport default InputTotal;\n\nexport interface Props {\n value: string;\n name: string;\n onChange: (name: string, value: string) => void;\n\n labelTitle?: string;\n withoutLabel?: boolean;\n labelColSize?: number;\n inputColSize?: number;\n\n labelClassNames?: string;\n inputClassNames?: string;\n inputGroupClassNames?: string;\n withDarkLabel?: boolean;\n\n prependContent?: string | number | JSX.Element;\n\n fieldFailures?: IFieldFailures | null;\n setRef?: (node: HTMLInputElement | null) => void;\n\n minLength?: number;\n maxLength?: number;\n\n type?: string;\n disabled?: boolean;\n placeholder?: string;\n children?: React.ReactNode;\n withoutDetectChanges?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n}\n\ninterface IFieldFailures {\n [key: string]: string;\n}\n","import React, { useEffect } from 'react';\nimport {\n Card,\n AdvancedTable,\n AdvancedTableData,\n AdvancedTableHeader,\n PaginationData,\n WarningModal,\n IEmptySectionProps,\n AnimatedTabs,\n} from 'components';\nimport { Button, Tab } from 'react-bootstrap';\nimport { ApiError } from '_helpers/errors/ApiError';\nimport { formatPhoneNumber } from '_helpers';\nimport QecUserForm, { IUserDetail } from './UserForm';\nimport userPlaceholderIcon from 'components/assets/svg/spkfr/qec_admin_empty_table.svg';\n\nconst UsersPage = ({\n getList,\n getUserDetail,\n handleClickFormClose,\n submitUserForm,\n removeUser,\n repeatInvite,\n showForm,\n userList,\n apiError,\n userDetail,\n loading,\n withoutTabs,\n withoutBackIcon,\n}: Props) => {\n useEffect(() => {\n const fetch = async () => {\n setProcessing(true);\n await getList({});\n setProcessing(false);\n };\n\n fetch();\n }, []);\n\n const initialState: State = {\n showForm: false,\n showWarning: false,\n deletedId: null,\n listSortOrder: true,\n firstRun: true,\n };\n\n const [activeTab, setActiveTab] = React.useState(TabKey.Info);\n const [processing, setProcessing] = React.useState(false);\n const [showWarning, setShowWarning] = React.useState(initialState.showWarning);\n const [deletedId, setDeletedId] = React.useState(initialState.deletedId);\n const [listSortOrder, setListSortOrder] = React.useState(initialState.listSortOrder);\n const [firstRun, setFirstRun] = React.useState(initialState.firstRun);\n\n\n const onOpenForm = async (id: string) => {\n await getUserDetail(id);\n };\n\n const onClose = () => {\n handleClickFormClose();\n setListSortOrder(true);\n };\n\n const formSubmit = (userDetails: IUserDetail) => {\n submitUserForm(userDetails);\n };\n\n const onRemoveUser = () => {\n if (userDetail) {\n setDeletedId(userDetail.id);\n setShowWarning(true);\n }\n };\n\n const onHideWarningModal = () => {\n setDeletedId(null);\n setShowWarning(false);\n };\n\n const onSubmitWarningModal = async () => {\n if (deletedId) {\n const res = await removeUser(deletedId);\n\n if (res) {\n handleClickFormClose();\n }\n }\n setShowWarning(false);\n };\n\n const handleListOrder = (fieldName: string) => {\n setListSortOrder(!listSortOrder);\n getList({ sortField: fieldName, sortOrder: listSortOrder });\n };\n\n const handleListSearch = (fieldName: string, value: string) => {\n setFirstRun(false);\n getList({ searchField: fieldName, searchTerm: value });\n };\n\n const warningModalProps = {\n title: 'Удалить администратора?',\n show: showWarning,\n onHide: onHideWarningModal,\n onAccess: onSubmitWarningModal,\n };\n\n const emptyDataProps: IEmptySectionProps = {\n placeholderTitle: 'Нет добавленных администраторов',\n placeholderText: 'Вам необходимо добавить, как минимум, одного администратора ЦОК',\n placeholderButtonText: 'Добавить администратора',\n onButtonClick: () => onOpenForm('new'),\n placeholderIcon: userPlaceholderIcon,\n };\n\n const listTableHeaders: AdvancedTableHeader[] = [\n { fieldName: 'fullName', title: 'ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО', columnStyles: { width: '60%' } },\n { fieldName: 'email', title: 'ПОЧТА', columnStyles: { width: '40%' } },\n { fieldName: 'phone', title: 'ТЕЛЕФОН', columnStyles: { minWidth: '10rem' } },\n ];\n\n const repeatInviteFunc = repeatInvite && userDetail && !userDetail.emailConfirmed ? () => repeatInvite(userDetail.id) : undefined;\n\n const createListTableData = (): AdvancedTableData[] => (userList ? userList.items.map(user => ({\n id: user.id,\n columns: [\n user.fullName,\n user.email,\n formatPhoneNumber(user.phone) || user.phone,\n ],\n })) : []);\n\n const renderUserDetails = () => (\n \n );\n\n const createHederButton = () => (userList && userList.items.length ? : null);\n\n return (\n
\n {!showForm && firstRun ? (\n \n getList({ page: event.page, pageSize: event.perPage })}\n handleOrder={handleListOrder}\n handleRowClick={onOpenForm}\n handleSearch={handleListSearch}\n pageSize={(userList && userList.pageSize) || 10}\n total={(userList && userList.total) || 1}\n page={(userList && userList.page) || 1}\n {...emptyDataProps}\n />\n \n ) : null}\n\n {showForm ? (\n \n {!withoutTabs ? (\n setActiveTab(key as TabKey)}\n >\n \n {renderUserDetails()}\n \n \n ) : renderUserDetails()}\n \n \n ) : null}\n
\n );\n};\n\nexport default UsersPage;\n\nexport interface IList {\n items: User[];\n page: number;\n pageSize: number;\n total: number;\n}\n\nexport interface IGetList {\n qecIdQuery?: string;\n searchField?: string;\n searchTerm?: string;\n page?: number;\n pageSize?: number;\n sortOrder?: boolean;\n sortField?: string;\n}\n\ninterface Props {\n showForm: boolean;\n userList: IList | null;\n userDetail: IUserDetail | null;\n apiError: ApiError | null;\n loading?: boolean;\n withoutTabs?: boolean;\n withoutBackIcon?: boolean;\n getList: (data: IGetList) => void;\n getUserDetail: (userId: string) => void;\n submitUserForm: (userDetail: IUserDetail) => void;\n handleClickFormClose: () => void;\n removeUser: (userId: string) => Promise;\n repeatInvite?: (userId: string) => void;\n}\n\ninterface State {\n showForm: boolean;\n showWarning: boolean;\n deletedId: string | null;\n listSortOrder: boolean;\n firstRun: boolean;\n}\n\ninterface User {\n id: string;\n fullName: string;\n email: string;\n phone: string;\n}\n\nenum TabKey {\n Info = 'info',\n}\n","import React from 'react';\nimport {\n Card,\n Checkbox,\n PhoneInput,\n InputPassword,\n LoaderBtn,\n Captcha,\n InputText,\n} from 'components';\nimport {\n Col,\n FormGroup,\n FormLabel,\n Form,\n} from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport { RegExpConst } from '_helpers';\nimport { IApiError } from '../../_helpers/ApiConnector/types';\nimport _ from 'lodash';\nimport styles from './AuthenticationForm.module.scss';\n\nconst InitFormErrors: IFieldsError = {\n phone: '',\n password: '',\n captcha: '',\n};\n\nconst InitFormData: IFormData = {\n phone: '',\n password: '',\n captcha: '',\n rememberMe: false,\n};\n\nconst AuthenticationForm = ({\n apiError,\n onLogin,\n title,\n subTitle,\n resetPasswordLink,\n registerLink,\n withRegister,\n withEmail,\n withPhone,\n withoutForgotPassword,\n}: IProps) => {\n const [formData, setFormData] = React.useState(InitFormData);\n const [formFieldErrors, setFormFieldErrors] = React.useState(InitFormErrors);\n const [processing, setProcessing] = React.useState(false);\n const fieldFailures = formFieldErrors as object as { [key: string]: string };\n\n const getFieldErrorFromApiError = (fieldName: string, errors: IApiError | null) => {\n if (!errors || !errors.failures) return '';\n if (_.has(errors.failures, fieldName)) return errors.failures[fieldName].join(', ');\n return '';\n };\n\n React.useEffect(() => {\n const phoneError = getFieldErrorFromApiError('email', apiError);\n const emailError = getFieldErrorFromApiError('email', apiError);\n const passwordError = getFieldErrorFromApiError('password', apiError);\n\n setProcessing(false);\n setFormFieldErrors({\n phone: phoneError,\n password: passwordError,\n email: emailError,\n });\n\n return () => setProcessing(false);\n }, [apiError]);\n\n const checkValidationErrors = (data: IFormData): IFieldsError => {\n const phoneError = ((data.phone && /^[0-9]{10}$/.test(data.phone)) || !withPhone) ? '' : 'Неверный формат телефона';\n const emailError = ((data.email && RegExpConst.EMAIL.test(data.email)) || !withEmail) ? '' : 'Неверный формат email';\n const isCaptchaValid = apiError && apiError.failures && apiError.failures.captcha ? data.captcha && data.captcha.length === 4 : true;\n let captchaError = '';\n let passwordError = '';\n\n if (data.password.length === 0) {\n passwordError = 'Заполните поле';\n } else if (data.password.length < 6) {\n passwordError = 'Минимальная длина пароля 6 символов';\n }\n\n if (!isCaptchaValid) {\n captchaError = 'Длина цифр с картинки должна быть 4 символа';\n }\n\n return {\n phone: phoneError,\n email: emailError,\n password: passwordError,\n captcha: captchaError,\n };\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n const validResult = checkValidationErrors(formData);\n\n if ((validResult.phone && validResult.phone.length > 0) || validResult.password.length > 0 || (validResult.captcha && validResult.captcha.length > 0)) {\n setFormFieldErrors({ ...validResult });\n return;\n }\n\n setFormData({ ...formData, captcha: '' });\n setProcessing(true);\n await onLogin(formData);\n };\n\n const handleInputChange = (name: string, value: string) => {\n setFormFieldErrors({ ...formFieldErrors, [name]: '' });\n setFormData({ ...formData, [name]: value });\n };\n\n return (\n <>\n \n
\n \n \n Войти\n \n \n setFormData({ ...formData, rememberMe: !formData.rememberMe })}\n />\n \n \n )}\n >\n {withEmail && (\n \n )}\n {withPhone && (\n \n )}\n \n Пароль\n handleInputChange(e.target.name || '', e.target.value ? e.target.value.toString() : '')}\n value={formData.password}\n isInvalid={!!formFieldErrors.password}\n />\n \n {formFieldErrors.password}\n \n \n {!withoutForgotPassword && (\n
\n Забыли пароль?\n
\n )}\n setFormData({ ...formData, captcha })}\n />\n \n {apiError && apiError.failures && apiError.failures.captcha && apiError.message}\n \n \n \n \n {withRegister && (\n
\n Еще нет аккаунта? Регистрация\n
\n )}\n \n );\n};\n\ninterface IProps {\n apiError: IApiError | null;\n onLogin: (data: IFormData) => void;\n title?: string;\n subTitle?: string;\n resetPasswordLink?: string;\n withEmail?: boolean;\n withPhone?: boolean;\n withRegister?: boolean;\n withoutForgotPassword?: boolean;\n registerLink?: string;\n}\n\ninterface IFieldsError {\n password: string;\n captcha?: string;\n phone?: string;\n email?: string;\n}\n\ninterface IFormData {\n password: string;\n rememberMe: boolean;\n captcha?: string;\n phone?: string;\n email?: string;\n}\n\nexport default AuthenticationForm;\n","import React from 'react';\nimport styles from './ExtendedSelect.module.scss';\nimport Select from 'react-select';\n// eslint-disable-next-line import/no-unresolved\nimport { Styles } from 'react-select/lib/styles';\nimport { isArray } from 'util';\nimport { formDetector } from '_helpers';\nimport classNames from 'classnames';\n\nconst ExtendedSelect = ({\n value,\n name,\n withoutDetectChanges,\n withoutStrictValue,\n isInvalid,\n options,\n multi,\n onChangeMulti,\n onChange,\n className,\n noOptionsMessage,\n disabled,\n placeholder,\n notSelectedOptions,\n onMenuOpen,\n subText,\n invalidTitle,\n smSize,\n}: Props) => {\n React.useEffect(() => {\n if (value && !isArray(value) && !withoutDetectChanges) {\n formDetector.setChangedInput(name, value);\n }\n }, [value]);\n\n const customStyle: Styles = {\n control: base => ({\n ...base,\n border: isInvalid ? '1px solid #dc3545 !important' : '',\n }),\n };\n\n const multiOptions: string[] | null = value && isArray(value) ? value as string[] : null;\n const selectedOptions = options.filter(x => (multiOptions && multiOptions.length && multiOptions.find(option => x.value === option)));\n const findValue = options.find(x => x.value === value);\n\n const onChangeSelect = (e: any) => {\n if (multi && onChangeMulti) {\n onChangeMulti(e);\n } else {\n onChange({\n name,\n value: e && e.value && e.value as string,\n });\n if (!withoutDetectChanges) {\n formDetector.setChangedInput(name, e.value as string);\n }\n }\n };\n\n return (\n
\n noOptionsMessage || 'Нет опций'}\n isDisabled={disabled}\n isMulti={multi}\n styles={customStyle}\n name={name}\n className={classNames('react-select-container', smSize && 'react-select-container_size_sm')}\n classNamePrefix=\"react-select\"\n defaultValue={selectedOptions}\n value={withoutStrictValue ? findValue : (findValue || null)}\n onChange={onChangeSelect}\n options={notSelectedOptions || options}\n placeholder={placeholder || 'Выберите из списка'}\n onMenuOpen={onMenuOpen}\n />\n {subText ? (\n
\n {subText}\n
\n )\n : null}\n {isInvalid && invalidTitle ? (\n
\n {invalidTitle || null}\n
\n )\n : null}\n
\n );\n};\n\nexport default ExtendedSelect;\n\nexport interface IOption {\n value: string;\n label: string;\n}\n\nexport interface ISelectEvent {\n name: string;\n value: string;\n}\n\ninterface Props {\n name: string;\n options: IOption[];\n notSelectedOptions?: IOption[];\n value?: string | string[] | null;\n className?: string;\n placeholder?: string;\n disabled?: boolean;\n isInvalid?: boolean;\n invalidTitle?: string;\n subText?: string;\n noOptionsMessage?: string;\n multi?: boolean;\n withoutDetectChanges?: boolean;\n withoutStrictValue?: boolean;\n smSize?: boolean;\n onChange: (event: ISelectEvent) => void;\n onChangeMulti?: (event: ISelectEvent[]) => void;\n onMenuOpen?: () => void;\n}\n","import React from 'react';\nimport {\n Card,\n LoaderBtn,\n Captcha,\n PhoneInput,\n} from 'components';\nimport { Col, Form, Button } from 'react-bootstrap';\nimport { IApiError } from '../../_helpers/ApiConnector/types';\nimport { Link } from 'react-router-dom';\n\nconst ResetPasswordFirstStep = ({\n sendCode, goNext, goBack, apiError, initPhone,\n}: IProps) => {\n const [phone, setPhone] = React.useState(initPhone);\n const [phoneValid, setPhoneValid] = React.useState(true);\n const [captcha, setCaptcha] = React.useState('');\n const [captchaValid, setCaptchaValid] = React.useState(true);\n const [processing, setProcessing] = React.useState(false);\n\n const doValidate = (): boolean => {\n const isPhoneValid = /^[0-9]{10}$/.test(phone);\n const isCaptchaValid = apiError && apiError.failures && apiError.failures.captcha ? captcha.length === 4 : true;\n\n setPhoneValid(isPhoneValid);\n setCaptchaValid(isCaptchaValid);\n\n return isPhoneValid && isCaptchaValid;\n };\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!doValidate()) return;\n\n setProcessing(true);\n const phoneExists = await sendCode(phone, captcha);\n setProcessing(false);\n\n if (phoneExists) {\n goNext();\n }\n };\n\n const onChangePhone = (name: string, value: string) => {\n setPhone(value);\n setPhoneValid(true);\n };\n\n return (\n <>\n \n
\n \n \n Продолжить\n \n \n \n )}\n >\n <>\n
\n для восстановления доступа в\n личный кабинет\n
\n\n \n \n \n {apiError && !(apiError.failures && apiError.failures.phone) && apiError.message}\n \n \n \n \n \n
\n Ещё нет аккаунта? Регистрация\n
\n \n );\n};\n\nexport default ResetPasswordFirstStep;\n\ninterface IProps {\n apiError?: IApiError | null;\n initPhone: string;\n sendCode: (phone: string, captcha?: string) => Promise;\n goNext: () => void;\n goBack: () => void;\n}\n\ninterface IStatus {\n wasSent?: boolean;\n waitingSeconds?: number;\n}\n","import React from 'react';\nimport { Card, LoaderBtn, Captcha } from 'components';\nimport { IApiError } from '../../_helpers/ApiConnector/types';\nimport {\n Col,\n FormGroup,\n FormLabel,\n FormControl,\n Form,\n Button,\n} from 'react-bootstrap';\n\nconst ResetPasswordSecondStep = ({\n phone, checkCode, resendCode, goBack, goNext, waitingSeconds, apiError,\n}: IProps) => {\n const [code, setCode] = React.useState('');\n const [codeValid, setCodeValid] = React.useState(true);\n const [captcha, setCaptcha] = React.useState('');\n const [captchaValid, setCaptchaValid] = React.useState(true);\n const [timer, setTimer] = React.useState(waitingSeconds);\n const [processing, setProcessing] = React.useState(false);\n\n const newPhone = phone.replace(/\\D+/g, '');\n const phoneLetters = newPhone.split('');\n const number = `+7 ${phoneLetters.slice(0, 3).join('')}-***-**-${phoneLetters.slice(8).join('')}`;\n\n const doValidate = (): boolean => {\n const isCaptchaValid = apiError && apiError.failures && apiError.failures.captcha ? captcha.length === 4 : true;\n const isCodeValid = code.length === 4;\n\n setCaptchaValid(isCaptchaValid);\n setCodeValid(isCodeValid);\n\n return isCaptchaValid && isCodeValid;\n };\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n\n if (!doValidate()) return;\n\n setProcessing(true);\n const codeExists = await checkCode(phone, code, captcha);\n setProcessing(false);\n setCaptcha('');\n setCode('');\n\n if (codeExists) {\n goNext();\n }\n };\n\n const resendVerificationCode = async () => {\n setCodeValid(true);\n setCode('');\n\n const status = await resendCode();\n\n if (status && status.waitingSeconds) {\n setTimer(status.waitingSeconds);\n }\n };\n\n const calcTimer = () => {\n if (timer) {\n setTimer(timer - 1);\n }\n };\n\n React.useEffect(() => {\n const id = setTimeout(calcTimer, 1000);\n\n return () => clearTimeout(id);\n }, [timer, waitingSeconds]);\n\n return (\n \n
\n \n \n Продолжить\n \n \n Назад\n \n \n )}\n >\n
\n На номер {number} был отправлен код для подтверждения.\n
\n\n \n Введите код из СМС\n ) => setCode((e.target as HTMLInputElement).value)}\n value={code}\n isInvalid={!codeValid || !!(apiError && apiError.failures && apiError.failures.verificationCode)}\n maxLength={4}\n type=\"text\"\n />\n \n {codeValid ? (apiError && apiError.failures && apiError.failures.verificationCode) : 'Длина кода должна составлять 4 символа'}\n \n\n {timer ? (\n
Отправить повторно через {timer} секунд
\n ) : (\n
\n Отправить код повторно\n
\n )\n }\n
\n \n \n {apiError && !(apiError.failures && apiError.failures.verificationCode) && apiError.message}\n \n \n \n \n );\n};\n\nexport default ResetPasswordSecondStep;\n\ninterface IProps {\n apiError?: IApiError | null;\n phone: string;\n waitingSeconds: number;\n checkCode: (phone: string, code: string, captcha?: string) => Promise;\n resendCode: () => Promise;\n goNext: () => void;\n goBack: () => void;\n}\n\ninterface IStatus {\n wasSent?: boolean;\n waitingSeconds?: number;\n}\n","import React from 'react';\nimport { IApiError } from '../../_helpers/ApiConnector/types';\nimport {\n Card,\n InputPassword,\n LoaderBtn,\n Captcha,\n} from 'components';\nimport {\n Col,\n FormGroup,\n FormLabel,\n Form,\n} from 'react-bootstrap';\n\nconst ResetPasswordThirdStep = ({ apiError, authProcessing, resetPassword }: IProps) => {\n const [password, setPassword] = React.useState('');\n const [passwordValid, setPasswordValid] = React.useState(true);\n const [captcha, setCaptcha] = React.useState('');\n const [captchaValid, setCaptchaValid] = React.useState(true);\n\n const doValidate = (): boolean => {\n const isCaptchaValid = apiError && apiError.failures && apiError.failures.captcha ? captcha.length === 4 : true;\n const isPasswordValid = password.length >= 6;\n\n setCaptchaValid(isCaptchaValid);\n setPasswordValid(isPasswordValid);\n\n return isCaptchaValid && isPasswordValid;\n };\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n\n if (!doValidate()) return;\n\n await resetPassword(password, captcha);\n };\n\n return (\n <>\n \n
\n \n \n {apiError && apiError.message}\n \n \n Установить пароль\n \n \n )}\n >\n
\n Придумайте новый пароль длиной не менее 6 символов.\n
\n\n \n Пароль\n ) => setPassword((e.target as HTMLInputElement).value)}\n isInvalid={!passwordValid}\n />\n {!passwordValid && (\n \n Минимальная длина пароля должна быть не менее 6-ти символов\n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default ResetPasswordThirdStep;\n\ninterface IProps {\n apiError?: IApiError | null;\n authProcessing: boolean;\n resetPassword: (password: string, captcha?: string) => void;\n}\n","import React from 'react';\nimport { Button, ButtonProps } from 'react-bootstrap';\nimport { Loader } from 'components';\nimport styles from './LoaderBtn.module.scss';\nimport cn from 'classnames';\n\nconst LoaderBtn = ({\n type, loading, disabled, className, onClick, variant, children,\n}: IProps) => (\n \n
\n {children}\n
\n\n {loading ? : null}\n \n );\n\n\nexport default LoaderBtn;\n\ninterface IProps {\n disabled?: boolean;\n className?: string;\n variant?: ButtonProps['variant'];\n type?: ButtonProps['type'];\n loading?: boolean;\n children?: React.ReactNode;\n onClick?: () => void;\n}\n","import React from 'react';\nimport { Card } from 'components';\n\nclass ErrorBoundary extends React.Component<{}, IState> {\n state: IState = {\n hasError: false,\n error: null,\n };\n\n static getDerivedStateFromError(error: Error): IState {\n // Обновить состояние с тем, чтобы следующий рендер показал запасной UI.\n return { hasError: true, error };\n }\n\n public componentDidCatch(error: Error, info: object) {\n // Можно также сохранить информацию об ошибке в соответствующую службу журнала ошибок\n logErrorToMyService(error, info);\n }\n\n public render() {\n if (this.state.hasError) {\n // Можно отрендерить запасной UI произвольного вида\n return (\n \n {this.state.error\n ? (\n
\n

{this.state.error.name}

\n

{this.state.error.message}

\n

{this.state.error.stack}

\n
\n )\n : null}\n \n );\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n\nconst logErrorToMyService = (error: Error, info: object) => {\n console.log('TCL: logErrorToMyService -> info', info);\n console.log('TCL: logErrorToMyService -> error', error);\n};\n\ninterface IState {\n hasError: boolean;\n error: Error | null;\n}\n","import React from 'react';\nimport {\n InputText,\n ExtendedSelect,\n DatePicker,\n LoaderBtn,\n Textarea,\n} from 'components';\nimport { IApiError } from '_helpers/ApiConnector/types';\nimport { Form, Col, Button } from 'react-bootstrap';\nimport styles from './Identification.module.scss';\nimport moment from 'moment';\nimport cn from 'classnames';\nimport _ from 'lodash';\n\nconst Identification = ({\n apiError,\n onlyWatch,\n stateData,\n buttonText,\n onSubmitPassport,\n onSubmitOther,\n onCancel,\n loading,\n withoutSubmitButton,\n}: IProps) => {\n const initErrors: IInitErrors = {\n identityDocType: '',\n serialNumber: '',\n issuedBy: '',\n dateOfIssue: '',\n registrationAddress: '',\n title: '',\n data: '',\n };\n const [validErrors, setValidErrors] = React.useState(initErrors);\n const [processing, setProcessing] = React.useState(false);\n\n // passport\n const [identityDocType, setIdentityDocType] = React.useState(DocType.Passport);\n const [serialNumber, setSerialNumber] = React.useState('');\n const [issuedBy, setIssuedBy] = React.useState('');\n const [dateOfIssue, setDateOfIssue] = React.useState(undefined);\n const [registrationAddress, setRegistrationAddress] = React.useState('');\n\n // other\n const [title, setTitle] = React.useState('');\n const [data, setData] = React.useState('');\n\n const docTypeOptions = [\n {\n label: 'Общегражданский паспорт',\n value: DocType.Passport,\n },\n {\n label: 'Другое',\n value: DocType.Other,\n },\n ];\n\n React.useEffect(() => {\n if (stateData && stateData.passport) {\n if (stateData.passport.serialNumber) {\n setIdentityDocType(DocType.Passport);\n setSerialNumber(stateData.passport.serialNumber);\n setIssuedBy(stateData.passport.issuedBy);\n setDateOfIssue(stateData.passport.dateOfIssue);\n setRegistrationAddress(stateData.passport.registrationAddress);\n setTitle('');\n setData('');\n }\n }\n\n if (stateData && stateData.otherIdentity) {\n setIdentityDocType(DocType.Other);\n setTitle(stateData.otherIdentity.title);\n setData(stateData.otherIdentity.data);\n setSerialNumber('');\n setIssuedBy('');\n setDateOfIssue(undefined);\n setRegistrationAddress('');\n }\n }, [stateData]);\n\n React.useEffect(() => {\n if (apiError && apiError.failures) {\n const errors = apiError.failures;\n\n for (const key in errors) {\n if (Object.prototype.hasOwnProperty.call(errors, key) && errors[key]) {\n const error = errors[key].join(',');\n const newErrors = validErrors;\n newErrors[key] = error;\n\n setValidErrors({ ...newErrors });\n }\n }\n }\n }, [apiError, validErrors]);\n\n const handleDateChange = (val: string, momentDate: moment.Moment) => {\n setDateOfIssue(momentDate);\n setValidErrors({ ...validErrors, dateOfIssue: '' });\n };\n\n const checkFieldsErrors = (submitData: IPassport | IOther) => _.mapValues(submitData, (val, key) => {\n if (key === 'dateOfIssue' && !val) return 'Обязательное поле для заполнения';\n if (val === '') return 'Обязательное поле для заполнения';\n return '';\n });\n\n const isValidFormData = (fieldsError: IInitErrors): boolean => _.values(fieldsError).every(e => e.length === 0);\n\n const submit = async (e: React.FormEvent) => {\n e.preventDefault();\n let subData: IPassport | IOther;\n\n if (identityDocType === DocType.Passport && onSubmitPassport && dateOfIssue !== undefined) {\n subData = {\n serialNumber,\n issuedBy,\n dateOfIssue,\n registrationAddress,\n };\n\n const errors = checkFieldsErrors(subData) as IInitErrors;\n setValidErrors(errors);\n\n if (isValidFormData(errors)) {\n setProcessing(true);\n await onSubmitPassport(subData);\n setProcessing(false);\n }\n } else if (identityDocType === DocType.Other && onSubmitOther) {\n subData = {\n title,\n data,\n };\n\n const errors = checkFieldsErrors(subData) as IInitErrors;\n setValidErrors(errors);\n\n if (isValidFormData(errors)) {\n setProcessing(true);\n await onSubmitOther(subData);\n setProcessing(false);\n }\n }\n };\n\n return (\n
\n \n \n \n ТИП ДОКУМЕНТА\n \n \n \n {\n setIdentityDocType(e.value as DocType);\n setValidErrors(initErrors);\n }}\n disabled={onlyWatch}\n />\n {validErrors.identityDocType}\n \n \n {identityDocType === DocType.Passport ? (\n <>\n {\n setSerialNumber(value);\n setValidErrors({ ...validErrors, serialNumber: '' });\n }}\n labelTitle=\"СЕРИЯ/НОМЕР\"\n labelColSize={2}\n inputColSize={4}\n disabled={onlyWatch}\n fieldFailures={validErrors}\n inputClassNames=\"p-0\"\n />\n \n \n \n КЕМ ВЫДАН\n \n \n \n {\n setIssuedBy(value);\n setValidErrors({ ...validErrors, issuedBy: '' });\n }}\n validErrors={validErrors}\n disabled={onlyWatch}\n />\n \n \n \n \n \n ДАТА ВЫДАЧИ\n \n \n \n \n {validErrors.dateOfIssue}\n \n \n \n \n \n АДРЕС РЕГИСТРАЦИИ\n \n \n \n {\n setRegistrationAddress(value);\n setValidErrors({ ...validErrors, registrationAddress: '' });\n }}\n validErrors={validErrors}\n disabled={onlyWatch}\n />\n \n \n \n ) : (\n <>\n {\n setTitle(value);\n setValidErrors({ ...validErrors, title: '' });\n }}\n labelTitle=\"НАЗВАНИЕ ДОКУМЕНТА\"\n labelColSize={2}\n inputColSize={6}\n disabled={onlyWatch}\n fieldFailures={validErrors}\n placeholder=\"Укажите название документа\"\n inputClassNames={cn('p-0', styles.col)}\n />\n \n \n \n ДАННЫЕ ДОКУМЕНТА\n \n \n \n {\n setData(value);\n setValidErrors({ ...validErrors, data: '' });\n }}\n validErrors={validErrors}\n placeholder=\"Укажите полную информацию о документе, включая серию/номер, дату выдачи, кем выдан итп.\"\n disabled={onlyWatch}\n />\n \n \n \n )}\n {!onlyWatch && !withoutSubmitButton && (\n \n \n {buttonText || 'Сохранить'}\n \n {onCancel && (\n \n \n \n )}\n \n )}\n \n );\n};\n\nexport default Identification;\n\nexport interface IPassport {\n serialNumber: string;\n issuedBy: string;\n dateOfIssue: moment.Moment;\n registrationAddress: string;\n}\n\nexport interface IOther {\n title: string;\n data: string;\n}\n\ninterface IProps {\n apiError?: IApiError | null;\n stateData: IStateData | null;\n onlyWatch?: boolean;\n buttonText?: string;\n loading?: boolean;\n withoutSubmitButton?: boolean;\n onSubmitPassport?: (data: IPassport) => void;\n onSubmitOther?: (data: IOther) => void;\n onCancel?: () => void;\n}\n\ninterface IStateData {\n passport?: IPassport;\n otherIdentity?: IOther;\n}\n\ninterface IInitErrors {\n identityDocType: string;\n serialNumber: string;\n issuedBy: string;\n dateOfIssue: string;\n registrationAddress: string;\n title: string;\n data: string;\n [key: string]: string;\n}\n\nenum DocType {\n Passport = 'passport',\n Other = 'other',\n}\n","export interface ITheoreticalQuestion {\n number: number;\n active: boolean;\n text: string;\n type: TheoreticalQuestionType;\n openAnswer?: string;\n id?: string;\n multipleChoiceAnswers?: ITheoreticalAnswer[];\n matchingOrOrderingAnswers?: IMatchingTheoreticalAnswers;\n}\n\nexport interface IMatchingTheoreticalAnswer {\n number: number;\n text: string;\n}\n\nexport interface IFieldsError {\n [key: string]: string;\n}\n\nexport enum TheoreticalQuestionType {\n MultipleChoiceTheoretical = 'multipleChoiceTheoretical',\n MatchingTheoretical = 'matchingTheoretical',\n OpenAnswerTheoretical = 'openAnswerTheoretical',\n OrderingTheoretical = 'orderingTheoretical',\n}\n\nexport interface ITheoreticalAnswer {\n number: number;\n text: string;\n correct: boolean;\n}\n\ninterface IMatchingTheoreticalAnswers {\n left: IMatchingTheoreticalAnswer[];\n right: IMatchingTheoreticalAnswer[];\n correct: { [key: string]: number };\n leftAnswersHeader?: string;\n rightAnswersHeader?: string;\n}\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { Card } from 'components';\nimport { ApiError } from '_helpers/errors/ApiError';\nimport errorIcon from 'components/assets/svg/error_icon.svg';\nimport styles from './ErrorPlaceholder.module.scss';\nimport _ from 'lodash';\n\nconst ErrorPlaceholder = ({ placeholderIcon, apiError, withCard }: IProps) => {\n const renderBody = () => (\n
\n \"placeholder\"\n
\n {`Статус код: ${apiError.code}`}\n
\n
\n {apiError.message}\n
\n {apiError.failures && (\n _.keys(apiError.failures).map((k, i) => (\n
\n {`${i + 1}. ${k}: ${apiError.failures ? apiError.failures[k].join(', ') : ''}!`}\n
\n ))\n )}\n \n
\n );\n\n return withCard ? (\n \n {renderBody()}\n \n )\n : renderBody();\n};\n\nexport default ErrorPlaceholder;\n\nexport interface IProps {\n apiError: ApiError;\n placeholderIcon?: string;\n withCard?: boolean;\n}\n","import React, { FunctionComponent } from 'react';\nimport styles from './index.module.scss';\nimport cn from 'classnames';\n\ninterface IProps {\n value: number;\n dark?: boolean;\n className?: string;\n}\n\nconst NotificationBundle: FunctionComponent = props => (\n \n {props.value}\n \n );\n\nexport default NotificationBundle;\n","import React from 'react';\nimport {\n FormGroup,\n FormLabel,\n FormControl,\n Form,\n} from 'react-bootstrap';\nimport { IApiError } from '../../_helpers/ApiConnector/types';\n\nconst Captcha = ({\n apiError, captchaValid, captcha, setCaptcha,\n}: IProps) => {\n if (apiError && apiError.failures && apiError.failures.captcha) {\n return (\n \n Введите цифры с картинки\n
\n ) => setCaptcha((e.target as HTMLInputElement).value.replace(/[^\\d]/, ''))}\n value={captcha}\n isInvalid={!captchaValid}\n maxLength={4}\n className=\"captcha_field\"\n />\n
\n \"captcha_image\"\n
\n
\n \n {!captchaValid && 'Длина цифр с картинки должна быть 4 символа'}\n \n
\n );\n }\n return null;\n};\n\nexport default Captcha;\n\ninterface IProps {\n captcha: string;\n captchaValid: boolean;\n apiError?: IApiError | null;\n setCaptcha: (captcha: string) => void;\n}\n","import React from 'react';\nimport { DragDropContext } from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\n\nconst HOC = (component: React.FunctionComponent) => \n // eslint-disable-next-line\n class ClassComponent extends React.Component {\n render() {\n const { ...rest } = this.props;\n const Component = component;\n\n return (\n \n );\n }\n }\n;\n\nexport const withDragDropContext = (component: React.FunctionComponent) => DragDropContext(HTML5Backend)(HOC(component));\n","import {\n DragSource, DropTarget, DragSourceConnector, DropTargetMonitor, DropTargetConnector,\n} from 'react-dnd';\n\nexport interface RequiredProps {\n rowIndex: number;\n onRowDrop: (fromIndex: number, toIndex: number) => void;\n}\n\nfunction rowSourceCollect(connect: DragSourceConnector) {\n return {\n // Call this function inside render()\n // to let React DnD handle the drag events:\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n };\n}\n\n/**\n * Specifies the drag source contract.\n * Only `beginDrag` function is required.\n */\nconst rowSourceSpec = {\n beginDrag(props: RequiredProps) {\n return {\n rowIndex: props.rowIndex,\n };\n },\n};\n\nfunction rowTargetCollect(connect: DropTargetConnector, monitor: DropTargetMonitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver() && monitor.canDrop(),\n };\n}\n\nconst rowTargetSpec = {\n canDrop(props: RequiredProps, monitor: DropTargetMonitor) {\n const item = monitor.getItem();\n return props.rowIndex !== item.rowIndex;\n },\n\n drop(props: RequiredProps, monitor: DropTargetMonitor) {\n if (monitor.didDrop()) {\n return;\n }\n // Obtain the dragged item\n const { rowIndex: fromIndex } = monitor.getItem();\n const { rowIndex: toIndex, onRowDrop } = props;\n onRowDrop(fromIndex, toIndex);\n },\n};\n\nexport const rowDragSource = DragSource('row', rowSourceSpec, rowSourceCollect);\nexport const rowDropTarget = DropTarget('row', rowTargetSpec, rowTargetCollect);\n","import React from 'react';\nimport {\n MultiSelectSection,\n IMultiSelectSectionFetchList,\n IExtendedSelectOption,\n PaginationData,\n ExamStatus,\n AdvancedTable,\n AdvancedTableHeader,\n AdvancedTableData,\n ExamType,\n MappedExamTypes,\n MappedExamStatuses,\n WarningModal,\n renderRow,\n CustomSwitch,\n ProtocolLink,\n Status,\n} from 'components';\nimport { Color, ColorStatus, formatPrice } from '_helpers';\nimport { Button } from 'react-bootstrap';\nimport emptyPaymentIcon from 'components/assets/svg/empty_payment_icon.svg';\nimport styles from './ExamWithPayment.module.scss';\nimport moment from 'moment';\n\nconst ExamWithPayment = ({\n examsPaymentList,\n getExamsWithPaymentList,\n onPush,\n qecList,\n qualificationList,\n from,\n ecList,\n examsPaymentFilters,\n getExamDetailsWithPayment,\n examWithPaymentDetails,\n sendMarkAsPaid,\n}: IProps) => {\n const initialState: IState = {\n paid: (examsPaymentFilters && examsPaymentFilters.paid) || undefined,\n examinationCenterIds: (examsPaymentFilters && examsPaymentFilters.examinationCenterIds) || [],\n qualificationIds: (examsPaymentFilters && examsPaymentFilters.qualificationIds) || [],\n qecIds: (examsPaymentFilters && examsPaymentFilters.qecIds) || [],\n };\n\n const [paid, setPaid] = React.useState(initialState.paid);\n const [qecIds, setQecIds] = React.useState(initialState.qecIds);\n const [qualificationIds, setQualificationIds] = React.useState(initialState.qualificationIds);\n const [examinationCenterIds, setExaminationCenterIds] = React.useState(initialState.examinationCenterIds);\n const [fetchProps, setFetchProps] = React.useState(undefined);\n const [showModal, setShowModal] = React.useState(false);\n const [processing, setProcessing] = React.useState(false);\n const [processingPaid, setProcessingPaid] = React.useState(false);\n\n const tableHeaders: AdvancedTableHeader[] = [\n { fieldName: '', title: 'Дата и время', columnStyles: { minWidth: '11rem' } },\n { fieldName: '', title: 'Квалификация', columnStyles: { width: '100%' } },\n { fieldName: '', title: 'Номер счета', columnStyles: { minWidth: '7rem' } },\n { fieldName: '', title: 'Сумма счета', columnStyles: { minWidth: '7rem' } },\n { fieldName: '', title: 'ТИП ЭКЗАМЕНА', columnStyles: { minWidth: '9rem' } },\n { fieldName: '', title: 'Статус', columnStyles: { minWidth: '9rem' } },\n ];\n\n const examStatusOptions: IExtendedSelectOption[] = [\n { label: 'Все', value: FilterState.All },\n { label: 'Оплаченные', value: FilterState.Paid },\n { label: 'Не оплаченные', value: FilterState.NotPaid },\n ];\n\n const renderQualification = (exam: IExamWithPayment) => (\n
\n
\n {exam.qualificationTitle}\n
\n
\n {exam.examinationCenterName}\n
\n
\n {exam.address}\n
\n
\n );\n\n const getTableData = (): AdvancedTableData[] => (examsPaymentList && examsPaymentList.items ? examsPaymentList.items.map(item => ({\n id: item.id,\n columns: [\n item.date.format('DD.MM.YYYY в HH:mm'),\n renderQualification(item),\n `${item.accountNumber ? item.accountNumber : '-'}`,\n <>{formatPrice(item.totalAmount)}
{item.amountDescription.split('\\n').map((text, i) => (text ? {text} : null))}
,\n MappedExamTypes[item.type].text,\n ,\n ],\n })) : []);\n\n const handleChooseExam = async (id?: string) => {\n if (!id || !examsPaymentList || processing) return;\n\n const exam = examsPaymentList.items.find(e => e.id === id);\n\n if (exam) {\n setProcessing(true);\n await getExamDetailsWithPayment(id);\n setShowModal(true);\n setProcessing(false);\n }\n };\n\n const onExamDetailsClick = () => {\n if (!examWithPaymentDetails) return;\n\n if (from) {\n onPush(`/exam/${examWithPaymentDetails.id}?from=${from}`);\n } else {\n onPush(`/exam/${examWithPaymentDetails.id}`);\n }\n };\n\n const getPaginationObject = () => {\n if (!examsPaymentList) return undefined;\n\n const { pageSize, page, total } = examsPaymentList;\n\n return { page, pageSize, total };\n };\n\n const handleChangePagination = (newPagination: PaginationData) => getExamsWithPaymentList({\n ...examsPaymentFilters,\n ...fetchProps,\n examinationCenterIds,\n qualificationIds,\n qecIds,\n paid,\n page: newPagination.page,\n pageSize: newPagination.perPage,\n });\n\n const fetchList = (data: IMultiSelectSectionFetchList) => {\n let checkPaid;\n if (data.filteredExamStatus as string === FilterState.NotPaid) {\n checkPaid = false;\n } else if (data.filteredExamStatus as string === FilterState.Paid) {\n checkPaid = true;\n }\n\n const props: IGetExamsPayment = {\n ...examsPaymentFilters,\n ...data,\n paid: checkPaid,\n };\n\n setFetchProps(props);\n setPaid(checkPaid);\n setQecIds(data.qecIds || []);\n setExaminationCenterIds(data.examinationCenterIds || []);\n setQualificationIds(data.qualificationIds || []);\n\n getExamsWithPaymentList({ ...props });\n };\n\n const getDefaultValue = () => {\n if (examsPaymentFilters && examsPaymentFilters.paid === true) {\n return FilterState.Paid;\n }\n\n if (examsPaymentFilters && examsPaymentFilters.paid === false) {\n return FilterState.NotPaid;\n }\n\n return FilterState.All;\n };\n\n const pagination = getPaginationObject();\n\n const onSwitchClick = async () => {\n if (sendMarkAsPaid && examWithPaymentDetails && !processingPaid) {\n const data: ISendMarkAsPaid = {\n examId: examWithPaymentDetails.id,\n body: {\n paid: !examWithPaymentDetails.paid || false,\n },\n };\n\n setProcessingPaid(true);\n await sendMarkAsPaid(data);\n if (pagination) {\n await handleChangePagination({ ...pagination, perPage: pagination.pageSize, pages: pagination.total });\n }\n await getExamDetailsWithPayment(examWithPaymentDetails.id);\n setProcessingPaid(false);\n }\n };\n\n return (\n <>\n {examsPaymentList && examsPaymentList.items ? (\n \n ) : null}\n\n \n\n setShowModal(false)}\n footerClassNames=\"p-0\"\n bodyClassNames=\"pb-0\"\n dialogClassName={styles.modalDialog}\n withoutCancelButton\n large\n >\n {examWithPaymentDetails ? (\n <>\n {renderRow('ТИП ЭКЗАМЕНА', MappedExamTypes[examWithPaymentDetails.type].text)}\n {renderRow('ЦОК', examWithPaymentDetails.qualificationEvaluationCenterName)}\n {renderRow('ЭЦ', examWithPaymentDetails.examinationCenterName)}\n {renderRow('ДАТА', examWithPaymentDetails.date.format('DD.MM.YYYY'))}\n {renderRow('ВРЕМЯ', examWithPaymentDetails.date.format('HH:mm по МСК'), 'mb-5')}\n\n {renderRow('СТАТУС ОБРАБОТКИ', MappedExamStatuses[examWithPaymentDetails.status].text, 'mb-5')}\n\n {renderRow('СОИСКАТЕЛЕЙ', examWithPaymentDetails.amountDescription.split('\\n').map((text, i) => (text ? {text} : null)))}\n {renderRow('ЭКСПЕРТОВ', `${examWithPaymentDetails.numberOfExperts} по 0 ₽ = 0 ₽`)}\n {renderRow('ИТОГО К ОПЛАТЕ', formatPrice(examWithPaymentDetails.totalAmount), 'mb-5')}\n\n {renderRow('СЧЕТ НА ОПЛАТУ', examWithPaymentDetails && (\n \n ))}\n {renderRow('АКТ', examWithPaymentDetails && (\n \n ))}\n {examWithPaymentDetails.aktExtraDocUrl && renderRow('ДОП. АКТ', examWithPaymentDetails && (\n \n ), 'mb-5')},\n\n {renderRow('СТАТУС ОПЛАТЫ ', examWithPaymentDetails && (\n \n ), styles.switchRow)}\n\n \n Подробная информация об экзамене\n \n \n ) : null}\n \n \n );\n};\n\nexport default ExamWithPayment;\n\ninterface IProps {\n examsPaymentList: IExamWithPaymentList | null;\n examWithPaymentDetails: IExamWithPaymentDetails | null;\n qualificationList?: IQualificationInfoList | null;\n examsPaymentFilters?: IGetExamsPayment | null;\n qecList?: IQualificationEvaluationCenters | null;\n ecList?: IExaminationCentersList | null;\n from?: string;\n getExamsWithPaymentList: (data: IGetExamsPayment) => void;\n getExamDetailsWithPayment: (examId: string) => void;\n onPush: (key: string) => void;\n sendMarkAsPaid?: (body: ISendMarkAsPaid) => void;\n}\n\ninterface IExamWithPaymentList {\n unpaidAmount: number;\n items: IExamWithPayment[];\n page: number;\n pageSize: number;\n total: number;\n}\n\ninterface IExamWithPayment {\n totalAmount: number;\n paid: boolean;\n accountNumber?: string | undefined;\n accountDate?: moment.Moment | undefined;\n id: string;\n date: moment.Moment;\n amountDescription: string;\n qualificationId: string;\n examinationCenterId: string;\n qualificationTitle: string;\n qualificationLevel: string;\n occupationalStandardTitle: string;\n qualificationEvaluationCenterName: string;\n examinationCenterName: string;\n address: string;\n city: string;\n status: ExamStatus;\n statusChangeTime: moment.Moment;\n duration: number;\n price: number;\n recertification: boolean;\n type: ExamType;\n qualificationEvaluationCenterId: string;\n numberOfApplicants: number;\n protocolNumber?: number | undefined;\n}\n\ninterface IGetExamsPayment {\n paid?: boolean | undefined;\n qualificationIds?: string[];\n examinationCenterIds?: string[];\n qecIds?: string[];\n page?: number;\n pageSize?: number;\n sortOrder?: boolean | undefined;\n sortField?: string;\n to?: moment.Moment;\n from?: moment.Moment;\n}\n\ninterface IExaminationCentersList {\n items: IExaminationCenter[];\n page: number;\n pageSize: number;\n total: number;\n}\n\ninterface IExaminationCenter {\n id: string;\n regNumber: string;\n name: string;\n fullName: string;\n city: string;\n address: string;\n default: boolean;\n}\n\ninterface IQualificationEvaluationCenters {\n items: IQualificationEvaluationCenter[];\n page: number;\n pageSize: number;\n total: number;\n}\n\ninterface IQualificationEvaluationCenter {\n id: string;\n regNumber: string;\n name: string;\n fullName: string;\n city: string;\n}\n\ninterface IQualificationInfoList {\n items: IQualificationInfo[];\n page: number;\n pageSize: number;\n total: number;\n}\n\ninterface IQualificationInfo {\n id: string;\n title: string;\n level: string;\n regNumber: string;\n occupationalStandardId: string;\n occupationalStandardTitle: string;\n}\n\nenum FilterState {\n All = 'All',\n Paid = 'paid',\n NotPaid = 'notPaid'\n}\n\ninterface ITimeProps {\n from?: moment.Moment;\n to?: moment.Moment;\n}\n\ninterface IState {\n qecIds: string[];\n qualificationIds: string[];\n examinationCenterIds: string[];\n paid?: boolean;\n fromTime?: moment.Moment;\n toTime?: moment.Moment;\n}\n\ninterface IExamWithPaymentDetails {\n totalAmount: number;\n paid: boolean;\n amountDescription: string;\n accountNumber?: string | undefined;\n accountDate?: moment.Moment | undefined;\n aktDocUrl?: string | undefined;\n aktExtraDocUrl?: string | undefined;\n invoiceForPaymentUrl?: string | undefined;\n /** Список экспертов экзаменационной комиссии / подписантов протокола НОК */\n experts: IExamExpert[];\n /** Список подписантов протокола АК */\n akExperts: IExamExpert[];\n /** Список подписантов протокола совета */\n sovietExperts: IExamExpert[];\n actualStartTime?: moment.Moment | undefined;\n actualFinishTime?: moment.Moment | undefined;\n manualCheck: boolean;\n // examLogs: ExamLog[];\n nokProtocolUrl?: string | undefined;\n akProtocolUrl?: string | undefined;\n sovietProtocolUrl?: string | undefined;\n rules?: string | undefined;\n theoreticalQuestionsCount: number;\n theoreticalPartDuration: number;\n practicalQuestionsCount: number;\n practicalPartDuration: number;\n protocolDate?: moment.Moment | undefined;\n eventsState?: { [key: string]: number } | undefined;\n id: string;\n date: moment.Moment;\n qualificationId: string;\n examinationCenterId: string;\n qualificationTitle: string;\n qualificationLevel: string;\n occupationalStandardTitle: string;\n qualificationEvaluationCenterName: string;\n examinationCenterName: string;\n address: string;\n city: string;\n status: ExamStatus;\n statusChangeTime: moment.Moment;\n /** Продолжительность экзамена в минутах */\n duration: number;\n price: number;\n /** Переаттестация */\n recertification: boolean;\n type: ExamType;\n qualificationEvaluationCenterId: string;\n numberOfApplicants: number;\n numberOfExperts?: number;\n protocolNumber?: number | undefined;\n}\n\ninterface IExamExpert {\n regNumber: string;\n expertId: string;\n fullName: string;\n email: string;\n phone: string;\n region: string;\n /** Эксперт доступен для подписи протокола */\n active: boolean;\n /** Протокол пописан экспертом */\n signed: boolean;\n chairman: boolean;\n acceptedInvite?: boolean | undefined;\n position?: string | undefined;\n signedCode?: string | undefined;\n}\n\ninterface ISendMarkAsPaid {\n examId: string;\n body: IMarkAsPaid;\n}\n\ninterface IMarkAsPaid {\n paid: boolean;\n}\n","import React from 'react';\nimport { rowDragSource, rowDropTarget } from './drag-drop';\nimport dndIcon from 'components/assets/svg/dnd_icon.svg';\nimport styles from './DragDrop.module.scss';\nimport cn from 'classnames';\n\nconst DragDrop = rowDragSource(rowDropTarget(({\n children, connectDropTarget, connectDragPreview, connectDragSource, isOver, dndClassName,\n}: IDropProps): JSX.Element => {\n const className = isOver ? styles.drop_target : styles.container;\n\n return connectDropTarget && connectDragPreview && connectDragSource && (\n connectDropTarget(connectDragPreview(\n
\n {connectDragSource(\n
\n \"dnd-btn\"\n
,\n )}\n {children}\n
,\n ))\n );\n}));\n\nexport default DragDrop;\n\ninterface IProps {\n children: any;\n rowIndex: number;\n dndClassName?: string;\n onRowDrop: (from: number, to: number) => void;\n}\n\nexport interface IDragProps {\n children: any;\n rowIndex: number;\n isOver?: boolean;\n onRowDrop: (from: number, to: number) => void;\n connectDropTarget?: (el: JSX.Element) => any;\n connectDragPreview?: (el: JSX.Element) => any;\n connectDragSource?: (el: JSX.Element) => any;\n}\n\ntype IDropProps = IProps & IDragProps;\n","import React from 'react';\nimport { Container, Row, Form } from 'react-bootstrap';\nimport { InputText } from 'components';\nimport { IMatchingTheoreticalAnswer, IFieldsError } from './types';\nimport { serialNumberToChar } from '_helpers';\nimport styles from './TheoreticalQuestionRedactor.module.scss';\nimport cn from 'classnames';\n\nconst QuestionVariant = ({\n answer,\n answerChar,\n formFieldErrors,\n handleChangeMatchingAnswerText,\n num,\n onAdd,\n onDelete,\n questionLeftLength,\n containerClassName,\n}: IProps) => (\n \n \n
\n {serialNumberToChar(answerChar)}.\n \n
\n
\n 2, 'mb-4': questionLeftLength <= 2 }, styles.matchingAdditionalBtn)}>\n {num + 1 === questionLeftLength ? (\n \n Добавить вариант\n \n ) : (
)}\n {questionLeftLength > 2 && (\n \n Удалить вариант\n \n )}\n \n \n );\n\nexport default QuestionVariant;\n\ninterface IProps {\n answer: IMatchingTheoreticalAnswer;\n answerChar: number;\n formFieldErrors: IFieldsError;\n questionLeftLength: number;\n num: number;\n containerClassName?: string;\n handleChangeMatchingAnswerText: (answerNumber: number) => (name: string, value: string) => void;\n onAdd: (e: React.FormEvent) => void;\n onDelete: (answerNumber: number) => (e: React.FormEvent) => void;\n}\n","import React from 'react';\nimport { ExtendedSelect } from 'components';\nimport { IMatchingTheoreticalAnswer, IFieldsError } from './types';\nimport { serialNumberToChar } from '_helpers';\nimport styles from './TheoreticalQuestionRedactor.module.scss';\nimport cn from 'classnames';\n\nconst QuestionSelect = ({\n correct, answer, num, withoutNum, selectContainerClassName, right, formFieldErrors, setFormFieldErrors, onChangeSelect,\n}: IProps) => {\n const getSelectedMatching = (questionNumber: number) => {\n const selectedMatching = Object.keys(correct).find(key => correct[key] === questionNumber);\n return selectedMatching;\n };\n\n const getNotSelectedAnswers = () => {\n const notSelectedAnswers = right.filter(ans => !getSelectedMatching(ans.number));\n\n return notSelectedAnswers;\n };\n\n const getCurrentAnswer = (): string => {\n const matchingNumber = correct[answer.number];\n\n if (!matchingNumber) return '0';\n return matchingNumber.toString();\n };\n\n const onChange = (value: string) => {\n setFormFieldErrors({ ...formFieldErrors, [`correct${answer.number}`]: '' });\n onChangeSelect({ questionNumber: answer.number, matchingNumber: parseInt(value) });\n };\n\n const options = [\n { value: '0', label: '-' },\n ...right.map(x => ({ value: `${x.number}`, label: serialNumberToChar(x.number) })),\n ];\n\n const notSelectedOptions = [\n { value: '0', label: '-' },\n ...getNotSelectedAnswers().map(x => ({ value: `${x.number}`, label: serialNumberToChar(x.number) })),\n ];\n\n return (\n
\n {!withoutNum ?
{num + 1}.
: }\n onChange(e.value)}\n isInvalid={getCurrentAnswer() === '0'}\n />\n
\n );\n};\n\nexport default QuestionSelect;\n\ninterface IProps {\n correct: { [key: string]: number };\n answer: IMatchingTheoreticalAnswer;\n num: number;\n formFieldErrors: IFieldsError;\n right: IMatchingTheoreticalAnswer[];\n withoutNum?: boolean;\n selectContainerClassName?: string;\n setFormFieldErrors: (error: IFieldsError) => void;\n onChangeSelect: (data: IChangeSelect) => void;\n}\n\nexport interface IChangeSelect {\n questionNumber: number;\n matchingNumber: number;\n}\n","import React from 'react';\nimport { InputText } from 'components';\nimport { IMatchingTheoreticalAnswer, IFieldsError } from './types';\nimport QuestionSelect, { IChangeSelect } from './QuestionSelect';\nimport styles from './TheoreticalQuestionRedactor.module.scss';\nimport cn from 'classnames';\n\nconst MatchingRightVariant = ({\n answer,\n formFieldErrors,\n handleChangeOrderingAnswerText,\n num,\n correct,\n right,\n setFormFieldErrors,\n onChangeSelect,\n}: IProps) => (\n
\n \n \n
\n );\n\nexport default MatchingRightVariant;\n\ninterface IProps {\n answer: IMatchingTheoreticalAnswer;\n formFieldErrors: IFieldsError;\n num: number;\n correct: { [key: string]: number };\n right: IMatchingTheoreticalAnswer[];\n setFormFieldErrors: (error: IFieldsError) => void;\n onChangeSelect: (data: IChangeSelect) => void;\n handleChangeOrderingAnswerText: (answerNumber: number) => (name: string, value: string) => void;\n}\n","import React from 'react';\nimport {\n InputText,\n CustomSwitch,\n CustomRadio,\n CKEditor,\n LoaderBtn,\n} from 'components';\nimport {\n ITheoreticalQuestion,\n IMatchingTheoreticalAnswer,\n IFieldsError,\n TheoreticalQuestionType,\n ITheoreticalAnswer,\n} from './types';\nimport { Form, Col, Button } from 'react-bootstrap';\nimport { mapAPIError, RegExpConst } from '_helpers';\nimport { IApiError } from '_helpers/ApiConnector/types';\nimport MatchingOrOrderingTheoreticalQuestion from './MatchingOrOrderingTheoreticalQuestion';\nimport MultipleChoiceTheoreticalQuestion from './MultipleChoiceTheoreticalQuestion';\nimport _ from 'lodash';\nimport styles from './TheoreticalQuestionRedactor.module.scss';\nimport cn from 'classnames';\n\nconst TheoreticalQuestionRedactor = ({\n theoreticalQuestion,\n errors,\n loading,\n onSubmit,\n onExit,\n}: IProps) => {\n const errorRef = React.useRef(errors);\n\n const initialState: IState = {\n questionType: TheoreticalQuestionType.MultipleChoiceTheoretical,\n question: theoreticalQuestion || emptyQuestion,\n formFieldErrors: {},\n };\n const [question, setQuestion] = React.useState(initialState.question);\n const [questionType, setQuestionType] = React.useState(initialState.questionType);\n const [formFieldErrors, setFormFieldErrors] = React.useState(initialState.formFieldErrors);\n\n React.useEffect(() => {\n errorRef.current = errors;\n const errorsMap = mapAPIError(errors);\n if (errorsMap) {\n setFormFieldErrors({ ...formFieldErrors, ...errorsMap });\n }\n }, [errors]);\n\n React.useEffect(() => {\n if (theoreticalQuestion && !loading) {\n setQuestion(theoreticalQuestion);\n setQuestionType(theoreticalQuestion.type);\n }\n }, [theoreticalQuestion]);\n\n const setQuestionNumber = (name: string, number: string) => {\n const newNumber = number === '' ? '0' : number;\n if (RegExpConst.NUMBER.test(newNumber)) {\n setQuestion({ ...question, number: parseInt(newNumber, 10) });\n setFormFieldErrors({ ...formFieldErrors, number: '' });\n }\n };\n\n const setQuestionText = (text: string) => {\n setQuestion({ ...question, text });\n setFormFieldErrors({ ...formFieldErrors, text: '' });\n };\n\n const changeCorrectAnswer = (answerNumber: number) => {\n const newAnswers = (question.multipleChoiceAnswers || []).map(a => (a.number === answerNumber\n ? { ...a, correct: !a.correct }\n : { ...a }));\n setQuestion({ ...question, multipleChoiceAnswers: newAnswers });\n setFormFieldErrors({ ...formFieldErrors, general: '' });\n };\n\n const handleChangeAnswerText = (answerNumber: number) => (name: string, value: string) => {\n const newAnswers = (question.multipleChoiceAnswers || []).map((a) => {\n if (a.number === answerNumber) {\n setFormFieldErrors({ ...formFieldErrors, [`answer${answerNumber}`]: '' });\n return { ...a, text: value };\n }\n return { ...a };\n });\n setQuestion({ ...question, multipleChoiceAnswers: newAnswers });\n };\n\n const handleChangeMatchingAnswerText = (answerNumber: number) => (name: string, value: string) => {\n if (!question.matchingOrOrderingAnswers) return;\n\n const newAnswers: IMatchingTheoreticalAnswer[] = (question.matchingOrOrderingAnswers.left).map((a) => {\n if (a.number === answerNumber) {\n setFormFieldErrors({ ...formFieldErrors, [`answer${answerNumber}`]: '' });\n return { ...a, text: value };\n }\n return { ...a };\n });\n setQuestion({ ...question, matchingOrOrderingAnswers: { ...question.matchingOrOrderingAnswers, left: newAnswers } });\n };\n\n const handleChangeOrderingAnswerText = (answerNumber: number) => (name: string, value: string) => {\n if (!question.matchingOrOrderingAnswers) return;\n\n const newAnswers: IMatchingTheoreticalAnswer[] = (question.matchingOrOrderingAnswers.right).map((a) => {\n if (a.number === answerNumber) {\n setFormFieldErrors({ ...formFieldErrors, [`answer_right_${answerNumber}`]: '' });\n return { ...a, text: value };\n }\n return { ...a };\n });\n setQuestion({ ...question, matchingOrOrderingAnswers: { ...question.matchingOrOrderingAnswers, right: newAnswers } });\n };\n\n const handleAddAnswer = (event: React.FormEvent) => {\n event.preventDefault();\n const lastAnswer = _.maxBy(question.multipleChoiceAnswers, 'number');\n if (!lastAnswer) return;\n setQuestion({ ...question, multipleChoiceAnswers: [...(question.multipleChoiceAnswers || []), createEmptyAnswer(lastAnswer.number + 1)] });\n };\n\n const onDropAnswer = (from: number, to: number) => {\n if (!question.matchingOrOrderingAnswers || !question.matchingOrOrderingAnswers.left) return;\n const left = [...question.matchingOrOrderingAnswers.left];\n const fromEl = left[from];\n const toEl = left[to];\n\n left[to] = fromEl;\n left[from] = toEl;\n setQuestion({ ...question, matchingOrOrderingAnswers: { ...question.matchingOrOrderingAnswers, left } });\n };\n\n const handleDeleteAnswer = (answerNumber: number) => (event: React.FormEvent) => {\n event.preventDefault();\n const newAnswers = (question.multipleChoiceAnswers || []).filter(a => a.number !== answerNumber);\n setFormFieldErrors({ ...formFieldErrors, [`answer${answerNumber}`]: '' });\n setQuestion({ ...question, multipleChoiceAnswers: newAnswers });\n };\n\n const handleAddMatchingAnswer = (event: React.FormEvent) => {\n event.preventDefault();\n if (question.matchingOrOrderingAnswers) {\n const lastAnswer = _.maxBy(question.matchingOrOrderingAnswers.left, 'number');\n if (!lastAnswer) return;\n setQuestion({\n ...question,\n matchingOrOrderingAnswers: {\n ...question.matchingOrOrderingAnswers,\n left: [...question.matchingOrOrderingAnswers.left, createEmptyMatchingAnswer(lastAnswer.number + 1)],\n right: [...question.matchingOrOrderingAnswers.right, createEmptyMatchingAnswer(lastAnswer.number + 1)],\n },\n });\n }\n };\n\n const handleDeleteMatchingAnswer = (questionNumber: number) => (event: React.FormEvent) => {\n event.preventDefault();\n if (question.matchingOrOrderingAnswers) {\n const { left, right } = question.matchingOrOrderingAnswers;\n const newLeftAnswers = left.filter(a => a.number !== questionNumber);\n const newRightAnswers = right.filter(a => a.number !== questionNumber);\n const newCorrect = {};\n\n setFormFieldErrors({ ...formFieldErrors, [`answer${questionNumber}`]: '' });\n setQuestion({\n ...question,\n matchingOrOrderingAnswers: {\n ...question.matchingOrOrderingAnswers,\n left: newLeftAnswers,\n right: newRightAnswers,\n correct: newCorrect,\n },\n });\n }\n };\n\n const handleClickSwitch = () => {\n const newQuestion = { ...question, active: !question.active };\n setQuestion(newQuestion);\n };\n\n const handleChangeTextInput = (name: string, value: string) => {\n setQuestion({ ...question, openAnswer: value });\n setFormFieldErrors({ ...formFieldErrors, openAnswer: '' });\n };\n\n const onChangeSelect = ({ questionNumber, matchingNumber }: { questionNumber: number; matchingNumber: number }) => {\n if (!question.matchingOrOrderingAnswers) return;\n\n const newCorrect = question.matchingOrOrderingAnswers.correct;\n newCorrect[questionNumber] = matchingNumber;\n\n setQuestion({\n ...question,\n matchingOrOrderingAnswers: {\n ...question.matchingOrOrderingAnswers,\n correct: newCorrect,\n },\n });\n };\n\n const submit = async (e: React.FormEvent) => {\n e.preventDefault();\n const validationErrors = getValidationErrors(question, questionType);\n\n if (isValidFormData(validationErrors)) {\n const res = await onSubmit(question);\n\n if (!errorRef.current && res) {\n onExit();\n }\n } else {\n setFormFieldErrors(validationErrors);\n }\n };\n\n const onChangeLeftHeader = (text: string) => {\n if (!question.matchingOrOrderingAnswers) return;\n\n setQuestion({\n ...question,\n matchingOrOrderingAnswers: {\n ...question.matchingOrOrderingAnswers,\n leftAnswersHeader: text,\n },\n });\n };\n\n const onChangeRightHeader = (text: string) => {\n if (!question.matchingOrOrderingAnswers) return;\n\n setQuestion({\n ...question,\n matchingOrOrderingAnswers: {\n ...question.matchingOrOrderingAnswers,\n rightAnswersHeader: text,\n },\n });\n };\n\n const onChangeRadio = (type: TheoreticalQuestionType) => {\n if (!theoreticalQuestion && emptyQuestion.matchingOrOrderingAnswers) {\n setQuestionType(type);\n setFormFieldErrors({});\n setQuestion({\n ...emptyQuestion,\n matchingOrOrderingAnswers: {\n ...emptyQuestion.matchingOrOrderingAnswers,\n correct: {},\n },\n text: question.text,\n number: question.number,\n active: question.active,\n type,\n });\n }\n };\n\n return (\n
\n
\n \n onChangeRadio(TheoreticalQuestionType.MultipleChoiceTheoretical)}\n option={TheoreticalQuestionType.MultipleChoiceTheoretical}\n checked={questionType === TheoreticalQuestionType.MultipleChoiceTheoretical}\n disabled={!!theoreticalQuestion}\n />\n onChangeRadio(TheoreticalQuestionType.OpenAnswerTheoretical)}\n option={TheoreticalQuestionType.OpenAnswerTheoretical}\n checked={questionType === TheoreticalQuestionType.OpenAnswerTheoretical}\n disabled={!!theoreticalQuestion}\n />\n \n \n onChangeRadio(TheoreticalQuestionType.MatchingTheoretical)}\n option={TheoreticalQuestionType.MatchingTheoretical}\n checked={questionType === TheoreticalQuestionType.MatchingTheoretical}\n disabled={!!theoreticalQuestion}\n />\n onChangeRadio(TheoreticalQuestionType.OrderingTheoretical)}\n option={TheoreticalQuestionType.OrderingTheoretical}\n checked={questionType === TheoreticalQuestionType.OrderingTheoretical}\n disabled={!!theoreticalQuestion}\n />\n \n
\n \n \n \n \n \n \n {_.has(formFieldErrors, 'text') && formFieldErrors.text.length > 0\n ? formFieldErrors.text : null}\n \n \n \n\n {questionType === TheoreticalQuestionType.MultipleChoiceTheoretical && question.multipleChoiceAnswers && (\n <>\n

Варианты ответов:

\n {question.multipleChoiceAnswers.map((answer, i) => (\n \n ))}\n \n )}\n\n {(questionType === TheoreticalQuestionType.MatchingTheoretical || questionType === TheoreticalQuestionType.OrderingTheoretical) && question.matchingOrOrderingAnswers && (\n \n )}\n\n {questionType === TheoreticalQuestionType.OpenAnswerTheoretical ? (\n \n ) : null}\n\n {formFieldErrors && formFieldErrors.general ? (\n
\n \n

\n {formFieldErrors.general}\n

\n
\n
\n ) : null}\n
\n \n Сохранить\n \n \n
\n \n );\n};\n\nexport default TheoreticalQuestionRedactor;\n\ninterface IProps {\n theoreticalQuestion: ITheoreticalQuestion | null;\n errors: IApiError | null;\n loading?: boolean;\n onSubmit: (question: ITheoreticalQuestion) => Promise;\n onExit: () => void;\n}\n\ninterface IState {\n question: ITheoreticalQuestion;\n questionType: TheoreticalQuestionType;\n formFieldErrors: IFieldsError;\n}\n\nconst isValidFormData = (fieldsError: IFieldsError): boolean => _.values(fieldsError).every(e => e.length === 0);\n\nconst getValidationErrors = (data: ITheoreticalQuestion, questionType: TheoreticalQuestionType): IFieldsError => {\n const requiredErrorText = 'Обязательное поле для заполнения';\n const res = Object.keys(data).reduce((acc, key) => {\n switch (key) {\n case 'number':\n return { ...acc, number: data.number === 0 ? 'Введите номер отличный от 0' : '' };\n case 'text':\n return { ...acc, text: data.text === '' ? requiredErrorText : '' };\n default:\n return acc;\n }\n }, {});\n\n if (questionType === TheoreticalQuestionType.MultipleChoiceTheoretical) {\n const answers = Object.keys(data).reduce((acc, key) => {\n switch (key) {\n case 'multipleChoiceAnswers':\n return {\n ...acc,\n ...(data.multipleChoiceAnswers || []).reduce((y, x) => (\n { ...y, [`multipleChoiceAnswer_${x.number}`]: (x.text === '' ? requiredErrorText : '') }),\n {}),\n };\n default:\n return acc;\n }\n }, {});\n\n const correctAnswerSelected = (data.multipleChoiceAnswers || []).some(({ correct }) => correct);\n return correctAnswerSelected ? { ...res, ...answers } : { ...res, ...answers, general: 'Не выбран правильный ответ' };\n }\n\n if (questionType === TheoreticalQuestionType.MatchingTheoretical && data.matchingOrOrderingAnswers) {\n const { correct, left, right } = data.matchingOrOrderingAnswers;\n const allCorrectSelected = Object.keys(correct).length === left.length;\n const matchingOrOrderingAnswers = Object.keys(data).reduce((acc, key) => {\n switch (key) {\n case 'matchingOrOrderingAnswers':\n return {\n ...acc,\n ...(left || []).reduce((y, x) => (\n { ...y, [`answer${x.number}`]: (x.text === '' ? requiredErrorText : '') }),\n {}),\n ...(right || []).reduce((y, x) => (\n { ...y, [`answer_right_${x.number}`]: (x.text === '' ? requiredErrorText : '') }),\n {}),\n };\n default:\n return acc;\n }\n }, {});\n\n return allCorrectSelected ? { ...res, ...matchingOrOrderingAnswers } : { ...res, ...matchingOrOrderingAnswers, general: 'Заполните все последовательности' };\n }\n\n if (questionType === TheoreticalQuestionType.OrderingTheoretical && data.matchingOrOrderingAnswers) {\n const { correct, left } = data.matchingOrOrderingAnswers;\n const allCorrectSelected = Object.keys(correct).length === left.length;\n const matchingOrOrderingAnswers = Object.keys(data).reduce((acc, key) => {\n switch (key) {\n case 'matchingOrOrderingAnswers':\n return {\n ...acc,\n ...(left || []).reduce((y, x) => (\n { ...y, [`answer${x.number}`]: (x.text === '' ? requiredErrorText : '') }),\n {}),\n };\n default:\n return acc;\n }\n }, {});\n\n return allCorrectSelected ? { ...res, ...matchingOrOrderingAnswers } : { ...res, ...matchingOrOrderingAnswers, general: 'Заполните все последовательности' };\n }\n\n return res;\n};\n\nconst createEmptyAnswer = (number: number): ITheoreticalAnswer => ({\n number,\n text: '',\n correct: false,\n});\n\nconst createEmptyMatchingAnswer = (number: number): IMatchingTheoreticalAnswer => ({\n number,\n text: '',\n});\n\nconst emptyQuestion: ITheoreticalQuestion = {\n number: 0,\n text: '',\n multipleChoiceAnswers: [1, 2].map(createEmptyAnswer),\n active: true,\n type: TheoreticalQuestionType.MultipleChoiceTheoretical,\n matchingOrOrderingAnswers: {\n left: [1, 2].map(createEmptyMatchingAnswer),\n right: [1, 2].map(createEmptyMatchingAnswer),\n leftAnswersHeader: undefined,\n correct: {},\n },\n};\n","import React from 'react';\nimport { InputText, DragDrop } from 'components';\nimport { withDragDropContext } from 'components/DragDrop';\nimport { IFieldsError, ITheoreticalQuestion, TheoreticalQuestionType } from './types';\nimport QuestionVariant from './QuestionVariant';\nimport MatchingRightVariant from './MatchingRightVariant';\nimport QuestionSelect, { IChangeSelect } from './QuestionSelect';\nimport styles from './TheoreticalQuestionRedactor.module.scss';\nimport cn from 'classnames';\n\nconst MatchingOrOrderingTheoreticalQuestion = ({\n onChangeLeftHeader,\n onChangeRightHeader,\n formFieldErrors,\n handleChangeMatchingAnswerText,\n handleChangeOrderingAnswerText,\n question,\n onAddQuestionVariant,\n onDeleteQuestionVariant,\n setFormFieldErrors,\n onChangeSelect,\n onDropAnswer,\n}: IProps) => {\n const [changeLeftHeader, setChangeLeftHeader] = React.useState(false);\n const [changeRightHeader, setChangeRightHeader] = React.useState(false);\n\n if (!question.matchingOrOrderingAnswers) return null;\n\n const {\n leftAnswersHeader, rightAnswersHeader, left, right, correct,\n } = question.matchingOrOrderingAnswers;\n\n const leftHeader = leftAnswersHeader\n || ((question.type === TheoreticalQuestionType.OrderingTheoretical && 'Варианты:')\n || (question.type === TheoreticalQuestionType.MatchingTheoretical && 'Утверждения:')) || '';\n\n const rightHeader = rightAnswersHeader\n || ((question.type === TheoreticalQuestionType.OrderingTheoretical && 'Укажите последовательность:')\n || (question.type === TheoreticalQuestionType.MatchingTheoretical && 'Варианты для соотнесения:')) || '';\n\n const answerChar = [...left];\n answerChar.sort((a, b) => a.number - b.number);\n\n return (\n
\n
\n {!changeLeftHeader && {leftHeader}}\n {changeLeftHeader && (\n onChangeLeftHeader(value)}\n inputGroupClassNames=\"m-0\"\n inputClassNames=\"pl-0\"\n inputColSize={4}\n withoutLabel\n />\n )}\n { e.preventDefault(); setChangeLeftHeader(!changeLeftHeader); }}\n >\n {!changeLeftHeader ? 'Изменить заголовок' : 'Сохранить заголовок'}\n \n
\n {left.map((answer, i) => (\n \n \n \n ))}\n
\n
\n
\n {!changeRightHeader && {rightHeader}}\n {changeRightHeader && (\n onChangeRightHeader(value)}\n inputGroupClassNames=\"m-0\"\n inputClassNames=\"pl-0\"\n inputColSize={4}\n withoutLabel\n />\n )}\n { e.preventDefault(); setChangeRightHeader(!changeRightHeader); }}\n >\n {!changeRightHeader ? 'Изменить заголовок' : 'Сохранить заголовок'}\n \n
\n {question.type === TheoreticalQuestionType.OrderingTheoretical && right.map((answer, i) => (\n \n ))}\n {question.type === TheoreticalQuestionType.MatchingTheoretical && right.map((answer, i) => (\n \n ))}\n
\n
\n
\n );\n};\n\nexport default withDragDropContext(MatchingOrOrderingTheoreticalQuestion);\n\ninterface IProps {\n question: ITheoreticalQuestion;\n formFieldErrors: IFieldsError;\n handleChangeMatchingAnswerText: (answerNumber: number) => (name: string, value: string) => void;\n handleChangeOrderingAnswerText: (answerNumber: number) => (name: string, value: string) => void;\n onAddQuestionVariant: (e: React.FormEvent) => void;\n onDeleteQuestionVariant: (answerNumber: number) => (e: React.FormEvent) => void;\n onChangeLeftHeader: (text: string) => void;\n onChangeRightHeader: (text: string) => void;\n setFormFieldErrors: (error: IFieldsError) => void;\n onChangeSelect: (data: IChangeSelect) => void;\n onDropAnswer: (from: number, to: number) => void;\n}\n","import React from 'react';\n\nconst ExamQuestionImage = ({ imageUrl }: IProps) => (\n
\n \"question_image\"\n
\n);\n\ninterface IProps {\n imageUrl: string;\n}\n\nexport default ExamQuestionImage;\n","import React from 'react';\nimport {\n IExtendedSelectEvent,\n IExtendedSelectOption,\n ExtendedSelect,\n MultiSelectGroup,\n PaginationData,\n DateTimePicker,\n} from 'components';\nimport styles from './MultiSelectSection.module.scss';\nimport moment from 'moment';\nimport cn from 'classnames';\n\nconst MultiSelectSection = ({\n fetchList,\n qecList,\n qualificationList,\n ecList,\n examSelectStatusName,\n examStatusOptions,\n withoutSelectStatus,\n withoutFromToDatePicker,\n beforeSelectsChildren,\n defaultValue,\n defaultIds,\n defaultFrom,\n defaultTo,\n}: IProps) => {\n const initialState: IState = {\n selectedExamStatus: defaultValue || (examStatusOptions && examStatusOptions[0].value) || ExamStatusOptions[0].value,\n pageOptions: { pages: 10, perPage: 10, page: 1 },\n qecIds: (defaultIds && defaultIds.qecIds) || [],\n qualificationIds: (defaultIds && defaultIds.qualificationIds) || [],\n examinationCenterIds: (defaultIds && defaultIds.examinationCenterIds) || [],\n customProps: undefined,\n from: defaultFrom || undefined,\n to: defaultTo || undefined,\n };\n\n const [selectedExamStatus, setSelectedExamStatus] = React.useState(initialState.selectedExamStatus);\n const [pageOptions, setPageOptions] = React.useState(initialState.pageOptions);\n const [qecIds, setQecIds] = React.useState(initialState.qecIds);\n const [qualificationIds, setQualificationIds] = React.useState(initialState.qualificationIds);\n const [examinationCenterIds, setExaminationCenterIds] = React.useState(initialState.examinationCenterIds);\n const [from, setFrom] = React.useState(initialState.from);\n const [to, setTo] = React.useState(initialState.to);\n\n const getFetchListProps = () => ({\n ...pageOptions,\n examinationCenterIds,\n qualificationIds,\n qecIds,\n from: from || undefined,\n to: to || undefined,\n filteredExamStatus: selectedExamStatus !== 'All' ? selectedExamStatus as FilteredExamStatus : undefined,\n });\n\n const handleFilterChange = (event: IExtendedSelectEvent) => {\n setPageOptions({ ...pageOptions, page: 1 });\n setSelectedExamStatus(event.value);\n\n fetchList({\n ...getFetchListProps(),\n filteredExamStatus: event.value !== 'All' ? event.value as FilteredExamStatus : undefined,\n });\n };\n\n const getQecOptions = (): IExtendedSelectOption[] => (qecList ? qecList.items.map(qec => ({\n value: qec.id,\n label: qec.name,\n })) : []);\n\n const getEcOptions = (): IExtendedSelectOption[] => (ecList ? ecList.items.map(ec => ({\n value: ec.id,\n label: ec.fullName,\n })) : []);\n\n const getQualificationsOptions = (): IExtendedSelectOption[] => (qualificationList ? qualificationList.items.map(qualification => ({\n value: qualification.id,\n label: qualification.title,\n })) : []);\n\n const onChangeSelect = (e: IExtendedSelectEvent[], func: (ids: string[], filter?: IFetchList) => void) => {\n let ids: string[] = [];\n\n if (e) {\n ids = [...e.map(el => el.value)];\n }\n\n func(ids);\n setPageOptions({ ...pageOptions, page: 1 });\n };\n\n const onChangeQecSelect = (ids: string[], filterProps?: IFetchList) => {\n setQecIds(ids);\n fetchList({\n ...getFetchListProps(),\n ...filterProps,\n qecIds: ids,\n });\n };\n\n const onChangeEcSelect = (ids: string[], filterProps?: IFetchList) => {\n setExaminationCenterIds(ids);\n fetchList({\n ...getFetchListProps(),\n ...filterProps,\n examinationCenterIds: ids,\n });\n };\n\n const onChangeQualificationsSelect = (ids: string[], filterProps?: IFetchList) => {\n setQualificationIds(ids);\n fetchList({\n ...getFetchListProps(),\n ...filterProps,\n qualificationIds: ids,\n });\n };\n\n const onChangeDate = (props?: IFetchList) => fetchList({\n ...getFetchListProps(),\n ...props,\n });\n\n return (\n
\n {!withoutSelectStatus ? (\n
\n
СТАТУС
\n
\n \n
\n
\n ) : null}\n {!withoutFromToDatePicker ? (\n
\n
ПЕРИОД
\n \n
\n\n ) : null}\n {beforeSelectsChildren}\n {qecList && (\n onChangeSelect(e, onChangeQecSelect)}\n placeholder=\"Выберите один или несколько Центров Оценки Квалификаций\"\n value={qecIds.length ? qecIds : undefined}\n className={styles.selectGroup}\n />\n )}\n {ecList && (\n onChangeSelect(e, onChangeEcSelect)}\n placeholder=\"Выберите один или несколько Экзаменационный Центров\"\n value={examinationCenterIds.length ? examinationCenterIds : undefined}\n className={styles.selectGroup}\n />\n )}\n {qualificationList && (\n onChangeSelect(e, onChangeQualificationsSelect)}\n placeholder=\"Выберите один или несколько Профессиональных Квалификаций\"\n value={qualificationIds.length ? qualificationIds : undefined}\n className={styles.selectGroup}\n />\n )}\n
\n );\n};\n\nexport default MultiSelectSection;\n\nexport interface IFetchList {\n paid?: boolean;\n qualificationIds?: string[];\n examinationCenterIds?: string[];\n qecIds?: string[];\n page?: number;\n pageSize?: number;\n sortOrder?: boolean;\n sortField?: string;\n filteredExamStatus?: FilteredExamStatus;\n from?: moment.Moment;\n to?: moment.Moment;\n}\n\ninterface IProps {\n qualificationList?: IQualificationInfoList | null;\n qecList?: IQualificationEvaluationCenters | null;\n ecList?: IExaminationCentersList | null;\n examSelectStatusName?: string;\n examStatusOptions?: IExtendedSelectOption[];\n beforeSelectsChildren?: React.ReactNode;\n defaultValue?: string | null;\n defaultIds?: IDefaultIds;\n withoutSelectStatus?: boolean;\n withoutFromToDatePicker?: boolean;\n defaultFrom?: moment.Moment;\n defaultTo?: moment.Moment;\n fetchList: (data: IFetchList) => void;\n}\n\ninterface IDefaultIds {\n qecIds?: string[];\n qualificationIds?: string[];\n examinationCenterIds?: string[];\n}\n\nenum FilteredExamStatus {\n AwaitingExpertConfirmation = 'awaitingExpertConfirmation',\n IsApplying = 'isApplying',\n ApplyingFinished = 'applyingFinished',\n IsPassing = 'isPassing',\n Finished = 'finished',\n FinalizedResults = 'finalizedResults',\n NokProtocolSigned = 'nokProtocolSigned',\n AkProtocolSigned = 'akProtocolSigned',\n Processed = 'processed',\n Canceled = 'canceled',\n}\n\nconst ExamStatusOptions: IExtendedSelectOption[] = [\n { label: 'Все', value: 'All' },\n { label: 'Создание', value: FilteredExamStatus.AwaitingExpertConfirmation },\n { label: 'Идет запись', value: FilteredExamStatus.IsApplying },\n { label: 'Запись завершена', value: FilteredExamStatus.ApplyingFinished },\n { label: 'Идет сдача', value: FilteredExamStatus.IsPassing },\n { label: 'Финализация результатов', value: FilteredExamStatus.Finished },\n { label: 'Подписание протокола НОК', value: FilteredExamStatus.FinalizedResults },\n { label: 'Подписание протокола АК', value: FilteredExamStatus.NokProtocolSigned },\n { label: 'Подписание решения Совета', value: FilteredExamStatus.AkProtocolSigned },\n { label: 'Утвержден', value: FilteredExamStatus.Processed },\n { label: 'Отменен', value: FilteredExamStatus.Canceled },\n];\n\ninterface IExaminationCentersList {\n items: IExaminationCenter[];\n page: number;\n pageSize: number;\n total: number;\n}\n\ninterface IExaminationCenter {\n id: string;\n regNumber: string;\n name: string;\n fullName: string;\n city: string;\n address: string;\n default: boolean;\n}\n\ninterface IQualificationEvaluationCenters {\n items: IQualificationEvaluationCenter[];\n page: number;\n pageSize: number;\n total: number;\n}\n\ninterface IQualificationEvaluationCenter {\n id: string;\n regNumber: string;\n name: string;\n fullName: string;\n city: string;\n}\n\ninterface IQualificationInfoList {\n items: IQualificationInfo[];\n page: number;\n pageSize: number;\n total: number;\n}\n\ninterface IQualificationInfo {\n id: string;\n title: string;\n level: string;\n regNumber: string;\n occupationalStandardId: string;\n occupationalStandardTitle: string;\n}\n\ninterface IState {\n selectedExamStatus: string;\n pageOptions: PaginationData;\n qecIds: string[];\n qualificationIds: string[];\n examinationCenterIds: string[];\n customProps?: IFetchList;\n from?: moment.Moment;\n to?: moment.Moment;\n}\n","export interface IQualificationPracticalQuestionDetails {\n openAnswer?: string;\n taskTables?: ITable[];\n id?: string;\n number: number;\n active: boolean;\n text: string;\n type: QuestionType;\n criteriaForRate?: string;\n}\n\nexport interface ITable {\n caption?: string;\n columns: IColumn[];\n exactEquality: boolean;\n forbidMoving: boolean;\n initialRows: string[][];\n answerRows?: string[][];\n}\n\ninterface IColumn {\n header: string;\n width: number;\n readonly: boolean;\n numeric: boolean;\n key: boolean;\n multiline: boolean;\n}\n\nexport enum QuestionType {\n MultipleChoiceTheoretical = 'multipleChoiceTheoretical',\n OpenAnswerPractical = 'openAnswerPractical',\n MatchingTheoretical = 'matchingTheoretical',\n EssayPractical = 'essayPractical',\n OpenAnswerTheoretical = 'openAnswerTheoretical',\n OrderingTheoretical = 'orderingTheoretical',\n ManualCheckTabularPracticalQuestion = 'manualCheckTabularPracticalQuestion',\n AutoCheckTabularPracticalQuestion = 'autoCheckTabularPracticalQuestion',\n OfflinePractical = 'offlinePractical',\n}\n\nexport interface IFieldsError {\n [key: string]: string;\n}\n","import React from 'react';\nimport styles from './CKText.module.scss';\nimport cn from 'classnames';\nimport './CKStyles.scss';\n\nconst CKText = ({ text }: IProps) => (\n
\n);\n\nexport default CKText;\n\ninterface IProps {\n text?: string;\n}\n","import React from 'react';\nimport {\n InputText,\n CustomSwitch,\n CKEditor,\n CustomRadio,\n LoaderBtn,\n EditableTable,\n} from 'components';\nimport {\n IQualificationPracticalQuestionDetails,\n IFieldsError,\n QuestionType,\n ITable,\n} from './types';\nimport { Form, Button } from 'react-bootstrap';\nimport { mapAPIError, RegExpConst } from '_helpers';\nimport { IApiError } from '_helpers/ApiConnector/types';\nimport _ from 'lodash';\nimport styles from './PracticalQuestionRedactor.module.scss';\nimport cn from 'classnames';\n\nconst PracticalQuestionRedactor = ({\n practicalQuestion, errors, onSubmit, onExit, loading,\n}: IProps) => {\n const errorRef = React.useRef(errors);\n\n const initialState: IState = {\n questionType: QuestionType.OpenAnswerPractical,\n question: practicalQuestion || emptyQuestion,\n formFieldErrors: {},\n process: false,\n preview: false,\n };\n const [question, setQuestion] = React.useState(initialState.question);\n const [questionType, setQuestionType] = React.useState(initialState.questionType);\n const [formFieldErrors, setFormFieldErrors] = React.useState(initialState.formFieldErrors);\n const [process, setProcess] = React.useState(initialState.process);\n const [preview, setPreview] = React.useState(initialState.preview);\n\n React.useEffect(() => {\n errorRef.current = errors;\n const errorsMap = mapAPIError(errors);\n if (errorsMap) {\n setFormFieldErrors({ ...formFieldErrors, ...errorsMap });\n }\n }, [errors]);\n\n React.useEffect(() => {\n if (practicalQuestion && !loading) {\n setQuestion(practicalQuestion);\n setQuestionType(practicalQuestion.type);\n }\n }, [practicalQuestion]);\n\n const setQuestionNumber = (name: string, number: string) => {\n const newNumber = number === '' ? '0' : number;\n if (RegExpConst.NUMBER.test(newNumber)) {\n setQuestion({ ...question, number: parseInt(newNumber, 10) });\n setFormFieldErrors({ ...formFieldErrors, number: '' });\n }\n };\n\n const handleChangeTextInput = (name: string, value: string) => {\n setQuestion({ ...question, openAnswer: value });\n setFormFieldErrors({ ...formFieldErrors, openAnswer: '' });\n };\n\n const handleClickSwitch = () => {\n setQuestion({ ...question, active: !question.active });\n };\n\n const handlePreviewClickSwitch = () => {\n setPreview(!preview);\n };\n\n const onChangeRadio = (type: QuestionType) => {\n if (!practicalQuestion) {\n setQuestionType(type);\n setFormFieldErrors({});\n setQuestion({\n ...emptyQuestion,\n number: question.number,\n text: question.text,\n criteriaForRate: question.criteriaForRate,\n type,\n });\n }\n };\n\n const onChangeCKEditorText = (text: string) => {\n setQuestion({ ...question, text });\n setFormFieldErrors({ ...formFieldErrors, text: '' });\n };\n\n const onChangeCKEditorCriterial = (criteriaForRate: string) => {\n setQuestion({ ...question, criteriaForRate });\n setFormFieldErrors({ ...formFieldErrors, criteriaForRate: '' });\n };\n\n const isValidFormData = (fieldsError: IFieldsError): boolean => _.values(fieldsError).every(e => e.length === 0);\n\n const submit = async (e: React.FormEvent) => {\n e.preventDefault();\n const validationErrors = getValidationErrors(question);\n\n if (isValidFormData(validationErrors)) {\n const res = await onSubmit(question);\n\n if (!errorRef.current && res) {\n onExit();\n }\n } else {\n setFormFieldErrors(validationErrors);\n }\n };\n\n const checkValidTable = (table: ITable) => {\n if (table.columns && !table.columns.find((col) => {\n if (col.header === null || col.header === undefined\n || col.key === null || col.header === undefined\n || col.multiline === null || col.multiline === undefined\n || col.numeric === null || col.numeric === undefined\n || col.readonly === null || col.readonly === undefined\n || col.width === null || col.width === undefined\n ) {\n return table;\n }\n return undefined;\n }) && table.initialRows\n && table.exactEquality !== null && table.exactEquality !== undefined\n && table.forbidMoving !== null && table.forbidMoving !== undefined\n ) {\n return table;\n }\n return null;\n };\n\n const onUploadTable = (e: React.ChangeEvent) => {\n setProcess(true);\n if (e && e.currentTarget && e.currentTarget.files) {\n const reader = new FileReader();\n\n reader.onload = () => {\n if (reader.result) {\n try {\n const addedTaskTables: ITable[] = JSON.parse(reader.result.toString());\n if (addedTaskTables) {\n const notValidTables: number[] = [];\n addedTaskTables.forEach((el, i) => !checkValidTable(el) && notValidTables.push(i));\n const taskTables = addedTaskTables.filter(checkValidTable);\n\n setQuestion({ ...question, taskTables });\n setFormFieldErrors({\n ...formFieldErrors,\n taskTables: !notValidTables.length ? '' : `Неверные данные в таблицах: ${notValidTables.join(',')}`,\n });\n }\n } catch (err) {\n setFormFieldErrors({ ...formFieldErrors, taskTables: `Ошибка при разборе таблицы: ${err}` });\n }\n }\n };\n\n reader.readAsText(e.currentTarget.files[0]);\n }\n setProcess(false);\n\n e.target.value = '';\n };\n\n return (\n
\n
\n \n onChangeRadio(QuestionType.OpenAnswerPractical)}\n option={QuestionType.OpenAnswerPractical}\n checked={questionType === QuestionType.OpenAnswerPractical}\n disabled={!!practicalQuestion}\n />\n onChangeRadio(QuestionType.EssayPractical)}\n option={QuestionType.EssayPractical}\n checked={questionType === QuestionType.EssayPractical}\n disabled={!!practicalQuestion}\n />\n onChangeRadio(QuestionType.OfflinePractical)}\n option={QuestionType.OfflinePractical}\n checked={questionType === QuestionType.OfflinePractical}\n disabled={!!practicalQuestion}\n />\n \n \n onChangeRadio(QuestionType.ManualCheckTabularPracticalQuestion)}\n option={QuestionType.ManualCheckTabularPracticalQuestion}\n checked={questionType === QuestionType.ManualCheckTabularPracticalQuestion}\n disabled={!!practicalQuestion}\n />\n onChangeRadio(QuestionType.AutoCheckTabularPracticalQuestion)}\n option={QuestionType.AutoCheckTabularPracticalQuestion}\n checked={questionType === QuestionType.AutoCheckTabularPracticalQuestion}\n disabled={!!practicalQuestion}\n />\n \n
\n \n \n \n \n {_.has(formFieldErrors, 'text') && (\n \n {formFieldErrors.text}\n \n )}\n \n

Ключ/критерии оценки

\n \n {_.has(formFieldErrors, 'criteriaForRate') && (\n \n {formFieldErrors.criteriaForRate}\n \n )}\n \n\n {questionType === QuestionType.OpenAnswerPractical && (\n \n )}\n\n {(questionType === QuestionType.ManualCheckTabularPracticalQuestion\n || questionType === QuestionType.AutoCheckTabularPracticalQuestion) && (\n <>\n
\n
\n Предпросмотр\n \n
\n {question.taskTables && question.taskTables.map((table, i) => (\n
\n \n
\n ))}\n\n {question.taskTables &&

Ключ к заданию:

}\n\n {question.taskTables && question.taskTables.map((table, i) => (\n
\n \n
\n ))}\n
\n
\n {question.taskTables && (\n \n Скачать таблицу\n \n )}\n \n \n {process ? 'Загрузка...' : 'Загрузить таблицу'}\n \n
\n {_.has(formFieldErrors, 'taskTables') && (\n \n {formFieldErrors.taskTables}\n \n )}\n \n )}\n\n\n {_.has(formFieldErrors, 'general') ? (\n
\n \n

\n {formFieldErrors.general}\n

\n
\n
\n ) : null}\n
\n \n Сохранить\n \n \n
\n {errors && (!errors.failures || !(errors.failures && (errors.failures.taskTables || errors.failures.answer || errors.failures.text || errors.failures.number))) && (\n \n {errors.message}\n \n )}\n \n );\n};\n\nexport default PracticalQuestionRedactor;\n\ninterface IProps {\n errors: IApiError | null;\n practicalQuestion: IQualificationPracticalQuestionDetails | null;\n loading?: boolean;\n onSubmit: (data: IQualificationPracticalQuestionDetails) => Promise;\n onExit: () => void;\n}\n\ninterface IState {\n questionType: QuestionType;\n question: IQualificationPracticalQuestionDetails;\n formFieldErrors: IFieldsError;\n process: boolean;\n preview: boolean;\n}\n\nconst emptyQuestion = {\n number: 0,\n text: '',\n criteriaForRate: '',\n active: true,\n type: QuestionType.OpenAnswerPractical,\n};\n\nconst getValidationErrors = (data: IQualificationPracticalQuestionDetails): IFieldsError => {\n const requiredErrorText = 'Обязательное поле для заполнения';\n return Object.keys(data).reduce((acc, key) => {\n switch (key) {\n case 'number':\n return { ...acc, number: data.number === 0 ? 'Введите номер отличный от 0' : '' };\n case 'text':\n return { ...acc, [key]: data[key] === '' ? requiredErrorText : '' };\n default:\n return acc;\n }\n }, {});\n};\n","import _ from 'lodash';\n\nconst prepareTableHeaders = (headers: IHeaderRows): IHeaderRows => headers.map(h => h.reduce((acc, item) => {\n const lastItem = _.last(acc);\n if (!lastItem) return [item];\n const newAcc = acc.slice();\n if (item.text === lastItem.text && lastItem.text.length !== 0) {\n newAcc[newAcc.length - 1] = { ...lastItem, colSpan: lastItem.colSpan ? lastItem.colSpan + 1 : 1 };\n return newAcc;\n }\n return [...acc, item];\n}, [] as IRowItem[]));\n\nconst getHeaderRowCount = (headers: string[], separator: string) => headers.reduce((acc, h) => (\n h.split('#').length > 1 ? h.split(separator).length : acc\n), 1);\n\nexport const getTableHeader = (headers: string[], separator: string): IHeaderRows => {\n const rowCount = getHeaderRowCount(headers, separator);\n const tableHeaders: IHeaderRows = new Array(rowCount).fill(0).map(() => new Array(headers.length).fill({ text: '', colSpan: 1 }));\n\n for (let row = 0; row < rowCount; row += 1) {\n for (let col = 0; col < headers.length; col += 1) {\n const headerArr = headers[col].split(separator);\n tableHeaders[row][col] = { text: headerArr[row] || '', colSpan: 1 };\n }\n }\n return prepareTableHeaders(tableHeaders);\n};\n\nexport function createArray (arrayLength: number, createItemCb: () => T) {\n return new Array(arrayLength).fill(0).map(createItemCb);\n}\n\nexport interface IRowItem {\n text: string;\n colSpan?: number;\n}\n\nexport type IHeaderRows = IRowItem[][];\n","import React from 'react';\nimport {\n ExamApplicationDetails,\n ApplicantDocuments,\n AppType,\n ProfileInfoTab,\n AnimatedTabs,\n StatementTab,\n LoaderBtn,\n} from 'components';\nimport { IExamApplicationDetails } from 'components/models';\nimport { Tab, Button } from 'react-bootstrap';\nimport cn from 'classnames';\n\nconst ExamApplicationTabs = ({\n tab,\n examApplicationDetails,\n appType,\n examTabChild,\n docTabChild,\n identificationTabChild,\n withoutExamTab,\n withoutIdentificationTab,\n withoutTabPadding,\n withoutProfileTab,\n onChangeSwitch,\n disableSelectTab,\n inModal,\n onStatementCancel,\n onStatementSubmit,\n processing,\n}: IProps) => {\n React.useEffect(() => {\n setActiveTab(getTab());\n }, [tab, examApplicationDetails]);\n\n const getTab = (): TabKey => {\n if (tab && (\n (TabKey[tab] === TabKey.ExamTab && !withoutExamTab)\n || (TabKey[tab] === TabKey.IdentificationTab && !withoutIdentificationTab)\n || (TabKey[tab] === TabKey.ProfileTab && !withoutProfileTab)\n )) {\n return TabKey[tab];\n }\n\n return getDefaultTab();\n };\n\n const getDefaultTab = () => {\n let newTab = TabKey.ExamTab;\n\n if (withoutExamTab) newTab = TabKey.ProfileTab;\n if (withoutProfileTab && withoutExamTab) newTab = TabKey.IdentificationTab;\n if (withoutIdentificationTab) newTab = TabKey.DocumentsTab;\n\n return newTab;\n };\n\n const renderStatementButtons = () => (\n <>\n {onStatementSubmit ? (\n \n Одобрить заявку на экзамен\n \n ) : null}\n\n {onStatementCancel ? (\n \n Отклонить заявку на экзамен\n \n ) : null}\n \n );\n\n const [activeTab, setActiveTab] = React.useState(getTab());\n\n const applicantProfile = examApplicationDetails.applicant;\n const applicantExam = examApplicationDetails.exam;\n const applicantStatus = examApplicationDetails.status;\n const { documents, reviewComment, recommendations } = examApplicationDetails;\n const tabClassName = cn('tab', 'mt-5', withoutTabPadding && 'p-0');\n\n return (\n !disableSelectTab && setActiveTab(key as TabKey)}\n inModal={inModal}\n >\n {!withoutExamTab ? (\n \n \n {examTabChild && examTabChild(() => setActiveTab(TabKey.IdentificationTab))}\n \n ) : null}\n\n {!withoutProfileTab ? (\n \n \n \n ) : null}\n\n {!withoutIdentificationTab ? (\n \n \n\n {identificationTabChild && identificationTabChild(() => setActiveTab(TabKey.DocumentsTab))}\n \n ) : null}\n\n \n \n {docTabChild}\n {appType !== AppType.Applicant && !examApplicationDetails.signCode ? renderStatementButtons() : null}\n \n\n {appType !== AppType.Applicant && examApplicationDetails.signCode ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport default ExamApplicationTabs;\n\ninterface IProps {\n examApplicationDetails: IExamApplicationDetails;\n tab?: TabType;\n docTabChild?: React.ReactNode;\n appType?: AppType;\n withoutExamTab?: boolean;\n withoutIdentificationTab?: boolean;\n withoutProfileTab?: boolean;\n withoutTabPadding?: boolean;\n disableSelectTab?: boolean;\n inModal?: boolean;\n processing?: boolean;\n examTabChild?: (goToIdentificationTab: () => void) => React.ReactNode;\n identificationTabChild?: (goToDocTab: () => void) => React.ReactNode;\n onChangeSwitch?: (active: boolean[]) => void;\n onStatementSubmit?: () => void;\n onStatementCancel?: () => void;\n}\n\nenum TabKey {\n ExamTab = 'exam-tab',\n ProfileTab = 'profile-tab',\n IdentificationTab = 'identification-tab',\n DocumentsTab = 'documents-tab',\n StatementInfoTab = 'statement-tab'\n}\n\ntype TabType = keyof typeof TabKey;\n","import React from 'react';\nimport { IRowRendererProps } from 'components';\nimport { rowDragSource, rowDropTarget } from 'components/DragDrop/drag-drop'; // !!! только напрямую работает\nimport dndIcon from 'components/assets/svg/dnd_icon.svg';\nimport deleteIcon from 'components/assets/svg/cancel_icon.svg';\nimport addIcon from 'components/assets/svg/add_icon.svg';\nimport styles from './EditableTable.module.scss';\nimport cn from 'classnames';\n\nconst RowRendererDrag = rowDragSource(rowDropTarget((props: Props) => {\n const {\n isOver,\n disabledMoving,\n gridLength,\n handleDeleteClick,\n connectDropTarget,\n connectDragPreview,\n connectDragSource,\n children,\n rowIndex,\n } = props;\n const className = isOver ? styles.drop_target : '';\n\n const renderDeleteButton = () => (!disabledMoving && gridLength - 1 > 0 ? (\n \n
handleDeleteClick(rowIndex)}>\n \"deleteRow\"\n
\n \n ) : null);\n\n return (\n \n {connectDropTarget && connectDragPreview && connectDragSource ? (\n connectDropTarget(connectDragPreview(\n \n {connectDragSource(\n \n \"dnd-btn\"\n ,\n )}\n {children}\n {renderDeleteButton()}\n ,\n ))) : null}\n \n )}\n />\n );\n}));\n\nconst RowRendererNotDrag = ({\n headersLength,\n gridLength,\n disabledMoving,\n handleCLickRowAdd,\n handleDeleteClick,\n children,\n rowIndex,\n dragChild,\n}: IProps) => {\n const renderAddRowBtn = () => (\n \n \n
\n \"addRow\"\n

Добавить строку

\n
\n \n \n );\n\n const renderDeleteButton = () => (!disabledMoving && gridLength - 1 > 0 ? (\n \n
handleDeleteClick(rowIndex)}>\n \"deleteRow\"\n
\n \n ) : null);\n\n if (rowIndex === (gridLength - 1)\n && children\n && children[0]\n && children[0].props\n && children[0].props['data-not-move'] === true\n ) {\n return (\n <>\n {!disabledMoving && renderAddRowBtn()}\n \n {!disabledMoving && }\n {children}\n \n \n );\n }\n\n return (\n <>\n {dragChild || (\n \n {children}\n {renderDeleteButton()}\n \n )}\n {rowIndex === (gridLength - 1) && !disabledMoving && renderAddRowBtn()}\n \n );\n};\n\n\nconst RowRenderer = (props: Props) => (!props.disabledMoving ? : );\n\nexport default RowRenderer;\n\ninterface IProps {\n gridLength: number;\n headersLength: number;\n disabledMoving: boolean;\n rowIndex: number;\n children: any;\n dragChild?: React.ReactNode;\n handleDeleteClick: (row: number) => void;\n handleCLickRowAdd: () => void;\n onRowDrop: (from: number, to: number) => void;\n}\n\ntype Props = IProps & IRowRendererProps;\n","import React, { useState, useEffect, createRef } from 'react';\nimport {\n getTableHeader, createArray, IHeaderRows, IRowItem,\n} from './helpers';\nimport { withDragDropContext } from 'components/DragDrop'; // Не прокидывается через components\nimport { AutoGrowTextArea } from 'components';\nimport cn from 'classnames';\nimport styles from './EditableTable.module.scss';\nimport RowRenderer from './RowRenderer';\n\nconst EditableTable = ({\n table, headersSeparator, onlyWatch, submitSolution, fromAnswerRows, hideTitle, tableId,\n}: IProps) => {\n const totalText = 'ИТОГО:';\n const tableRef = createRef();\n const headersArr = table.columns.map(({ header }) => header);\n const multilineArr = table.columns.map(({ multiline }) => multiline);\n const readOnlyArr = table.columns.map(({ readonly }) => readonly);\n const headersWidth = table.columns.map(({ width }) => (width));\n const headersLength = headersArr.length;\n const disabledMoving = Boolean(table.forbidMoving || onlyWatch);\n\n const prepareTaskGrid = (tableRows: string[][]): GridElement[][] => tableRows.map((r, i) => r.map((c, j) => (\n {\n value: i === tableRows.length - 1 && j === 0 && c === 'total' ? totalText : c,\n readOnly: onlyWatch || readOnlyArr[j],\n colSpan: 1,\n })));\n\n const [grid, setGrid] = useState(prepareTaskGrid((fromAnswerRows && table.answerRows) || table.initialRows));\n const [tableWidth, setTableWidth] = useState(0);\n const gridLength = grid.length;\n\n useEffect(() => {\n setGrid(prepareTaskGrid((fromAnswerRows && table.answerRows) || table.initialRows));\n }, [table, onlyWatch]);\n\n useEffect(() => {\n if (tableRef.current) {\n setTableWidth(tableRef.current.clientWidth - 25);\n }\n }, [tableRef.current]);\n\n const onSubmit = (newGrid: GridElement[][]) => {\n if (submitSolution) {\n submitSolution(convertGridToSolution(newGrid));\n }\n };\n\n const handleRowDrop = (from: number, to: number) => {\n if (disabledMoving) return;\n\n const sourceRow = [...grid[from]];\n const nGrid = grid.slice();\n nGrid.splice(from > to ? to : to + 1, 0, sourceRow);\n const newGrid = nGrid.filter((x, i) => (i !== (from > to ? from + 1 : from)));\n setGrid(newGrid);\n onSubmit(newGrid);\n };\n\n const handleDeleteClick = (rowNumber: number) => {\n if (onlyWatch) return;\n\n const newGrid = grid.filter((r, i) => rowNumber !== i);\n setGrid(newGrid);\n onSubmit(newGrid);\n };\n\n const handleCLickRowAdd = () => {\n if (onlyWatch) return;\n\n const newGrid = [...grid];\n const emptyGrid = createArray(headersLength, () => ({ value: '', readOnly: false, colSpan: 1 }));\n const totalGrid = newGrid.find(r => r.find(c => c.value === totalText));\n\n if (totalGrid) {\n newGrid.push(totalGrid);\n newGrid.splice(gridLength - 1, 1, emptyGrid);\n } else {\n newGrid.push(emptyGrid);\n }\n\n setGrid(newGrid);\n onSubmit(newGrid);\n };\n\n const handleCellInputChange = (e: React.ChangeEvent, row: number, col: number) => {\n if (onlyWatch) return;\n\n const { value } = e.currentTarget;\n const newGrid = [...grid];\n newGrid[row][col] = { ...newGrid[row][col], value };\n setGrid(newGrid);\n onSubmit(newGrid);\n };\n\n const handleSelectNextCell = (e: React.KeyboardEvent, row: number, col: number) => {\n if (e.key !== 'Enter') return;\n let nRow = row;\n let nCol = col + 1;\n\n if (nCol === grid[0].length) {\n nCol = 0;\n nRow += 1;\n }\n if (nRow === gridLength) nRow = 0;\n\n const cell: HTMLInputElement | null = document.querySelector(`#editableTableCell_${tableId}-${nRow}${nCol} input`);\n\n if (cell) {\n cell.focus();\n }\n };\n\n const renderTableHeaders = (headers: IHeaderRows) => headers.map((h, i, arr) => (\n \n {!disabledMoving && }\n {h.map((header, j) => (\n \n {header.text}\n \n ))}\n {!disabledMoving && }\n \n ));\n\n const renderFields = (row: number, col: number, { readOnly, value }: GridElement) => (\n onlyWatch || value === totalText || readOnly ?
{value}
\n : (\n <>\n {(multilineArr[col] ? (\n handleCellInputChange(e, row, col)}\n />\n ) : (\n handleSelectNextCell(e, row, col)}\n onChange={e => handleCellInputChange(e, row, col)}\n />\n ))}\n \n ));\n\n const getHeaderWidth = (col: number, header: IRowItem) => {\n if (!tableWidth) return {};\n\n let width = 0;\n\n if (header.colSpan !== undefined && header.colSpan > 1) {\n for (let i = 0; i < header.colSpan; i += 1) {\n width += headersWidth[col + i];\n }\n } else {\n const el = table.columns.find(column => column.header === header.text);\n if (el) {\n const { width: nWidth } = el;\n width = nWidth;\n }\n }\n\n const res = {\n width: width !== 0 && `${Math.ceil(tableWidth * width / 100)}px`,\n maxWidth: width !== 0 && `${Math.ceil(tableWidth * width / 100)}px`,\n };\n\n return res;\n };\n\n return (\n <>\n {table.caption && !hideTitle && {table.caption}}\n \n {headersLength > 0 ? (\n \n {renderTableHeaders(getTableHeader(headersArr, headersSeparator))}\n \n ) : null}\n \n {grid.map((r, row) => (\n \n {r.map((c, col) => (\n \n {renderFields(row, col, c)}\n \n ))}\n \n ))}\n \n \n \n );\n};\n\nconst convertGridToSolution = (grid: GridElement[][]): string[][] => grid.map(r => r.map(c => c.value));\n\nexport default withDragDropContext(EditableTable);\n\ninterface IProps {\n headersSeparator: string;\n table: ITable;\n tableId: string;\n onlyWatch?: boolean;\n fromAnswerRows?: boolean;\n hideTitle?: boolean;\n submitSolution?: (solution: string[][]) => void;\n}\n\ninterface ITable {\n caption: string;\n columns: IColumn[];\n forbidMoving: boolean;\n initialRows: string[][];\n exactEquality?: boolean;\n answerRows?: string[][];\n}\n\ninterface IColumn {\n header: string;\n key: boolean;\n multiline: boolean;\n numeric: boolean;\n readonly: boolean;\n width: number;\n}\n\ninterface GridElement {\n value: string;\n colSpan: number;\n readOnly: boolean;\n}\n","import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport cn from 'classnames';\nimport _ from 'lodash';\n\nconst AutoGrowTextArea = ({\n value, onChange, disabled, className, autoFocus, fieldFailures, name, placeholder,\n}: IProps) => {\n const areaRef = React.createRef();\n const error = React.useMemo(() => (name && fieldFailures && _.has(fieldFailures, name) && fieldFailures[name].length > 0 ? fieldFailures[name] : null), [fieldFailures]);\n\n React.useEffect(() => {\n if (areaRef.current) {\n autoGrowTextArea(areaRef.current);\n }\n }, [areaRef]);\n\n return (\n <>\n autoGrowTextArea(ev.target as HTMLTextAreaElement)}\n onKeyPress={ev => autoGrowTextArea(ev.target as HTMLTextAreaElement)}\n placeholder={placeholder}\n autoFocus={autoFocus}\n />\n {error ? (\n \n {error}\n \n ) : null}\n \n );\n};\n\nexport default AutoGrowTextArea;\n\ninterface IProps {\n value: string;\n name?: string;\n className?: string;\n disabled?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n fieldFailures?: IFieldFailures | null;\n onChange?: (e: React.ChangeEvent) => void;\n}\n\ninterface IFieldFailures {\n [key: string]: string;\n}\n\nconst autoGrowTextArea = (textField: HTMLTextAreaElement) => {\n if (textField.clientHeight === 36 && textField.clientHeight === textField.scrollHeight) {\n // eslint-disable-next-line\n textField.style.height = '25px';\n }\n\n if (textField.clientHeight < textField.scrollHeight) {\n // eslint-disable-next-line\n textField.style.height = `${textField.scrollHeight}px`;\n if (textField.clientHeight < textField.scrollHeight) {\n // eslint-disable-next-line\n textField.style.height = `${textField.scrollHeight * 2 - textField.clientHeight}px`;\n }\n }\n};\n","import React from 'react';\nimport {\n ExamStatus,\n AppType,\n ExamType,\n AnimatedTabs,\n} from 'components';\nimport { IExamApplication } from 'components/models';\nimport { Tab } from 'react-bootstrap';\nimport { ApplicantsTab, IApplicantsTabProps } from './ApplicantsTab';\nimport { ExpertsTab } from './ExpertsTab';\nimport { ExamInfoTab, ExamInfoTabProps } from './ExamInfoTab';\nimport { RulesTab } from './RulesTab';\nimport { NokOrAkProtocolTab } from './NokOrAkProtocolTab';\nimport { SovietProtocolTab } from './SovietProtocolTab';\nimport { ISendProtocolProps, SendProtocolModal } from './SendProtocolModal';\nimport { VideoTab } from './VideoTab';\nimport { ExpertsSignProgress } from './ExpertsSignProgress';\nimport { IWebRTCReceiverType, Unread, VideoType } from '_helpers';\n\nconst ExamDetailsTabs = ({\n tab,\n applicantsTabProps,\n examDetails,\n examApplicationsList,\n withoutApplicantsTab,\n withoutExpertsTab,\n protocolModalProps,\n webRTC,\n unread,\n switchVideoType,\n onPreviewClick,\n appType,\n expertsSignProgressChild,\n handleExpertClick,\n}: IProps) => {\n const isExpert = appType === AppType.Expert;\n const isSpkfr = appType === AppType.Spkfr;\n const isApplicant = appType === AppType.Applicant;\n const isQec = appType === AppType.Qec;\n\n const isProtocols = () => examStatus === ExamStatus.FinalizedResults\n || examStatus === ExamStatus.AkProtocolSigned\n || examStatus === ExamStatus.NokProtocolSigned\n || examStatus === ExamStatus.SovietProtocolSignedByMembers\n || examStatus === ExamStatus.SovietProtocolSignedByChairman;\n\n const checkPropsTab = () => {\n if (tab && (tab === TabKey.Rules\n || (tab === TabKey.Applicants && !withoutApplicantsTab)\n || tab === TabKey.Info\n || (tab === TabKey.Experts && !withoutExpertsTab))) {\n return tab;\n }\n\n return null;\n };\n\n const getDefaultTab = () => {\n if (checkPropsTab()) {\n return checkPropsTab();\n }\n\n if (!isExpert) return TabKey.Info;\n if (examStatus === ExamStatus.FinalizedResults) return TabKey.Nok;\n if (examStatus === ExamStatus.NokProtocolSigned) return TabKey.Ak;\n if (examStatus === ExamStatus.AkProtocolSigned\n || examStatus === ExamStatus.SovietProtocolSignedByMembers\n || examStatus === ExamStatus.SovietProtocolSignedByChairman) return TabKey.Soviet;\n if (examStatus === ExamStatus.IsPassing && examDetails && examDetails.type === ExamType.Online) return TabKey.Video;\n if (examStatus === ExamStatus.IsApplying) return TabKey.Info;\n if (!withoutApplicantsTab) return TabKey.Applicants;\n if (!withoutExpertsTab) return TabKey.Experts;\n\n return TabKey.Info;\n };\n\n React.useEffect(() => {\n setActiveTab(getDefaultTab());\n }, [examDetails]);\n\n const [activeTab, setActiveTab] = React.useState(getDefaultTab());\n const examStatus = examDetails.status;\n const examInCreateStatus = examStatus === ExamStatus.AwaitingExpertConfirmation;\n const showDetails = (isSpkfr || isApplicant || isQec) ? true : !isProtocols();\n const showNokOrAkProtocol = !isApplicant && !isQec && isProtocols() && examStatus !== ExamStatus.FinalizedResults;\n const showNokProtocol = !isApplicant && !isQec && examStatus === ExamStatus.FinalizedResults && isSpkfr;\n const showSovietProtocol = !isApplicant && !isQec && (examStatus === ExamStatus.AkProtocolSigned\n || examStatus === ExamStatus.SovietProtocolSignedByMembers\n || examStatus === ExamStatus.SovietProtocolSignedByChairman);\n\n const renderSendProtocolModal = () => {\n if (protocolModalProps && (\n examStatus === ExamStatus.FinalizedResults\n || (examStatus === ExamStatus.NokProtocolSigned && activeTab === TabKey.Ak)\n || ((examStatus === ExamStatus.AkProtocolSigned || examStatus === ExamStatus.SovietProtocolSignedByMembers) && activeTab === TabKey.Soviet)\n )) {\n return ;\n }\n\n return null;\n };\n\n if (examStatus === ExamStatus.FinalizedResults && isExpert) {\n return (\n <>\n true}\n />\n {renderSendProtocolModal()}\n \n );\n }\n\n return (\n <>\n setActiveTab(key as TabKey)}\n >\n {isExpert && examDetails && examApplicationsList && examStatus === ExamStatus.IsPassing && examDetails.type === ExamType.Online ? (\n \n \n \n ) : null}\n\n {showSovietProtocol ? (\n \n \n \n ) : null}\n\n {showNokOrAkProtocol ? (\n \n true}\n asAkProtocol\n />\n \n ) : null}\n\n {showNokOrAkProtocol || showNokProtocol ? (\n \n true}\n />\n \n ) : null}\n\n {showDetails ? (\n \n \n \n ) : null}\n\n {!withoutApplicantsTab && applicantsTabProps && examApplicationsList && showDetails && !examInCreateStatus ? (\n \n \n \n ) : null}\n\n {!withoutExpertsTab && showDetails ? (\n \n {examInCreateStatus || examDetails.experts.some(c => c.acceptedInvite !== true) ? (\n \n ) : (\n \n )}\n {expertsSignProgressChild}\n \n ) : null}\n\n {showDetails ? (\n \n \n \n ) : null}\n \n {renderSendProtocolModal()}\n \n );\n};\n\nexport default ExamDetailsTabs;\n\nexport interface IProps {\n examDetails: ExamInfoTabProps['examDetails'];\n appType: AppType;\n protocolModalProps?: ISendProtocolProps;\n examApplicationsList?: IExamApplicationList;\n applicantsTabProps?: IApplicantsTabProps;\n withoutApplicantsTab?: boolean;\n withoutExpertsTab?: boolean;\n expertsSignProgressChild?: React.ReactNode;\n tab?: TabType;\n webRTC?: {\n [id: string]: {\n receiver: IWebRTCReceiverType;\n connected: boolean;\n type: VideoType;\n };\n };\n unread?: { [id: string]: Unread };\n handleExpertClick?: (expertId: string) => void;\n switchVideoType?: (videoType: VideoType, applicantId: string) => void;\n onPreviewClick?: (applicationId: string) => void;\n}\n\ninterface IExamApplicationList {\n admittedCount: number;\n items: IExamApplication[];\n page: number;\n pageSize: number;\n total: number;\n}\n\nenum TabKey {\n Applicants = 'applicants',\n Experts = 'experts',\n Info = 'info',\n Rules = 'rules',\n Ak = 'ak',\n Nok = 'nok',\n Soviet = 'soviet',\n Video = 'video',\n}\n\ntype TabType = 'applicants' | 'experts' | 'info' | 'rules' | 'ak' | 'nok' | 'soviet' | 'video'\n","import React from 'react';\nimport {\n ExamStatus,\n AppType,\n ApplicantDocuments,\n ProfileInfoTab,\n Card,\n PracticalQuestionsTab,\n TheoreticalQuestionsTab,\n AnimatedTabs,\n StatementTab,\n} from 'components';\nimport { IExamApplicationDetails, IExamSessionDetails } from 'components/models';\nimport { Tab } from 'react-bootstrap';\nimport { ExpertsTab } from '../ExamDetailsTabs/ExpertsTab';\nimport { ExamInfoTab, ExamInfoTabProps } from '../ExamDetailsTabs/ExamInfoTab';\nimport { RulesTab } from '../ExamDetailsTabs/RulesTab';\nimport { ResultAndStatusTab } from './ResultAndStatusTab';\nimport styles from './ApplicantExamDetailsTabs.module.scss';\n\nconst ApplicantExamDetailsTabs = ({\n tab,\n examDetails,\n withoutExpertsTab,\n withoutInfoTab,\n withoutRulesTab,\n appType,\n onlyResultAndStatus,\n resultAndStatusCardCategory,\n resultAndStatusCardTitle,\n examSessionDetails,\n inModal,\n examApplication,\n renderResultAndStatusChild,\n onChangeDocumentSwitch,\n}: IProps) => {\n const isExpert = appType === AppType.Expert;\n const isSpkfr = appType === AppType.Spkfr;\n const isApplicant = appType === AppType.Applicant;\n const isQec = appType === AppType.Qec;\n\n const isProtocols = () => examStatus === ExamStatus.FinalizedResults\n || examStatus === ExamStatus.AkProtocolSigned\n || examStatus === ExamStatus.NokProtocolSigned\n || examStatus === ExamStatus.SovietProtocolSignedByMembers\n || examStatus === ExamStatus.SovietProtocolSignedByChairman;\n\n const checkTab = () => {\n if (tab) {\n if (TabKey[tab] === TabKey.Experts && withoutExpertsTab) return null;\n\n return TabKey[tab];\n }\n\n return null;\n };\n\n const getDefaultTab = () => {\n if (tab) return checkTab();\n if (!isExpert && !withoutInfoTab) return TabKey.Info;\n if (withoutInfoTab && examApplication) return TabKey.ResultAndStatus;\n if (examStatus === ExamStatus.IsApplying) return TabKey.Info;\n if (!withoutExpertsTab) return TabKey.Experts;\n\n return TabKey.Info;\n };\n\n React.useEffect(() => {\n setActiveTab(getDefaultTab());\n }, [examDetails]);\n\n const [activeTab, setActiveTab] = React.useState(getDefaultTab());\n const examStatus = examDetails.status;\n const showDetails = (isSpkfr || isApplicant || isQec) ? true : !isProtocols();\n\n const renderResultAndStatus = () => (examApplication ? (\n \n ) : null);\n\n if (onlyResultAndStatus) return renderResultAndStatus();\n\n return (\n <>\n setActiveTab(key as TabKey)}\n inModal={inModal}\n >\n {!withoutInfoTab && showDetails ? (\n \n \n \n ) : null}\n\n {examApplication ? (\n \n {renderResultAndStatus()}\n {renderResultAndStatusChild ? renderResultAndStatusChild() : null}\n \n ) : null}\n\n {examApplication && examApplication.recommendations ? (\n \n {examApplication.recommendations}\n \n ) : null}\n\n {examApplication && examApplication.applicant && examApplication.applicantIdentityDoc ? (\n \n \n \n \n \n ) : null}\n\n {!withoutExpertsTab && showDetails ? (\n \n \n \n ) : null}\n\n {!withoutRulesTab && showDetails ? (\n \n \n \n ) : null}\n\n {examApplication && examApplication.documents ? (\n \n \n \n \n \n ) : null}\n\n {examApplication && examApplication.signCode ? (\n \n \n \n ) : null}\n\n {examSessionDetails && examSessionDetails.practicalQuestions && examApplication && isSpkfr ? (\n \n \n \n \n \n ) : null}\n\n {examSessionDetails && examSessionDetails.theoreticalQuestions && examApplication && isSpkfr ? (\n \n \n \n \n \n ) : null}\n \n \n );\n};\n\nexport default ApplicantExamDetailsTabs;\n\nexport interface IProps {\n examDetails: ExamInfoTabProps['examDetails'];\n appType: AppType;\n examApplication?: IExamApplicationDetails | null;\n examSessionDetails?: IExamSessionDetails | null;\n withoutExpertsTab?: boolean;\n withoutInfoTab?: boolean;\n withoutRulesTab?: boolean;\n onlyResultAndStatus?: boolean;\n resultAndStatusCardTitle?: string | null;\n resultAndStatusCardCategory?: string | null;\n inModal?: boolean;\n tab?: TabType;\n renderResultAndStatusChild?: () => React.ReactNode;\n onChangeDocumentSwitch?: (change: boolean[]) => void;\n}\n\nenum TabKey {\n Experts = 'experts',\n Info = 'info',\n Rules = 'rules',\n Documents = 'documents',\n ResultAndStatus = 'resultAndStatus',\n Identification = 'identification',\n PracticalQuestions = 'practicalQuestions',\n TheoreticalQuestions = 'theoreticalQuestions',\n StatementInfoTab = 'statementInfo',\n RecommendationTab = 'recommendation',\n}\n\ntype TabType = keyof typeof TabKey;\n","import React from 'react';\nimport { CustomSwitch } from 'components';\nimport styles from './WebCamSwitch.module.scss';\nimport cn from 'classnames';\n\nconst WebCamSwitch = ({\n value, name, webCam, onClick, containerClassName, darkness,\n}: IProps) => (\n \n );\n\nexport default WebCamSwitch;\n\ninterface IProps {\n value: boolean;\n name: string;\n webCam?: boolean;\n containerClassName?: string;\n darkness?: boolean;\n onClick: () => void;\n}\n","import React from 'react';\nimport { Loader } from '../Common/Loader';\nimport { WebCamSwitch } from '../WebCamSwitch';\nimport { VideoType } from '_helpers';\nimport cn from 'classnames';\nimport styles from './UserVideo.module.scss';\nimport ExclamationIcon from './exclamation.svg';\nimport FullScreenIcon from './full-screen-icon.png';\n\nconst UserVideo = ({\n processing,\n videoStream,\n containerClassName,\n muted,\n camSwitch,\n onSwitch,\n videoType,\n connectionLost,\n withoutFullScreen,\n ...props\n}: UserVideoPropsType) => {\n const ref = React.useRef(null);\n const isWebCam = videoType === VideoType.Cam;\n\n React.useLayoutEffect(() => {\n if (ref.current) {\n ref.current.srcObject = videoStream || null;\n }\n }, [videoStream]);\n\n const handleSwitch = React.useCallback(() => {\n if (!onSwitch) return;\n\n if (isWebCam) {\n onSwitch(VideoType.Screen);\n return;\n }\n\n onSwitch(VideoType.Cam);\n }, [videoType]);\n\n React.useEffect(() => {\n if (connectionLost && ref.current) {\n ref.current.load();\n }\n }, [connectionLost]);\n\n const onFullScreenButtonClick = () => {\n if (ref && ref.current) {\n if (ref.current.requestFullscreen) {\n ref.current.requestFullscreen();\n // @ts-ignore\n } else if (ref.current.mozRequestFullScreen) { /* Firefox */\n // @ts-ignore\n ref.current.mozRequestFullScreen();\n // @ts-ignore\n } else if (ref.current.webkitRequestFullscreen) { /* Chrome, Safari and Opera */\n // @ts-ignore\n ref.current.webkitRequestFullscreen();\n // @ts-ignore\n } else if (ref.current.msRequestFullscreen) { /* IE/Edge */\n // @ts-ignore\n ref.current.msRequestFullscreen();\n }\n }\n };\n\n\n return (\n <>\n
\n {(processing || !videoStream) && !props.poster && (\n \n )}\n {(connectionLost) && (\n
props.onClick && props.onClick(e)}>\n \"ExclamationIcon\"\n Соискатель не транслирует видео\n
\n )}\n \n \n \n {!withoutFullScreen ? \"FullScreenIcon\" : null}\n
\n {camSwitch && (\n
\n \n Рабочий стол\n \n \n \n Веб-камера\n \n
\n )}\n \n );\n};\n\nexport default UserVideo;\n\ntype UserVideoPropsType = IProps & React.DetailedHTMLProps, HTMLVideoElement>\n\ninterface IProps extends React.RefAttributes {\n videoStream?: MediaStream;\n processing?: boolean;\n containerClassName?: string;\n camSwitch?: boolean;\n withoutFullScreen?: boolean;\n videoType?: VideoType;\n connectionLost?: boolean;\n onSwitch?: (type: VideoType) => void;\n}\n","/* eslint-disable arrow-parens */\nimport { useEffect, useRef } from 'react';\n\nconst useAutoScroll = (initialRef: T | null, list: any[], callback: () => void) => {\n const ref = useRef(initialRef);\n\n\n useEffect(() => {\n if (ref.current) {\n ref.current.scrollTop = ref.current.scrollHeight;\n }\n\n if (list && list.length) {\n callback();\n }\n }, [list, ref]);\n\n return ref;\n};\n\nexport default useAutoScroll;\n","import React from 'react';\n\nconst useMouseLeaveDetector = (isActive: boolean, callback: Function, delay: number = 3000) => {\n const leaveTimeout = React.useRef({ index: 0 });\n const [isLeaved, setIsLeaved] = React.useState(false);\n\n const mouseLeaveHandler = React.useCallback(() => {\n setIsLeaved(true);\n }, []);\n\n const mouseEnterHandler = React.useCallback(() => {\n setIsLeaved(false);\n }, []);\n\n React.useEffect(() => {\n if (!isLeaved && !leaveTimeout) return;\n\n if (isLeaved) {\n window.clearTimeout(leaveTimeout.current.index);\n leaveTimeout.current.index = window.setTimeout(\n callback,\n delay,\n );\n } else {\n window.clearTimeout(leaveTimeout.current.index);\n leaveTimeout.current.index = 0;\n }\n }, [isLeaved]);\n\n React.useEffect(() => {\n if (!isActive && leaveTimeout.current.index) {\n window.clearTimeout(leaveTimeout.current.index);\n }\n }, [isActive, leaveTimeout.current.index]);\n\n React.useEffect(() => {\n unsubscribeToEvents(mouseLeaveHandler, mouseEnterHandler);\n\n if (!isActive) {\n return () => null;\n }\n\n subscribeToEvents(mouseLeaveHandler, mouseEnterHandler);\n return () => unsubscribeToEvents(mouseLeaveHandler, mouseEnterHandler);\n }, [isActive]);\n};\n\nfunction subscribeToEvents(mouseLeaveHandler: EventListener, mouseEnterHandler: EventListener) {\n document.body.addEventListener('mouseleave', mouseLeaveHandler);\n document.body.addEventListener('mouseenter', mouseEnterHandler);\n}\n\nfunction unsubscribeToEvents(mouseLeaveHandler: EventListener, mouseEnterHandler: EventListener) {\n document.body.removeEventListener('mouseleave', mouseLeaveHandler);\n document.body.removeEventListener('mouseenter', mouseEnterHandler);\n}\n\n\nexport default useMouseLeaveDetector;\n","import React from 'react';\nimport { ChatMessage, ChatMessageType } from '_helpers';\nimport { useAutoScroll } from '../../hooks';\nimport OnlineChatAlert from './OnlineChatAlert';\nimport OnlineChatMessage from './OnlineChatMessage';\nimport LoadingPlaceholder from './LoadingPlaceholder';\nimport styles from './OnlineChat.module.scss';\nimport cn from 'classnames';\nimport { IExamApplicationDetails } from '../models';\n\nconst OnlineChat = ({\n messages,\n onGetMessages,\n onSendMessage,\n ...props\n}: IProps) => {\n const [tab, setTab] = React.useState(ChatTabs.Messages);\n const textAreaRef = React.useRef(null);\n const chatAreaRef = useAutoScroll(null, messages, props.onReadMessages);\n const [messageText, setMessageText] = React.useState('');\n\n React.useEffect(() => {\n onGetMessages();\n }, []);\n\n React.useEffect(() => {\n const message = messages[messages.length - 1];\n if (message && message.type === ChatMessageType.Message && tab === ChatTabs.Alerts) {\n setTab(ChatTabs.Messages);\n }\n }, [messages]);\n\n React.useLayoutEffect(() => {\n if (textAreaRef.current) {\n textAreaRef.current.style.height = 'auto';\n textAreaRef.current.style.height = `${textAreaRef.current.scrollHeight}px`;\n }\n }, [messageText]);\n\n const handleSendMessage = React.useCallback((event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n if (messageText.trim()) {\n onSendMessage(messageText.trim());\n }\n setMessageText('');\n }\n }, [messageText]);\n\n const handleChange = React.useCallback((event: React.ChangeEvent) => {\n setMessageText(event.target.value.replace(/\\n/g, ''));\n }, []);\n\n const messagesTitle = props.isApplicant ? 'Чат с экспертом' : 'Чат с соискателем';\n\n const chatMessages = React.useMemo(() => {\n if (props.isApplicant) {\n return [...messages].reverse();\n }\n\n if (tab === ChatTabs.Alerts) {\n return messages.filter(m => m.type !== ChatMessageType.Message).reverse();\n }\n\n return messages.filter(m => m.type === ChatMessageType.Message).reverse();\n }, [messages, tab]);\n\n return (\n
\n {props.withTabs && (\n
\n setTab(ChatTabs.Messages)}\n className={cn(styles.tab, { [styles.active]: tab === ChatTabs.Messages })}\n >\n {messagesTitle}\n \n setTab(ChatTabs.Alerts)}\n className={cn(styles.tab, { [styles.active]: tab === ChatTabs.Alerts })}\n >\n Лог событий\n \n {props.examApplicationDetails && (\n setTab(ChatTabs.Docs)}\n className={cn(styles.tab, { [styles.active]: tab === ChatTabs.Docs })}\n >\n Документы\n \n )}\n
\n )}\n {(props.examApplicationDetails && tab === ChatTabs.Docs) ? (\n
\n {props.examApplicationDetails.documents.map((document, i) => (\n
\n \n \"documentImage\"\n \n
\n))}\n
\n ) : (\n
\n \n {chatMessages.map((chatMessage: ChatMessage, i: number, allMessages: ChatMessage[]) => (\n chatMessage.type === ChatMessageType.Message ? (\n \n ) : (\n \n )))}\n
\n )}\n
\n \n
\n
\n );\n};\n\nexport default OnlineChat;\n\nenum ChatTabs {\n Alerts = 'Alerts',\n Messages = 'Messages',\n Docs= 'Docs',\n}\n\ninterface IProps {\n loading?: boolean;\n messages: ChatMessage[];\n onGetMessages: () => void;\n onReadMessages: () => void;\n onSendMessage: (message: string) => void;\n containerClassName?: string;\n isApplicant?: boolean;\n expertId?: string;\n withTabs?: boolean;\n hideInput?: boolean;\n examApplicationDetails?: IExamApplicationDetails | null;\n}\n","import * as React from 'react';\nimport { AlertsTypes, ChatMessage } from '_helpers';\nimport moment from 'moment';\nimport cn from 'classnames';\n\nimport styles from './OnlineChat.module.scss';\n\nconst OnlineChatAlert: React.FC = ({ message }) => (\n
\n
\n \n {AlertsTypes[message.type].text}\n \n \n {message.message}\n \n \n {moment(message.created).format('HH:mm:ss')}\n \n
\n
\n);\n\ninterface IProps {\n message: ChatMessage;\n}\n\nexport default OnlineChatAlert;\n","import React from 'react';\nimport { ChatMessage } from '_helpers';\nimport cn from 'classnames';\nimport moment from 'moment';\nimport styles from './OnlineChat.module.scss';\n\nconst OnlineChatMessage = ({ message, isApplicant, expertId }: IProps) => {\n const isAuthor = (isApplicant && message.fromApplicant)\n || (!message.fromApplicant && message.expertId === expertId);\n const name = message.fromApplicant ? message.applicantName : (message.expertName || '');\n\n let shortName;\n if (isAuthor) {\n shortName = 'Вы';\n } else {\n const role = message.fromApplicant ? 'Соискатель' : 'Эксперт';\n shortName = name.split(' ')\n .map((word, num) => (num > 0 ? `${word.charAt(0)}.` : `${word} `))\n .concat(` (${role})`)\n .join('');\n }\n\n const nameInitials = name.split(' ').map(word => word.charAt(0)).slice(0, 2).join('');\n\n return (\n
\n \n {nameInitials}\n
\n
\n
\n {shortName}\n \n {moment(message.created).format('HH:mm')}\n \n
\n \n {message.message}\n \n
\n
\n );\n};\n\nexport default OnlineChatMessage;\n\ninterface IProps {\n message: ChatMessage;\n expertId?: string;\n isApplicant?: boolean;\n}\n","import * as React from 'react';\n\nimport styles from './BubbleLoader.module.scss';\n\nconst BubbleLoader: React.FC = () => (\n
\n \n \n \n
\n);\n\nexport default BubbleLoader;\n","import * as React from 'react';\nimport { BubbleLoader } from '../Common/BubbleLoader';\nimport styles from './OnlineChat.module.scss';\n\nconst LoadingPlaceholder: React.FC = (props) => {\n if (!props.show) {\n return null;\n }\n\n return (\n
\n \n Не закрывайте это окно и ожидайте подключения эксперта для итоговой проверки и допуска к экзамену\n
\n );\n};\n\ninterface IProps {\n show?: boolean;\n}\n\nexport default LoadingPlaceholder;\n","import React from 'react';\nimport {\n QualificationInfoDetails,\n Card,\n PersonalDataTab,\n Qualifications,\n ExamTable,\n MappedExamStatuses,\n ExamApplicationStatus,\n AnimatedTabs,\n} from 'components';\nimport {\n IApplicantQualificationDetails,\n IApplicant,\n IApplicantQualification,\n IApplicantExamList,\n IApplicantExam,\n} from 'components/models';\nimport { ColorStatus, Color } from '_helpers';\nimport { Tab } from 'react-bootstrap';\nimport { IApiError } from '_helpers/ApiConnector/types';\n\nconst ApplicantDetailsTabs = ({\n tab,\n applicantQualificationDetails,\n applicantQualifications,\n applicantDetail,\n applicantExams,\n apiError,\n getApplicantQualificationDetails,\n getApplicantExams,\n onCancelClick,\n onChooseExam,\n showLoader,\n}: IProps) => {\n const getDefaultTab = () => {\n if (tab === TabKey.ExamsTab || tab === TabKey.InfoTab || tab === TabKey.QualificationsTab) return tab;\n return false;\n };\n\n React.useEffect(() => {\n setSelectedQualification(null);\n\n return () => setSelectedQualification(null);\n }, []);\n\n React.useEffect(() => {\n setSelectedQualification(applicantQualificationDetails);\n }, [applicantQualificationDetails]);\n\n React.useEffect(() => {\n setActiveTab(getDefaultTab());\n }, [tab]);\n\n const [activeTab, setActiveTab] = React.useState(getDefaultTab());\n\n const [showErrorModal, setShowErrorModal] = React.useState(false);\n const [selectedQualification, setSelectedQualification] = React.useState(null);\n const EXAM_TABLE_HEADERS = ['Дата и время', 'Квалификация', 'Тип экзамена', 'Статус'];\n\n const getExamRows = (exam: IApplicantExam) => {\n const applicantStatus = exam.examApplicationStatus === ExamApplicationStatus.Passed\n ? new ColorStatus(Color.Success, 'Экзамен сдан')\n : new ColorStatus(Color.Red, 'Экзамен не сдан');\n\n const t = MappedExamStatuses[exam.examStatus];\n const examStatus = new ColorStatus(t.color, t.text);\n\n if (applicantStatus.text !== examStatus.text) {\n examStatus.subStatus = {\n color: applicantStatus.color === Color.Red ? Color.Red : Color.Success,\n text: applicantStatus.text,\n };\n }\n\n return {\n ...exam,\n id: exam.examApplicationId,\n status: examStatus,\n name: exam.qualificationTitle,\n };\n };\n\n const handleCancelClick = () => {\n setSelectedQualification(null);\n onCancelClick();\n };\n\n const handleChooseExam = (id: string) => {\n if (!applicantExams || !applicantExams.items) return;\n const selectedExam = applicantExams.items.find(x => x.examApplicationId === id);\n if (!selectedExam) return;\n onChooseExam(id);\n };\n\n const onQualificationListRowClick = async (examApplicationId: string) => {\n const res = await getApplicantQualificationDetails(examApplicationId);\n\n if (!res) {\n setShowErrorModal(true);\n }\n };\n\n if (selectedQualification) {\n return (\n setSelectedQualification(null)}\n cardCategory=\"Список квалификаций, присвоенных соискателю\"\n />\n );\n }\n\n return (\n \n setActiveTab(key as TabKey)}\n id=\"applicantDetailsTabs\"\n >\n \n \n \n \n setShowErrorModal(false)}\n />\n \n \n \n getApplicantExams({ page, pageSize: perPage })}\n placeholderText=\"Здесь будут отображаться все экзамены, в которых участвовал соискатель\"\n placeholderTitle=\"Нет экзаменов в списке\"\n />\n \n \n \n \n );\n};\n\nexport default ApplicantDetailsTabs;\n\ninterface IProps {\n applicantDetail: IApplicant | null;\n applicantQualifications: IApplicantQualification[] | null;\n applicantQualificationDetails: IApplicantQualificationDetails | null;\n applicantExams: IApplicantExamList | null;\n apiError: IApiError | null;\n showLoader: boolean;\n tab?: string;\n getApplicantQualificationDetails: (examApplicationId: string) => Promise;\n getApplicantExams: (data: IGetApplicantExams) => void;\n onCancelClick: () => void;\n onChooseExam: (examApplicationId: string) => void;\n}\n\nenum TabKey {\n InfoTab = 'info',\n QualificationsTab = 'qualifications',\n ExamsTab = 'exams'\n}\n\ninterface IGetApplicantExams {\n page: number;\n pageSize: number;\n}\n","import React from 'react';\nimport { InputText, InputTextProps } from 'components';\nimport { formatPhoneNumber } from '_helpers';\nimport styles from './PhoneInput.module.scss';\nimport cn from 'classnames';\n\nconst PhoneInput = (props: IProps) => {\n const onChange = (name: string, value: string) => {\n const val = value.match(/\\d+/g);\n\n props.onChange(name, val ? val.join('') : '');\n };\n\n return (\n \n {!props.disabled ? (\n \n +7\n \n ) : null}\n {props.children}\n \n );\n};\n\nexport default PhoneInput;\n\ninterface IProps extends Omit {\n phoneHelperClassName?: string;\n name?: string;\n fixTop?: boolean;\n fixLeft?: boolean;\n}\n","import React from 'react';\n\nconst NotFound = () => (\n
\n Not found\n
\n);\n\nexport default NotFound;\n","import React from 'react';\nimport dotsIcon from './dots_icon.svg';\nimport styles from './DotsSettings.module.scss';\nimport cn from 'classnames';\n\nconst DotsSettings = ({ buttons }: IProps) => {\n const [showButton, setShowButton] = React.useState(false);\n const iconRef = React.useRef(null);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (iconRef.current && !iconRef.current.contains(event.target as Node)) {\n setShowButton(false);\n }\n };\n\n document.addEventListener('click', handleClickOutside);\n\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n }, [iconRef]);\n\n const renderButtonIcon = (iconType?: IconType) => {\n if (!iconType) return null;\n\n if (iconType === 'delete') {\n return (\n \n \n \n \n \n );\n }\n\n if (iconType === 'logout') {\n return (\n \n \n \n \n );\n }\n\n if (iconType === 'plus') {\n return (\n \n \n \n );\n }\n\n return null;\n };\n\n return (\n
\n setShowButton(!showButton)}\n />\n {showButton ? (\n
\n {buttons.map((button, i) => (\n \n {renderButtonIcon(button.iconType)}\n {button.buttonText}\n
\n ))}\n \n ) : null}\n
\n );\n};\n\nexport default DotsSettings;\n\ninterface IProps {\n buttons: IButton[];\n}\n\nexport interface IButton {\n buttonText: string;\n iconType?: IconType;\n onClick: () => void;\n}\n\ntype IconType = 'logout' | 'delete' | 'plus';\n","import React from 'react';\nimport { Dropdown as BootstrapDropdown } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport activeIcon from './icons/arrow.svg';\nimport dropIcon from './icons/drop.svg';\nimport styles from './Dropdown.module.scss';\nimport cn from 'classnames';\n\nconst Dropdown = ({ items, title }: IProps) => {\n const [open, setOpen] = React.useState(false);\n\n const CustomMenu = React.forwardRef((aProps: HeaderDropdownToggleProps, ref: any) => {\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n aProps.onClick(e);\n };\n\n return (\n \n {aProps.children}\n \n );\n });\n\n const renderDropdownContent = (item: DropdownItem) => (\n
\n {item.active ? \"activeIcon\" : null}\n \n
\n );\n\n return (\n setOpen(!open)}>\n \n
\n {title ? {title} : null}\n \"dropIcon\"\n
\n \n\n \n {items.map((item: DropdownItem, i) => ((item.to || item.onClick) ? (\n
\n {item.to ? (\n \n {renderDropdownContent(item)}\n \n ) : null}\n\n {item.onClick ? (\n \n {renderDropdownContent(item)}\n \n ) : null}\n\n {i !== items.length - 1 ? : null}\n
\n ) : null))}\n
\n
\n );\n};\n\nexport default Dropdown;\n\ninterface IProps {\n items: DropdownItem[];\n title?: string;\n}\n\ninterface HeaderDropdownToggleProps {\n onClick: React.MouseEventHandler;\n children: React.ReactNode;\n}\n\nexport interface DropdownItem {\n label: string;\n active?: boolean;\n to?: string;\n onClick?: () => void;\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { push, goBack } from 'connected-react-router';\nimport { Dispatch, IRootState } from '../../redux/store/configureStore';\nimport { ResetPasswordFirstStep, ResetPasswordSecondStep, ResetPasswordThirdStep } from 'components';\n\nconst ResetPasswordContainer = ({\n sendResetPasswordVerificationCode,\n checkResetPasswordVerificationCode,\n authProcessing,\n resetPassword,\n clearErrors,\n onGoBack,\n apiError,\n onPush,\n}: Props) => {\n const [step, setStep] = React.useState(1);\n const [pagePhone, setPagePhone] = React.useState('');\n const [pageCode, setPageCode] = React.useState('');\n const [waitingSeconds, setWaitingSeconds] = React.useState(60);\n\n const goToStep = (newStep: number) => {\n setStep(newStep);\n };\n\n const goToLogin = () => {\n setPagePhone('');\n setPageCode('');\n clearErrors();\n onGoBack();\n };\n\n const step1Props = {\n apiError,\n initPhone: pagePhone,\n sendCode: async (phone: string, captcha?: string) => {\n setPagePhone(phone);\n const res = await sendResetPasswordVerificationCode({ phone, captcha }) as IStatus;\n\n if (res && res.waitingSeconds) {\n setWaitingSeconds(res.waitingSeconds);\n }\n\n return res;\n },\n goNext: () => goToStep(2),\n goBack: () => goToLogin(),\n };\n\n const step2Props = {\n apiError,\n phone: pagePhone,\n waitingSeconds,\n checkCode: async (phone: string, code: string, captcha?: string) => {\n setPageCode(code);\n return !!await checkResetPasswordVerificationCode({ phone, verificationCode: code, captcha });\n },\n resendCode: async () => await sendResetPasswordVerificationCode({ phone: pagePhone }) as IStatus,\n goNext: () => goToStep(3),\n goBack: () => {\n setPageCode('');\n goToStep(1);\n },\n };\n\n const step3Props = {\n apiError,\n authProcessing,\n resetPassword: async (password: string, captcha?: string) => {\n const checkVerify = await checkResetPasswordVerificationCode({ phone: pagePhone, verificationCode: pageCode, captcha });\n\n if (checkVerify) {\n const res = await resetPassword({\n verificationCode: pageCode,\n phone: pagePhone,\n newPassword: password,\n });\n\n if (res) {\n onPush('/');\n }\n }\n },\n };\n\n return (\n <>\n {step === 1 && }\n {step === 2 && }\n {step === 3 && }\n \n );\n};\n\nconst mapState = (state: IRootState) => ({\n apiError: state.errors,\n authProcessing: Boolean(state.loading.effects.auth.resetPassword),\n});\n\nconst mapDispatch = (dispatch: Dispatch) => ({\n resetPassword: dispatch.auth.resetPassword,\n sendResetPasswordVerificationCode: dispatch.auth.sendResetPasswordVerificationCodeAsync,\n checkResetPasswordVerificationCode: dispatch.auth.checkResetPasswordVerificationCodeAsync,\n clearErrors: dispatch.errors.clean,\n onGoBack: () => dispatch(goBack()),\n onPush: (key: string) => dispatch(push(key)),\n});\n\nexport default connect(mapState, mapDispatch)(ResetPasswordContainer);\n\ntype connectedProps = ReturnType & ReturnType\ntype Props = connectedProps;\n\ninterface IStatus {\n wasSent?: boolean;\n waitingSeconds?: number;\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { ILoginApplicant } from '../../api/ApiClient';\nimport { Dispatch, IRootState } from '../../redux/store/configureStore';\nimport { AuthenticationForm } from 'components';\n\nconst LoginContainer = ({\n onLogin, apiError,\n}: Props) => (\n onLogin(data as ILoginApplicant)}\n withPhone\n />\n );\n\nconst mapState = (state: IRootState) => ({\n apiError: state.errors,\n});\n\nconst mapDispatch = (dispatch: Dispatch) => ({\n onLogin: dispatch.auth.login,\n});\n\nexport default connect(mapState, mapDispatch)(LoginContainer);\n\ntype connectedProps = ReturnType & ReturnType\ntype Props = connectedProps;\n","import React, { FunctionComponent } from 'react';\nimport styles from './ProfileContainer.module.scss';\nimport { connect } from 'react-redux';\nimport { IRootState } from '../../redux/store/configureStore';\n\nconst ProfileContainer: FunctionComponent = (props) => {\n const { auth } = props;\n if (!auth) return null;\n return (\n
\n {`${auth.profile.firstName} ${auth.profile.lastName}`}\n
\n );\n};\n\nconst mapState = (state: IRootState) => ({\n auth: state.auth,\n errors: state.errors,\n});\n\nexport default connect(mapState)(ProfileContainer);\n\ntype Props = ReturnType;\n","import * as React from 'react';\nimport { Modal, Button } from 'react-bootstrap';\nimport styles from './WarningAlert.module.scss';\nimport cn from 'classnames';\n\nconst WarningAlert: React.FC = ({\n show,\n onHide,\n title,\n titleClassNames,\n bodyClassNames,\n footerClassNames,\n children,\n closeButtonText,\n}) => (\n \n \n \n {title}\n \n \n \n
ВНИМАНИЕ
\n \n Вы осуществили выход за пределы области сдачи экзамена.
\n Данна информация передается в центр обработки результатов и
\n может стать причиной аннулирования итогового результата.\n
\n Вернитесь в область сдачи экзамена для продолжения.\n {children}\n
\n \n \n \n \n );\n\nexport interface WarningAlertProps {\n onHide: () => void;\n title: string;\n show: boolean;\n titleClassNames?: string;\n bodyClassNames?: string;\n footerClassNames?: string;\n closeButtonText?: string;\n children?: React.ReactNode;\n}\n\n\nexport default WarningAlert;\n","import React from 'react';\n\nconst Clock = ({ className }: IProps) => {\n React.useEffect(() => {\n const secondHand = document.querySelector('#secondhand > *');\n const minuteHand = document.querySelector('#minutehand > *');\n const hourHand = document.querySelector('#hourhand > *');\n\n\n const cx = 100;\n const cy = 100;\n\n function shifter(val: number) {\n return [val, cx, cy].join(' ');\n }\n\n const date = new Date();\n const hoursAngle = 360 * date.getHours() / 12 + date.getMinutes() / 2;\n const minuteAngle = 360 * date.getMinutes() / 60;\n const secAngle = 360 * date.getSeconds() / 60;\n if (secondHand && minuteHand && hourHand) {\n secondHand.setAttribute('from', shifter(secAngle));\n secondHand.setAttribute('to', shifter(secAngle + 360));\n minuteHand.setAttribute('from', shifter(minuteAngle));\n minuteHand.setAttribute('to', shifter(minuteAngle + 360));\n hourHand.setAttribute('from', shifter(hoursAngle));\n hourHand.setAttribute('to', shifter(hoursAngle + 360));\n }\n }, []);\n\n return (\n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Clock;\n\ninterface IProps {\n className: string;\n}\n","import React from 'react';\nimport { Card } from 'components';\nimport { Clock } from './Clock';\nimport bg from 'components/assets/svg/exam/start_exam_bg.svg';\nimport styles from './ExamPlaceholder.module.scss';\n\nconst ExamPlaceholder = ({ title, content }: IProps) => (\n \n
\n \"\"\n
\n\n \n
\n
\n {title}\n
\n\n
\n {content}\n
\n
\n \n);\n\nexport default ExamPlaceholder;\n\ninterface IProps {\n title: string;\n content?: string | JSX.Element | JSX.Element[];\n}\n","import * as React from 'react';\nimport { IQuestionState } from '../../redux/models/exam';\nimport cx from 'classnames';\nimport styles from './QuestionsMarks.module.scss';\nimport tickIcon from 'components/assets/svg/exam/tick.svg';\nimport pausedIcon from 'components/assets/svg/exam/paused.svg';\n\nconst QuestionsMarks = ({ questions, chosenQuestion, onChooseQuestion }: IProps) => {\n const getMarkIcon = ({ isDone, isPaused }: IQuestionState) => {\n if (isDone) {\n return tickIcon;\n } if (isPaused) {\n return pausedIcon;\n }\n return '';\n };\n\n const renderQuestionMark = (question: IQuestionState, i: number) => {\n const markClassName = cx(\n styles.mark,\n { [styles.mark__selected]: question.id === chosenQuestion.id },\n { [styles.mark__paused]: question.isPaused },\n { [styles.mark__done]: question.isDone },\n );\n\n const chooseQuestion = () => {\n if (onChooseQuestion) {\n onChooseQuestion(question.id);\n }\n };\n\n return (\n \n );\n };\n\n return (\n
\n {questions.map(renderQuestionMark)}\n
\n );\n};\n\ninterface IProps {\n questions: IQuestionState[];\n chosenQuestion: IQuestionState;\n onChooseQuestion?: (id: IQuestionState['id']) => void;\n}\n\n\nexport default QuestionsMarks;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport arrowRight from 'components/assets/svg/exam/arrow-right.svg';\nimport styles from './QuestionsNavigation.module.scss';\n\nconst QuestionsNavigation = ({\n questionNumber, questionsLength, onPrev, onNext,\n}: QuestionsNavigationProps) => (\n
\n \n
\n Вопрос {questionNumber} из {questionsLength}\n
\n \n
\n );\n\ninterface QuestionsNavigationProps {\n questionNumber: number;\n questionsLength: number;\n onNext?: React.MouseEventHandler;\n onPrev?: React.MouseEventHandler;\n}\n\nexport default QuestionsNavigation;\n","import React, { FunctionComponent } from 'react';\nimport cx from 'classnames';\nimport { IProgress } from '../../redux/models/exam';\nimport styles from './QuestionsProgressBar.module.scss';\n\nconst QuestionsProgressBar: FunctionComponent = (props) => {\n const { progress } = props;\n if (progress.totalAmount === 0) return null;\n const percentOfDone = 100 * (progress.countOfDone / progress.totalAmount);\n return (\n
\n
\n
\n {progress.countOfDone}/{progress.totalAmount}\n
\n
\n прогресс\n
\n
\n \n \n \n \n
\n );\n};\n\ninterface QuestionsProgressBarProps {\n progress: IProgress;\n}\n\nexport default QuestionsProgressBar;\n","import React from 'react';\nimport styles from './TimeLeft.module.scss';\nimport { ProgressBar } from 'react-bootstrap';\nimport moment from 'moment';\nimport { ICurrentInterval } from '../../redux/models/exam';\n\nconst TimeLeft = ({ interval }: IProps) => (\n
\n
\n Осталось времени:\n
\n
\n {moment.utc(interval.timeLeft * 1000).format('HH:mm:ss')}\n
\n \n
\n);\n\ninterface IProps {\n interval: ICurrentInterval;\n}\n\nexport default TimeLeft;\n","/* tslint:disable */\n/* eslint-disable */\n//----------------------\n// \n// Generated using the NSwag toolchain v13.14.3.0 (NJsonSchema v10.5.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n// ReSharper disable InconsistentNaming\n\nimport moment from \"moment\";\n\nexport class ApiClientBase {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * Отправка кода верификации на телефон соискателя для сброса пароля.\n * @param body Данные для отправки кода на телефон.\n * @return OK\n */\n sendResetPasswordVerificationCode(body: SendVerificationCode): Promise {\n let url_ = this.baseUrl + \"/api/v1/account/send-reset-password-verification-code\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSendResetPasswordVerificationCode(_response);\n });\n }\n\n protected processSendResetPasswordVerificationCode(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = VerificationCodeSendingStatus.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430.\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Проверка кода верификации соискателя для сброса пароля.\n * @param body Данные для проверки.\n * @return Success\n */\n checkResetPasswordVerificationCode(body: CheckVerificationCode): Promise {\n let url_ = this.baseUrl + \"/api/v1/account/check-reset-password-verification-code\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCheckResetPasswordVerificationCode(_response);\n });\n }\n\n protected processCheckResetPasswordVerificationCode(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Сброс пароля существующего соискателя.\n * @param body Данные для сброса пароля.\n * @return OK\n */\n resetPassword(body: ResetPassword): Promise {\n let url_ = this.baseUrl + \"/api/v1/account/reset-password\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processResetPassword(_response);\n });\n }\n\n protected processResetPassword(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = AuthResult.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"\\u0423\\u043a\\u0430\\u0437\\u0430\\u043d \\u043d\\u0435\\u0432\\u0435\\u0440\\u043d\\u044b\\u0439 \\u043a\\u043e\\u0434 \\u0432\\u0435\\u0440\\u0438\\u0444\\u0438\\u043a\\u0430\\u0446\\u0438\\u0438.\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = ApiError.fromJS(resultData404);\n return throwException(\"\\u041d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d \\u0441\\u043e\\u0438\\u0441\\u043a\\u0430\\u0442\\u0435\\u043b\\u044c \\u0441 \\u0443\\u043a\\u0430\\u0437\\u0430\\u043d\\u043d\\u044b\\u043c \\u043d\\u043e\\u043c\\u0435\\u0440\\u043e\\u043c \\u0442\\u0435\\u043b\\u0435\\u0444\\u043e\\u043d\\u0430.\", status, _responseText, _headers, result404);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430.\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Вход соискателя.\n * @param body Данные для входа.\n * @return Соискатель успешно авторизован.\n */\n login(body: LoginApplicant): Promise {\n let url_ = this.baseUrl + \"/api/v1/account/login\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processLogin(_response);\n });\n }\n\n protected processLogin(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = AuthResult.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"\\u0423\\u043a\\u0430\\u0437\\u0430\\u043d \\u043d\\u0435\\u0432\\u0435\\u0440\\u043d\\u044b\\u0439 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442 \\u0434\\u0430\\u043d\\u043d\\u044b\\u0445.\", status, _responseText, _headers, result400);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n let result401: any = null;\n let resultData401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result401 = ApiError.fromJS(resultData401);\n return throwException(\"\\u0423\\u043a\\u0430\\u0437\\u0430\\u043d \\u043d\\u0435\\u0432\\u0435\\u0440\\u043d\\u044b\\u0439 \\u043b\\u043e\\u0433\\u0438\\u043d /\\u043f\\u0430\\u0440\\u043e\\u043b\\u044c.\", status, _responseText, _headers, result401);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430.\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Возвращает профиль авторизованного соискателя\n * @return Успешно.\n */\n profile(): Promise {\n let url_ = this.baseUrl + \"/api/v1/account/profile\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processProfile(_response);\n });\n }\n\n protected processProfile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = Applicant.fromJS(resultData200);\n return result200;\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430.\", status, _responseText, _headers, result500);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Вход соискателя в онлайн экзамен.\n * @param body Данные для входа.\n * @return Соискатель успешно авторизован.\n */\n loginToOnlineExam(body: LoginApplicantToOnlineExam): Promise {\n let url_ = this.baseUrl + \"/api/v1/account/login-to-online-exam\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processLoginToOnlineExam(_response);\n });\n }\n\n protected processLoginToOnlineExam(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = AuthResult.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"\\u0423\\u043a\\u0430\\u0437\\u0430\\u043d \\u043d\\u0435\\u0432\\u0435\\u0440\\u043d\\u044b\\u0439 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442 \\u0434\\u0430\\u043d\\u043d\\u044b\\u0445.\", status, _responseText, _headers, result400);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n let result401: any = null;\n let resultData401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result401 = ApiError.fromJS(resultData401);\n return throwException(\"\\u0423\\u043a\\u0430\\u0437\\u0430\\u043d \\u043d\\u0435\\u0432\\u0435\\u0440\\u043d\\u044b\\u0439 \\u043b\\u043e\\u0433\\u0438\\u043d /\\u043f\\u0430\\u0440\\u043e\\u043b\\u044c.\", status, _responseText, _headers, result401);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430.\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * @return Success\n */\n getCaptcha(): Promise {\n let url_ = this.baseUrl + \"/api/v1/captcha\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetCaptcha(_response);\n });\n }\n\n protected processGetCaptcha(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = ApiError.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Начать сдачу теоретической части экзамена.\n * @return Успешно.\n */\n start(): Promise {\n let url_ = this.baseUrl + \"/api/v1/exam-session/start\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStart(_response);\n });\n }\n\n protected processStart(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExamSession.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"\\u0423\\u043a\\u0430\\u0437\\u0430\\u043d \\u043d\\u0435\\u0432\\u0435\\u0440\\u043d\\u044b\\u0439 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442 \\u0434\\u0430\\u043d\\u043d\\u044b\\u0445.\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430.\", status, _responseText, _headers, result500);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * @return Success\n */\n saveTheoreticalQuestionsAnswers(body: SaveTheoreticalQuestionsAnswers): Promise {\n let url_ = this.baseUrl + \"/api/v1/exam-session/save-theoretical-questions-answers\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSaveTheoreticalQuestionsAnswers(_response);\n });\n }\n\n protected processSaveTheoreticalQuestionsAnswers(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * @return Success\n */\n finishTheory(body: FinishTheoreticalExamSession): Promise {\n let url_ = this.baseUrl + \"/api/v1/exam-session/finish-theory\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processFinishTheory(_response);\n });\n }\n\n protected processFinishTheory(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Начать сдачу практической части экзамена.\n * @return Успешно.\n */\n startPractice(body: StartExamSessionPractice): Promise {\n let url_ = this.baseUrl + \"/api/v1/exam-session/start-practice\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStartPractice(_response);\n });\n }\n\n protected processStartPractice(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExamSession.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"\\u0423\\u043a\\u0430\\u0437\\u0430\\u043d \\u043d\\u0435\\u0432\\u0435\\u0440\\u043d\\u044b\\u0439 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442 \\u0434\\u0430\\u043d\\u043d\\u044b\\u0445.\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430.\", status, _responseText, _headers, result500);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * @return Success\n */\n savePracticalQuestionsAnswers(body: SavePracticalQuestionsAnswers): Promise {\n let url_ = this.baseUrl + \"/api/v1/exam-session/save-practical-questions-answers\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSavePracticalQuestionsAnswers(_response);\n });\n }\n\n protected processSavePracticalQuestionsAnswers(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * @return Success\n */\n finish(body: FinishExamSession): Promise {\n let url_ = this.baseUrl + \"/api/v1/exam-session/finish\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processFinish(_response);\n });\n }\n\n protected processFinish(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Возвращает текущий экзамен\n * @return Успешно.\n */\n getCurrent(): Promise {\n let url_ = this.baseUrl + \"/api/v1/exam-session\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetCurrent(_response);\n });\n }\n\n protected processGetCurrent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExamSession.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430.\", status, _responseText, _headers, result500);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Возвращает текущий статус экзамена\n * @return Успешно.\n */\n getStatus(): Promise {\n let url_ = this.baseUrl + \"/api/v1/exam-session/status\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetStatus(_response);\n });\n }\n\n protected processGetStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExamSessionReadyStatus.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430.\", status, _responseText, _headers, result500);\n });\n } else if (status === 401) {\n return response.text().then((_responseText) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Устанавливает фэйковое тестовое время, только для сценариев тестирования,\n в других случаях установка времени игнорируется\n * @param body (optional) \n * @return Success\n */\n setTime(body: TimeBody | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/set-time\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSetTime(_response);\n });\n }\n\n protected processSetTime(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Очищает тестове хранилище капчи, только для сценариев тестирования,\n в других случаях действие игнорируется\n * @return Success\n */\n clearCaptcha(): Promise {\n let url_ = this.baseUrl + \"/api/v1/clear-captcha-store\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processClearCaptcha(_response);\n });\n }\n\n protected processClearCaptcha(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Обнуляет БД и инициализирует тестовые данные, только для сценариев тестирования и разработки,\n в других случаях действие игнорируется\n * @return Success\n */\n reinitDbWithTestData(): Promise {\n let url_ = this.baseUrl + \"/api/v1/reinit-db-with-test-data\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReinitDbWithTestData(_response);\n });\n }\n\n protected processReinitDbWithTestData(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n\n /**\n * Запускает цикл планировщика задач, только для сценариев тестирования,\n в других случаях действие игнорируется\n * @return Success\n */\n runScheduleLoop(): Promise {\n let url_ = this.baseUrl + \"/api/v1/run-schedule-loop\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRunScheduleLoop(_response);\n });\n }\n\n protected processRunScheduleLoop(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ApiError.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = ApiError.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null);\n }\n}\n\nexport class AnswerPair implements IAnswerPair {\n /** Номер вопроса */\n number!: number;\n /** Номер соответствующего вопроса,\nзаполняется только в случае типов: Matching, Ordering */\n matchingNumber?: number;\n\n constructor(data?: IAnswerPair) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.number = _data[\"number\"];\n this.matchingNumber = _data[\"matchingNumber\"];\n }\n }\n\n static fromJS(data: any): AnswerPair {\n data = typeof data === 'object' ? data : {};\n let result = new AnswerPair();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"number\"] = this.number;\n data[\"matchingNumber\"] = this.matchingNumber;\n return data; \n }\n}\n\nexport interface IAnswerPair {\n /** Номер вопроса */\n number: number;\n /** Номер соответствующего вопроса,\nзаполняется только в случае типов: Matching, Ordering */\n matchingNumber?: number;\n}\n\nexport class ApiError implements IApiError {\n code!: number;\n type!: AppExceptionType;\n message!: string;\n failures?: { [key: string]: string[]; } | undefined;\n\n constructor(data?: IApiError) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.code = _data[\"code\"];\n this.type = _data[\"type\"];\n this.message = _data[\"message\"];\n if (_data[\"failures\"]) {\n this.failures = {} as any;\n for (let key in _data[\"failures\"]) {\n if (_data[\"failures\"].hasOwnProperty(key))\n (this.failures)![key] = _data[\"failures\"][key] !== undefined ? _data[\"failures\"][key] : [];\n }\n }\n }\n }\n\n static fromJS(data: any): ApiError {\n data = typeof data === 'object' ? data : {};\n let result = new ApiError();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"code\"] = this.code;\n data[\"type\"] = this.type;\n data[\"message\"] = this.message;\n if (this.failures) {\n data[\"failures\"] = {};\n for (let key in this.failures) {\n if (this.failures.hasOwnProperty(key))\n (data[\"failures\"])[key] = this.failures[key];\n }\n }\n return data; \n }\n}\n\nexport interface IApiError {\n code: number;\n type: AppExceptionType;\n message: string;\n failures?: { [key: string]: string[]; } | undefined;\n}\n\nexport enum AppExceptionType {\n Unspecified = \"unspecified\",\n Validation = \"validation\",\n NotFound = \"notFound\",\n AlreadyExists = \"alreadyExists\",\n WrongVerificationCode = \"wrongVerificationCode\",\n TooManyRequests = \"tooManyRequests\",\n WrongCredentials = \"wrongCredentials\",\n AuthUserNotFound = \"authUserNotFound\",\n Forbidden = \"forbidden\",\n Captcha = \"captcha\",\n WrongIp = \"wrongIp\",\n}\n\nexport class Applicant implements IApplicant {\n id!: string;\n /** Имя */\n firstName!: string;\n /** Фамилия */\n lastName!: string;\n /** Отчество */\n middleName?: string | undefined;\n sex!: Sex;\n birthDate!: moment.Moment;\n email!: string;\n emailConfirmed!: boolean;\n phone!: string;\n isExpert!: boolean;\n\n constructor(data?: IApplicant) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.middleName = _data[\"middleName\"];\n this.sex = _data[\"sex\"];\n this.birthDate = _data[\"birthDate\"] ? moment(_data[\"birthDate\"].toString()) : undefined;\n this.email = _data[\"email\"];\n this.emailConfirmed = _data[\"emailConfirmed\"];\n this.phone = _data[\"phone\"];\n this.isExpert = _data[\"isExpert\"];\n }\n }\n\n static fromJS(data: any): Applicant {\n data = typeof data === 'object' ? data : {};\n let result = new Applicant();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"middleName\"] = this.middleName;\n data[\"sex\"] = this.sex;\n data[\"birthDate\"] = this.birthDate ? this.birthDate.toISOString() : undefined;\n data[\"email\"] = this.email;\n data[\"emailConfirmed\"] = this.emailConfirmed;\n data[\"phone\"] = this.phone;\n data[\"isExpert\"] = this.isExpert;\n return data; \n }\n}\n\nexport interface IApplicant {\n id: string;\n /** Имя */\n firstName: string;\n /** Фамилия */\n lastName: string;\n /** Отчество */\n middleName?: string | undefined;\n sex: Sex;\n birthDate: moment.Moment;\n email: string;\n emailConfirmed: boolean;\n phone: string;\n isExpert: boolean;\n}\n\nexport class AuthResult implements IAuthResult {\n profile!: Applicant;\n token!: string;\n\n constructor(data?: IAuthResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.profile = new Applicant();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.profile = _data[\"profile\"] ? Applicant.fromJS(_data[\"profile\"]) : new Applicant();\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): AuthResult {\n data = typeof data === 'object' ? data : {};\n let result = new AuthResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"profile\"] = this.profile ? this.profile.toJSON() : undefined;\n data[\"token\"] = this.token;\n return data; \n }\n}\n\nexport interface IAuthResult {\n profile: Applicant;\n token: string;\n}\n\nexport class CheckVerificationCode implements ICheckVerificationCode {\n captcha?: string | undefined;\n phone!: string;\n verificationCode!: string;\n\n constructor(data?: ICheckVerificationCode) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.captcha = _data[\"captcha\"];\n this.phone = _data[\"phone\"];\n this.verificationCode = _data[\"verificationCode\"];\n }\n }\n\n static fromJS(data: any): CheckVerificationCode {\n data = typeof data === 'object' ? data : {};\n let result = new CheckVerificationCode();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"captcha\"] = this.captcha;\n data[\"phone\"] = this.phone;\n data[\"verificationCode\"] = this.verificationCode;\n return data; \n }\n}\n\nexport interface ICheckVerificationCode {\n captcha?: string | undefined;\n phone: string;\n verificationCode: string;\n}\n\nexport class Column implements IColumn {\n header!: string;\n width!: number;\n readonly!: boolean;\n numeric!: boolean;\n key!: boolean;\n multiline!: boolean;\n\n constructor(data?: IColumn) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.header = _data[\"header\"];\n this.width = _data[\"width\"];\n this.readonly = _data[\"readonly\"];\n this.numeric = _data[\"numeric\"];\n this.key = _data[\"key\"];\n this.multiline = _data[\"multiline\"];\n }\n }\n\n static fromJS(data: any): Column {\n data = typeof data === 'object' ? data : {};\n let result = new Column();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"header\"] = this.header;\n data[\"width\"] = this.width;\n data[\"readonly\"] = this.readonly;\n data[\"numeric\"] = this.numeric;\n data[\"key\"] = this.key;\n data[\"multiline\"] = this.multiline;\n return data; \n }\n}\n\nexport interface IColumn {\n header: string;\n width: number;\n readonly: boolean;\n numeric: boolean;\n key: boolean;\n multiline: boolean;\n}\n\nexport enum ExamApplicationStatus {\n Draft = \"draft\",\n InReview = \"inReview\",\n CorrectionsRequired = \"correctionsRequired\",\n PaymentRequired = \"paymentRequired\",\n Canceled = \"canceled\",\n Paid = \"paid\",\n AdmittedToExam = \"admittedToExam\",\n IsPassing = \"isPassing\",\n Absent = \"absent\",\n NotPassed = \"notPassed\",\n Passed = \"passed\",\n}\n\nexport class ExamSession implements IExamSession {\n id!: string;\n examId!: string;\n qualificationTitle!: string;\n examStartTime!: moment.Moment;\n startTime!: moment.Moment;\n readonly theoryFinishTime?: moment.Moment | undefined;\n readonly practiceStartTime?: moment.Moment | undefined;\n isPassedTheory!: boolean;\n theoreticalPartDuration!: number;\n timeoutDuration!: number;\n practicalPartDuration!: number;\n status!: ExamSessionReadyStatuses;\n theoreticalQuestions!: TheoreticalQuestion[];\n practicalQuestions?: PracticalQuestion[] | undefined;\n theoreticalQuestionsAnswers?: TheoreticalQuestionAnswer[] | undefined;\n practicalQuestionsAnswers?: PracticalQuestionAnswer[] | undefined;\n\n constructor(data?: IExamSession) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.theoreticalQuestions = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.examId = _data[\"examId\"];\n this.qualificationTitle = _data[\"qualificationTitle\"];\n this.examStartTime = _data[\"examStartTime\"] ? moment(_data[\"examStartTime\"].toString()) : undefined;\n this.startTime = _data[\"startTime\"] ? moment(_data[\"startTime\"].toString()) : undefined;\n (this).theoryFinishTime = _data[\"theoryFinishTime\"] ? moment(_data[\"theoryFinishTime\"].toString()) : undefined;\n (this).practiceStartTime = _data[\"practiceStartTime\"] ? moment(_data[\"practiceStartTime\"].toString()) : undefined;\n this.isPassedTheory = _data[\"isPassedTheory\"];\n this.theoreticalPartDuration = _data[\"theoreticalPartDuration\"];\n this.timeoutDuration = _data[\"timeoutDuration\"];\n this.practicalPartDuration = _data[\"practicalPartDuration\"];\n this.status = _data[\"status\"];\n if (Array.isArray(_data[\"theoreticalQuestions\"])) {\n this.theoreticalQuestions = [] as any;\n for (let item of _data[\"theoreticalQuestions\"])\n this.theoreticalQuestions!.push(TheoreticalQuestion.fromJS(item));\n }\n if (Array.isArray(_data[\"practicalQuestions\"])) {\n this.practicalQuestions = [] as any;\n for (let item of _data[\"practicalQuestions\"])\n this.practicalQuestions!.push(PracticalQuestion.fromJS(item));\n }\n if (Array.isArray(_data[\"theoreticalQuestionsAnswers\"])) {\n this.theoreticalQuestionsAnswers = [] as any;\n for (let item of _data[\"theoreticalQuestionsAnswers\"])\n this.theoreticalQuestionsAnswers!.push(TheoreticalQuestionAnswer.fromJS(item));\n }\n if (Array.isArray(_data[\"practicalQuestionsAnswers\"])) {\n this.practicalQuestionsAnswers = [] as any;\n for (let item of _data[\"practicalQuestionsAnswers\"])\n this.practicalQuestionsAnswers!.push(PracticalQuestionAnswer.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ExamSession {\n data = typeof data === 'object' ? data : {};\n let result = new ExamSession();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"examId\"] = this.examId;\n data[\"qualificationTitle\"] = this.qualificationTitle;\n data[\"examStartTime\"] = this.examStartTime ? this.examStartTime.toISOString() : undefined;\n data[\"startTime\"] = this.startTime ? this.startTime.toISOString() : undefined;\n data[\"theoryFinishTime\"] = this.theoryFinishTime ? this.theoryFinishTime.toISOString() : undefined;\n data[\"practiceStartTime\"] = this.practiceStartTime ? this.practiceStartTime.toISOString() : undefined;\n data[\"isPassedTheory\"] = this.isPassedTheory;\n data[\"theoreticalPartDuration\"] = this.theoreticalPartDuration;\n data[\"timeoutDuration\"] = this.timeoutDuration;\n data[\"practicalPartDuration\"] = this.practicalPartDuration;\n data[\"status\"] = this.status;\n if (Array.isArray(this.theoreticalQuestions)) {\n data[\"theoreticalQuestions\"] = [];\n for (let item of this.theoreticalQuestions)\n data[\"theoreticalQuestions\"].push(item.toJSON());\n }\n if (Array.isArray(this.practicalQuestions)) {\n data[\"practicalQuestions\"] = [];\n for (let item of this.practicalQuestions)\n data[\"practicalQuestions\"].push(item.toJSON());\n }\n if (Array.isArray(this.theoreticalQuestionsAnswers)) {\n data[\"theoreticalQuestionsAnswers\"] = [];\n for (let item of this.theoreticalQuestionsAnswers)\n data[\"theoreticalQuestionsAnswers\"].push(item.toJSON());\n }\n if (Array.isArray(this.practicalQuestionsAnswers)) {\n data[\"practicalQuestionsAnswers\"] = [];\n for (let item of this.practicalQuestionsAnswers)\n data[\"practicalQuestionsAnswers\"].push(item.toJSON());\n }\n return data; \n }\n}\n\nexport interface IExamSession {\n id: string;\n examId: string;\n qualificationTitle: string;\n examStartTime: moment.Moment;\n startTime: moment.Moment;\n theoryFinishTime?: moment.Moment | undefined;\n practiceStartTime?: moment.Moment | undefined;\n isPassedTheory: boolean;\n theoreticalPartDuration: number;\n timeoutDuration: number;\n practicalPartDuration: number;\n status: ExamSessionReadyStatuses;\n theoreticalQuestions: TheoreticalQuestion[];\n practicalQuestions?: PracticalQuestion[] | undefined;\n theoreticalQuestionsAnswers?: TheoreticalQuestionAnswer[] | undefined;\n practicalQuestionsAnswers?: PracticalQuestionAnswer[] | undefined;\n}\n\n/** Статус экзамена */\nexport class ExamSessionReadyStatus implements IExamSessionReadyStatus {\n status!: ExamSessionReadyStatuses;\n /** Предполагаемое/фактическое время начала экзамена в зависимости от статуса */\n readonly startTime!: moment.Moment;\n /** Тип экзамена Онлайн */\n readonly online!: boolean;\n examApplicationStatus?: ExamApplicationStatus;\n\n constructor(data?: IExamSessionReadyStatus) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.status = _data[\"status\"];\n (this).startTime = _data[\"startTime\"] ? moment(_data[\"startTime\"].toString()) : undefined;\n (this).online = _data[\"online\"];\n this.examApplicationStatus = _data[\"examApplicationStatus\"];\n }\n }\n\n static fromJS(data: any): ExamSessionReadyStatus {\n data = typeof data === 'object' ? data : {};\n let result = new ExamSessionReadyStatus();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"status\"] = this.status;\n data[\"startTime\"] = this.startTime ? this.startTime.toISOString() : undefined;\n data[\"online\"] = this.online;\n data[\"examApplicationStatus\"] = this.examApplicationStatus;\n return data; \n }\n}\n\n/** Статус экзамена */\nexport interface IExamSessionReadyStatus {\n status: ExamSessionReadyStatuses;\n /** Предполагаемое/фактическое время начала экзамена в зависимости от статуса */\n startTime: moment.Moment;\n /** Тип экзамена Онлайн */\n online: boolean;\n examApplicationStatus?: ExamApplicationStatus;\n}\n\nexport enum ExamSessionReadyStatuses {\n WaitingForStart = \"waitingForStart\",\n ExamIsPassing = \"examIsPassing\",\n TheoreticalExamIsPassingAndSessionStarted = \"theoreticalExamIsPassingAndSessionStarted\",\n ExamSessionTimeout = \"examSessionTimeout\",\n PracticalExamIsPassingAndSessionStarted = \"practicalExamIsPassingAndSessionStarted\",\n ExamFinished = \"examFinished\",\n SessionFinished = \"sessionFinished\",\n}\n\nexport class FinishExamSession implements IFinishExamSession {\n examSessionId!: string;\n practicalAnswers!: PracticalQuestionAnswer[];\n /** Команда была вызвана пользователем */\n manual?: boolean;\n\n constructor(data?: IFinishExamSession) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.practicalAnswers = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.examSessionId = _data[\"examSessionId\"];\n if (Array.isArray(_data[\"practicalAnswers\"])) {\n this.practicalAnswers = [] as any;\n for (let item of _data[\"practicalAnswers\"])\n this.practicalAnswers!.push(PracticalQuestionAnswer.fromJS(item));\n }\n this.manual = _data[\"manual\"];\n }\n }\n\n static fromJS(data: any): FinishExamSession {\n data = typeof data === 'object' ? data : {};\n let result = new FinishExamSession();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"examSessionId\"] = this.examSessionId;\n if (Array.isArray(this.practicalAnswers)) {\n data[\"practicalAnswers\"] = [];\n for (let item of this.practicalAnswers)\n data[\"practicalAnswers\"].push(item.toJSON());\n }\n data[\"manual\"] = this.manual;\n return data; \n }\n}\n\nexport interface IFinishExamSession {\n examSessionId: string;\n practicalAnswers: PracticalQuestionAnswer[];\n /** Команда была вызвана пользователем */\n manual?: boolean;\n}\n\nexport class FinishTheoreticalExamSession implements IFinishTheoreticalExamSession {\n examSessionId!: string;\n theoreticalAnswers!: TheoreticalQuestionAnswer[];\n /** Команда была вызвана пользователем */\n manual?: boolean;\n\n constructor(data?: IFinishTheoreticalExamSession) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.theoreticalAnswers = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.examSessionId = _data[\"examSessionId\"];\n if (Array.isArray(_data[\"theoreticalAnswers\"])) {\n this.theoreticalAnswers = [] as any;\n for (let item of _data[\"theoreticalAnswers\"])\n this.theoreticalAnswers!.push(TheoreticalQuestionAnswer.fromJS(item));\n }\n this.manual = _data[\"manual\"];\n }\n }\n\n static fromJS(data: any): FinishTheoreticalExamSession {\n data = typeof data === 'object' ? data : {};\n let result = new FinishTheoreticalExamSession();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"examSessionId\"] = this.examSessionId;\n if (Array.isArray(this.theoreticalAnswers)) {\n data[\"theoreticalAnswers\"] = [];\n for (let item of this.theoreticalAnswers)\n data[\"theoreticalAnswers\"].push(item.toJSON());\n }\n data[\"manual\"] = this.manual;\n return data; \n }\n}\n\nexport interface IFinishTheoreticalExamSession {\n examSessionId: string;\n theoreticalAnswers: TheoreticalQuestionAnswer[];\n /** Команда была вызвана пользователем */\n manual?: boolean;\n}\n\nexport class LoginApplicant implements ILoginApplicant {\n captcha?: string | undefined;\n phone!: string;\n password!: string;\n\n constructor(data?: ILoginApplicant) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.captcha = _data[\"captcha\"];\n this.phone = _data[\"phone\"];\n this.password = _data[\"password\"];\n }\n }\n\n static fromJS(data: any): LoginApplicant {\n data = typeof data === 'object' ? data : {};\n let result = new LoginApplicant();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"captcha\"] = this.captcha;\n data[\"phone\"] = this.phone;\n data[\"password\"] = this.password;\n return data; \n }\n}\n\nexport interface ILoginApplicant {\n captcha?: string | undefined;\n phone: string;\n password: string;\n}\n\nexport class LoginApplicantToOnlineExam implements ILoginApplicantToOnlineExam {\n token!: string;\n\n constructor(data?: ILoginApplicantToOnlineExam) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): LoginApplicantToOnlineExam {\n data = typeof data === 'object' ? data : {};\n let result = new LoginApplicantToOnlineExam();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"token\"] = this.token;\n return data; \n }\n}\n\nexport interface ILoginApplicantToOnlineExam {\n token: string;\n}\n\nexport class PracticalQuestion implements IPracticalQuestion {\n /** Id вопроса */\n id!: string;\n /** Текст вопроса, в виде HTML */\n text!: string;\n type!: PracticalQuestionType;\n /** Таблицы для табличного вопроса */\n tabularQuestionTables?: Table[] | undefined;\n\n constructor(data?: IPracticalQuestion) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.text = _data[\"text\"];\n this.type = _data[\"type\"];\n if (Array.isArray(_data[\"tabularQuestionTables\"])) {\n this.tabularQuestionTables = [] as any;\n for (let item of _data[\"tabularQuestionTables\"])\n this.tabularQuestionTables!.push(Table.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PracticalQuestion {\n data = typeof data === 'object' ? data : {};\n let result = new PracticalQuestion();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"text\"] = this.text;\n data[\"type\"] = this.type;\n if (Array.isArray(this.tabularQuestionTables)) {\n data[\"tabularQuestionTables\"] = [];\n for (let item of this.tabularQuestionTables)\n data[\"tabularQuestionTables\"].push(item.toJSON());\n }\n return data; \n }\n}\n\nexport interface IPracticalQuestion {\n /** Id вопроса */\n id: string;\n /** Текст вопроса, в виде HTML */\n text: string;\n type: PracticalQuestionType;\n /** Таблицы для табличного вопроса */\n tabularQuestionTables?: Table[] | undefined;\n}\n\nexport class PracticalQuestionAnswer implements IPracticalQuestionAnswer {\n /** Id вопроса */\n questionId!: string;\n /** Признак окончания работы соискателя над вопросом.\nДанное поле носит информационный характер и не влияет на оценку вопроса.\nЕсли данная информация не известна ему можно присвоить значение false */\n isDone!: boolean;\n /** Поле ответа на вопрос типа OpenAnswer или Essay, заполняется только в этих случаях */\n answer?: string | undefined;\n /** Поле ответа на вопрос типа ManualCheckTabular или AutoCheckTabular, заполняется только в этих случаях */\n tabularAnswers?: TabularApplicantAnswer[] | undefined;\n\n constructor(data?: IPracticalQuestionAnswer) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.questionId = _data[\"questionId\"];\n this.isDone = _data[\"isDone\"];\n this.answer = _data[\"answer\"];\n if (Array.isArray(_data[\"tabularAnswers\"])) {\n this.tabularAnswers = [] as any;\n for (let item of _data[\"tabularAnswers\"])\n this.tabularAnswers!.push(TabularApplicantAnswer.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PracticalQuestionAnswer {\n data = typeof data === 'object' ? data : {};\n let result = new PracticalQuestionAnswer();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"questionId\"] = this.questionId;\n data[\"isDone\"] = this.isDone;\n data[\"answer\"] = this.answer;\n if (Array.isArray(this.tabularAnswers)) {\n data[\"tabularAnswers\"] = [];\n for (let item of this.tabularAnswers)\n data[\"tabularAnswers\"].push(item.toJSON());\n }\n return data; \n }\n}\n\nexport interface IPracticalQuestionAnswer {\n /** Id вопроса */\n questionId: string;\n /** Признак окончания работы соискателя над вопросом.\nДанное поле носит информационный характер и не влияет на оценку вопроса.\nЕсли данная информация не известна ему можно присвоить значение false */\n isDone: boolean;\n /** Поле ответа на вопрос типа OpenAnswer или Essay, заполняется только в этих случаях */\n answer?: string | undefined;\n /** Поле ответа на вопрос типа ManualCheckTabular или AutoCheckTabular, заполняется только в этих случаях */\n tabularAnswers?: TabularApplicantAnswer[] | undefined;\n}\n\nexport enum PracticalQuestionType {\n OpenAnswer = \"openAnswer\",\n Essay = \"essay\",\n ManualCheckTabular = \"manualCheckTabular\",\n AutoCheckTabular = \"autoCheckTabular\",\n Offline = \"offline\",\n}\n\nexport class ResetPassword implements IResetPassword {\n captcha?: string | undefined;\n /** Код верификации */\n verificationCode!: string;\n /** Номер телефона соискателя */\n phone!: string;\n /** Новый пароль */\n newPassword!: string;\n\n constructor(data?: IResetPassword) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.captcha = _data[\"captcha\"];\n this.verificationCode = _data[\"verificationCode\"];\n this.phone = _data[\"phone\"];\n this.newPassword = _data[\"newPassword\"];\n }\n }\n\n static fromJS(data: any): ResetPassword {\n data = typeof data === 'object' ? data : {};\n let result = new ResetPassword();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"captcha\"] = this.captcha;\n data[\"verificationCode\"] = this.verificationCode;\n data[\"phone\"] = this.phone;\n data[\"newPassword\"] = this.newPassword;\n return data; \n }\n}\n\nexport interface IResetPassword {\n captcha?: string | undefined;\n /** Код верификации */\n verificationCode: string;\n /** Номер телефона соискателя */\n phone: string;\n /** Новый пароль */\n newPassword: string;\n}\n\nexport class SavePracticalQuestionsAnswers implements ISavePracticalQuestionsAnswers {\n examSessionId!: string;\n practicalAnswers!: PracticalQuestionAnswer[];\n\n constructor(data?: ISavePracticalQuestionsAnswers) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.practicalAnswers = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.examSessionId = _data[\"examSessionId\"];\n if (Array.isArray(_data[\"practicalAnswers\"])) {\n this.practicalAnswers = [] as any;\n for (let item of _data[\"practicalAnswers\"])\n this.practicalAnswers!.push(PracticalQuestionAnswer.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SavePracticalQuestionsAnswers {\n data = typeof data === 'object' ? data : {};\n let result = new SavePracticalQuestionsAnswers();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"examSessionId\"] = this.examSessionId;\n if (Array.isArray(this.practicalAnswers)) {\n data[\"practicalAnswers\"] = [];\n for (let item of this.practicalAnswers)\n data[\"practicalAnswers\"].push(item.toJSON());\n }\n return data; \n }\n}\n\nexport interface ISavePracticalQuestionsAnswers {\n examSessionId: string;\n practicalAnswers: PracticalQuestionAnswer[];\n}\n\nexport class SaveTheoreticalQuestionsAnswers implements ISaveTheoreticalQuestionsAnswers {\n examSessionId!: string;\n theoreticalAnswers!: TheoreticalQuestionAnswer[];\n\n constructor(data?: ISaveTheoreticalQuestionsAnswers) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.theoreticalAnswers = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.examSessionId = _data[\"examSessionId\"];\n if (Array.isArray(_data[\"theoreticalAnswers\"])) {\n this.theoreticalAnswers = [] as any;\n for (let item of _data[\"theoreticalAnswers\"])\n this.theoreticalAnswers!.push(TheoreticalQuestionAnswer.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SaveTheoreticalQuestionsAnswers {\n data = typeof data === 'object' ? data : {};\n let result = new SaveTheoreticalQuestionsAnswers();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"examSessionId\"] = this.examSessionId;\n if (Array.isArray(this.theoreticalAnswers)) {\n data[\"theoreticalAnswers\"] = [];\n for (let item of this.theoreticalAnswers)\n data[\"theoreticalAnswers\"].push(item.toJSON());\n }\n return data; \n }\n}\n\nexport interface ISaveTheoreticalQuestionsAnswers {\n examSessionId: string;\n theoreticalAnswers: TheoreticalQuestionAnswer[];\n}\n\nexport class SendVerificationCode implements ISendVerificationCode {\n captcha?: string | undefined;\n /** Телефон соискателя */\n phone!: string;\n\n constructor(data?: ISendVerificationCode) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.captcha = _data[\"captcha\"];\n this.phone = _data[\"phone\"];\n }\n }\n\n static fromJS(data: any): SendVerificationCode {\n data = typeof data === 'object' ? data : {};\n let result = new SendVerificationCode();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"captcha\"] = this.captcha;\n data[\"phone\"] = this.phone;\n return data; \n }\n}\n\nexport interface ISendVerificationCode {\n captcha?: string | undefined;\n /** Телефон соискателя */\n phone: string;\n}\n\nexport enum Sex {\n Male = \"male\",\n Female = \"female\",\n}\n\nexport class StartExamSessionPractice implements IStartExamSessionPractice {\n examSessionId!: string;\n /** Команда была вызвана пользователем */\n manual?: boolean;\n\n constructor(data?: IStartExamSessionPractice) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.examSessionId = _data[\"examSessionId\"];\n this.manual = _data[\"manual\"];\n }\n }\n\n static fromJS(data: any): StartExamSessionPractice {\n data = typeof data === 'object' ? data : {};\n let result = new StartExamSessionPractice();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"examSessionId\"] = this.examSessionId;\n data[\"manual\"] = this.manual;\n return data; \n }\n}\n\nexport interface IStartExamSessionPractice {\n examSessionId: string;\n /** Команда была вызвана пользователем */\n manual?: boolean;\n}\n\nexport class Table implements ITable {\n caption?: string | undefined;\n columns!: Column[];\n exactEquality!: boolean;\n forbidMoving!: boolean;\n initialRows!: string[][];\n answerRows?: string[][] | undefined;\n\n constructor(data?: ITable) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.columns = [];\n this.initialRows = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.caption = _data[\"caption\"];\n if (Array.isArray(_data[\"columns\"])) {\n this.columns = [] as any;\n for (let item of _data[\"columns\"])\n this.columns!.push(Column.fromJS(item));\n }\n this.exactEquality = _data[\"exactEquality\"];\n this.forbidMoving = _data[\"forbidMoving\"];\n if (Array.isArray(_data[\"initialRows\"])) {\n this.initialRows = [] as any;\n for (let item of _data[\"initialRows\"])\n this.initialRows!.push(item);\n }\n if (Array.isArray(_data[\"answerRows\"])) {\n this.answerRows = [] as any;\n for (let item of _data[\"answerRows\"])\n this.answerRows!.push(item);\n }\n }\n }\n\n static fromJS(data: any): Table {\n data = typeof data === 'object' ? data : {};\n let result = new Table();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"caption\"] = this.caption;\n if (Array.isArray(this.columns)) {\n data[\"columns\"] = [];\n for (let item of this.columns)\n data[\"columns\"].push(item.toJSON());\n }\n data[\"exactEquality\"] = this.exactEquality;\n data[\"forbidMoving\"] = this.forbidMoving;\n if (Array.isArray(this.initialRows)) {\n data[\"initialRows\"] = [];\n for (let item of this.initialRows)\n data[\"initialRows\"].push(item);\n }\n if (Array.isArray(this.answerRows)) {\n data[\"answerRows\"] = [];\n for (let item of this.answerRows)\n data[\"answerRows\"].push(item);\n }\n return data; \n }\n}\n\nexport interface ITable {\n caption?: string | undefined;\n columns: Column[];\n exactEquality: boolean;\n forbidMoving: boolean;\n initialRows: string[][];\n answerRows?: string[][] | undefined;\n}\n\nexport class TabularApplicantAnswer implements ITabularApplicantAnswer {\n rows!: string[][];\n\n constructor(data?: ITabularApplicantAnswer) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.rows = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"rows\"])) {\n this.rows = [] as any;\n for (let item of _data[\"rows\"])\n this.rows!.push(item);\n }\n }\n }\n\n static fromJS(data: any): TabularApplicantAnswer {\n data = typeof data === 'object' ? data : {};\n let result = new TabularApplicantAnswer();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.rows)) {\n data[\"rows\"] = [];\n for (let item of this.rows)\n data[\"rows\"].push(item);\n }\n return data; \n }\n}\n\nexport interface ITabularApplicantAnswer {\n rows: string[][];\n}\n\nexport class TheoreticalAnswer implements ITheoreticalAnswer {\n number!: number;\n text!: string;\n\n constructor(data?: ITheoreticalAnswer) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.number = _data[\"number\"];\n this.text = _data[\"text\"];\n }\n }\n\n static fromJS(data: any): TheoreticalAnswer {\n data = typeof data === 'object' ? data : {};\n let result = new TheoreticalAnswer();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"number\"] = this.number;\n data[\"text\"] = this.text;\n return data; \n }\n}\n\nexport interface ITheoreticalAnswer {\n number: number;\n text: string;\n}\n\nexport class TheoreticalQuestion implements ITheoreticalQuestion {\n /** Id вопроса */\n id!: string;\n /** Текст вопроса, в виде HTML */\n text!: string;\n type!: TheoreticalQuestionType;\n /** Варианты ответов на вопрос */\n answers!: TheoreticalAnswer[];\n /** Варианты ответов для вопросов на сопоставление или с последовательностью */\n matchingAnswers?: TheoreticalAnswer[] | undefined;\n /** Заголовок над вариантами ответов, для вопросов на сопоставление или с последовательностью */\n answersHeader?: string | undefined;\n /** Заголовок над вариантами ответов, для вопросов на сопоставление или с последовательностью */\n matchingAnswersHeader?: string | undefined;\n\n constructor(data?: ITheoreticalQuestion) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.answers = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.text = _data[\"text\"];\n this.type = _data[\"type\"];\n if (Array.isArray(_data[\"answers\"])) {\n this.answers = [] as any;\n for (let item of _data[\"answers\"])\n this.answers!.push(TheoreticalAnswer.fromJS(item));\n }\n if (Array.isArray(_data[\"matchingAnswers\"])) {\n this.matchingAnswers = [] as any;\n for (let item of _data[\"matchingAnswers\"])\n this.matchingAnswers!.push(TheoreticalAnswer.fromJS(item));\n }\n this.answersHeader = _data[\"answersHeader\"];\n this.matchingAnswersHeader = _data[\"matchingAnswersHeader\"];\n }\n }\n\n static fromJS(data: any): TheoreticalQuestion {\n data = typeof data === 'object' ? data : {};\n let result = new TheoreticalQuestion();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"text\"] = this.text;\n data[\"type\"] = this.type;\n if (Array.isArray(this.answers)) {\n data[\"answers\"] = [];\n for (let item of this.answers)\n data[\"answers\"].push(item.toJSON());\n }\n if (Array.isArray(this.matchingAnswers)) {\n data[\"matchingAnswers\"] = [];\n for (let item of this.matchingAnswers)\n data[\"matchingAnswers\"].push(item.toJSON());\n }\n data[\"answersHeader\"] = this.answersHeader;\n data[\"matchingAnswersHeader\"] = this.matchingAnswersHeader;\n return data; \n }\n}\n\nexport interface ITheoreticalQuestion {\n /** Id вопроса */\n id: string;\n /** Текст вопроса, в виде HTML */\n text: string;\n type: TheoreticalQuestionType;\n /** Варианты ответов на вопрос */\n answers: TheoreticalAnswer[];\n /** Варианты ответов для вопросов на сопоставление или с последовательностью */\n matchingAnswers?: TheoreticalAnswer[] | undefined;\n /** Заголовок над вариантами ответов, для вопросов на сопоставление или с последовательностью */\n answersHeader?: string | undefined;\n /** Заголовок над вариантами ответов, для вопросов на сопоставление или с последовательностью */\n matchingAnswersHeader?: string | undefined;\n}\n\nexport class TheoreticalQuestionAnswer implements ITheoreticalQuestionAnswer {\n /** Id вопроса */\n questionId!: string;\n /** Признак окончания работы соискателя над вопросом.\nДанное поле носит информационный характер и не влияет на оценку вопроса.\nЕсли данная информация не известна ему можно присвоить значение false */\n isDone!: boolean;\n /** Ответы на вопросы соискателя, заполняется для следующих типов:\nMultipleChoice, Matching, Ordering */\n answers?: AnswerPair[] | undefined;\n /** Ответ на вопрос типа OpenAnswer, заполняется только в случае этого типа */\n openAnswer?: string | undefined;\n\n constructor(data?: ITheoreticalQuestionAnswer) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.questionId = _data[\"questionId\"];\n this.isDone = _data[\"isDone\"];\n if (Array.isArray(_data[\"answers\"])) {\n this.answers = [] as any;\n for (let item of _data[\"answers\"])\n this.answers!.push(AnswerPair.fromJS(item));\n }\n this.openAnswer = _data[\"openAnswer\"];\n }\n }\n\n static fromJS(data: any): TheoreticalQuestionAnswer {\n data = typeof data === 'object' ? data : {};\n let result = new TheoreticalQuestionAnswer();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"questionId\"] = this.questionId;\n data[\"isDone\"] = this.isDone;\n if (Array.isArray(this.answers)) {\n data[\"answers\"] = [];\n for (let item of this.answers)\n data[\"answers\"].push(item.toJSON());\n }\n data[\"openAnswer\"] = this.openAnswer;\n return data; \n }\n}\n\nexport interface ITheoreticalQuestionAnswer {\n /** Id вопроса */\n questionId: string;\n /** Признак окончания работы соискателя над вопросом.\nДанное поле носит информационный характер и не влияет на оценку вопроса.\nЕсли данная информация не известна ему можно присвоить значение false */\n isDone: boolean;\n /** Ответы на вопросы соискателя, заполняется для следующих типов:\nMultipleChoice, Matching, Ordering */\n answers?: AnswerPair[] | undefined;\n /** Ответ на вопрос типа OpenAnswer, заполняется только в случае этого типа */\n openAnswer?: string | undefined;\n}\n\nexport enum TheoreticalQuestionType {\n MultipleChoice = \"multipleChoice\",\n Matching = \"matching\",\n OpenAnswer = \"openAnswer\",\n Ordering = \"ordering\",\n}\n\nexport class TimeBody implements ITimeBody {\n currentTime!: moment.Moment;\n\n constructor(data?: ITimeBody) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.currentTime = _data[\"currentTime\"] ? moment(_data[\"currentTime\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): TimeBody {\n data = typeof data === 'object' ? data : {};\n let result = new TimeBody();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"currentTime\"] = this.currentTime ? this.currentTime.toISOString() : undefined;\n return data; \n }\n}\n\nexport interface ITimeBody {\n currentTime: moment.Moment;\n}\n\nexport class VerificationCodeSendingStatus implements IVerificationCodeSendingStatus {\n /** Были ли отправлен новый код или надо подождать */\n wasSent?: boolean;\n /** Время ожидания отправки нового кода */\n waitingSeconds?: number;\n\n constructor(data?: IVerificationCodeSendingStatus) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.wasSent = _data[\"wasSent\"];\n this.waitingSeconds = _data[\"waitingSeconds\"];\n }\n }\n\n static fromJS(data: any): VerificationCodeSendingStatus {\n data = typeof data === 'object' ? data : {};\n let result = new VerificationCodeSendingStatus();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"wasSent\"] = this.wasSent;\n data[\"waitingSeconds\"] = this.waitingSeconds;\n return data; \n }\n}\n\nexport interface IVerificationCodeSendingStatus {\n /** Были ли отправлен новый код или надо подождать */\n wasSent?: boolean;\n /** Время ожидания отправки нового кода */\n waitingSeconds?: number;\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new ApiException(message, status, response, headers, null);\n}\n\nexport class ApiClient extends ApiClientBase {\n private http2: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl2: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(baseUrl, http);\n this.http2 = http ? http : window;\n this.baseUrl2 = baseUrl ? baseUrl : \"\";\n }\n}","import { Unread, ChatMessage, KurentoResponse } from '_helpers';\n\nfunction subscribeToOnlineEvents(dispatch: any) {\n return [\n {\n key: 'unread',\n method: (unread: Unread) => {\n dispatch.online.setUnread(unread);\n },\n },\n {\n key: 'chatMessage',\n method: (chatMessage: ChatMessage) => {\n dispatch.online.handleNewMessageAsync(chatMessage);\n },\n },\n {\n key: 'chatMessages',\n method: (chatMessages: ChatMessage[]) => {\n dispatch.online.setMessages(chatMessages);\n },\n },\n {\n key: 'kurentoMessage',\n method: (response: KurentoResponse) => {\n dispatch.online.handleKurentoMessage(response);\n },\n },\n ];\n}\n\n\nexport default subscribeToOnlineEvents;\n","import {\n ExamSession,\n FinishTheoreticalExamSession,\n FinishExamSession,\n StartExamSessionPractice,\n TheoreticalQuestionAnswer,\n PracticalQuestionAnswer,\n IAnswerPair,\n SaveTheoreticalQuestionsAnswers,\n SavePracticalQuestionsAnswers,\n ExamSessionReadyStatuses,\n AnswerPair,\n TheoreticalAnswer,\n ITheoreticalAnswer,\n ITable,\n TheoreticalQuestionType,\n PracticalQuestionType,\n TabularApplicantAnswer, ExamApplicationStatus,\n} from '../../api/ApiClient';\nimport { createModel } from '@rematch/core';\nimport apiConnector from '../../api/ApiConnector';\nimport moment from 'moment';\n\nexport enum FinishExamPartMessageType {\n none = 'none',\n finishTheoretical = 'finishTheoretical',\n cantFinishTheoretical = 'cantFinishTheoretical',\n examTheoryTimeLeft = 'examTheoryTimeLeft',\n examPracticeTimeLeft = 'examPracticeTimeLeft',\n finishPractical = 'finishPractical',\n cantFinishPractical = 'cantFinishPractical',\n}\n\nconst initState: IState = {\n examSession: null,\n examSessionStatus: null,\n examProgress: { countOfDone: 0, totalAmount: 1 },\n questionsState: [],\n lastStatusCheckTime: moment().add(-15, 'seconds'),\n syncTime: moment(),\n partSwitchTime: moment(),\n currentInterval: null,\n questionsStateChanged: false,\n finishExamPartMessage: FinishExamPartMessageType.none,\n};\n\nconst exam = createModel({\n state: initState,\n reducers: {\n setExamSession(state: IState, examSession: ExamSession | null): IState {\n return { ...state, examSession, examSessionStatus: !examSession ? ExamSessionReadyStatuses.SessionFinished : examSession.status };\n },\n setExamSessionStatus(state: IState, examSessionStatus: ExamSessionReadyStatuses | null): IState {\n return { ...state, examSessionStatus: examSessionStatus || state.examSessionStatus, lastStatusCheckTime: moment() };\n },\n setExamApplicationStatus(state: IState, examApplicationStatus: ExamApplicationStatus | null): IState {\n return { ...state, examApplicationStatus: examApplicationStatus || state.examApplicationStatus };\n },\n setExamOnline(state: IState, isOnlineExam?: boolean): IState {\n return { ...state, isOnlineExam };\n },\n updateLastStatusCheckTime(state: IState): IState {\n return { ...state, lastStatusCheckTime: moment() };\n },\n updateQuestionsState(state: IState, { questionsState, showFinishExamPartMessageIfNeed }: IUpdateQuestionsState): IState {\n const totalAmount = questionsState.length;\n let countOfDone = 0;\n for (let i = 0; i < totalAmount; i += 1) countOfDone += questionsState[i].isDone ? 1 : 0;\n\n let { finishExamPartMessage } = state;\n if (showFinishExamPartMessageIfNeed && state.examSession && totalAmount > 1 && countOfDone === totalAmount) {\n if (state.examSession.status === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted) {\n finishExamPartMessage = FinishExamPartMessageType.finishTheoretical;\n } else if (state.examSession.status === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted) {\n finishExamPartMessage = FinishExamPartMessageType.finishPractical;\n }\n }\n\n return {\n ...state,\n questionsState,\n questionsStateChanged: true,\n examProgress: { countOfDone, totalAmount },\n finishExamPartMessage,\n };\n },\n updateCurrentInterval(state: IState, currentInterval: ICurrentInterval | null): IState {\n return { ...state, currentInterval };\n },\n updateSyncTime(state: IState): IState {\n return { ...state, syncTime: moment(), questionsStateChanged: false };\n },\n updatePartSwitchTime(state: IState): IState {\n return {\n ...state,\n partSwitchTime: moment(),\n syncTime: moment(),\n questionsStateChanged: false,\n };\n },\n setFinishExamPartMessage(state: IState, finishExamPartMessage: FinishExamPartMessageType): IState {\n return { ...state, finishExamPartMessage };\n },\n resetState(): IState {\n return initState;\n },\n },\n effects: (dispatch: any) => ({\n async tryFinishTheoryAsync(_, root: IRootState) {\n if (root.exam.examProgress.countOfDone === root.exam.examProgress.totalAmount || root.exam.examProgress.totalAmount <= 1) {\n await this.finishTheoryAsync(true);\n } else {\n this.setFinishExamPartMessage(FinishExamPartMessageType.cantFinishTheoretical);\n }\n },\n async finishTheoryAsync(manual: boolean, root: IRootState) {\n const curState = root.exam;\n if (!curState || !curState.examSession || !curState.examProgress) return;\n this.updatePartSwitchTime();\n\n const model = new FinishTheoreticalExamSession({\n examSessionId: curState.examSession.id,\n theoreticalAnswers: formatTheoreticalQuestionAnswers(curState.questionsState) || [],\n manual,\n });\n const theoryIsFinished = await apiConnector.execApi(dispatch, api => api.finishTheory(model));\n\n if (theoryIsFinished) {\n const examSession = await apiConnector.execApi(dispatch, api => api.getCurrent());\n this.setExamSession(examSession);\n } else {\n this.setExamSession(null);\n }\n this.updateQuestionsState({ questionsState: [] });\n },\n async startPracticeAsync(manual: boolean, root: IRootState) {\n const examSessionId = root.exam.examSession && root.exam.examSession.id;\n if (!examSessionId) return;\n this.updatePartSwitchTime();\n const examSession = await apiConnector.execApi(dispatch, api => api.startPractice(new StartExamSessionPractice({ examSessionId, manual })));\n this.setExamSession(examSession);\n const questionsState = formatQuestionsState(examSession);\n this.updateQuestionsState({ questionsState });\n },\n async tryFinishExamAsync(_, root: IRootState) {\n if (root.exam.examProgress.countOfDone === root.exam.examProgress.totalAmount || root.exam.examProgress.totalAmount <= 1) {\n this.setFinishExamPartMessage(FinishExamPartMessageType.finishPractical);\n } else {\n this.setFinishExamPartMessage(FinishExamPartMessageType.cantFinishPractical);\n }\n },\n async finishExamAsync(manual: boolean, root: IRootState) {\n const curState = root.exam;\n if (!curState || !curState.examSession || !curState.examProgress) return;\n this.updatePartSwitchTime();\n\n const model = new FinishExamSession({\n examSessionId: curState.examSession.id,\n practicalAnswers: formatPracticalQuestionAnswers(curState.questionsState),\n manual,\n });\n await apiConnector.execApi(dispatch, api => api.finish(model));\n this.setExamSession(null);\n },\n async updateQuestionsStateAsync(data: IUpdateQuestionsState, root: IRootState) {\n this.updateQuestionsState(data);\n if (!root.exam.examSession || !root.exam.examSessionStatus) return;\n const curStatus = root.exam.examSession.status;\n if (curStatus === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted) {\n this.updateSyncTime();\n const model = new SaveTheoreticalQuestionsAnswers({\n examSessionId: root.exam.examSession.id,\n theoreticalAnswers: formatTheoreticalQuestionAnswers(data.questionsState),\n });\n await apiConnector.execApi(dispatch, api => api.saveTheoreticalQuestionsAnswers(model), { suppressErrorAndReturnNull: true });\n } else if (curStatus === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted && data.save) {\n this.updateSyncTime();\n const model = new SavePracticalQuestionsAnswers({\n examSessionId: root.exam.examSession.id,\n practicalAnswers: formatPracticalQuestionAnswers(root.exam.questionsState),\n });\n await apiConnector.execApi(dispatch, api => api.savePracticalQuestionsAnswers(model), { suppressErrorAndReturnNull: true });\n }\n },\n async finishExamPartAsync(submit: boolean, root: IRootState) {\n this.setFinishExamPartMessage(FinishExamPartMessageType.none);\n switch (root.exam.finishExamPartMessage) {\n case FinishExamPartMessageType.finishTheoretical:\n if (submit) await this.finishTheoryAsync(true);\n break;\n case FinishExamPartMessageType.finishPractical:\n if (submit) await this.finishExamAsync(true);\n break;\n default:\n break;\n }\n },\n async syncStateAsync(_, root: IRootState) {\n const curState = root.exam;\n const diff = moment().diff(curState.lastStatusCheckTime, 'second');\n if (diff >= 10 || diff < -1) {\n this.updateLastStatusCheckTime();\n const examSessionStatus = await apiConnector.execApi(dispatch, api => api.getStatus(), { suppressErrorAndReturnNull: true });\n const status = examSessionStatus && examSessionStatus.status;\n this.setExamSessionStatus(status);\n if (examSessionStatus) {\n this.setExamApplicationStatus(examSessionStatus.examApplicationStatus);\n }\n if (status && !curState.examSession) {\n this.setExamOnline(examSessionStatus && examSessionStatus.online);\n let examSession: ExamSession | null = null;\n if (status === ExamSessionReadyStatuses.ExamIsPassing) {\n examSession = await apiConnector.execApi(dispatch, api => api.start(), { suppressErrorAndReturnNull: true });\n } else if ((status === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted\n || status === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted\n || status === ExamSessionReadyStatuses.ExamSessionTimeout)) {\n examSession = await apiConnector.execApi(dispatch, api => api.getCurrent(), { suppressErrorAndReturnNull: true });\n }\n if (examSession) {\n this.setExamSession(examSession);\n const questionsState = formatQuestionsState(examSession);\n this.updateQuestionsState({ questionsState });\n }\n return;\n }\n if (status === ExamSessionReadyStatuses.SessionFinished && curState.examSession) {\n this.setExamSession(null);\n return;\n }\n }\n\n if (!curState.examSession || !curState.examSessionStatus) return;\n\n const curStatus = curState.examSession.status;\n\n if (curState.examSessionStatus === ExamSessionReadyStatuses.ExamFinished) {\n if (moment().diff(curState.partSwitchTime, 'second') < 7) return;\n if (curStatus === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted) {\n await this.finishTheoryAsync();\n } else if (curStatus === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted) {\n await this.finishExamAsync();\n }\n return;\n }\n\n if (curStatus === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted) {\n const interval = formatCurrentInterval(curState.examSession.startTime, curState.examSession.theoreticalPartDuration, curState.examSession);\n if (interval.timeLeft <= 0) {\n this.updateCurrentInterval(null);\n if (moment().diff(curState.partSwitchTime, 'second') >= 7) {\n this.setFinishExamPartMessage(FinishExamPartMessageType.examTheoryTimeLeft);\n await this.finishTheoryAsync();\n }\n return;\n }\n this.updateCurrentInterval(interval);\n } else if (curStatus === ExamSessionReadyStatuses.ExamSessionTimeout && curState.examSession.theoryFinishTime) {\n const interval = formatCurrentInterval(curState.examSession.theoryFinishTime, curState.examSession.timeoutDuration, curState.examSession);\n if (interval.timeLeft <= 0) {\n this.updateCurrentInterval(null);\n if (moment().diff(curState.partSwitchTime, 'second') >= 7) await this.startPracticeAsync();\n return;\n }\n this.updateCurrentInterval(interval);\n } else if (curStatus === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted && curState.examSession.practiceStartTime) {\n const interval = formatCurrentInterval(curState.examSession.practiceStartTime, curState.examSession.practicalPartDuration, curState.examSession);\n if (interval.timeLeft <= 0) {\n this.updateCurrentInterval(null);\n if (moment().diff(curState.partSwitchTime, 'second') >= 7) {\n this.setFinishExamPartMessage(FinishExamPartMessageType.examPracticeTimeLeft);\n await this.finishExamAsync();\n }\n return;\n }\n this.updateCurrentInterval(interval);\n } else if (curState.currentInterval) {\n this.updateCurrentInterval(null);\n }\n\n if (curState.questionsStateChanged && curStatus === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted\n && moment().diff(curState.syncTime, 'second') >= 15) {\n this.updateSyncTime();\n const model = new SavePracticalQuestionsAnswers({\n examSessionId: curState.examSession.id,\n practicalAnswers: formatPracticalQuestionAnswers(curState.questionsState),\n });\n await apiConnector.execApi(dispatch, api => api.savePracticalQuestionsAnswers(model), { suppressErrorAndReturnNull: true });\n }\n },\n }),\n});\n\nexport default exam;\n\nconst formatQuestionsState = (examSession: ExamSession | null): IQuestionState[] => {\n if (!examSession) return [];\n if (examSession.status === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted) {\n return examSession.theoreticalQuestions.map((q) => {\n const an = examSession.theoreticalQuestionsAnswers && examSession.theoreticalQuestionsAnswers.find(a => a.questionId === q.id);\n return {\n ...q,\n isPaused: false,\n isDone: (an && an.isDone) || false,\n selectedAnswers: {\n questionId: q.id,\n answers: (an && an.answers) || [],\n answer: an && an.openAnswer,\n },\n };\n });\n }\n return examSession.practicalQuestions ? examSession.practicalQuestions.map((q) => {\n const an = examSession.practicalQuestionsAnswers && examSession.practicalQuestionsAnswers.find(a => a.questionId === q.id);\n return {\n ...q,\n answers: [],\n isPaused: false,\n isDone: (an && an.isDone) || false,\n selectedAnswers: {\n questionId: q.id,\n answers: [],\n answer: an && an.answer,\n },\n tabularQuestionTables: (q.tabularQuestionTables || []).map((table, j) => ({\n ...table,\n initialRows: (an && an.tabularAnswers && an.tabularAnswers[j].rows) || table.initialRows,\n })),\n };\n }) : [];\n};\n\nconst formatTheoreticalQuestionAnswers = (questionsState: IQuestionState[]): PracticalQuestionAnswer[] => questionsState\n .map(question => new TheoreticalQuestionAnswer({\n questionId: question.id,\n openAnswer: question.selectedAnswers.answer,\n answers: (question.selectedAnswers.answers || []).map(answer => new AnswerPair(answer)),\n isDone: Boolean(question.isDone),\n }));\n\nconst formatPracticalQuestionAnswers = (questionsState: IQuestionState[]): PracticalQuestionAnswer[] => questionsState\n .map(question => new PracticalQuestionAnswer({\n questionId: question.id,\n answer: question.selectedAnswers.answer,\n tabularAnswers: (question.tabularQuestionTables && question.tabularQuestionTables.map(table => new TabularApplicantAnswer({ rows: table.initialRows }))) || [],\n isDone: Boolean(question.isDone),\n }));\n\nconst formatCurrentInterval = (startTime: moment.Moment, durationInMinutes: number, examSession: ExamSession): ICurrentInterval => {\n const finishTime = examSession.examStartTime.clone()\n .add(examSession.theoreticalPartDuration + examSession.timeoutDuration + examSession.practicalPartDuration, 'minutes');\n const duration = Math.min(finishTime.diff(startTime, 'second'), durationInMinutes * 60);\n return { startTime, duration, timeLeft: duration - moment().diff(startTime, 'second') };\n};\n\nexport interface IQuestionState {\n id: string;\n text: string;\n answers: TheoreticalAnswer[];\n tabularQuestionTables?: ITable[];\n isPaused?: boolean;\n isDone?: boolean;\n type: IQuestionsType;\n matchingAnswers?: ITheoreticalAnswer[];\n selectedAnswers: IQuestionAnswersModel;\n answersHeader?: string;\n matchingAnswersHeader?: string;\n}\n\nexport interface IProgress {\n countOfDone: number;\n totalAmount: number;\n}\n\nexport interface ICurrentInterval {\n startTime: moment.Moment;\n duration: number;\n timeLeft: number;\n}\n\ninterface IQuestionAnswersModel {\n questionId: string;\n answers?: IAnswerPair[];\n answer?: string;\n isDone?: boolean;\n}\n\ntype IQuestionsType = TheoreticalQuestionType | PracticalQuestionType;\n\ninterface IRootState {\n exam: IState;\n}\n\ninterface IUpdateQuestionsState {\n questionsState: IQuestionState[];\n save?: boolean;\n showFinishExamPartMessageIfNeed?: boolean;\n}\n\ninterface IState {\n isOnlineExam?: boolean;\n examSessionStatus: ExamSessionReadyStatuses | null;\n examSession: ExamSession | null;\n examProgress: IProgress;\n questionsState: IQuestionState[];\n lastStatusCheckTime: moment.Moment;\n syncTime: moment.Moment;\n partSwitchTime: moment.Moment;\n currentInterval: ICurrentInterval | null;\n questionsStateChanged: boolean;\n finishExamPartMessage: FinishExamPartMessageType;\n examApplicationStatus?: ExamApplicationStatus;\n}\n","import { ApiClient } from './ApiClient';\nimport { ApiConnector } from '_helpers';\nimport apiConfig from '../config/apiConfig.default';\nimport subscribeToOnlineEvents from './OnlineEvents';\nimport { OnlineMethods } from './OnlineMethods';\n\n\nconst apiConnector = new ApiConnector(ApiClient, apiConfig, subscribeToOnlineEvents, OnlineMethods);\n\nexport default apiConnector;\n","export default { API_BASE_URL: ''};\n","/* eslint-disable no-return-await,no-underscore-dangle */\nimport { ChatMessageType, KurentoRequest } from '_helpers';\nimport { HubConnection } from '@microsoft/signalr';\n\nexport class OnlineMethods {\n private _connection: HubConnection;\n\n constructor(connection: HubConnection) {\n this._connection = connection;\n }\n\n public init = async () => await this._connection.send('init');\n\n public getChatMessages = async () => await this._connection.send('getChatMessages', null);\n\n public markAsRead = async () => await this._connection.send('markAsRead', null);\n\n public sendChatMessageToExpert = async (type: ChatMessageType, message: string) => await this._connection.send(\n 'sendChatMessageToExpert',\n type,\n message,\n );\n\n public sendKurentoMessage = async (message: KurentoRequest) => await this._connection.send(\n 'sendKurentoMessage',\n message,\n );\n}\n","import * as React from 'react';\nimport {\n ExamApplicationStatus, ExtendedSelect, OnlineChat, UserVideo, WarningModal,\n} from 'components';\nimport { Button } from 'react-bootstrap';\nimport {\n ChatMessage, IWebRTCPresenterType, VideoType,\n} from '_helpers';\nimport cn from 'classnames';\n\nimport WebCamIcon from 'components/assets/svg/exam/webcam_icon.svg';\nimport ScreenIcon from 'components/assets/svg/exam/screen_icon.svg';\nimport ExpertChatIcon from 'components/assets/svg/exam/expert_chat_icon.svg';\n\nimport styles from './OnlineModal.module.scss';\nimport OnlineModalText from './OnlineModalText';\n\nimport TestCamPoster from 'components/assets/gif/test_cam.gif';\nimport TestDisplayPoster from 'components/assets/gif/test_display.gif';\nimport TestCamErrorPoster from 'components/assets/gif/not_allowed_camera.gif';\nimport { ExamSessionReadyStatuses } from '../../api/ApiClient';\nimport { IConnectionQueueItemOptions } from '../../redux/models/online';\n\n\nconst VIDEOS_SRC = {\n CAMERA: TestCamPoster,\n DISPLAY: TestDisplayPoster,\n CAMERA_ERROR: TestCamErrorPoster,\n};\n\nconst OnlineModal: React.FC = (\n {\n show, onClose, title, onGetMessages, messages, onSendMessage, webRTC: { screen, cam }, onStartPresent,\n connected, onReadMessages, ...props\n },\n) => {\n const [activeTab, setActiveTab] = React.useState(TabKey.WebCam);\n const [webCamActive, setWebCamActive] = React.useState(true);\n const [isVideoLock, setLock] = React.useState(false);\n\n const [videoDevices, setVideoDevices] = React.useState([]);\n const [currentVideoDevice, setCurrentVideoDevice] = React.useState(null);\n\n const isReadyForOnlineExam = !!JSON.parse(localStorage.getItem('readyForOnlineExam') || 'false');\n const isConnectedUser = React.useMemo(\n () => Object.values(connected).every(c => c),\n [connected, messages],\n );\n\n const isNotPaid = props.examApplicationStatus !== ExamApplicationStatus.Paid;\n\n const handleCloseModal = React.useCallback(() => {\n if (isConnectedUser && isNotPaid) {\n onClose();\n }\n }, [isConnectedUser, isNotPaid]);\n\n const nextTab = React.useCallback(() => {\n const tabsOrder = [TabKey.WebCam, TabKey.Screen, TabKey.Exam];\n const currentTabIndex = tabsOrder.findIndex(t => t === activeTab);\n\n if (currentTabIndex !== tabsOrder.length - 1 || currentTabIndex !== -1) {\n const nextTabValue = tabsOrder[currentTabIndex + 1];\n if (nextTabValue === TabKey.Exam) {\n localStorage.setItem('readyForOnlineExam', String(true));\n }\n setActiveTab(nextTabValue);\n }\n }, [activeTab]);\n\n const getVideoDevices = React.useCallback(async () => {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n return devices.filter(d => d.kind === 'videoinput')\n .map(d => ({ ...d.toJSON(), label: d.label.split('(')[0] })) as MediaDeviceInfo[];\n } catch (e) {\n console.error('Ошибка при получении списка устройств:', e);\n return [] as MediaDeviceInfo[];\n }\n }, []);\n\n React.useEffect(() => {\n getVideoDevices().then(setVideoDevices);\n }, []);\n\n React.useEffect(() => {\n if (cam && cam.video.error) {\n setLock(false);\n }\n\n if (cam && cam.video.connected) {\n setLock(false);\n nextTab();\n }\n if ((!cam || !connected.cam) && isActive(TabKey.Screen)) {\n setActiveTab(TabKey.WebCam);\n }\n }, [connected.cam, cam && cam.video.error]);\n\n React.useEffect(() => {\n if (screen && screen.video.connected) {\n nextTab();\n }\n if ((!screen || !connected.screen) && isActive(TabKey.Exam)) {\n setActiveTab(TabKey.Screen);\n }\n }, [connected.screen]);\n\n const getUserVideo = React.useCallback(async (constraints: MediaTrackConstraints = {}) => {\n setLock(true);\n await onStartPresent({\n constraints: {\n deviceId: currentVideoDevice || undefined,\n ...constraints,\n },\n type: VideoType.Cam,\n });\n }, [currentVideoDevice]);\n\n const getUserScreenShare = React.useCallback(async () => {\n await onStartPresent({\n type: VideoType.Screen,\n });\n }, []);\n\n const handleReadMessages = React.useCallback(() => {\n onReadMessages(props.applicantId);\n }, [props.applicantId]);\n\n React.useEffect(() => {\n if (activeTab === TabKey.WebCam && isReadyForOnlineExam) {\n const deviceId = localStorage.getItem('device');\n if (deviceId) {\n getVideoDevices()\n .then(devices => devices.find(d => d.deviceId === deviceId))\n .then(device => getUserVideo({ deviceId: device ? device.deviceId : undefined }));\n } else {\n getUserVideo();\n }\n return;\n }\n\n if (activeTab === TabKey.Screen && isReadyForOnlineExam) {\n getUserScreenShare();\n }\n }, [activeTab, getUserVideo]);\n\n const isActive = React.useCallback((tab: TabKey) => {\n const tabsOrder = [TabKey.WebCam, TabKey.Screen, TabKey.Exam];\n const activeTabIndex = tabsOrder.indexOf(activeTab);\n const currentTabIndex = tabsOrder.indexOf(tab);\n\n return currentTabIndex <= activeTabIndex;\n }, [activeTab]);\n\n const videoStream = React.useMemo((): MediaStream | undefined => {\n switch (activeTab) {\n case TabKey.Screen: {\n return screen && screen.video.localStream;\n }\n case TabKey.WebCam: {\n return cam && cam.video.localStream;\n }\n default: {\n return webCamActive ? cam && cam.video.localStream : screen && screen.video.localStream;\n }\n }\n }, [activeTab, webCamActive, cam, screen]);\n\n const handleSwitchVideoType = React.useCallback(() => {\n setWebCamActive(!webCamActive);\n }, [webCamActive]);\n\n const buttonHandler = React.useMemo((): (() => void) => {\n switch (activeTab) {\n case TabKey.Screen: {\n return getUserScreenShare;\n }\n case TabKey.WebCam: {\n return getUserVideo;\n }\n default: {\n return () => {\n };\n }\n }\n }, [activeTab, getUserVideo]);\n\n const isWaitingConnection = React.useMemo(() => !messages.some(m => !m.fromApplicant), [messages]);\n\n const tabText = OnlineModalText.request[activeTab];\n\n const isCamErrored = cam && cam.video.error;\n const videoCamPoster = isCamErrored ? VIDEOS_SRC.CAMERA_ERROR : VIDEOS_SRC.CAMERA;\n const videoPoster = isActive(TabKey.Screen) ? VIDEOS_SRC.DISPLAY : isActive(TabKey.WebCam) ? videoCamPoster : undefined;\n\n return (\n \n
\n {(!isNotPaid) && (\n
\n \n \"WebCamIcon\"Веб-камера и микрофон\n \n \n \"ScreenIcon\"Рабочий стол\n \n \n \"ExpertChatIcon\"Допуск к экзамену\n \n
\n )}\n\n
\n
\n \n {videoDevices.length > 1 && !isActive(TabKey.Screen) && (\n ({ label: d.label, value: d.deviceId }))}\n onChange={(e) => {\n setCurrentVideoDevice(e.value);\n localStorage.setItem('device', e.value);\n }}\n value={currentVideoDevice}\n />\n )}\n
\n {isActive(TabKey.Exam) ? (\n \n ) : (\n
\n

{tabText.title}

\n {tabText.text.map((t, i) => (\n
\n {t}\n
\n ))}\n \n
\n )}\n
\n
\n \n );\n};\n\nexport default OnlineModal;\n\ninterface IProps {\n examApplicationStatus?: ExamApplicationStatus;\n examSessionStatus: ExamSessionReadyStatuses | null;\n webRTC: { [type: string]: IWebRTCPresenterType };\n connected: {\n cam: boolean;\n screen: boolean;\n };\n show: boolean;\n title: string;\n applicantId?: string;\n messages: ChatMessage[];\n onClose: () => void;\n onGetMessages: () => void;\n onReadMessages: (applicantId?: string) => void;\n onStartPresent: (payload: IConnectionQueueItemOptions) => void;\n onSendMessage: (message: string) => void;\n}\n\nenum TabKey {\n WebCam = 'webCam',\n Screen = 'screen',\n Exam = 'exam'\n}\n","import * as React from 'react';\nimport { Modal, Button } from 'react-bootstrap';\nimport styles from './FinishExamPart.module.scss';\nimport { FinishExamPartMessageType } from '../../redux/models/exam';\n\nconst FinishExamPart = (props: FinishExamPartProps) => {\n const {\n finishExamPart, messageType,\n } = props;\n\n let state: IModalState;\n switch (messageType) {\n case FinishExamPartMessageType.examTheoryTimeLeft:\n state = {\n title: 'Время сдачи теоретической части вышло!',\n submitLabel: 'Понятно',\n text: 'Время вышло, и теоретическая часть завершилась автоматически.',\n withoutCloseButton: true,\n };\n break;\n case FinishExamPartMessageType.examPracticeTimeLeft:\n state = {\n title: 'Время сдачи практической части вышло!',\n text: 'Время вышло, экзамен завершился автоматически.',\n submitLabel: 'Понятно',\n withoutCloseButton: true,\n };\n break;\n case FinishExamPartMessageType.cantFinishTheoretical:\n state = {\n title: 'Невозможно завершить теорию',\n text: 'К сожалению, Вы не можете завершить сдачу теоретической части экзамена, поскольку не ответили на все вопросы.\\n\\nКак только Вы ответите на все вопросы, Вам будет автоматически предложено завершить теоретическую часть и перейти к сдаче практической части экзамена.',\n submitLabel: 'Вернуться',\n withoutCloseButton: true,\n };\n break;\n case FinishExamPartMessageType.finishTheoretical:\n state = {\n title: 'Завершить сдачу теоретической части?',\n text: 'Вы ответили на все вопросы теоретической части экзамена и теперь можете перейти к сдаче практической части.',\n alarmText: 'При нажатии на кнопку «Завершить», теоретическая часть экзамена будет завершена. Вы больше не сможете вносить какие-либо изменения или исправления.\\n\\nЕсли Вы набрали достаточное количество баллов в теоретической части, то после нажатия кнопки «Завершить», у Вас будет перерыв, после которого сможете начать сдачу практической части экзамена.',\n submitLabel: 'Завершить',\n };\n break;\n case FinishExamPartMessageType.cantFinishPractical:\n state = {\n title: 'Невозможно завершить экзамен',\n text: 'К сожалению, Вы не можете завершить экзамен, поскольку не ответили на все вопросы практической части.\\n\\nКак только Вы ответите на все вопросы, Вы сможете досрочно завершить сдачу экзамена.',\n submitLabel: 'Вернуться',\n withoutCloseButton: true,\n };\n break;\n case FinishExamPartMessageType.finishPractical:\n state = {\n title: 'Завершить сдачу экзамена?',\n alarmText: 'При нажатии на кнопку «Завершить», экзамен будет завершен. Вы больше не сможете вносить какие-либо изменения или исправления.\\n\\nВы сможете досрочно покинуть аудиторию, предварительно сообщив об этом экзаменационной комиссии.',\n submitLabel: 'Завершить',\n };\n break;\n default:\n return null;\n }\n\n return (\n finishExamPart(false)} dialogClassName={styles.modal}>\n \n \n {state.title}\n \n \n \n {state.text && (
)}\n {state.alarmText && (\n <>\n
Внимание!
\n
\n \n )}\n \n \n \n {!state.withoutCloseButton && }\n \n \n );\n};\n\ninterface FinishExamPartProps {\n messageType: FinishExamPartMessageType;\n finishExamPart: (submit: boolean) => void;\n}\n\ninterface IModalState {\n title: string;\n submitLabel: string;\n text?: string;\n alarmText?: string;\n withoutCloseButton?: boolean;\n}\n\nexport default FinishExamPart;\n","import * as React from 'react';\nimport { ExtendedSelect } from 'components';\nimport { ITheoreticalAnswer, IAnswerPair } from '../../api/ApiClient';\nimport { IQuestionState } from '../../redux/models/exam';\nimport { serialNumberToChar } from '_helpers';\nimport styles from './QuestionsChooseAnswer.module.scss';\nimport cn from 'classnames';\n\nconst QuestionsMatchingAnswer = ({ question, onChangeAnswer }: QuestionsChooseAnswerProps) => {\n const renderSelectAnswer = (answer: ITheoreticalAnswer, i: number) => {\n const { selectedAnswers, matchingAnswers } = question;\n\n if (!matchingAnswers) return null;\n\n const getCurrentAnswer = (answerPairs: IAnswerPair[]): string => {\n const result = answerPairs.find(x => x.number === answer.number);\n if (!result) return '0';\n return `${result.matchingNumber || 0}`;\n };\n\n return (\n
\n ({ value: `${x.number}`, label: serialNumberToChar(x.number) }))]}\n onChange={e => onChangeAnswer({ number: answer.number, matchingNumber: parseInt(e.value) })}\n />\n
{answer.text}
\n
\n\n );\n };\n\n return (\n
\n
\n {question.matchingAnswersHeader}:\n
\n
\n {question.matchingAnswers ? question.matchingAnswers.map(renderSelectAnswer) : null}\n
\n
\n );\n};\n\ninterface QuestionsChooseAnswerProps {\n question: IQuestionState;\n onChangeAnswer: (answerPair: IAnswerPair) => void;\n}\n\nexport default QuestionsMatchingAnswer;\n","import * as React from 'react';\nimport { Checkbox } from 'components';\nimport { ITheoreticalAnswer, IAnswerPair } from '../../api/ApiClient';\nimport { IQuestionState } from '../../redux/models/exam';\nimport styles from './QuestionsChooseAnswer.module.scss';\n\nconst QuestionsMultipleAnswer = ({ question, onChangeAnswer }: QuestionsChooseAnswerProps) => {\n const isChecked = (number: number) => {\n const { selectedAnswers } = question;\n\n if (!selectedAnswers.answers) return false;\n\n return !!selectedAnswers.answers.find(x => x.number === number);\n };\n\n const renderCheckboxAnswer = (answer: ITheoreticalAnswer, i: number) => (\n onChangeAnswer(answer)}\n className={styles.answer_multiple}\n />\n );\n\n return (\n
\n
\n Варианты ответов:\n
\n
\n {question.answers.map(renderCheckboxAnswer)}\n
\n
\n );\n};\n\ninterface QuestionsChooseAnswerProps {\n question: IQuestionState;\n onChangeAnswer: (answerPair: IAnswerPair) => void;\n}\n\nexport default QuestionsMultipleAnswer;\n","import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { PracticalQuestionType } from '../../api/ApiClient';\nimport { IQuestionState } from '../../redux/models/exam';\nimport styles from './QuestionsChooseAnswer.module.scss';\n\nconst QuestionsOpenAnswer = ({ question, onChangeAnswer }: QuestionsChooseAnswerProps) => {\n const handleChangeInputAnswer = (event: React.ChangeEvent) => {\n if (typeof event.currentTarget.value === 'string') {\n onChangeAnswer(event.currentTarget.value);\n }\n };\n\n return (\n
\n
\n Введите ответ:\n
\n
\n
e.preventDefault())}>\n \n \n \n
\n
\n
\n );\n};\n\ninterface QuestionsChooseAnswerProps {\n question: IQuestionState;\n onChangeAnswer: (answer: string) => void;\n}\n\nexport default QuestionsOpenAnswer;\n","import * as React from 'react';\nimport { ExtendedSelect } from 'components';\nimport { ITheoreticalAnswer, IAnswerPair } from '../../api/ApiClient';\nimport { IQuestionState } from '../../redux/models/exam';\nimport { serialNumberToChar } from '_helpers';\nimport styles from './QuestionsChooseAnswer.module.scss';\nimport cn from 'classnames';\n\nconst QuestionsOrderingAnswer = ({ question, onChangeAnswer }: QuestionsOrderingAnswerProps) => {\n const renderSelectAnswer = (answer: ITheoreticalAnswer, i: number) => {\n const { selectedAnswers, matchingAnswers } = question;\n\n if (!matchingAnswers) return null;\n\n const getCurrentAnswer = (answerPairs: IAnswerPair[]): string => {\n const result = answerPairs.find(x => x.number === answer.number);\n if (!result) return '0';\n return `${result.matchingNumber || 0}`;\n };\n\n return (\n
\n
{answer.text}.
\n ({ value: `${x.number}`, label: serialNumberToChar(+x.number) }))]}\n onChange={e => onChangeAnswer({ number: answer.number, matchingNumber: parseInt(e.value) })}\n />\n
\n );\n };\n\n return (\n
\n
\n Укажите последовательность:\n
\n
\n {question.matchingAnswers ? question.matchingAnswers.map(renderSelectAnswer) : null}\n
\n
\n );\n};\n\ninterface QuestionsOrderingAnswerProps {\n question: IQuestionState;\n onChangeAnswer: (answerPair: IAnswerPair) => void;\n}\n\nexport default QuestionsOrderingAnswer;\n","import React from 'react';\nimport { IQuestionState } from '../../redux/models/exam';\nimport { EditableTable } from 'components';\n\nconst QuestionsTabularAnswer = ({ question, onChangeAnswer }: IProps) => (\n <>\n {question.tabularQuestionTables && question.tabularQuestionTables.map((table, i) => (\n onChangeAnswer(rows, i)}\n />\n ))}\n \n);\nexport default QuestionsTabularAnswer;\n\ninterface IProps {\n question: IQuestionState;\n onChangeAnswer: (rows: string[][], tableKey: number) => void;\n}\n","export default {\n request: {\n webCam: {\n title: 'Веб-камера и микрофон',\n text: [\n 'В соответствии с Правилами проведения экзамена, вы должны разрешить доступ к вашей веб-камере и микрофону.',\n 'Для этого, нажмите на кнопку «Начать проверку камеры и микрофона» и в появившемся системном окне с запросом на разрешение доступа нажмите на кнопку «Разрешить доступ», как показано в видео-инструкции слева.',\n ],\n button: 'Начать проверку камеры и микрофона',\n },\n screen: {\n title: 'Доступ к экрану компьютера',\n text: [\n 'В соответствии с Правилами проведения экзамена, вы должны предоставить доступ ко всему экрану вашего компьютера.',\n 'Для предоставления доступа, в появившемся системном окне выберите опцию «Весь экран» и нажмите на кнопку «Предоставить доступ», как показано в видео-инструкции слева.',\n ],\n button: 'Начать проверку доступа к экрану',\n },\n exam: {\n title: '',\n text: [''],\n button: '',\n },\n },\n};\n","import React from 'react';\nimport {\n TimeLeft,\n QuestionsProgressBar,\n FinishExamPart,\n OnlineModal,\n} from '../../components';\nimport { Sidebar } from 'components';\nimport { connect } from 'react-redux';\nimport { Badge, Button } from 'react-bootstrap';\nimport { Location } from 'history';\nimport { push } from 'connected-react-router';\nimport {ExamSessionReadyStatuses, PracticalQuestionType} from '../../api/ApiClient';\nimport { IRootState, Dispatch } from '../../redux/store/configureStore';\nimport styles from './SidebarContainer.module.scss';\n\nconst SidebarContainer = ({\n currentInterval,\n examProgress,\n status,\n examSession,\n isOnlineExam,\n auth,\n location,\n tryFinishTheory,\n startPractice,\n tryFinishExam,\n finishExamPartMessage,\n finishExamPart,\n messages,\n sendMessage,\n getMessages,\n startPresent,\n webRTC,\n connected,\n unread,\n markAsRead,\n examApplicationStatus,\n onLogout,\n stopAllPresent,\n ...props\n}: SidebarProps) => {\n const isConnectedUser = React.useMemo(\n () => isOnlineExam && Object.values(connected).every(c => c),\n [isOnlineExam, connected],\n );\n\n React.useEffect(() => {\n if (!isConnectedUser || unread.messages) {\n props.setOpenedOnlineModal(true);\n }\n }, [isConnectedUser, unread.messages]);\n\n React.useEffect(() => {\n if (!isOnlineExam) return;\n if (status === ExamSessionReadyStatuses.ExamIsPassing && isConnectedUser) {\n props.setOpenedOnlineModal(false);\n } else if (status === ExamSessionReadyStatuses.SessionFinished) {\n stopAllPresent();\n }\n }, [status]);\n\n const handleSubmit = React.useCallback(() => {\n if (status === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted) {\n tryFinishTheory();\n } else if (status === ExamSessionReadyStatuses.ExamSessionTimeout) {\n startPractice();\n } else if (status === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted) {\n tryFinishExam();\n }\n }, [status]);\n\n const handleShowOnlineModal = React.useCallback(() => props.setOpenedOnlineModal(true), []);\n const handleCloseOnlineModal = React.useCallback(() => props.setOpenedOnlineModal(!isConnectedUser), [isConnectedUser]);\n\n const newMessages = unread.messages + unread.logs;\n\n const isPracticeDefense = status === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted && examSession && examSession.practicalQuestions && examSession.practicalQuestions[0].type === PracticalQuestionType.Offline;\n\n return (\n \n {examSession && (\n <>\n {currentInterval && !isPracticeDefense && ()}\n\n {(status === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted\n || (status === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted && examSession.practicalQuestions && examSession.practicalQuestions.length > 1))\n && ()}\n\n {(status === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted\n || status === ExamSessionReadyStatuses.ExamSessionTimeout\n || (status === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted && !isPracticeDefense)) && (\n
\n \n {status === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted && 'Завершить теорию'}\n {status === ExamSessionReadyStatuses.ExamSessionTimeout && 'Начать практику'}\n {status === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted && 'Завершить'}\n \n
\n )}\n \n )}\n \n {isOnlineExam && (status !== ExamSessionReadyStatuses.ExamFinished && status !== ExamSessionReadyStatuses.SessionFinished) && (\n <>\n
\n \n Чат с экспертом\n {!!newMessages && (\n \n {newMessages}\n \n )}\n \n
\n \n \n )}\n
\n );\n};\n\nconst mapState = (state: IRootState) => ({\n status: state.exam.examSessionStatus,\n examApplicationStatus: state.exam.examApplicationStatus,\n currentInterval: state.exam.currentInterval,\n examSession: state.exam.examSession,\n isOnlineExam: state.exam.isOnlineExam,\n examProgress: state.exam.examProgress,\n auth: state.auth,\n finishExamPartMessage: state.exam.finishExamPartMessage,\n messages: state.online.messages,\n webRTC: state.online.webRTC,\n connected: state.online.connected,\n unread: state.online.unread,\n openedOnlineModal: state.online.openedOnlineModal,\n});\n\nconst mapDispatch = (dispatch: Dispatch) => ({\n onPush: (key: string) => dispatch(push(key)),\n startPractice: () => dispatch.exam.startPracticeAsync(true),\n onLogout: dispatch.auth.logout,\n tryFinishTheory: dispatch.exam.tryFinishTheoryAsync,\n tryFinishExam: dispatch.exam.tryFinishExamAsync,\n finishExamPart: dispatch.exam.finishExamPartAsync,\n getMessages: dispatch.online.getMessagesAsync,\n sendMessage: dispatch.online.sendMessageAsync,\n startPresent: dispatch.online.handleConnectPresenter,\n markAsRead: dispatch.online.markAsRead,\n stopAllPresent: dispatch.online.stopAllPresent,\n setOpenedOnlineModal: dispatch.online.setOpenedOnlineModal,\n});\n\nexport default connect(mapState, mapDispatch)(SidebarContainer);\n\ninterface SidebarOwnProps {\n location: Location;\n}\n\ntype SidebarProps = ReturnType & ReturnType & SidebarOwnProps;\n","import React, { useEffect } from 'react';\nimport {ExamSessionReadyStatuses, PracticalQuestionType} from '../../api/ApiClient';\nimport { ExamPlaceholder, WarningAlert } from '../../components';\nimport { ExamPollContainer } from '../index';\nimport { Dispatch, IRootState } from '../../redux/store/configureStore';\nimport { ErrorPlaceholder, Loader } from 'components';\nimport { connect } from 'react-redux';\nimport { useMouseLeaveDetector } from 'hooks';\n\nconst ExamContainer = (\n {\n apiError,\n fetchProfile,\n syncState,\n examSessionStatus,\n resetExamState,\n examSession,\n ...props\n }: Props,\n) => {\n const [showWarningAlert, setShowWarningAlert] = React.useState(false);\n const { ipc } = (window as any);\n\n if (ipc) {\n ipc.on('applicationLostFocus', () => {\n setShowWarningAlert(true);\n });\n }\n\n const isConnectedOnlineUser = React.useMemo(\n () => !!props.isOnlineExam && Object.values(props.connected).every(c => c),\n [props.isOnlineExam, props.connected],\n );\n\n const isPracticeDefense = examSessionStatus === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted && examSession && examSession.practicalQuestions && examSession.practicalQuestions[0].type === PracticalQuestionType.Offline;\n const isExamInProcess = !!examSessionStatus && ([ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted, ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted].includes(examSessionStatus)) && !isPracticeDefense;\n\n useMouseLeaveDetector(\n isConnectedOnlineUser && isExamInProcess,\n () => props.sendViolation('Выход курсора за область экрана браузера'),\n );\n\n useEffect(() => {\n const fetch = async () => {\n await fetchProfile();\n };\n\n fetch();\n\n const examStatusChecker = window.setInterval(syncState, 1000);\n return () => {\n clearInterval(examStatusChecker);\n resetExamState();\n };\n }, []);\n\n if (!examSession && apiError) return ;\n\n if (!examSessionStatus) return ;\n\n if (!examSession && (examSessionStatus === ExamSessionReadyStatuses.ExamIsPassing || examSessionStatus === ExamSessionReadyStatuses.WaitingForStart)) {\n return (\n \n );\n }\n\n if (examSessionStatus === ExamSessionReadyStatuses.ExamSessionTimeout) {\n return (\n \n );\n }\n\n if (examSession && (examSession.status === ExamSessionReadyStatuses.TheoreticalExamIsPassingAndSessionStarted || examSession.status === ExamSessionReadyStatuses.PracticalExamIsPassingAndSessionStarted)) {\n return ;\n }\n\n if (examSessionStatus === ExamSessionReadyStatuses.SessionFinished || examSessionStatus === ExamSessionReadyStatuses.ExamFinished) {\n return (\n \n );\n }\n\n return (\n <>\n \n setShowWarningAlert(false)}\n title=\"ВЫХОД ЗА ПРЕДЕЛЫ ЭКЗАМЕНА\"\n closeButtonText=\"Вернуться к сдаче\"\n />\n \n );\n};\n\nconst mapState = (state: IRootState) => ({\n examSession: state.exam.examSession,\n examSessionStatus: state.exam.examSessionStatus,\n examProgress: state.exam.examProgress,\n isOnlineExam: state.exam.isOnlineExam,\n connected: state.online.connected,\n apiError: state.errors,\n});\n\nconst mapDispatch = (dispatch: Dispatch) => ({\n syncState: dispatch.exam.syncStateAsync,\n resetExamState: dispatch.exam.resetState,\n fetchProfile: dispatch.auth.fetchProfile,\n sendViolation: dispatch.online.sendViolationAsync,\n});\n\nexport default connect(mapState, mapDispatch)(ExamContainer);\n\ntype Props = ReturnType & ReturnType\n","import React from 'react';\nimport {\n QuestionsMatchingAnswer,\n QuestionsOrderingAnswer,\n QuestionsMultipleAnswer,\n QuestionsOpenAnswer,\n QuestionsTabularAnswer,\n QuestionsMarks,\n QuestionsNavigation,\n} from '../../components';\nimport {\n IAnswerPair,\n TheoreticalQuestionType,\n PracticalQuestionType,\n ExamSessionReadyStatuses,\n} from '../../api/ApiClient';\nimport { Card, ExamQuestionImage, CKText } from 'components';\nimport { IRootState, Dispatch } from '../../redux/store/configureStore';\nimport { serialNumberToChar, getImageUrlFromText } from '_helpers';\nimport { IQuestionState } from '../../redux/models/exam';\nimport { connect } from 'react-redux';\nimport { Button } from 'react-bootstrap';\nimport _ from 'lodash';\nimport cx from 'classnames';\nimport styles from './ExamPollContainer.module.scss';\n\nconst ExamPollContainer = ({\n examSession,\n questionsState,\n updateQuestionsState,\n examProgress,\n}: Props) => {\n const [numOfChosenQuestion, setNumOfChosenQuestion] = React.useState(0);\n const [chosenQuestion, setChosenQuestion] = React.useState(questionsState[0]);\n const cardRef = React.useRef(null);\n\n const isAllowTag = (target: any) => target && target.tagName !== 'IMG';\n\n React.useEffect(() => {\n if (cardRef.current) {\n cardRef.current.oncopy = e => isAllowTag(e.target);\n cardRef.current.ondragstart = e => isAllowTag(e.target);\n cardRef.current.oncontextmenu = e => isAllowTag(e.target);\n }\n }, [cardRef.current]);\n\n React.useEffect(() => {\n if (questionsState.length === 0) return;\n if (!chosenQuestion) {\n setChosenQuestion(questionsState[examProgress.countOfDone] ? questionsState[examProgress.countOfDone] : questionsState[0]);\n }\n }, [questionsState]);\n\n const savePracticalExamQuestion = (newQuestions: IQuestionState[], updatedChosenQuestion: IQuestionState) => {\n updateQuestionsState(newQuestions, false, false);\n setChosenQuestion(updatedChosenQuestion);\n };\n\n const handleChoseNewQuestion = (newQuestion: IQuestionState, newNumOfQuestion: number) => {\n setChosenQuestion(newQuestion);\n setNumOfChosenQuestion(newNumOfQuestion);\n };\n\n const saveQuestionsState = () => {\n const nQuestionsState = questionsState.map(x => (x.id === chosenQuestion.id ? { ...chosenQuestion } : { ...x }));\n updateQuestionsState(nQuestionsState, true, false);\n };\n\n const handleChooseQuestion = (id: string) => {\n const newQuestions = [...questionsState];\n const questionIndex = newQuestions.findIndex((qst: IQuestionState) => qst.id === id);\n\n saveQuestionsState();\n setChosenQuestion(questionsState[questionIndex]);\n setNumOfChosenQuestion(questionIndex);\n handleSetPaused(chosenQuestion.id);\n };\n\n const handleNextQuestion = (withoutSaveState?: boolean) => {\n let nextNumber = numOfChosenQuestion + 1;\n let newChosenQuestion: IQuestionState | undefined;\n\n if (nextNumber >= questionsState.length) {\n newChosenQuestion = questionsState.find((el, i) => {\n if (!el.isDone) {\n nextNumber = i;\n return !el.isDone;\n }\n return undefined;\n });\n } else {\n newChosenQuestion = questionsState[nextNumber];\n }\n\n if (!withoutSaveState) {\n saveQuestionsState();\n }\n if (newChosenQuestion) {\n handleChoseNewQuestion(newChosenQuestion, nextNumber);\n handleSetPaused(chosenQuestion.id);\n }\n };\n\n const handlePrevQuestion = () => {\n const prevNumber = numOfChosenQuestion - 1;\n if (prevNumber < 0) return;\n\n const newChosenQuestion = questionsState[prevNumber];\n\n saveQuestionsState();\n handleChoseNewQuestion(newChosenQuestion, prevNumber);\n handleSetPaused(chosenQuestion.id);\n };\n\n const isEmptyAnswer = (checkQuestion: IQuestionState) => (\n !(checkQuestion.selectedAnswers && checkQuestion.selectedAnswers.answers && checkQuestion.selectedAnswers.answers.length)\n && !(checkQuestion.selectedAnswers && checkQuestion.selectedAnswers.answer));\n\n const handleSetPaused = (id: string) => {\n const nQuestions = [...questionsState];\n const questionIndex = nQuestions.findIndex((qst: IQuestionState) => qst.id === id);\n\n if (nQuestions[questionIndex]) {\n if (isEmptyAnswer(nQuestions[questionIndex]) || nQuestions[questionIndex].isDone) return;\n nQuestions[questionIndex].isPaused = true;\n }\n };\n\n const findNumberOfQuestion = () => questionsState.findIndex((qst: IQuestionState) => qst.id === chosenQuestion.id) + 1;\n\n const handleSubmitAnswers = () => {\n const newQuestions: IQuestionState[] = questionsState.map(x => (x.id === chosenQuestion.id ? { ...chosenQuestion, isDone: true } : { ...x }));\n\n updateQuestionsState(newQuestions, true, true);\n handleNextQuestion(true);\n };\n\n const handleChangeOpenAnswer = (answer: string) => {\n const updatedChosenQuestion: IQuestionState = {\n ...chosenQuestion,\n selectedAnswers: {\n ...chosenQuestion.selectedAnswers,\n answer,\n },\n };\n setChosenQuestion(updatedChosenQuestion);\n };\n\n const onChangeTheoryAnswer = (answerPair: IAnswerPair) => {\n const updatedChosenQuestion = {\n ...chosenQuestion,\n selectedAnswers: {\n ...chosenQuestion.selectedAnswers,\n answers: _.unionBy([answerPair], chosenQuestion.selectedAnswers.answers, 'number'),\n },\n };\n setChosenQuestion(updatedChosenQuestion);\n };\n\n const onChangeMultiplyAnswer = (answerPair: IAnswerPair) => {\n const updatedChosenQuestion = {\n ...chosenQuestion,\n selectedAnswers: {\n ...chosenQuestion.selectedAnswers,\n answers: chosenQuestion.selectedAnswers.answers && chosenQuestion.selectedAnswers.answers.includes(answerPair)\n ? chosenQuestion.selectedAnswers.answers.filter(x => x.number !== answerPair.number)\n : _.union([answerPair], chosenQuestion.selectedAnswers.answers),\n },\n };\n setChosenQuestion(updatedChosenQuestion);\n };\n\n const handleChangeTabularAnswer = (rows: string[][], tableKey: number) => {\n const updatedChosenQuestion = { ...chosenQuestion };\n const newQuestions = questionsState.map(x => (x.id === updatedChosenQuestion.id ? { ...updatedChosenQuestion } : { ...x }));\n\n if (updatedChosenQuestion.tabularQuestionTables && updatedChosenQuestion.tabularQuestionTables[tableKey]) {\n updatedChosenQuestion.tabularQuestionTables[tableKey].initialRows = rows;\n savePracticalExamQuestion(newQuestions, updatedChosenQuestion);\n }\n };\n\n const handleChangePracticalOpenAnswer = (answer: string) => {\n const updatedChosenQuestion = { ...chosenQuestion, selectedAnswers: { ...chosenQuestion.selectedAnswers, answer } };\n const newQuestions = questionsState.map(x => (x.id === updatedChosenQuestion.id ? { ...updatedChosenQuestion } : { ...x }));\n\n savePracticalExamQuestion(newQuestions, updatedChosenQuestion);\n };\n\n const renderAssertion = () => {\n if (chosenQuestion.type !== TheoreticalQuestionType.Matching && chosenQuestion.type !== TheoreticalQuestionType.Ordering) return null;\n\n return chosenQuestion.answers.map(assertion => (\n
\n
{serialNumberToChar(assertion.number)}.
\n
{assertion.text}
\n
\n ));\n };\n\n const renderAssertionTitle = () => {\n switch (chosenQuestion.type) {\n case TheoreticalQuestionType.Matching:\n case TheoreticalQuestionType.Ordering:\n return
{chosenQuestion.answersHeader}:
;\n default:\n return null;\n }\n };\n\n const renderQuestionsChooseAnswer = () => {\n switch (chosenQuestion.type) {\n case TheoreticalQuestionType.Matching:\n return ;\n case TheoreticalQuestionType.Ordering:\n return ;\n case TheoreticalQuestionType.MultipleChoice:\n return ;\n case TheoreticalQuestionType.OpenAnswer:\n return ;\n\n case PracticalQuestionType.Essay:\n case PracticalQuestionType.OpenAnswer:\n return ;\n case PracticalQuestionType.AutoCheckTabular:\n case PracticalQuestionType.ManualCheckTabular:\n return ;\n default:\n return null;\n }\n };\n\n const renderTextParts = () => {\n const { imageUrls, textParts } = getImageUrlFromText(chosenQuestion.text);\n\n return textParts.map((text, i) => (\n
\n \n \n \n {imageUrls[i] && }\n
\n ));\n };\n\n if (!chosenQuestion || !examSession) return null;\n\n const disableSkipButton = Boolean(examProgress && (\n examProgress.countOfDone >= (questionsState.length - 1)\n || (examProgress.countOfDone === (questionsState.length - 1) && !chosenQuestion.isDone)));\n const disableSubmitButton = Boolean(chosenQuestion.type !== PracticalQuestionType.AutoCheckTabular\n && chosenQuestion.type !== PracticalQuestionType.ManualCheckTabular)\n && isEmptyAnswer(chosenQuestion);\n\n return (\n \n {questionsState.length > 1 && (\n <>\n \n\n handleNextQuestion()}\n onPrev={handlePrevQuestion}\n />\n \n )}\n\n {renderTextParts()}\n {renderAssertionTitle()}\n {renderAssertion()}\n {renderQuestionsChooseAnswer()}\n\n {examProgress && examProgress.totalAmount > 1 && (\n
\n \n Ответить\n \n handleNextQuestion()}\n >\n Пропустить\n \n
\n )}\n \n );\n};\n\nconst mapState = (state: IRootState) => ({\n examSession: state.exam.examSession,\n examProgress: state.exam.examProgress,\n questionsState: state.exam.questionsState,\n});\n\nconst mapDispatch = (dispatch: Dispatch) => ({\n updateQuestionsState: (questionsState: IQuestionState[], save: boolean, showFinishExamPartMessageIfNeed: boolean) => dispatch\n .exam.updateQuestionsStateAsync({ questionsState, save, showFinishExamPartMessageIfNeed }),\n});\n\nexport default connect(mapState, mapDispatch)(ExamPollContainer);\n\ntype Props = ReturnType & ReturnType;\n","import React from 'react';\nimport { Dispatch, IRootState } from '../../redux/store/configureStore';\nimport { connect } from 'react-redux';\n\nconst LoginToOnlineExamContainer = ({\n token, loginToOnlineExamAsync,\n}: Props) => {\n React.useEffect(() => {\n if (token) {\n const fetch = async () => {\n await loginToOnlineExamAsync(token);\n };\n\n fetch();\n }\n }, []);\n\n return null;\n};\n\nconst mapState = (state: IRootState) => ({\n apiError: state.errors,\n});\n\nconst mapDispatch = (dispatch: Dispatch) => ({\n loginToOnlineExamAsync: dispatch.auth.loginToOnlineExamAsync,\n});\n\nexport default connect(mapState, mapDispatch)(LoginToOnlineExamContainer);\n\ninterface IProps {\n token: string;\n}\n\ntype connectedProps = ReturnType & ReturnType\ntype Props = connectedProps & IProps;\n","import React from 'react';\nimport { ResetPasswordContainer } from '../../containers';\n\nconst ResetPasswordPage = () => ;\n\nexport default ResetPasswordPage;\n","import React from 'react';\nimport { LoginContainer } from '../../containers';\n\nconst LoginPage = () => ;\n\nexport default LoginPage;\n","import React from 'react';\nimport { ExamContainer } from '../../containers';\n\nconst ExamPage = () => ;\n\nexport default ExamPage;\n","import React from 'react';\nimport { ProfileContainer } from '../../containers';\n\nconst ProfilePage = () => ;\n\nexport default ProfilePage;\n","import React from 'react';\nimport { NotFound } from 'components';\n\nconst NotFoundPage = () => ;\n\nexport default NotFoundPage;\n","import React from 'react';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { LoginToOnlineExamContainer } from '../../containers';\n\nconst LoginToOnlineExamPage = ({ match }: Props) => ;\n\nexport default withRouter(LoginToOnlineExamPage);\n\ninterface OwnProps {\n token: string;\n}\n\ntype Props = RouteComponentProps\n","import React from 'react';\nimport UnAuthorizedLayout from '../layouts/unauth/UnAuthorizedLayout';\nimport { Redirect, Switch, Route } from 'react-router';\nimport { Location } from 'history';\nimport { ResetPasswordPage, LoginPage, LoginToOnlineExamPage } from '../pages';\n\nconst UnAuthorizedHandler = ({ location }: UnAuthorizedHandlerProps) => (\n \n \n \n \n \n \n \n \n);\n\nexport default UnAuthorizedHandler;\n\ninterface UnAuthorizedHandlerProps {\n location: Location;\n}\n","export const DASHBOARD_ROUTES = [\n {\n title: 'Прохождение экзамена',\n pathname: '/exam',\n },\n\n];\n","import React from 'react';\nimport { Location } from 'history';\nimport { connect } from 'react-redux';\nimport { Header, Loader } from 'components';\nimport { SidebarContainer } from '../../containers';\nimport { DASHBOARD_ROUTES } from '../../routes/listOfRoutes';\nimport { IRootState } from '../../redux/store/configureStore';\nimport styles from './AuthorizedLayout.module.scss';\n\nconst AuthorizedLayout = ({\n children, location, authProcessing, auth,\n}: AuthorizedLayoutProps) => (\n
\n \n
\n \n
\n {children}\n
\n
\n {authProcessing && (!auth || (auth && !auth.profile)) ? : null}\n
\n );\n\nconst mapState = (state: IRootState) => ({\n auth: state.auth,\n authProcessing: Boolean(state.loading.models.auth),\n});\n\nexport default connect(mapState)(AuthorizedLayout);\n\ninterface AuthorizedLayoutOwnProps {\n children: JSX.Element[] | JSX.Element;\n location: Location;\n}\n\ntype AuthorizedLayoutProps = ReturnType & AuthorizedLayoutOwnProps;\n","import React from 'react';\nimport AuthorizedLayout from '../layouts/auth/AuthorizedLayout';\nimport { Location } from 'history';\nimport { Switch, Route } from 'react-router';\nimport {\n ProfilePage,\n NotFoundPage,\n ExamPage,\n LoginToOnlineExamPage,\n} from '../pages';\n\nconst AuthorizedHandler = ({ location }: AuthorizedHandlerProps) => (\n \n Loading...
}>\n \n \n \n \n \n \n \n \n);\n\nexport default AuthorizedHandler;\n\ninterface AuthorizedHandlerProps {\n location: Location;\n}\n","import React from 'react';\nimport {\n Switch,\n Route,\n Redirect,\n withRouter,\n} from 'react-router';\nimport { hasAccessTokenInLocalStorage } from '_helpers';\nimport { IRootState } from '../redux/store/configureStore';\nimport { connect } from 'react-redux';\nimport UnAuthorizedHandler from './UnAuthorizedHandler';\nimport AuthorizedHandler from './AuthorizedHandler';\n\nconst Routes = () => {\n if (hasAccessTokenInLocalStorage()) {\n return (\n \n \n\n \n\n (\n \n )}\n />\n \n );\n }\n\n return (\n \n (\n \n )}\n />\n \n \n );\n};\n\nconst mapState = (state: IRootState) => ({\n auth: state.auth,\n});\n\nexport default withRouter(connect(mapState)(Routes));\n","import React, { FunctionComponent } from 'react';\nimport { Provider } from 'react-redux';\nimport { Store } from 'redux';\nimport { History } from 'history';\nimport { ConnectedRouter } from 'connected-react-router';\nimport Routes from './routes/Routes';\n\nconst Root: FunctionComponent = (props) => {\n const { store, history } = props;\n return (\n \n \n \n \n \n );\n};\n\nexport default Root;\ninterface RootProps {\n store: Store;\n routes: React.ComponentType;\n history: History;\n}\n","import {\n IAuthResult,\n LoginApplicant,\n ILoginApplicant,\n ISendVerificationCode,\n SendVerificationCode,\n IResetPassword,\n ResetPassword,\n ICheckVerificationCode,\n CheckVerificationCode,\n LoginApplicantToOnlineExam,\n} from '../../api/ApiClient';\nimport { createModel } from '@rematch/core';\nimport { setAuthToken } from '_helpers';\nimport { push } from 'connected-react-router';\nimport apiConnector from '../../api/ApiConnector';\n\nconst initialState: AuthState = null;\n\nexport default createModel({\n state: initialState as AuthState,\n reducers: {\n setAuth(state, data: IAuthResult) {\n if (data && data.token) {\n setAuthToken(data.token);\n }\n return { ...(state || {}), ...data };\n },\n logout() {\n localStorage.clear();\n\n return initialState;\n },\n },\n effects: (dispatch: any) => ({\n async login(data: ILoginApplicant) {\n this.setAuth(initialState);\n\n const auth = await apiConnector.execApi(dispatch, apiClient => apiClient.login(new LoginApplicant(data)));\n\n if (auth) {\n this.setAuth(auth);\n }\n },\n async fetchProfile() {\n const profile = await apiConnector.execApi(dispatch, apiClient => apiClient.profile());\n\n\n if (profile) {\n this.setAuth({ profile });\n } else {\n this.setAuth(initialState);\n }\n },\n async sendResetPasswordVerificationCodeAsync(data: ISendVerificationCode) {\n const result = await apiConnector.execApi(dispatch, apiClient => apiClient.sendResetPasswordVerificationCode(new SendVerificationCode(data)));\n\n return result;\n },\n async checkResetPasswordVerificationCodeAsync(data: ICheckVerificationCode) {\n const result = await apiConnector.execApi(dispatch, apiClient => apiClient.checkResetPasswordVerificationCode(new CheckVerificationCode(data)));\n\n return result;\n },\n async resetPassword(data: IResetPassword) {\n const auth = await apiConnector.execApi(dispatch, apiClient => apiClient.resetPassword(new ResetPassword(data)));\n\n if (!auth) {\n return false;\n }\n\n this.setAuth(auth);\n\n return true;\n },\n async loginToOnlineExamAsync(token: string, state) {\n if (!state || !state.auth) {\n localStorage.clear();\n dispatch(push('/'));\n }\n\n this.setAuth(initialState);\n\n const auth = await apiConnector.execApi(dispatch, apiClient => apiClient.loginToOnlineExam(new LoginApplicantToOnlineExam({ token })));\n\n if (auth) {\n this.setAuth(auth);\n }\n\n dispatch(push('/'));\n },\n }),\n});\n\ntype AuthState = IAuthResult | null;\n","export const setAuthToken = (token: string) => localStorage.setItem('token', token);\n\nexport const clearAuthToken = () => localStorage.removeItem('token');\n\nexport const getAuthToken = () => localStorage.getItem('token');\n","import { createModel } from '@rematch/core';\nimport { IApiError } from '../../api/ApiClient';\n\nconst initialState: ErrorsState = null;\n\nexport default createModel({\n state: initialState as ErrorsState,\n reducers: {\n handle(state: ErrorsState, error: IApiError) {\n return { ...error };\n },\n clean() {\n return null;\n },\n },\n});\n\ntype ErrorsState = IApiError | null;\n","import {\n ChatMessage,\n ChatMessageType,\n IWebRTCPresenterType,\n KurentoRequest,\n KurentoResponse, NotificationsPlayer,\n Unread,\n VideoType,\n WebRTCPresenter,\n} from '_helpers';\nimport { createModel } from '@rematch/core';\nimport apiConnector from '../../api/ApiConnector';\n\nconst initialState: State = {\n messages: [],\n currentConnection: null,\n connected: {\n screen: false,\n cam: false,\n },\n webRTC: {},\n unread: {\n messages: 0,\n logs: 0,\n },\n connectionQueue: [],\n openedOnlineModal: false,\n};\n\nexport default createModel({\n state: initialState,\n reducers: {\n setOpenedOnlineModal(state, openedOnlineModal: boolean): State {\n return { ...state, openedOnlineModal };\n },\n\n setUnread(state, unread: Unread): State {\n return { ...state, unread };\n },\n\n setMessages(state, messages: ChatMessage[]): State {\n return { ...state, messages: [...messages] };\n },\n\n setMessage(state, message: ChatMessage): State {\n return { ...state, messages: [...state.messages, message] };\n },\n\n setCurrentTypeConnection(state, currentConnection: IConnectionQueueItemType | null): State {\n return { ...state, currentConnection };\n },\n\n setConnected(state, type: VideoType): State {\n return { ...state, connected: { ...state.connected, [type]: true } };\n },\n\n setDisconnected(state, type: VideoType): State {\n return { ...state, connected: { ...state.connected, [type]: false } };\n },\n\n addToConnectionQueue(state, item: IConnectionQueueItemType): State {\n return { ...state, connectionQueue: [...state.connectionQueue, item] };\n },\n\n shiftFromConnectionQueue(state): State {\n return { ...state, connectionQueue: state.connectionQueue.slice(1) };\n },\n\n updateWebRTC(state: State, presenter: IWebRTCPresenterType): State {\n const newState = { ...state, webRTC: { ...state.webRTC } };\n if (state.currentConnection) {\n newState.webRTC[state.currentConnection.options.type] = presenter;\n } else if (presenter) {\n newState.webRTC[presenter.type] = presenter;\n }\n (window as any).webRTC = newState.webRTC;\n return newState;\n },\n\n clearWebRTC(state, videoType?: VideoType): State {\n if (videoType) {\n const newWebRTC = {\n ...state.webRTC,\n };\n delete newWebRTC[videoType];\n return ({\n ...state,\n webRTC: newWebRTC,\n connected: {\n ...state.connected, [videoType]: false,\n },\n });\n }\n\n return { ...state, webRTC: {}, connected: initialState.connected };\n },\n },\n effects: () => ({\n async handleNewMessageAsync(message: ChatMessage, rootState) {\n const { openedOnlineModal } = rootState.online as State;\n this.setMessage(message);\n\n if (message.fromApplicant) return;\n await new NotificationsPlayer(\n message.type === ChatMessageType.Message,\n false,\n openedOnlineModal,\n ).play();\n },\n\n async getMessagesAsync() {\n await apiConnector.sendSocketMessage(socket => socket.getChatMessages());\n },\n\n async sendMessageAsync(message: string) {\n await apiConnector.sendSocketMessage(socket => socket.sendChatMessageToExpert(\n ChatMessageType.Message,\n message,\n ));\n },\n\n async sendViolationAsync(message: string) {\n await apiConnector.sendSocketMessage(socket => socket.sendChatMessageToExpert(\n ChatMessageType.Violation,\n message,\n ));\n },\n\n async markAsRead() {\n await apiConnector.sendSocketMessage(socket => socket.markAsRead());\n },\n\n async handlePeerConnectionEvents(message: KurentoRequest) {\n await apiConnector.sendSocketMessage(socket => socket.sendKurentoMessage(message));\n },\n\n async handlePresenterConnected(_, rootState) {\n const { currentConnection, webRTC, connectionQueue } = rootState.online as State;\n\n if (currentConnection && webRTC[currentConnection.options.type]) {\n delete webRTC[currentConnection.options.type].onEvent;\n this.setConnected(currentConnection.options.type);\n }\n\n if (connectionQueue.length) {\n this.nextQueueItem();\n return;\n }\n\n if (currentConnection) {\n this.setCurrentTypeConnection(null);\n }\n },\n\n async handleConnectPresenter(payload: IConnectionQueueItemOptions) {\n this.addToQueue({\n options: payload,\n func: this.startPresent,\n });\n },\n\n async handleReconnectPresenter(payload: IConnectionQueueItemOptions) {\n this.addToQueue({\n options: payload,\n func: this.restartPresent,\n });\n },\n\n async startPresent(payload: IConnectionQueueItemOptions) {\n const newPresenter = new WebRTCPresenter(payload.type, payload.constraints);\n\n if (newPresenter) {\n newPresenter.onStopStream = this.stopPresent;\n newPresenter.onEvent = this.handlePeerConnectionEvents;\n newPresenter.onError = this.handleError;\n newPresenter.onReconnect = this.handleReconnectPresenter;\n\n await newPresenter.start();\n\n newPresenter.subscribeToConnectEvent(this.handlePresenterConnected);\n\n this.updateWebRTC(newPresenter);\n }\n },\n\n async restartPresent(payload: IConnectionQueueItemOptions, rootState) {\n const { webRTC } = rootState.online;\n\n const presenter = webRTC[payload.type];\n\n if (presenter) {\n presenter.onEvent = this.handlePeerConnectionEvents;\n presenter.onError = this.handleError;\n presenter.onReconnect = this.handleReconnectPresenter;\n await presenter.restart();\n\n presenter.subscribeToConnectEvent(this.handlePresenterConnected);\n\n this.updateWebRTC(presenter);\n }\n },\n\n async addToQueue(item: IConnectionQueueItemType, rootState) {\n const { currentConnection } = rootState.online as State;\n\n this.addToConnectionQueue(item);\n\n if (!currentConnection) {\n this.nextQueueItem();\n }\n },\n\n async nextQueueItem(_, rootState) {\n const { connectionQueue } = rootState.online as State;\n const currentConnection = connectionQueue[0];\n\n if (!currentConnection) return;\n\n this.setCurrentTypeConnection(currentConnection);\n this.shiftFromConnectionQueue();\n currentConnection.func(currentConnection.options);\n },\n\n\n async handleKurentoMessage(data: KurentoResponse, rootState) {\n const { webRTC, currentConnection } = rootState.online as State;\n\n if (currentConnection && webRTC && webRTC[currentConnection.options.type] && data.videoType === currentConnection.options.type) {\n await webRTC[currentConnection.options.type].handleMessage(data);\n }\n },\n\n async handleError(data: { videoType: VideoType; error: KurentoResponse }) {\n this.setDisconnected(data.videoType);\n this.setCurrentTypeConnection(null);\n this.updateWebRTC();\n this.nextQueueItem();\n },\n\n async stopPresent(videoType: VideoType, rootState) {\n const { webRTC } = rootState.online as State;\n await webRTC[videoType].stop();\n this.clearWebRTC(videoType);\n },\n\n async stopAllPresent(_, rootState) {\n const { webRTC } = rootState.online as State;\n if (webRTC[VideoType.Cam]) {\n await webRTC[VideoType.Cam].stop();\n this.setDisconnected(VideoType.Cam);\n }\n\n if (webRTC[VideoType.Screen]) {\n await webRTC[VideoType.Screen].stop();\n this.setDisconnected(VideoType.Screen);\n }\n\n this.clearWebRTC();\n this.setCurrentTypeConnection(null);\n },\n }),\n});\n\ninterface State {\n messages: ChatMessage[];\n webRTC: {\n [name: string]: IWebRTCPresenterType;\n };\n connected: {\n screen: boolean;\n cam: boolean;\n };\n currentConnection: IConnectionQueueItemType | null;\n unread: Unread;\n connectionQueue: IConnectionQueueItemType[];\n openedOnlineModal: boolean;\n}\n\ninterface IConnectionQueueItemType {\n options: IConnectionQueueItemOptions;\n func: (options: IConnectionQueueItemOptions) => void;\n}\n\nexport interface IConnectionQueueItemOptions {\n constraints?: MediaTrackConstraints;\n type: VideoType;\n}\n","import { connectRouter, routerMiddleware } from 'connected-react-router';\nimport { History } from 'history';\nimport { init, RematchRootState } from '@rematch/core';\nimport createLoadingPlugin from '@rematch/loading';\n// import createHistory from 'history/createBrowserHistory';\nimport auth from '../models/auth';\nimport errors from '../models/errors';\nimport exam from '../models/exam';\nimport online from '../models/online';\n\nconst createHistory = require('history').createBrowserHistory;\n\nconst models = {\n auth,\n errors,\n exam,\n online,\n};\n\nexport const browserHistory: History = createHistory();\n\nexport const store = init({\n models,\n plugins: [createLoadingPlugin({\n blacklist: ['exam/syncStateAsync', 'online/handlePeerConnectionEvents', 'online/handleKurentoMessage'],\n })],\n redux: {\n initialState: {},\n reducers: {\n router: connectRouter(browserHistory),\n },\n middlewares: [\n routerMiddleware(browserHistory),\n ],\n devtoolOptions: {\n actionsBlacklist: ['exam/syncStateAsync'],\n disabled: process.env.REACT_APP_LOCAL_ELECTRON === 'true',\n },\n },\n});\n\nexport type Store = typeof store\nexport type Dispatch = typeof store.dispatch\nexport type IRootState = RematchRootState & LoadingPlugin;\n\ninterface LoadingPlugin {\n loading: {\n models: RematchRootState;\n effects: Dispatch;\n };\n}\n\nexport default store;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport 'components/assets/sass/index.scss';\n\nimport routes from './routes/Routes';\nimport Root from './Root';\nimport { store, browserHistory } from './redux/store/configureStore';\nimport moment from 'moment';\n\nimport 'moment/locale/ru';\n\nmoment.locale('ru');\n\n\nReactDOM.render(\n ,\n document.getElementById('root'),\n);\n"],"sourceRoot":""}