{"version":3,"sources":["assets/images/homeIcon.svg","assets/images/play-button.svg","assets/images/menuDocument.svg","assets/images/plus.svg","assets/images/logoFull.svg","assets/images/lines.svg","assets/images/loginBackground.svg","assets/images/sequenceIcon.svg","assets/images/sortingDown.svg","assets/images/notSorting.svg","assets/images/play-button-1.png","assets/images/check.svg","assets/images/repeat.svg","store.js","containers/Main/reducer.js","containers/Main/constants.js","containers/MainLayout/reducer.js","containers/MainLayout/constants.js","redux/pages/Sequences/constants.js","redux/pages/Sequences/reducer.js","redux/pages/Therapists/constants.js","redux/pages/Therapists/reducer.js","redux/pages/Login/reducer.js","constants/index.js","assets/translation/index.js","redux/pages/Participants/constants.js","redux/pages/Participants/reducer.js","containers/Sequence/reducer.js","containers/Sequence/constants.js","redux/pages/Home/reducer.js","redux/pages/Home/constants.js","redux/pages/Training/reducer.js","redux/pages/Training/constants.js","reducers.js","redux/pages/Login/constants.js","containers/Main/selectors.js","containers/Main/actions.js","components/ActiveInactiveIcon/index.js","components/AddButton/index.js","components/DownloadButton/index.js","components/Loading/index.js","components/ModalWithActions/index.js","components/ResponseErrorModal/index.js","components/CircularProgressWithLabel/index.js","components/TableHeader/index.js","api/api.js","api/admin/index.js","api/auth/index.js","api/sequences/index.js","api/sessions/index.js","api/slides/index.js","api/therapist/index.js","api/file/index.js","api/participantDashboard/index.js","api/index.js","browserHistory.js","utils/clearStorage.js","redux/pages/Login/actions.js","components/LimitedTextField/index.js","redux/pages/Login/styles.js","redux/pages/Login/Form.js","redux/pages/Login/ValidatedForm.js","redux/pages/Login/Login.jsx","containers/MainLayout/components/MainWrapper.js","containers/MainLayout/components/Header/LogoutPopup/LogoutPopup.js","containers/MainLayout/components/Header/LogoutParticipant/LogoutParticipant.js","containers/MainLayout/components/Header/selectors.js","containers/MainLayout/components/Header/Header.js","containers/MainLayout/components/Body.js","globalStyles.js","containers/MainLayout/index.js","components/SortingArrow/SortingArrow.js","components/ParticipantsTable/EnhancedTableHead/EnhancedTableHead.js","utils/getComparator.js","utils/stableSort.js","components/ParticipantsTable/ParticipantsTable.js","redux/pages/Participants/selectors.js","redux/pages/Participants/components/ModalContent/index.js","redux/pages/Participants/components/RemoveButton/index.js","redux/pages/Participants/Participants.jsx","redux/pages/Participants/actions.js","redux/pages/Sequences/components/AddSessionDialog/index.js","redux/pages/Sequences/components/TableExtencions/EnhancedTableToolbar.js","redux/pages/Sequences/components/TableExtencions/EnhancedTableHead.js","redux/pages/Sequences/selectors.js","redux/pages/Sequences/actions.js","redux/pages/Sequences/components/TabParticipants/index.js","redux/pages/Sequences/components/DetailsSequence/index.js","redux/pages/Sequences/components/HeaderSequence/index.js","redux/pages/Sequences/components/NewSequenceDialog/index.js","redux/pages/Sequences/components/TabSessions/index.js","redux/pages/Sequences/components/TabMaterials/MaterialsTableHead.jsx","redux/pages/Sequences/components/TabMaterials/styles.js","redux/pages/Sequences/components/TabMaterials/UploadFile.jsx","redux/pages/Sequences/components/TabMaterials/ModalAddMaterial.jsx","redux/pages/Sequences/components/TabMaterials/index.js","redux/pages/Sequences/index.jsx","components/TherapistsTable/EnhancedTableHead/EnhancedTableHead.js","components/TherapistsTable/TherapistsTable.js","redux/pages/Therapists/actions.js","components/AddTherapistModal/styles.js","components/AddTherapistModal/selectors.js","components/AddTherapistModal/PhotoUpload.jsx","components/AddTherapistModal/Form.js","components/AddTherapistModal/AddTherapistsModal.jsx","redux/pages/Therapists/selectors.js","redux/pages/Therapists/Therapists.jsx","redux/pages/Home/selectors.js","redux/pages/Home/actions.js","redux/pages/Home/Home.jsx","redux/pages/LearningPages/styles.js","redux/pages/LearningPages/LearningPagesTableHead.jsx","redux/pages/LearningPages/index.jsx","containers/Sequence/components/GridLayout/styles.js","containers/Sequence/utils/index.js","containers/Sequence/components/GridLayout/components/PictureWrappedAudio/ParticipantAudio.js","containers/Sequence/components/GridLayout/components/PictureWrappedAudio/TherapistAudio.js","containers/Sequence/components/GridLayout/components/PictureWrappedAudio/PictureWrappedAudio.js","redux/pages/Training/selectors.js","redux/pages/Training/actions.js","containers/Sequence/components/GridLayout/components/EmbedImageAudio/ParticipantAudio.js","containers/Sequence/components/GridLayout/components/EmbedImageAudio/TherapistAudio.js","containers/Sequence/components/GridLayout/components/EmbedImageAudio/EmbedImageAudio.js","containers/Sequence/components/GridLayout/components/EmbedTextAudio/styles.js","containers/Sequence/components/GridLayout/components/EmbedTextAudio/TherapistAudio.js","containers/Sequence/components/GridLayout/components/EmbedTextAudio/ParticipantAudio.js","containers/Sequence/components/GridLayout/components/EmbedTextAudio/EmbedTextAudio.js","containers/Sequence/components/GridLayout/GridLayout.js","redux/pages/Training/styles.js","redux/pages/Training/components/SlideResult/MultipleAnswers.js","redux/pages/Training/components/SlideResult/index.js","redux/pages/Training/components/AudioPlayButton/styles.js","redux/pages/Training/components/AudioPlayButton/AudioPlayButton.js","redux/pages/Training/index.jsx","containers/Main/index.jsx","containers/Sequence/components/SequenceAside.js","containers/Sequence/components/toolIcons/styles.js","containers/Sequence/components/toolIcons/constants.js","containers/Sequence/components/toolIcons/AddSlideIcon.js","containers/Sequence/components/toolIcons/ArrowDownwardIcon.js","containers/Sequence/components/toolIcons/ArrowUpwardIcon.js","containers/Sequence/components/toolIcons/DeleteIcon.js","containers/Sequence/components/toolIcons/FileCopyIcon.js","containers/Sequence/components/SlideDisplayingArea.js","containers/Sequence/components/toolIcons/AddTextElement.js","containers/Sequence/components/toolIcons/AddImageElement.js","containers/Sequence/components/toolIcons/AddMediaElement.js","containers/Sequence/components/Editor/index.js","containers/Sequence/components/styles.js","containers/Sequence/components/ShapeProperties.js","containers/Sequence/components/LinearProperties.js","containers/Sequence/components/AnswerProperties.js","containers/Sequence/components/MetaDataProperties.js","containers/Sequence/actions.js","containers/Sequence/components/ImageProperties.js","containers/Sequence/components/AudioWrapper.js","containers/Sequence/components/MediaProperties.js","containers/Sequence/components/EmbedAudioToText.js","containers/Sequence/components/SlideComponentEditingAside.js","containers/Sequence/actionTypes.js","containers/Sequence/components/CrudSlideDialogModal.js","containers/Sequence/selectors.js","containers/Sequence/index.js","App.js","serviceWorker.js","index.js","containers/MainLayout/components/Header/Header.module.scss","assets/images/picturePlus.svg"],"names":["module","exports","preloadedState","initialState","errorStore","isError","description","isLoading","commonReducer","state","type","payload","userData","initialReducer","ADD_SEQUENCE","ADD_SESSION","CREATE_SESSION","AFTER_CREATE","COPY_SEQUENCE","AFTER_COPY","EDIT_SEQUENCE","EDIT_SESSION","MARK_ACTIVE_SEQUENCE","MARK_INACTIVE_SEQUENCE","MARK_ACTIVE_SESSION","MARK_INACTIVE_SESSION","NONE","REMOVE_SEQUENCE","REMOVE_SESSION","modalType","tableData","sessions","participants","sessionsForSelect","materials","materialsSelected","isMaterialsModalOpen","newSessionNumber","newCreatedSequence","currentSequences","materialFiles","sequencesReducer","REMOVE_THERAPISTS","modalDefaultValues","modalDefaultErrors","list","photo","id","src","therapist","isAuth","error","userRole","localStorage","getItem","subRole","userName","imageUrl","translation","groupOptions","label","value","genderOptions","sessionInfo","media","slidesReducer","addedSlide","learnMaterials","sequenceProgress","participantDasboardReducer","currentSlide","playingAudioId","isPlayingAudioButton","trainingReducer","rootReducer","combineReducers","commonData","userInfo","sequences","doctors","get","slides","auth","role","username","participantDasboard","training","composeEnhancers","compose","store","createStore","applyMiddleware","thunk","selectRoot","selectIsLoading","createSelector","handleShowingLoadingModal","ActiveInactiveIcon","isActive","Check","color","Close","useStyles","makeStyles","theme","wrap","palette","white","main","backgroundColor","secondary","minWidth","fontWeight","dark","img","marginRight","buttonLabel","letterSpacing","AddButton","className","title","props","classes","Button","Plus","alt","Typography","variant","DownloadButton","onClick","hasImage","content","display","alignItems","justifyContent","paddingBottom","margin","marginLeft","marginBottom","Loading","open","Dialog","DialogContent","CircularProgress","size","thickness","DialogContentText","actions","padding","closeButton","header","therapistHeader","primary","fontSize","noButton","lineHeight","borderRadius","boxShadow","yesButton","paper","ModalWithActions","children","classname","isTherapistModal","onClose","onYes","titleNoButton","titleYesButton","isDisabled","fullWidth","PaperProps","DialogTitle","disableTypography","IconButton","aria-label","DialogActions","Box","disabled","ResponseErrorModal","maxWidth","CircularProgressWithLabel","position","top","left","bottom","right","component","Math","round","headerWrap","titleHeader","fontFamily","fonts","family","marginTop","TableHeader","Grid","container","justify","API_BASE_ADDRESS","axiosInstance","axios","create","baseURL","headers","interceptors","request","use","config","token","authorization","dispatch","Promise","reject","response","err","isBadCreds","includes","data","message","showErrorModal","url","params","post","delete","patch","getAllTherapists","api","then","res","addTherapist","deleteTherapists","getTherapist","updateTherapist","login","credentials","logout","getAllSequences","deleteSequences","changeStatusSequences","changeSessionOrder","copySequences","createSequences","updateSequence","uploadFile","file","getParticipants","assignParticipants","getSequencesMaterials","sort","a","b","index","deleteSequenceMaterial","sequenceId","sequenceBindFiles","fileId","changeMaterialsOrder","getCurrentSequence","bindSession","sessionId","changeStatusSessions","changeSession","copySession","createSession","deleteSessions","getSequencesSessions","getSession","getAllSlides","getCurrentSlide","createSlide","updateSlide","deleteSlide","copySlide","writeAnswerSlide","answerId","getPrewSlide","markAsOpenedSlide","changeOrderSlide","getAllParticipants","createOneParticipant","saveEditedParticipant","removeSelectedParticipant","downloadFile","resolve","xhr","XMLHttpRequest","setRequestHeader","onload","responseText","binary","Uint8Array","length","i","charCodeAt","URL","createObjectURL","Blob","buffer","overrideMimeType","send","getLearnMaterials","getSequenceProgress","admin","participantDashboard","browserHistory","createBrowserHistory","clearStorage","removeItem","loginUser","setItem","roles","authorities","map","val","authority","image","catch","console","log","push","LimitedTextField","TextField","inputProps","maxLength","textAlign","form","flexDirection","formField","passwordWrapper","width","visibilityIcon","zIndex","loginButton","minHeight","LOGIN","ENTER_USERNAME","WRONG_USERNAME","Form","values","touched","errors","isSubmitting","handleChange","handleBlur","handleSubmit","isValid","dirty","useState","Boolean","useSelector","isShowError","setIsShowError","passwordIsHidden","setPasswordType","changeHandler","e","align","onSubmit","onChange","onBlur","helperText","password","REQUIRED","ValidatedForm","clearAuthFail","ValidatedFormWithFormik","withFormik","mapPropsToValues","formFields","validationSchema","Yup","shape","required","wrapper","flex","height","backgroundImage","Background","backgroundSize","formContainer","logo","lines","transform","Login","useDispatch","errorData","Lines","Logo","MainWrapper","Wrapper","styled","div","arrow","popper","LogoutPopup","onLogout","anchorRef","useRef","setOpen","handleClose","current","contains","target","ref","Popper","anchorEl","transition","disablePortal","placement","TransitionProps","Grow","Paper","ClickAwayListener","onClickAway","MenuList","autoFocusItem","MenuItem","menuItem","menuItems","verticalAlign","textTransform","menuWrapper","borderLeft","button","LogoutParticipant","rootSelector","selectRole","selectUsername","selectImageUrl","selectSubRole","DASHBOARD","PATIENTS","THERAPISTS","SEQUENCES","adminMenuItems","MenuDocument","therapistMenuItems","SequenceIcon","therapistWithAdminMenuItems","participantMenuItems","HomeIcon","Header","isShowMenu","asideButton","logoutHandler","location","pathname","styles","navWrapper","logoWrapper","item","key","event","preventDefault","handleClick","to","activeClassName","menuWrapperActive","exact","icon","logoutWrapper","Avatar","smallAvatar","timeout","onIdle","debounce","Body","style","GlobalStyle","createGlobalStyle","MainLayout","SortingArrow","orderBy","headCell","order","SortingDown","NoSorting","headCells","isSortable","EnhancedTableHead","onRequestSort","onSelectAllClick","numSelected","rowCount","createSortHandler","TableHead","TableRow","TableCell","Checkbox","indeterminate","checked","cursor","descendingComparator","getComparator","stableSort","array","comparator","stabilizedThis","el","handleCheckRow","selected","setSelected","selectedIndex","indexOf","newSelected","concat","slice","sessionLink","textDecoration","ParticipantsTable","rows","setIsModalEditOpen","setModalValues","onDownloadDetails","React","setOrder","setOrderBy","page","setPage","startElement","currentParticipants","TableContainer","Table","property","newSelecteds","n","TableBody","row","name","session","sequence","isItemSelected","stopPropagation","age","gender","charAt","disease","group","participant","toLowerCase","email","notes","onEditParticipantClick","Pagination","count","ceil","selectValue","root","spacing","ModalContent","modalValues","isConfirmType","modalErrors","setModalErrors","isEdit","isPasswordHidden","setIsPasswordHidden","isNaN","confirmPassword","noValidate","autoComplete","select","SelectProps","native","option","test","multiline","RemoveButton","contentWrap","Participants","useEffect","isModalCreateOpen","setIsModalCreateOpen","isModalEditOpen","isModalConfirmOpen","setIsModalConfirmOpen","onCloseModal","fileName","blob","link","document","createElement","href","download","body","appendChild","click","parentNode","removeChild","isErrors","Object","keys","reduce","acc","isEmptyRequiredPassword","isErrorsCheck","createPartisipant","undefined","editPartisipant","controlsWrap","formControl","background","gray","paddingLeft","paddingTop","borderBottomStyle","selectEmpty","MenuProps","anchorOrigin","vertical","horizontal","getContentAnchorEl","maxHeight","AddSessionDialog","currentSequence","getCurrentSessions","setForm","controls","handler","newForm","options","isEmpty","FormControl","InputLabel","Select","IconComponent","ExpandMore","labelId","useToolbarStyles","paddingRight","buttonText","highlight","lighten","light","text","EnhancedTableToolbar","onUpdate","Toolbar","flexWrap","disableElevation","marginX","marginY","colSpan","numeric","disablePadding","paddingY","selectSequences","selectSequencesModal","selectSequencesMaterials","selectMaterialsSelected","selectIsMaterialsModalOpen","selectContent","selectCurrentSequences","selectMaterialFiles","getActionAfterSequenceRequest","setSequenceModal","getSequences","setNewCreatedSequence","setSequences","getActionAfterSessionsRequest","sortData","setSequencesSessions","setSequencesSessionsForSelect","setSequencesMaterials","getSequenceParticipants","setSequencesParticipants","setMaterialsSelected","setMaterialsModalOpen","visuallyHidden","border","clip","overflow","mapStateToProps","createStructuredSelector","mapDispatchToProps","getSequencesParticipantsAction","assignSequenceToParticipantsAction","participantIds","getActionAfterParticipantsRequest","connect","setSequenceId","assignedParticipants","itemSequenceId","isNull","elevation","aria-labelledby","hover","aria-checked","tabIndex","breadcrumb","descriptionWrap","descriptionLeft","descriptionRight","editButton","tabBodyWrap","tabs","withRouter","onEdit","setValue","useParams","tabsData","Breadcrumbs","Edit","Tabs","textColor","newValue","tab","Tab","HeaderSequence","isShowMakeCopyButton","isShowActionsButtons","onCopy","onShowSequenceModal","isActivating","inputTitle","inputDescription","fields","initialData","NewSequenceDialog","defObj","defaultData","isTitleRequired","titleError","setTitleError","handleForm","actionButton","actionDetails","actionTableButton","btnWidth","changeSessionInput","headerButtonsWrap","noData","arrows","arrowButton","bindSessionAction","changeSessionAction","changeSessionOrderAction","copySessionAction","createSessionAction","getSequencesSessionsAction","getSessionsForSelectAction","markAsActiveSessionsAction","removeSessionsAction","setSequenceModalAction","resetSessionsNumberAction","sessionTitle","setSessionTitle","SESSION_PREFIX","newSessionTitle","setNewSessionTitle","sessionError","setSessionError","handleBindSession","handleChangeSession","handleCreateSession","handleChangeOrder","currentId","isUp","oldIndex","findIndex","newSessions","getModalData","inactiveSelected","filter","find","active","selectedCount","currentSessions","actives","selectedSession","DeleteOutline","FileCopy","currentTitle","slidesCount","slide","ArrowDownward","ArrowUpward","MaterialsTableHead","whiteSpace","textOverflow","bold","hidden","UploadFile","urlId","uploadInput","createRef","setFile","formData","FormData","append","accept","elem","files","ModalAddMaterial","defaultModalValues","Number","currentMaterials","originalName","match","currentMaterial","direction","currentIndex","nextIndex","tmp","forEach","bytes","floor","parseFloat","pow","toFixed","getFileSize","actionsLink","createSequenceAction","copySequenceAction","getSequencesAction","markAsActiveSequencesAction","removeSequencesAction","updateSequenceAction","withConnect","currentRow","setCurrentRow","handleToDetails","handleUpdateSequence","participantCount","sessionCount","downloadImage","emailCell","TherapistsTable","onEditTherapist","therapists","sorting","setSorting","currentTherapists","newSorting","phoneNumber","removed","getTherapists","setPhotoSrc","addId","setTherapistModal","flexBasis","photoUpload","borderStyle","borderWidth","borderColor","photoWrapper","backgroundPosition","deleteWrapper","dialog","uploadText","checkbox","checkboxLabel","selectId","selectSrc","PhotoUpload","setPhoto","PicturePlus","changePasswordType","confirmIsHidden","setConfirmType","confirm","FormControlLabel","control","AddTherapistsModal","selectModal","selectTherapists","Therapists","therapistId","setTherapistId","handleModal","isErrorCheck","selectUserName","selectLearnMaterials","setLearnMaterials","setSequenceProgress","WELCOME","homeStyles","flexGrow","badgeContent","cardContent","cardContentProgress","shapeCircle","grid","diagram","disabledLink","learnMaterialsAction","sequenceProgressAction","classesHome","xs","m","progress","prevPath","flexShrink","clickable","buttonWrap","fill","LearningPageTableHead","material","scope","staticUrl","slitedUrl","split","lastIndex","findLastIndex","reactPlayer","objectFit","domReactPlayer","reactPlayerWrapper","formatTextWrapper","textFormat","listStyleType","imagePlayPause","getDataGrid","isStatic","coordinates","h","w","x","y","static","ParticipantAudio","audioCoordinates","TherapistAudio","l","onSelectElement","isCurrentElement","outline","outlineOffset","Play","PictureWrappedAudio","isParticipantLayout","selectAudioId","selectIsPlayingAudioButton","getShuffleData","anwersCoordinates","anwerIndex","shuffleAnswers","shuffle","isAnswer","result","getNextSlide","formatElements","elements","propertiesData","formatPropertiesData","JSON","parse","setSlideData","setPlayingAudioId","setIsPlayingAudioButton","isPlaying","setIsPlaying","isWhiteBorder","r","g","audio","audioPlayingLink","diffSize","urlLink","imageLink","fullUrl","boxScale","originalScale","trunc","audioLink","embedAudioLink","fullAudioLink","aud","pause","play","backgroundRepeat","backgroundPositionX","backgroundPositionY","preload","onEnded","selectedElement","EmbedImageAudio","textAlignment","fontStyle","wordBreak","dangerouslySetInnerHTML","__html","getTextTemplate","EmbedTextAudio","ReactGridLayout","WidthProvider","RGL","unchecked","AUDIO_FILES","GridLayout","onLayoutChange","useCSSTransforms","currentDisplayingElement","currentElement","element","isPictureWrapped","collection","isChecked","isEmbedAudio","WebkitBoxShadow","PlayPng","mediaLink","ext","pop","isAudio","isStartAuto","playing","generateDOMWithoutMoving","layouts","measureBeforeMount","data-grid","opacity","buttonInvisible","navButtonswrapper","navGridWrapper","gridWrap","gridInner","lockedLayer","lockedWrapper","MultipleAnswers","correctElements","getImage","WrongAnswer","GridList","cellHeight","cols","numberOfAnswers","getCols","getWidth","GridListTile","convertObjectToColorString","backgroundRepeatX","backgroundRepeatY","nextButton","styleName","stylesObject","join","ColorButton","withStyles","AnswerWrapper","CorrectAnswer","ImgWrapper","feedbackForAnswer","onCloseResult","previousIsCorrect","Repeat","placeholder","buttonPlay","hiddenButton","pointerEvents","AudioPlayButton","pictureWrappedElement","currentTime","autoStartPlaying","Pause","PlayArrow","Training","getCurrentSlideAction","slideId","writeAnswerSlideAction","getPrewSlideAction","setSlideDataAction","setSelectedElement","visible","setFeedbackForAnswer","isExceptionFeedback","setIsExceptionFeedback","showResult","storedSession","canBack","multipleChoiseOfAnswers","selectedArr","checkAnswerFromMultiple","disableButton","ArrowBack","answerIndex","ArrowForward","currentSlideId","defaultProps","rowHeight","initialLayout","autoSize","compactType","preventCollision","isResponseError","isResponseText","hideErrorModalAction","history","path","Sequences","SequencesCreateSession","Home","LearningPages","iconButton","overFlowWrapper","overflowY","SequenceAside","onSelected","tools","onEditSlide","ToolsPanel","tool","SlidesList","SlideItem","StyledTypographyTitle","StyledTypographyName","disableRipple","disableFocusRipple","SvgImage","svg","AddIcon","Add","ArrowDownwardToolIcon","ArrowUpwardToolIcon","DeleteToolIcon","FileCopyToolIcon","AddSlideIcon","ArrowDownwardIcon","ArrowUpwardIcon","DeleteIcon","FileCopyIcon","SlideDisplayingArea","onUpdateSlide","setCurrentDisplayingElement","setElements","BackButton","Title","maxBy","UpdateButton","uuid","pan","disableOnTarget","zoomIn","step","wheel","wheelEnabled","touchPadEnabled","transformEnabled","zoomOut","ContentArea","ZoomButtonWrapper","ZoomLabel","ZoomAreaWrapper","GridWrapper","GridBackground","AddTextElement","viewBox","xmlns","d","AddImageElement","fillRule","clipRule","AddMediaElement","Editor","modules","formats","toolbar","clipboard","matchVisual","FontColorSelect","ColorBox","Swatch","Popover","Cover","ShapeWrapper","ItemWrapper","EmbedAudioWrapper","ShapeProperties","handleOpenBorderColorPicker","handleCloseBorderColorPicker","displayBorderColorPicker","handleOpenBackgroundColorPicker","handleCloseBackgroundColorPicker","displayBackgroundColorPicker","isTextProperties","isMediaProperties","SecondaryTypography","rgb","LinearProperties","handleOnChange","StyledTextField","setTimeout","AnswerProperties","getAnswerDisabled","MainTypography","Switch","edge","isCorrectAnswer","MetaDataProperties","metaData","getActionAfterRequest","setSlideModal","getSessionData","setSlides","setAddedSlide","ImageProperties","ImageWrapper","DeleteIconButton","firefoxWrapper","chromeWrapper","AudioWrapper","isChrome","MediaProperties","hasPictureWrapped","setMedia","getMediaLink","checkDisabled","EmbedAudioToText","SlideComponentEditingAside","displayFontColorPicker","handleOpenFontColorPicker","handleCloseFontColorPicker","onAddElement","handleClickCreateElement","TitleArea","ToolsArea","ButtonsWrapper","CardWrapper","CreationButton","SettingsWrapper","DeleteButtonWrapper","StyledDivider","Divider","actionTypes","add","copy","edit","downgradePriority","raisePriority","textFieldTitle","textField","switchLabel","CrudSlideDialog","dialogParams","closeDialog","onСreate","onDelete","metadata","formValues","setFormValues","defaultValues","handleSelect","handleInput","switchers","isOpen","elementData","merge","onInput","Sequence","getSessionDataAction","createSlideAction","updateSlideAction","copySlideAction","deleteSlideAction","changeOrderSlideAction","setSlidesAction","TOOLS_LIST","setDialogisOpen","elementId","clone","sortedSlides","isDialogOpen","mounted","setMounted","setDisplayFontColorPicker","setDisplayBackgroundColorPicker","setDisplayBorderColorPicker","ESCListener","keyCode","printMousePos","addEventListener","window","removeEventListener","setDefaultElements","newSlides","slideIndex","splice","changeFormatElementsIDs","formatElement","useCallback","model","elementType","answer","correctAnswer","stringify","reload","newTextBlock","lg","shapeName","newImageBlock","newMediaBlock","slideData","createMuiTheme","overrides","MuiButton","contained","outlinedPrimary","MuiCheckbox","MuiFilledInput","borderTopLeftRadius","borderTopRightRadius","MuiTabs","indicator","MuiTab","borderTop","textColorPrimary","MuiTableCell","head","MuiTableRow","MuiPagination","ul","MuiPaginationItem","outlined","rounded","MuiPaper","MuiInput","MuiInputBase","MuiTextField","MuiTypography","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","App","StylesProvider","injectFirst","hostname","contentDiv","getElementById","gridProps","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e46ac5c0.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/homeIcon.4720d352.svg\";","module.exports = __webpack_public_path__ + \"static/media/play-button.ffcb13cb.svg\";","module.exports = __webpack_public_path__ + \"static/media/menuDocument.bb26fc3d.svg\";","module.exports = __webpack_public_path__ + \"static/media/plus.e7d4fe55.svg\";","module.exports = __webpack_public_path__ + \"static/media/logoFull.d765850a.svg\";","module.exports = __webpack_public_path__ + \"static/media/lines.7551ba8b.svg\";","module.exports = __webpack_public_path__ + \"static/media/loginBackground.06ec2d7d.svg\";","module.exports = __webpack_public_path__ + \"static/media/sequenceIcon.efcfefe7.svg\";","module.exports = __webpack_public_path__ + \"static/media/sortingDown.da653167.svg\";","module.exports = __webpack_public_path__ + \"static/media/notSorting.2905d115.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/check.041e6994.svg\";","module.exports = __webpack_public_path__ + \"static/media/repeat.c72155a4.svg\";","import { createStore, compose, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport rootReducer from './reducers';\n\n/* eslint-disable no-underscore-dangle */\nconst composeEnhancers =\n process.env.NODE_ENV !== 'production' &&\n typeof window === 'object' &&\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) : compose;\n/* eslint-enable */\n\nconst configureStore = preloadedState => (\n createStore(\n rootReducer,\n preloadedState,\n composeEnhancers(applyMiddleware(thunk)),\n )\n);\n\nconst store = configureStore({});\n\nexport default store;\n","import {\n HIDE_ERROR_MODAL,\n SHOW_ERROR_MODAL,\n HANDLE_SHOWING_LOADING_MODAL,\n} from './constants';\n\nexport const initialState = {\n errorStore: {\n isError: false,\n description: '',\n },\n isLoading: false,\n}\n\nconst commonReducer = (state = initialState, { type, payload }) => {\n switch (type) {\n case HANDLE_SHOWING_LOADING_MODAL:\n return {\n ...state,\n isLoading: payload,\n };\n case SHOW_ERROR_MODAL:\n return {\n ...state,\n errorStore: payload,\n isLoading: false,\n };\n case HIDE_ERROR_MODAL:\n return {\n ...state,\n errorStore: initialState.errorStore,\n };\n default:\n return state;\n }\n}\n\nexport default commonReducer;","export const HIDE_ERROR_MODAL = 'HIDE_ERROR_MODAL';\nexport const SHOW_ERROR_MODAL = 'SHOW_ERROR_MODAL';\nexport const HANDLE_SHOWING_LOADING_MODAL = 'HANDLE_SHOWING_LOADING_MODAL';","import {\n INIT_CONST\n} from './constants';\n\nexport const initialState = {\n userData: {}\n}\n\nconst initialReducer = (state = initialState, { type }) =>{\n switch (type) {\n case INIT_CONST:\n return {\n ...state\n }\n default:\n return initialState \n }\n}\n\nexport default initialReducer;","export const INIT_CONST = 'INIT_CONST';","export const ADD_SEQUENCE = \"ADD_SEQUENCE\";\nexport const ADD_SESSION = \"ADD_SESSION\";\nexport const CREATE_SESSION = \"CREATE_SESSION\";\nexport const AFTER_CREATE = \"AFTER_CREATE\";\nexport const COPY_SEQUENCE = \"COPY_SEQUENCE\";\nexport const AFTER_COPY = \"AFTER_COPY\";\nexport const EDIT_SEQUENCE = \"EDIT_SEQUENCE\";\nexport const EDIT_SESSION = \"EDIT_SESSION\";\nexport const MARK_ACTIVE_SEQUENCE = \"MARK_ACTIVE_SEQUENCE\";\nexport const MARK_INACTIVE_SEQUENCE = \"MARK_INACTIVE_SEQUENCE\";\nexport const MARK_ACTIVE_SESSION = \"MARK_ACTIVE_SESSION\";\nexport const MARK_INACTIVE_SESSION = 'MARK_INACTIVE_SESSION';\nexport const NONE = \"NONE\";\nexport const REMOVE_SEQUENCE = \"REMOVE_SEQUENCE\";\nexport const REMOVE_SESSION = \"REMOVE_SESSION\";\n\nexport const SET_SEQUENCES = 'SET_SEQUENCES';\nexport const SET_SEQUENCE_MODAL = 'SET_SEQUENCE_MODAL';\nexport const SET_SEQUENCES_SESSIONS = 'SET_SEQUENCES_SESSIONS';\nexport const SET_SEQUENCES_SESSIONS_FOR_SELECT = 'SET_SEQUENCES_SESSIONS_FOR_SELECT';\nexport const SET_NEW_CREATED_SEQUENCE = 'SET_NEW_CREATED_SEQUENCE';\nexport const SET_CURRENT_SEQUENCES = 'SET_CURRENT_SEQUENCES';\n\nexport const SET_SEQUENCES_MATERIALS = 'SET_SEQUENCES_MATERIALS';\nexport const SET_SEQUENCES_PARTICIPANTS = 'SET_SEQUENCES_PARTICIPANTS';\nexport const SET_MATERIAL_FILES = 'SET_MATERIAL_FILES';\n\nexport const SET_MATERIALS_SELECTED = 'SET_MATERIALS_SELECTED';\nexport const SET_MATERIALS_MODAL_OPEN = 'SET_MATERIALS_MODAL_OPEN';\nexport const INCREMENT_SESSIONS_NUMBER = 'INCREMENT_SESSIONS_NUMBER';\nexport const RESET_SESSIONS_NUMBER = 'RESET_SESSIONS_NUMBER';\n","import {\n NONE,\n SET_SEQUENCES,\n SET_SEQUENCE_MODAL,\n SET_SEQUENCES_SESSIONS,\n SET_SEQUENCES_SESSIONS_FOR_SELECT,\n SET_SEQUENCES_MATERIALS,\n SET_SEQUENCES_PARTICIPANTS,\n SET_MATERIALS_SELECTED,\n SET_MATERIALS_MODAL_OPEN,\n SET_NEW_CREATED_SEQUENCE,\n INCREMENT_SESSIONS_NUMBER,\n RESET_SESSIONS_NUMBER,\n SET_CURRENT_SEQUENCES,\n SET_MATERIAL_FILES,\n} from './constants';\n\nexport const initialState = {\n modalType: NONE,\n tableData: {},\n sessions: [],\n participants: [],\n sessionsForSelect: [],\n materials: [],\n materialsSelected: [],\n isMaterialsModalOpen: false,\n newSessionNumber: 1,\n newCreatedSequence: null,\n currentSequences: {},\n materialFiles: [],\n}\n\nconst sequencesReducer = (state = initialState, { type, payload }) => {\n switch (type) {\n case SET_SEQUENCES:\n return {\n ...state,\n tableData: payload,\n };\n case SET_SEQUENCE_MODAL:\n return {\n ...state,\n modalType: payload,\n };\n case SET_SEQUENCES_SESSIONS:\n return {\n ...state,\n sessions: payload,\n };\n case SET_SEQUENCES_PARTICIPANTS:\n return {\n ...state,\n participants: payload,\n };\n case SET_SEQUENCES_SESSIONS_FOR_SELECT:\n return {\n ...state,\n sessionsForSelect: payload,\n };\n case SET_SEQUENCES_MATERIALS:\n return {\n ...state,\n materials: payload\n };\n case SET_MATERIALS_SELECTED:\n return {\n ...state,\n materialsSelected: payload\n };\n case SET_MATERIALS_MODAL_OPEN:\n return {\n ...state,\n isMaterialsModalOpen: payload\n }\n case INCREMENT_SESSIONS_NUMBER:\n return {\n ...state,\n newSessionNumber: state.newSessionNumber + 1\n };\n case RESET_SESSIONS_NUMBER:\n return {\n ...state,\n newSessionNumber: initialState.newSessionNumber\n }\n case SET_NEW_CREATED_SEQUENCE:\n return {\n ...state,\n newCreatedSequence: payload\n };\n case SET_CURRENT_SEQUENCES:\n return {\n ...state,\n currentSequences: payload\n };\n case SET_MATERIAL_FILES:\n return {\n ...state,\n materialFiles: payload\n };\n default:\n return state;\n }\n}\n\nexport default sequencesReducer;\n","export const LOADED_THERAPISTS = 'LOADED_THERAPISTS';\n\nexport const LOADED_THERAPIST = 'LOADED_THERAPIST';\n\nexport const CLEAR_THERAPIST = 'CLEAR_THERAPIST';\n\nexport const SET_PHOTO_SRC = 'SET_PHOTO_SRC';\n\nexport const REMOVE_PHOTO = 'REMOVE_PHOTO';\n\nexport const ADD_ID = 'ADD_ID';\nexport const NONE = \"NONE\";\nexport const REMOVE_THERAPISTS = \"REMOVE_THERAPISTS\";\nexport const SET_MODAL_TYPE = \"SET_MODAL_TYPE\";\n\nexport const modalDefaultValues = {\n \"userName\": '',\n \"password\": null,\n \"confirm\": null,\n \"title\": '',\n \"name\": '',\n \"email\": '',\n \"phoneNumber\": '',\n \"admin\": false,\n \"isActive\": true\n};\n\nexport const modalDefaultErrors = {\"password\": \"\", \"confirm\": \"\", \"email\": \"\"};\n","import {\n CLEAR_THERAPIST,\n LOADED_THERAPISTS,\n LOADED_THERAPIST, NONE,\n REMOVE_PHOTO, ADD_ID,\n SET_MODAL_TYPE,\n SET_PHOTO_SRC,\n} from './constants';\nimport { get } from 'lodash';\n\nexport const initialState = {\n list: [],\n modalType: NONE,\n photo: {\n id: null,\n src: null\n },\n therapist: {},\n}\n\nexport const reducer = (state = initialState, {type, payload}) => {\n switch (type) {\n case LOADED_THERAPISTS:\n return {\n ...state,\n list: payload,\n };\n case LOADED_THERAPIST:\n return {\n ...state,\n therapist: {\n ...payload\n },\n photo: {\n ...state.photo,\n id: get(payload, 'file.id', null)\n }\n };\n case CLEAR_THERAPIST:\n return {\n ...state,\n therapist: {},\n photo: {\n id: null,\n src: null\n },\n }\n case SET_PHOTO_SRC:\n return {\n ...state,\n photo: {\n ...state.photo,\n src: payload\n }\n }\n case SET_MODAL_TYPE:\n return {\n ...state,\n modalType: payload,\n };\n case REMOVE_PHOTO:\n return {\n ...state,\n photo: {\n id: null,\n src: null\n }\n };\n case ADD_ID:\n return {\n ...state,\n photo: {\n ...state.photo,\n id: payload\n }\n };\n default:\n return state;\n }\n}\n\n","import {\n AUTH_SUCCESS,\n AUTH_FAIL,\n CLEAR_AUTH_FAIL,\n USER_DATA,\n LOGOUT,\n SET_AVATAR\n} from './constants';\nimport { USER_ROLE, SUB_ROLE, USER_NAME, USER_AVATAR } from '../../../constants';\n\nexport const initialState = {\n isAuth: false,\n error: null,\n userRole: localStorage.getItem(USER_ROLE) || null,\n subRole: localStorage.getItem(SUB_ROLE) || null,\n userName: localStorage.getItem(USER_NAME) || null,\n imageUrl: localStorage.getItem(USER_AVATAR) || null\n};\n\nexport const reducer = (state = initialState, {type, payload}) => {\n switch (type) {\n case AUTH_SUCCESS:\n return {\n ...state,\n isAuth: true,\n error: null\n }\n case SET_AVATAR:\n return {\n ...state,\n imageUrl: payload,\n }\n case AUTH_FAIL:\n return {\n ...state,\n error: payload,\n };\n case CLEAR_AUTH_FAIL:\n return {\n ...state,\n error: null\n };\n case USER_DATA:\n return {\n ...state,\n userRole: payload.role,\n userName: payload.username,\n imageUrl: payload.imageUrl,\n subRole: payload.subRole,\n }\n case LOGOUT:\n return {\n ...state,\n isAuth: false,\n userRole: null,\n userName: null\n }\n default:\n return state;\n }\n}\n","export const TOKEN_KEY = 'authToken';\nexport const USER_ROLE = 'userRole';\nexport const SUB_ROLE = 'subRole';\nexport const USER_NAME = 'userName';\nexport const USER_AVATAR = 'USER_AVATAR';\n\nexport const PRIMARY_MAIN = \"#003560\";\nexport const PRIMARY_LIGHT = \"#ACBCC7\";\nexport const GRAY_LIGHT = \"#F6F8F9\";\nexport const GRAY_MAIN = \"#EDF1F3\";\nexport const WHITE_MAIN = \"#FFFFFF\";\n\nexport const ROWS_PER_PAGE = 10;","const translationDE = {\n \"add\": \"Hinzufügen\",\n \"close\": \"Schließen\",\n \"copy\": \"Kopieren\",\n \"discard\": \"verwerfen\",\n \"error.response.title\": \"Fehler\",\n \"error.response.text\": \"Es ist ein Fehler aufgetreten und wir konnten Ihre Daten nicht speichern. Bitte kehren Sie zu einem Formular zurück und versuchen Sie erneut die Daten abzuspeichern.\",\n \"download\": \"Herunterladen\",\n \"loading\": \"Wird geladen...\",\n \"save\": \"Speichern\",\n \"session\": \"Sitzung\",\n \"sequences.button.activate\": \"Aktiv markieren\",\n \"sequences.button.deactivate\": \"Inaktiv markieren\",\n \"sequences.button.remove\": \"Entfernen\",\n \"sequences.button.makeCopy\": \"Modul kopieren\",\n \"sequenses.copy\": \"Kopie\",\n \"sequences.details.tabs.title_1\": \"Teilnehmer\",\n \"sequences.details.tabs.title_2\": \"Sitzungen\",\n \"sequences.details.tabs.title_3\": \"Material\",\n \"sequences.details.header.description\": \"Beschreibung\",\n \"sequences.details.header.title\": \"Titel\",\n \"sequences.details.sessions.header.title\": \"Sitzungsverwaltung\",\n \"sequences.details.sessions.button.session.activate\": \"Aktiv markieren\",\n \"sequences.details.sessions.button.session.deactivate\": \"Inaktiv markieren\",\n \"sequences.details.sessions.button.title_2\": \"Sitzung hinzufügen\",\n \"sequences.details.sessions.button.title_3\": \"Sitzung anlegen\",\n \"sequences.details.sessions.empty\": \"Keine Sitzungen\",\n \"sequences.details.table.header.title_1\": \"Titel\",\n \"sequences.details.table.header.title_2\": \"Anzahl der Slides\",\n \"sequences.details.table.header.title_3\": \"Aktiv\",\n \"sequences.details\": \"Moduldetails\",\n \"sequences.modal.input.description\": \"Beschreibung\",\n \"sequences.modal.input.title\": \"Titel\",\n \"sequences.modal.copy.created.successfully.title\": \"Die Kopie des Modules wurde erfolgreich angelegt\",\n \"sequences.modal.copy.created.successfully.description\": \"Möchten Sie Details der neu erstellten Kopie des Modules öffnen?\",\n \"sequences.modal.create.created.successfully.title\": \"Das neue Modul wurde erfolgreich erstellt.\",\n \"sequences.modal.create.created.successfully.description\": \"Möchten Sie Details des neu erstellten Modules öffnen?\",\n \"sequences.modal.sessions.add.title\": \"Sitzung hinzufügen\",\n \"sequences.modal.sessions.add.select.title_1\": \"Modul auswählen\",\n \"sequences.modal.sessions.add.select.title_2\": \"Sitzung auswählen\",\n \"sequences.modal.sessions.add.description\": \"Die ausgewählte Sitzung wird zum aktuellen Modul hinzugefügt.\",\n \"sequences.modal.sessions.changeActive.title\": \"Änderung Sitzungsstatus\",\n \"sequences.modal.sessions.changeActive.description\": \"Sind Sie sicher, dass Sitzungsstatus von selektierten Sitzungen geӓndert wird?\",\n \"sequences.modal.sessions.delete.title\": \"Sicherheitsabfrage\",\n \"sequences.modal.sessions.delete.description\": \"Die ausgewӓhlte(n) Sitzung(en) werden entfernt. Fortsetzen?\",\n \"sequences.modal.sessions.create.title\": \"Sitzung anlegen\",\n \"sequences.new\": \"Modul anlegen\",\n \"sequences.table.cells.actions\": \"Details/Aktionen\",\n \"sequences.table.cells.active\": \"Aktiv\",\n \"sequences.table.cells.numberOfSessions\": \"Anzahl Sitzungen\",\n \"sequences.table.cells.numberParticipants\": \"Zugewiesene Teilnehmer\",\n \"sequences.table.cells.results\": \"Ergebnisse\",\n \"sequences.table.cells.title\": \"Titel\",\n \"sequences.title\": \"Modulverwaltung\",\n \"sequences.correct.answer\": \"Das ist die richtige Antwort\",\n \"sequences.correct.answers\": \"Dies sind die richtigen Antworten\",\n \"sequences.wrong.answer\": `Die Antwort ist Falsch. Die Richtige Antwort ist:`,\n \"sequences.wrong.answers\": \"Dies sind die richtigen Antworten:\",\n \"view.details\": \"Anzeigen\",\n \"therapists.title\": \"Forscher und Administratoren\",\n \"therapists.add\": \"Benutzer anlegen\",\n \"therapists.delete.users\": \"Benutzer entfernen\",\n \"therapists.delete.modal.title\": \"Sicherheitsabfrage\",\n \"therapists.delete.modal.description\": \"Die ausgewӓhlten Forscher werden entfernt. Fortsetzen?\",\n \"therapists.user.details\": \"Benutzer-Details\",\n \"label.username\": \"Benutzername\",\n \"label.results\": \"Ergebnisse\",\n \"label.curSequence\": \"Akt. Sequenz\",\n \"label.curSession\": \"Akt. Sitzung\",\n \"label.password\": \"Passwort\",\n \"label.confirm\": \"Passwort bestätigen\",\n \"label.title\": \"Titel\",\n \"label.name\": \"Name\",\n \"label.email\": \"E-Mail\",\n \"label.phone\": \"Telefon\",\n \"form.save\": \"Speichern\",\n \"slide.answer.property.isAnswer\": \"Als Antwort kennzeichnen?\",\n \"slide.answer.property.correct\": \"Korrekte Antwort?\",\n \"slide.answer.more\": \"weiter\",\n \"slide.title.metaData\": \"Metadaten\",\n \"slide.shape.properties.border\": \"Rahmen\",\n \"slide.shape.properties.background\": \"Hintergrundfarbe\",\n \"slide.linear.properties.x\": \"X\",\n \"slide.linear.properties.y\": \"Y\",\n \"slide.linear.properties.width\": \"Breite\",\n \"slide.linear.properties.height\": \"Höhe\",\n \"slide.title.shape\": \"Form\",\n \"slide.title.answer\": \"Antwort\",\n \"slide.title.embed.audio\": \"Audio einbetten\",\n \"slide.title.embed.audio.question\": \"Audio einbetten?\",\n \"slide.properties.button.label.text\": \"Text\",\n \"slide.properties.button.label.media\": \"Media\",\n \"slide.properties.button.label.image\": \"Bild\",\n \"slide.title\": \"Neues Element hinzufügen\",\n \"slide.properties.button.label.delete\": \"Element löschen\",\n \"slide.title.textProperties\": \"Text-Eigenschaften\",\n \"slide.title.imageProperties\": \"Bild-Eigenschaften\",\n \"slide.title.mediaProperties\": \"Media-Eigenschaften\",\n \"slide.properties\": \"Eigenschaften\",\n \"slide.new.text.block\": \"Neuer Textblock\",\n \"slide.set.media\": \"Media hochladen\",\n \"slide.video.start.automatically\": \"Direkt starten\",\n \"slide.video.show.as.pictire\": \"Als Button anzeigen\",\n \"label.phone.number\": \"Telefon\",\n \"label.title.name\": \"Titel\",\n \"label.isAdministrator\": \"Administrator?\",\n \"therapists.add.photo\": \"Bild hochladen\",\n \"label.status\": \"Status\",\n \"label.details\": \"Details/Aktionen\",\n \"label.edit\": \"Bearbeiten\",\n \"therapist.also.administrator\": \"Forscher/Forscherin ist auch Administrator\",\n \"therapist.active.user\": \"Aktiv\",\n \"home.welcome\": \"Herzlich willkommen\",\n \"login.enter.username\": \"Bitte geben Sie Benutzernamen und Passwort ein, um sich anzumelden.\",\n \"login.wrong.username\": \"Benutzername oder Passwort falsch\",\n \"login.login\": \"LOGIN\",\n \"therapist.table.edit\": \"Bearbeiten\",\n \"header.dashboard\": \"Zuhause\",\n \"header.patients\": \"Teilnehmer\",\n \"header.therapists\": \"Forscher\",\n \"header.sequences\": \"Module\",\n \"header.logout\": \"Ausloggen\",\n \"header.learning_material\": \"LERNMATERIAL\",\n \"header.training_session\": \"TRAININGSSESSION\",\n \"session.name\": \"Meine Sitzung\",\n \"session.button.back\": 'Zurück',\n \"slide.text.property.placeholder\": \"Text schreiben...\",\n \"slide.shape.property.placeholder\": \"Geben Sie hier die Formname ein\",\n \"slide.media.property.placeholder\": \"Geben Sie hier den Link ein...\",\n \"label.newParticipant\": \"Teilnehmer anlegen\",\n \"error.somethingWrong\": \"Etwas ist schief gelaufen...\",\n \"label.addParticipant\": \"Teilnehmer anlegen\",\n \"title.participantManagement\": \"Teilnehmerverwaltung\",\n \"label.ID\": \"ID\",\n \"label.group\": \"Gruppe\",\n \"label.confirmPassword\": \"Passwort bestätigen\",\n \"label.gender\": \"Geschlecht\",\n \"label.age\": \"Alter\",\n \"label.notes\": \"Anmerkungen\",\n \"label.disease\": \"Diagnose\",\n \"title.delete\": \"Entfernen\",\n \"title.edit\": \"Bearbeiten\",\n \"title.copy\": \"Kopieren\",\n \"no\": \"Nein\",\n \"required\": \"Erforderlich\",\n \"yes\": \"Ja\",\n \"sequences.modal.delete.title\": \"Sicherheitsabfrage\",\n \"sequences.modal.delete.description\": \"Die ausgewӓhlten Module werden entfernt. Fortsetzen?\",\n \"sequences.modal.activate.title\": \"Änderung des Modulstatuses\",\n \"sequences.modal.activate.description\": \"Sind Sie sicher, dass Modulstatus von selektierten Modulen geӓndert wird?\",\n \"participant.modal.title.editParticipant\": \"Teilnehmer bearbeiten\",\n \"participant.table.label.editParticipant\": \"Anzeigen\",\n \"password.does.not.match\": \"Passwort stimmt nicht überein\",\n \"participants.modal.edit.header\": 'Teilnehmerprofil bearbeiten',\n \"participants.table.button.edit\": 'Bearbeiten',\n \"participants.table.currentSequence\": 'Modul_1',\n \"participants.table.currentSession\": 'Session_1',\n \"participants.button.remove\": 'Entfernen',\n \"participants.modal.remove.header\": 'Sicherheitsabfrage',\n \"participants.modal.remove.content\": 'Die ausgewӓhlten Teilnehmer werden entfernt. Fortsetzen?',\n \"participants.modal.remove.buttonYes\": 'Ja',\n \"participants.modal.remove.buttonNo\": 'Nein',\n \"participants.modal.save.buttonYes\": 'Speichern',\n \"participants.modal.save.buttonNo\": 'Verwerfen',\n \"participants.modal.age.errorText\": 'Nur Zahlen',\n \"participants.modal.gender.male\": 'Mann',\n \"participants.modal.gender.female\": 'Frau',\n \"participants.modal.gender.divers\": 'Divers',\n \"invalid.email.format\": \"Ungültiges E-Mail-Format\",\n\n \"slide.dialog.add\": \"Slide anlegen\",\n \"slide.dialog.edit\": \"Slide bearbeiten\",\n \"slide.dialog.copy\": \"Slide kopieren\",\n \"slide.dialog.random\": \"Randomisierung von Antworten\",\n \"slide.dialog.canBack\": \"Navigationsbuttons anzeigen\",\n \"slide.dialog.multipleAnswer\": \"Antwortenmehrfachauswahl\",\n \"slide.dialog.showResult\": \"Feedback anzeigen\",\n \"label.metaData\": \"Metadaten\",\n \"sequences.details.participants.header.title.assign\": \"Das Modul\",\n \"sequences.details.participants.header.title.toParticipants\": \"den Teilnehmer*innen zuordnen\",\n \"button.update\": \"Aktualisieren\",\n\n \"participant.dashboard.subline\": \"Hier sind Ihre Aufgaben für heute\",\n \"participant.dashboard.learnMaterials.title\": \"Lernmaterial\",\n \"participant.dashboard.learnMaterials.content.this\": \"Es gibt\",\n \"participant.dashboard.learnMaterials.content.materialsForYou\": \"Materialien, die Sie lernen können\",\n \"participant.dashboard.trainingSsession.title\": \"SoKoBo\",\n \"participant.dashboard.trainingSsession.content\": \"Sie haben eine neue Trainingssitzung\",\n \"participant.dashboard.learnMaterials.button.gotToMaterials\": \"Zu Lernmaterial\",\n \"participant.dashboard.trainingSsession.button.participant\": \"Zur Aktuellen Sitzung\",\n\n \"sequences.modal.sessions.updateTitle\": \"Sitzungstitel ändern\",\n \"slides.button.updateSlide\": \"Slide aktualisieren\",\n \"sequences.materials.button.add.file\": \"Datei hinzufügen\",\n \"sequences.materials.header.manage.files\": \"Materialenverwaltung\",\n \"sequences.materials.button.upload.file\": \"Datei hochladen\",\n \"sequences.materials.table.header.title\": \"Titel\",\n \"sequences.materials.table.header.size\": \"Größe\",\n \"sequences.materials.empty\": \"Keine Materialen\",\n \"sequences.materials.add.materials\": \"Material hinzufügen\",\n \"sequences.materials.button.add\": \"Hinzufügen\",\n \"sequences.materials.label.select.sequence\": \"Modul auswählen\",\n \"sequences.materials.label.select.file\": \"Datei auswählen\",\n \"sequences.materials.title.modal.add.file\": \"Die ausgewählte Datei wird zum aktuellen Modul hinzugefügt\",\n\n \"learning.pages.title\": \"Lernmaterial\",\n \"learning.pages.header.file.name\": \"Datei\",\n \"learning.pages.header.size\": \"Größe\",\n \"learning.pages.header.details\": \"Details/Aktionen\",\n \"header.link.home\": \"Zuhause\",\n \"slides.button.home\": \"Zuhause\",\n \"slides.button.forward\": \"Weiter\",\n \"slides.button.back\": \"Zurück\",\n \"slide.title.copy\": \"Kopie\",\n \"slide.modal.delete.description\": \"Die ausgewӓhlte Slide wird entfernt. Fortsetzen?\",\n};\n\nconst translationENG = {\n \"add\": \"Add\",\n \"close\": \"Close\",\n \"copy\": \"Copy\",\n \"discard\": \"discard\",\n \"download\": \"download\",\n \"error.response.text\": \"Something went wrong and we were unable to save your data. Please get back to a form and try to save data again.\",\n \"error.response.title\": \"Response error title\",\n \"form.save\": \"Save\",\n \"header.dashboard\": \"DASHBOARD\",\n \"header.logout\": \"Log Out\",\n \"header.my.profile\": \"My Profile\",\n \"header.patients\": \"PATIENTS\",\n \"header.sequences\": \"SEQUENCES\",\n \"header.therapists\": \"THERAPISTS\",\n \"header.learning_material\": \"LEARNING MATERIAL\",\n \"header.training_session\": \"TRAINING SESSION\",\n \"home.welcome\": \"Welcome\",\n \"label.confirm\": \"Confirm Password\",\n \"label.details\": \"Details\",\n \"label.edit\": \"Bearbeiten\",\n \"label.email\": \"Email\",\n \"label.isAdministrator\": \"Is Administrator\",\n \"label.name\": \"Name\",\n \"label.password\": \"Password\",\n \"label.phone.number\": \"Phone Number\",\n \"label.status\": \"Status\",\n \"label.title\": \"Title\",\n \"label.title.name\": \"Title name\",\n \"label.username\": \"User Name\",\n \"label.results\": \"Results\",\n \"label.curSequence\": \"Cur. Sequence\",\n \"label.curSession\": \"Cur. Session\",\n \"loading\": \"Loading...\",\n \"login.enter.username\": \"Enter user name and password to log in the system:\",\n \"login.login\": \"LOGIN\",\n \"login.wrong.username\": \"Wrong Username or Password\",\n \"save\": \"Save\",\n \"session\": \"Session\",\n \"sequences.button.activate\": \"Mark sequence active\",\n \"sequences.button.deactivate\": \"Mark sequence inactive\",\n \"sequences.button.remove\": \"Remove sequence\",\n \"sequences.button.makeCopy\": \"Make a copy\",\n \"sequenses.copy\": \"Copy\",\n \"sequences.details.tabs.title_1\": \"Participants\",\n \"sequences.details.tabs.title_2\": \"Sessions\",\n \"sequences.details.tabs.title_3\": \"Materials\",\n \"sequences.details.header.description\": \"Description\",\n \"sequences.details.header.title\": \"Title\",\n \"sequences.details\": \"Sequence Details\",\n \"sequences.details.sessions.header.title\": \"Manage Sessions\",\n \"sequences.details.sessions.button.session.activate\": \"Mark active\",\n \"sequences.details.sessions.button.session.deactivate\": \"Mark inactive\",\n \"sequences.details.sessions.button.title_2\": \"Add session\",\n \"sequences.details.sessions.button.title_3\": \"New session\",\n \"sequences.details.sessions.empty\": \"No sessions\",\n \"sequences.details.table.header.title_1\": \"Title\",\n \"sequences.details.table.header.title_2\": \"Number of slides\",\n \"sequences.details.table.header.title_3\": \"Active\",\n \"sequences.modal.sessions.add.title\": \"Add Session?\",\n \"sequences.modal.sessions.add.select.title_1\": \"Select sequence?\",\n \"sequences.modal.sessions.add.select.title_2\": \"Select session?\",\n \"sequences.modal.sessions.add.description\": \"Selected Session will be added to the current Sequence\",\n \"sequences.modal.sessions.changeActive.title\": \"Change of session status\",\n \"sequences.modal.sessions.changeActive.description\": \"Are you sure that the session status of selected sessions will be changed?\",\n \"sequences.modal.sessions.delete.title\": \"Security question\",\n \"sequences.modal.sessions.delete.description\": \"The selected session (s) are removed. Continue?\",\n \"sequences.modal.sessions.create.title\": \"Create a session\",\n \"sequences.modal.input.description\": \"Description\",\n \"sequences.modal.input.title\": \"Title\",\n \"sequences.modal.copy.created.successfully.title\": \"The copy of the sequence was created successfully\",\n \"sequences.modal.copy.created.successfully.description\": \"Would you like to open details of the newly created copy of the sequence?\",\n \"sequences.modal.create.created.successfully.title\": \"The new sequence was created successfully.\",\n \"sequences.modal.create.created.successfully.description\": \"Would you like to open details of the newly created sequence?\",\n \"sequences.new\": \"New Sequence\",\n \"sequences.table.cells.actions\": \"Details/Actions\",\n \"sequences.table.cells.active\": \"Active\",\n \"sequences.table.cells.numberOfSessions\": \"Number of sessions\",\n \"sequences.table.cells.numberParticipants\": \"Number of participants assigned to\",\n \"sequences.table.cells.results\": \"Results\",\n \"sequences.table.cells.title\": \"Title\",\n \"sequences.title\": \"Sequences Management\",\n \"sequences.correct.answer\": \"That's the correct answer\",\n \"sequences.correct.answers\": \"These are the correct answers\",\n \"sequences.wrong.answer\": \"The answer is wrong. The correct answer is:\",\n \"sequences.wrong.answers\": \"These are the correct answers:\",\n \"therapist.active.user\": \"Active user\",\n \"therapists.add\": \"Add therapist\",\n \"therapists.add.photo\": \"Add photo\",\n \"therapists.delete.users\": \"Remove therapist\",\n \"therapists.delete.modal.title\": \"The selected researchers will be removed. Continue?\",\n \"therapists.delete.modal.description\": \"Detete description?\",\n \"therapist.also.administrator\": \"This therapist is also Administrator\",\n \"therapist.table.edit\": \"Edit therapist\",\n \"therapists.title\": \"Therapists and administrators\",\n \"therapists.user.details\": \"User Details\",\n \"view.details\": \"View details\",\n \"slide.answer.property.isAnswer\": \"Is Answer?\",\n \"slide.answer.property.correct\": \"Correct Answer?\",\n \"slide.answer.more\": \"next\",\n \"slide.title.metaData\": \"Meta Data\",\n \"slide.shape.properties.border\": \"Border\",\n \"slide.shape.properties.background\": \"Background\",\n \"slide.linear.properties.x\": \"X\",\n \"slide.linear.properties.y\": \"Y\",\n \"slide.linear.properties.width\": \"Width\",\n \"slide.linear.properties.height\": \"Height\",\n \"slide.title.shape\": \"Shape\",\n \"slide.title.answer\": \"Answer\",\n \"slide.title.embed.audio\": \"Embed audio\",\n \"slide.title.embed.audio.question\": \"Embed audio?\",\n \"slide.properties.button.label.text\": \"Text\",\n \"slide.properties.button.label.media\": \"Media\",\n \"slide.properties.button.label.image\": \"Image\",\n \"slide.title\": \"Add Elements for Session\",\n \"slide.properties.button.label.delete\": \"Delete Element\",\n \"slide.title.textProperties\": \"Text Properties\",\n \"slide.title.imageProperties\": \"Image Properties\",\n \"slide.title.mediaProperties\": \"Media Properties\",\n \"slide.properties\": \"Properties\",\n \"slide.new.text.block\": \"New text block\",\n \"slide.set.media\": \"Set media\",\n \"slide.video.start.automatically\": \"Start automatically\",\n \"slide.video.show.as.pictire\": \"Show as picture\",\n \"session.name\": \"My Session\",\n \"session.button.back\": 'Back',\n \"slide.text.property.placeholder\": \"Type your text here...\",\n \"slide.shape.property.placeholder\": \"Type shape name\",\n \"slide.media.property.placeholder\": \"Type link here...\",\n \"label.phone\": \"Phone Number\",\n \"label.newParticipant\": \"Add New Participant\",\n \"error.somethingWrong\": \"Something went wrong...\",\n \"label.addParticipant\": \"Teilnehmer anlegen\",\n \"title.participantManagement\": \"Participant management\",\n \"label.ID\": \"ID\",\n \"label.group\": \"Group\",\n \"label.confirmPassword\": \"Confirm password\",\n \"label.gender\": \"Gender\",\n \"label.age\": \"Age\",\n \"label.notes\": \"Notes\",\n \"label.disease\": \"Disease\",\n \"title.delete\": \"Delete\",\n \"title.edit\": \"Edit\",\n \"title.copy\": \"Copy\",\n \"no\": \"No\",\n \"required\": \"Required\",\n \"yes\": \"Yes\",\n \"sequences.modal.delete.title\": \"Are you sure you want to delete this item?\",\n \"sequences.modal.delete.description\": \"Deleting the item cannot be undone.\",\n \"sequences.modal.activate.title\": \"Change sequence status\",\n \"sequences.modal.activate.description\": \"Are you sure that the sequence status of selected sequences will be changed?\",\n \"label.editParticipant\": \"Edit Participant Profile\",\n \"participant.table.label.editParticipant\": \"Edit Participant\",\n \"password.does.not.match\": \"Password does not match\",\n \"participants.modal.edit.header\": 'Edit Participant Profile',\n \"participants.modal.remove.header\": 'Are you sure you want to delete this item?',\n \"participants.modal.remove.content\": 'Deleting the item cannot be undone.',\n \"participants.modal.remove.buttonYes\": 'Yes',\n \"participants.modal.remove.buttonNo\": 'No',\n \"participants.modal.save.buttonYes\": 'Save',\n \"participants.modal.save.buttonNo\": 'Cancel',\n \"participants.modal.age.errorText\": 'Only numbers',\n \"participants.modal.gender.male\": 'Male',\n \"participants.modal.gender.female\": 'Female',\n \"participants.modal.gender.divers\": 'Divers',\n \"participants.table.button.edit\": 'EDIT PARTICIPANTS',\n \"participants.table.currentSequence\": 'Sequense_1',\n \"participants.table.currentSession\": 'Session_1',\n \"participants.button.remove\": 'REMOVE PARTICIPANTS',\n \"invalid.email.format\": \"Invalid email format\",\n\n \"slide.dialog.add\": \"Add Slide\",\n \"slide.dialog.edit\": \"Edit Slide\",\n \"slide.dialog.copy\": \"Copy Slide\",\n \"slide.dialog.random\": \"Randomize answers\",\n \"slide.dialog.canBack\": \"Show the button \\\"back\\\"\",\n \"slide.dialog.multipleAnswer\": \"Multiple choise of answers\",\n \"slide.dialog.showResult\": \"Show result\",\n \"label.metaData\": \"Metadata\",\n \"sequences.details.participants.header.title.assign\": \"Assign\",\n \"sequences.details.participants.header.title.toParticipants\": \"to Participants\",\n \"button.update\": \"Update\",\n\n \"sequences.modal.sessions.updateTitle\": \"Update session title\",\n \"slides.button.updateSlide\": \"Update slide\",\n \"sequences.materials.button.add.file\": \"Add file\",\n \"sequences.materials.header.manage.files\": \"Manage files\",\n \"sequences.materials.button.upload.file\": \"Upload file\",\n \"sequences.materials.table.header.title\": \"Title\",\n \"sequences.materials.table.header.size\": \"Size\",\n\n \"participant.dashboard.subline\": \"Here is your tasks for today\",\n \"participant.dashboard.learnMaterials.title\": \"Learnmaterials\",\n \"participant.dashboard.learnMaterials.content.this\": \"There is\",\n \"participant.dashboard.learnMaterials.content.materialsForYou\": \"new materials for you to learn\",\n \"participant.dashboard.trainingSsession.title\": \"SoKoBo\",\n \"participant.dashboard.trainingSsession.content\": \"You have new training session from your therapist\",\n \"participant.dashboard.learnMaterials.button.gotToMaterials\": \"Go to materials\",\n \"participant.dashboard.trainingSsession.button.participant\": \"Participate now\",\n \"sequences.materials.empty\": \"No materials\",\n \"sequences.materials.add.materials\": \"Add Material\",\n \"sequences.materials.button.add\": \"Add\",\n \"sequences.materials.label.select.sequence\": \"Select sequence\",\n \"sequences.materials.label.select.file\": \"Select file\",\n \"sequences.materials.title.modal.add.file\": \"Selected File will be added to the current Sequence\",\n\n \"learning.pages.title\": \"Learning Pages\",\n \"learning.pages.header.file.name\": \"File name\",\n \"learning.pages.header.size\": \"Size\",\n \"learning.pages.header.details\": \"Details\",\n \"header.link.home\": \"Home\",\n \"slides.button.home\": \"Home\",\n \"slides.button.forward\": \"Forward\",\n \"slides.button.back\": \"Back\",\n \"slide.title.copy\": \"Copy\",\n};\n\nexport const translation = translationDE;\n// export const translation = translationENG;\n","import { translation } from '../../../assets/translation';\n\nexport const IS_LOADING_PARTICIPANTS = 'IS_LOADING_PARTICIPANTS';\nexport const ERROR_PARTICIPANTS = 'ERROR_PARTICIPANTS';\nexport const LOADED_PARTICIPANTS = 'LOADED_PARTICIPANTS';\n\nexport const modalDefaultValues = {\n \"group\": null,\n \"userName\": null,\n \"gender\": null,\n \"password\": null,\n \"email\": null,\n \"age\": null,\n \"disease\": null,\n \"notes\": null,\n \"confirmPassword\": null,\n};\n\nexport const modalDefaultErrors = {\"email\": \"\", \"age\": \"\", \"password\": \"\", \"name\": \"\"};\n\nexport const groupOptions = [\n { label: \"\", value: \"\" },\n {\tlabel: \"Main\", value: \"main\" },\n { label: \"Control\", value: \"control\" },\n ];\n\nexport const genderOptions = [\n {label: \"\", value: \"\"},\n {label: translation[\"participants.modal.gender.male\"], value: \"male\" },\n {label: translation[\"participants.modal.gender.female\"], value: \"female\"},\n {label: translation[\"participants.modal.gender.divers\"], value: \"divers\"},\n ];\n","import {\n IS_LOADING_PARTICIPANTS,\n LOADED_PARTICIPANTS,\n ERROR_PARTICIPANTS\n} from './constants';\n\nexport const initialState = {\n value: [],\n isLoading: false,\n error: false,\n}\n\nexport const reducer = (state = initialState, {type, payload}) => {\n switch (type) {\n case IS_LOADING_PARTICIPANTS:\n return {\n ...state,\n isLoading: true,\n };\n case ERROR_PARTICIPANTS:\n return {\n ...state,\n isLoading: false,\n error: true\n };\n case LOADED_PARTICIPANTS:\n return {\n ...state,\n isLoading: false,\n value: payload\n };\n default:\n return state;\n }\n}\n","import {\n SET_SLIDES,\n SET_SLIDE_MODAL,\n NONE,\n UPLOAD_SLIDE_PHOTO,\n UPLOAD_SLIDE_MEDIA,\n SET_ADDED_SLIDE,\n} from \"./constants\";\n\nexport const initialState = {\n sessionInfo: {},\n modalType: NONE,\n media: {\n src: null\n }\n};\n\nconst slidesReducer = (state = initialState, { type, payload }) => {\n switch (type) {\n case SET_SLIDES:\n return {\n ...state,\n sessionInfo: payload,\n };\n case SET_ADDED_SLIDE:\n return {\n ...state,\n addedSlide: payload,\n };\n case SET_SLIDE_MODAL:\n return {\n ...state,\n modalType: payload,\n };\n case UPLOAD_SLIDE_PHOTO:\n return {\n ...state,\n media: {\n src: payload.src\n }\n };\n case UPLOAD_SLIDE_MEDIA:\n return {\n ...state,\n media: {\n src: payload.src\n }\n };\n default:\n return state;\n }\n};\n\nexport default slidesReducer;\n","export const SET_SLIDES = 'SET_SLIDES';\nexport const SET_SLIDE_MODAL = 'SET_SLIDE_MODAL';\nexport const NONE = \"NONE\";\nexport const UPLOAD_SLIDE_PHOTO = \"UPLOAD_SLIDE_PHOTO\";\nexport const UPLOAD_SLIDE_MEDIA = \"UPLOAD_SLIDE_MEDIA\";\nexport const SET_ADDED_SLIDE = \"SET_ADDED_SLIDE\";\n","import {\n SET_LEARN_MATERIALS,\n SET_SEQUENCE_PROGRESS\n} from './constants';\n\nexport const initialState = {\n learnMaterials: null,\n sequenceProgress: null,\n}\n\nconst participantDasboardReducer = (state = initialState, { type, payload }) => {\n switch (type) {\n case SET_LEARN_MATERIALS:\n return {\n ...state,\n learnMaterials: payload,\n };\n case SET_SEQUENCE_PROGRESS:\n return {\n ...state,\n sequenceProgress: payload,\n };\n default:\n return state;\n }\n}\n\nexport default participantDasboardReducer;\n","export const SET_LEARN_MATERIALS = \"SET_LEARN_MATERIALS\";\nexport const SET_SEQUENCE_PROGRESS = \"SET_SEQUENCE_PROGRESS\";\n","import {\n SET_CURRENT_SLIDE,\n SET_PLAYING_AUDIO_ID,\n SET_IS_PLAYING_AUDIO_BUTTON,\n} from './constants';\n\nexport const initialState = {\n currentSlide: {},\n playingAudioId: null,\n isPlayingAudioButton: false,\n}\n\nconst trainingReducer = (state = initialState, { type, payload }) => {\n switch (type) {\n case SET_CURRENT_SLIDE:\n return {\n ...state,\n currentSlide: payload,\n };\n case SET_PLAYING_AUDIO_ID:\n return {\n ...state,\n playingAudioId: payload,\n }\n case SET_IS_PLAYING_AUDIO_BUTTON:\n return {\n ...state,\n isPlayingAudioButton: payload,\n }\n default:\n return state;\n }\n}\n\nexport default trainingReducer;\n","export const SET_CURRENT_SLIDE = \"SET_CURRENT_SLIDE\";\nexport const SET_PLAYING_AUDIO_ID = \"SET_PLAYING_AUDIO_ID\";\nexport const SET_IS_PLAYING_AUDIO_BUTTON = \"SET_IS_PLAYING_AUDIO_BUTTON\";\n","import { combineReducers } from 'redux';\nimport commonReducer from './containers/Main/reducer';\nimport initialReducer from \"./containers/MainLayout/reducer\";\nimport sequencesReducer from './redux/pages/Sequences/reducer';\nimport * as doctors from './redux/pages/Therapists/reducer';\nimport * as auth from './redux/pages/Login/reducer';\nimport * as participants from './redux/pages/Participants/reducer';\nimport slidesReducer from './containers/Sequence/reducer';\nimport participantDasboardReducer from '../src/redux/pages/Home/reducer';\nimport trainingReducer from '../src/redux/pages/Training/reducer';\n\nconst rootReducer = combineReducers({\n commonData: commonReducer,\n userInfo: initialReducer,\n sequences: sequencesReducer,\n doctors: doctors.reducer,\n slides: slidesReducer,\n auth: auth.reducer,\n participants: participants.reducer,\n participantDasboard: participantDasboardReducer,\n training: trainingReducer,\n});\n\nexport default rootReducer;\n","export const AUTH_SUCCESS = 'AUTH_SUCCESS';\nexport const AUTH_FAIL = 'AUTH_FAIL';\nexport const CLEAR_AUTH_FAIL = 'CLEAR_AUTH_FAIL';\nexport const LOGOUT = 'LOGOUT';\nexport const USER_DATA = 'USER_DATA';\nexport const SET_AVATAR = 'SET_AVATAR';\n","import { createSelector } from 'reselect';\nimport { initialState } from './reducer';\nimport {\n} from './constants';\n\nconst selectRoot = state => state.commonData || initialState;\n\nexport const selectIsError = () =>\n createSelector(\n selectRoot,\n state => state.errorStore.isError,\n );\n\nexport const selectIsErrorDescription = () =>\n createSelector(\n selectRoot,\n state => state.errorStore.description,\n );\n\nexport const selectIsLoading = () =>\n createSelector(\n selectRoot,\n state => state.isLoading,\n );","import {\n HIDE_ERROR_MODAL,\n SHOW_ERROR_MODAL,\n HANDLE_SHOWING_LOADING_MODAL,\n} from './constants';\n\nexport const handleShowingLoadingModal = payload => ({\n type: HANDLE_SHOWING_LOADING_MODAL,\n payload,\n});\n\nexport const hideErrorModal = () => ({\n type: HIDE_ERROR_MODAL,\n});\n\nexport const showErrorModal = payload => ({\n type: SHOW_ERROR_MODAL,\n payload,\n});\n","import React from 'react';\nimport { Check, Close } from '@material-ui/icons';\n\nconst ActiveInactiveIcon = ({ isActive = true }) => (\n isActive\n ? \n : \n);\n\nexport default ActiveInactiveIcon;\n","import React from 'react';\nimport { Button, makeStyles, Typography } from '@material-ui/core';\nimport Plus from '../../assets/images/plus.svg';\n\nexport const useStyles = makeStyles(theme => ({\n wrap: {\n color: theme.palette.white.main,\n backgroundColor: theme.palette.secondary.main,\n minWidth: 235,\n fontWeight: 500,\n '&:hover': {\n backgroundColor: theme.palette.secondary.dark,\n },\n },\n img: {\n marginRight: 5,\n },\n buttonLabel: {\n fontWeight: 500,\n letterSpacing: \"0.75px\",\n }\n}));\n\nconst AddButton = ({ className, title, ...props }) => {\n const classes = useStyles();\n\n return (\n \n )\n};\n\nexport default AddButton;\n","import React from 'react';\nimport { Button, makeStyles, Typography } from '@material-ui/core';\n// import Document from '../../assets/images/document.svg';\nimport { translation } from '../../assets/translation';\n\nexport const useStyles = makeStyles(theme => ({\n title: {\n // marginLeft: 10,\n color: theme.palette.secondary.main,\n fontWeight: 500,\n }\n}));\n\nconst DownloadButton = ({ onClick, hasImage=true }) => {\n const classes = useStyles();\n\n return (\n \n )\n};\n\nexport default DownloadButton;\n","import React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { DialogContent, DialogContentText, makeStyles } from '@material-ui/core';\nimport { translation } from '../../assets/translation';\n\nconst useStyles = makeStyles(() => ({\n content: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingBottom: 20,\n margin: '20px 60px',\n },\n title: {\n marginLeft: 10,\n marginBottom: 0,\n },\n}));\n\nconst Loading = ({ open }) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n {translation[\"loading\"]}\n \n \n \n )\n};\n\nexport default Loading;","import React from 'react';\nimport{\n Button,\n Dialog,\n DialogActions,\n DialogTitle,\n IconButton,\n makeStyles,\n Typography,\n DialogContent,\n Box,\n} from '@material-ui/core';\nimport { Close } from \"@material-ui/icons\";\nimport { translation } from '../../assets/translation';\n\nconst useStyles = makeStyles(theme => ({\n actions: {\n padding: '30px',\n },\n closeButton: {\n padding: 0,\n marginLeft: 10,\n },\n content: {\n padding: '16px 30px 0',\n },\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n padding: '30px 30px 0',\n },\n therapistHeader: {\n alignItems: 'center',\n paddingBottom: 0,\n },\n title: {\n color: theme.palette.primary.main,\n fontSize: 24,\n fontWeight: '500',\n letterSpacing: '0.02em'\n },\n noButton: {\n color: theme.palette.primary.main,\n padding: '13px 30px',\n fontWeight: '500',\n lineHeight: '16px',\n borderRadius: 0,\n boxShadow: 'none',\n minWidth: 136,\n },\n yesButton: {\n color: theme.palette.white.main,\n padding: '13px 30px',\n fontWeight: '500',\n lineHeight: '16px',\n minWidth: 136,\n },\n paper: {\n minWidth: '660px'\n }\n}));\n\nconst ModalWithActions = ({\n children,\n classname,\n isTherapistModal = false,\n open = true,\n onClose,\n onYes,\n title,\n titleNoButton = translation[\"discard\"],\n titleYesButton = translation[\"save\"],\n isDisabled = false\n}) => {\n const classes = useStyles();\n\n return (\n \n \n {title}\n \n \n \n \n \n {children}\n \n {!isTherapistModal && (\n \n \n )}\n \n );\n};\n\nexport default ModalWithActions;\n","import React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport {\n Button,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n IconButton,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport { translation } from '../../assets/translation';\nimport { Close } from \"@material-ui/icons\";\nconst useStyles = makeStyles(() => ({\n title: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n}));\n\nconst ResponseErrorModal = ({ description, onClose }) => {\n const classes = useStyles();\n\n return (\n \n \n {translation[\"error.response.title\"]}\n \n \n \n \n \n \n {description}\n \n \n \n \n \n \n )\n};\n\nexport default ResponseErrorModal;","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nconst CircularProgressWithLabel = (props) => {\n return (\n \n \n \n \n {`${Math.round(props.value)}%`}\n \n \n \n );\n};\n\nCircularProgressWithLabel.propTypes = {\n value: PropTypes.number.isRequired,\n fontSize: PropTypes.number,\n};\n\nexport default CircularProgressWithLabel;\n","import React from 'react';\nimport { Grid, makeStyles, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n headerWrap: {\n marginBottom: 20,\n },\n titleHeader: {\n fontFamily: theme.fonts.family.primary,\n color: theme.palette.primary.main,\n fontWeight: 900,\n fontSize: 32,\n lineHeight: '39px',\n marginTop: 0,\n letterSpacing: '0.02em',\n },\n}));\n\nconst TableHeader = ({ className = '', children, title }) => {\n const classes = useStyles();\n\n return (\n \n {title}\n \n {children}\n \n \n );\n};\n\nexport default TableHeader;\n","import axios from 'axios';\nimport {TOKEN_KEY} from '../constants';\nimport { handleShowingLoadingModal, showErrorModal } from '../containers/Main/actions';\nimport { translation } from '../assets/translation';\nimport store from '../store';\n\nexport const API_BASE_ADDRESS = 'https://sokobo.ruhr-uni-bochum.de/api';\n\nconst axiosInstance = axios.create({\n baseURL: API_BASE_ADDRESS,\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }\n});\n\naxiosInstance.interceptors.request.use(\n config => {\n const token = localStorage.getItem(TOKEN_KEY);\n if (token) {\n config.headers.authorization = `Bearer${token}`;\n }\n store.dispatch(handleShowingLoadingModal(true));\n return config;\n },\n error => Promise.reject(error),\n);\n\naxiosInstance.interceptors.response.use(\n response => {\n store.dispatch(handleShowingLoadingModal(false));\n return response\n },\n err => {\n const isBadCreds = err.request.response.includes('Bad credentials') || (\n err.request.response.includes('User with ') && \n err.request.response.includes(' userName not found')\n )\n const { error, message } = err.response.data;\n const payload = {\n isError: true,\n description: message || error || translation[\"error.response.text\"],\n };\n isBadCreds\n ? store.dispatch(handleShowingLoadingModal(false))\n : store.dispatch(showErrorModal(payload));\n return Promise.reject(err);\n },\n);\n\nexport default {\n get: (url, params) => axiosInstance.get(url, {params}),\n post: (url, data, config) => axiosInstance.post(url, data, config),\n put: (url, data, config) => axiosInstance.put(url, data, config),\n delete: (url, params) => axiosInstance.delete(url, { data: params }),\n patch: (url, data, config) => axiosInstance.patch(url, data, config),\n};\n","import api from '../api';\n\nexport const getAllTherapists = (params) => api.get('/therapist', params).then(res => res.data);\n\nexport const addTherapist = therapist => api.post('/therapist', therapist).then(res => res.data);\n\nexport const deleteTherapists = data => api.delete('/therapist/delete', data).then(res => res.data);\n\nexport const getTherapist = id => api.get(`/therapist/${id}`).then(res => res.data);\n\nexport const updateTherapist = (id, params) => api.patch(`/therapist/${id}`, params).then(res => res.data);\n","import api from '../api';\n\nexport const login = credentials => api.post('/auth/login', credentials).then(res => res.data);\n\nexport const logout = () => api.post('/auth/logout');\n","import api from '../api';\n\nexport const getAllSequences = () => api.get('sequence/?size=5000').then(res => res.data);\n\nexport const deleteSequences = data => api.delete('/sequence/delete', data).then(res => res.data);\n\nexport const changeStatusSequences = data => api.post('/sequence/change-status', data).then(res => res.data);\n\nexport const changeSessionOrder = (id, data) => api.post(`/sequence/${id}/change-session-order`, data).then(res => res.data);\n\nexport const copySequences = params => api.post(`/sequence/copy`, params).then(res => res.data);\n\nexport const createSequences = params => api.post('/sequence', params).then(res => res.data);\n\nexport const updateSequence = (id, params) => api.patch(`/sequence/${id}`, params).then(res => res.data);\n\nexport const uploadFile = (id, file) => api.post(`/sequence/${id}/uploadFiles`, file).then(res => res.data);\n\nexport const getParticipants = id => api.get(`/sequence/${id}/participants`).then(res => res.data);\n\nexport const assignParticipants = (id, params) => api.post(`/sequence/${id}/assign`, params).then(res => res.data);\n\nexport const getSequencesMaterials = id => api.get(`/sequence/${id}/materials`).then(res => res.data.sort((a, b) => a.index > b.index ? 1 : -1));\n\nexport const deleteSequenceMaterial = (sequenceId, id) => api.delete(`/sequence/${sequenceId}/materials/${id}`).then(res => res.data);\n\nexport const sequenceBindFiles = (sequenceId, fileId) => api.post(`sequence/${sequenceId}/bindFiles`, [fileId]).then(res => res.data);\n\nexport const changeMaterialsOrder = (sequenceId, data) => api.post(`sequence/${sequenceId}/change-materials-order`, data).then(res => res.data);\n\nexport const getCurrentSequence = (id) => api.get(`sequence/${id}`).then(res => res.data);\n","import api from '../api';\n\nexport const bindSession = (sequenceId, sessionId) => api.post(`/sequence/${sequenceId}/bindSession/${sessionId}`).then(res => res.data);\n\nexport const changeStatusSessions = data => api.post('/sessions/change-status', data).then(res => res.data);\n\nexport const changeSession = (id, data) => api.patch(`/sessions/${id}`, data).then(res => res.data);\n\nexport const copySession = params => api.post('/sessions/copy', params).then(res => res.data);\n\nexport const createSession = params => api.post(`/sessions`, params).then(res => res.data);\n\nexport const deleteSessions = data => api.delete('/sessions/delete', data).then(res => res.data);\n\nexport const getSequencesSessions = id => api.get(`/sequence/${id}/sessions`).then(res => res.data);\n\nexport const getSession = id => api.get(`/sessions/${id}`).then(res => res.data);\n","import api from '../api';\n\nexport const getAllSlides = () => api.get('/slide').then(res => res.data);\n\nexport const getCurrentSlide = () => api.get('/slide/current').then(res => res.data);\n\nexport const createSlide = params => api.post('/slide', params).then(res => res.data);\n\nexport const updateSlide = (id, params) => api.patch(`/slide/${id}`, params).then(res => res.data);\n\nexport const deleteSlide = id => api.delete(`/slide/${id}`).then(res => res.data);\n\nexport const copySlide = params => api.post(`/slide/copy`, params).then(res => res.data);\n\nexport const writeAnswerSlide = (id,answerId) => api.post(`/slide/${id}/answer`, answerId).then(res => res.data);\n\nexport const getPrewSlide = (id) => api.get(`slide/${id}/previous`).then(res => res.data)\n\nexport const markAsOpenedSlide = (id) => api.get(`/slide/${id}/opened`).then(res => res.data);\n\nexport const changeOrderSlide = (id, params) => api.post(`/sessions/${id}/change-slide-order`, params).then(res => res.data);\n","import api from '../api';\n\nexport const getAllParticipants = () => api.get('/participant').then(res => res.data);\n\nexport const createOneParticipant = (data) => api.post('/participant', data);\n\nexport const saveEditedParticipant = (id, data) => api.patch(`/participant/${id}`, data);\n\nexport const removeSelectedParticipant = (data) => api.delete(`/participant/delete`, data);\n","import api from '../api';\nimport { API_BASE_ADDRESS } from '../api';\nimport { TOKEN_KEY } from '../../constants';\n\nexport const uploadFile = (file) => api.post('/file', file).then(res => res.data);\n\nexport const downloadFile = (id, url='/file/') => {\n return new Promise((resolve) => {\n let xhr = new XMLHttpRequest();\n xhr.open('get', `${API_BASE_ADDRESS}${url}${id}`);\n const token = localStorage.getItem(TOKEN_KEY);\n if (token) {\n xhr.setRequestHeader('Authorization', `Bearer${token}`)\n }\n xhr.onload = function () {\n let response = xhr.responseText;\n let binary = new Uint8Array(response.length);\n\n for (let i = 0; i < response.length; i++) {\n binary[i] = response.charCodeAt(i) & 0xff;\n }\n\n const src = URL.createObjectURL(new Blob([binary.buffer]));\n resolve(src)\n }\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n xhr.send();\n })\n}\n\n","import api from '../api';\n\nexport const getLearnMaterials = () => api.get('/participant/materials').then(res => res.data);\n\nexport const getSequenceProgress = () => api.get('/participant/sequence/statistic').then(res => res.data);\n","import * as admin from './admin';\nimport * as auth from './auth';\nimport * as sequences from './sequences';\nimport * as sessions from './sessions';\nimport * as slides from './slides';\nimport * as therapist from './therapist';\nimport * as file from './file';\nimport * as participantDashboard from './participantDashboard';\n\nexport default {\n admin,\n auth,\n sequences,\n sessions,\n slides,\n therapist,\n file,\n participantDashboard,\n}\n","import { createBrowserHistory } from 'history';\n\nexport const browserHistory = createBrowserHistory();\n","import {TOKEN_KEY, USER_ROLE} from '../constants';\n\nconst clearStorage = () => {\n localStorage.removeItem(TOKEN_KEY);\n localStorage.removeItem(USER_ROLE);\n};\n\nexport default clearStorage;\n","import api from '../../../api';\nimport { TOKEN_KEY, USER_ROLE, SUB_ROLE, USER_NAME, USER_AVATAR } from '../../../constants';\nimport { browserHistory } from '../../../browserHistory';\nimport clearStorage from '../../../utils/clearStorage';\n\nimport {\n AUTH_SUCCESS,\n AUTH_FAIL,\n CLEAR_AUTH_FAIL,\n USER_DATA,\n LOGOUT,\n SET_AVATAR\n} from './constants';\n\nconst ADMIN = 'ADMIN';\nconst THERAPIST = 'THERAPIST';\nconst PARTICIPANT = 'PARTICIPANT';\n\nexport const authSuccess = () => dispatch => {\n dispatch({\n type: AUTH_SUCCESS,\n });\n};\n\nexport const authFail = payload => ({\n type: AUTH_FAIL,\n payload\n});\n\nexport const clearAuthFail = () => ({\n type: CLEAR_AUTH_FAIL,\n});\n\nexport const userData = payload => {\n localStorage.setItem(USER_ROLE, payload.role);\n localStorage.setItem(SUB_ROLE, payload.subRole);\n localStorage.setItem(USER_NAME, payload.username);\n return {\n type: USER_DATA,\n payload,\n }\n}\n\nexport const setAvatar = (payload) => {\n localStorage.setItem(USER_AVATAR, payload);\n return {\n type: SET_AVATAR,\n payload,\n }\n}\n\nexport const loginUser = (credentials) => dispatch => {\n api.auth.login(credentials)\n .then(res => {\n localStorage.setItem(TOKEN_KEY, res.token);\n dispatch(authSuccess());\n let subRole = null;\n let role = '';\n const roles = res.authorities.map(val => val.authority);\n if (roles.includes(THERAPIST)) {\n role = THERAPIST;\n roles.includes(ADMIN) && (subRole = ADMIN);\n } else {\n roles.includes(ADMIN) && (role = ADMIN);\n roles.includes(PARTICIPANT) && (role = PARTICIPANT);\n }\n if (res.image) {\n api.file.downloadFile(res.image.id)\n .then(res => dispatch(setAvatar(res)))\n .catch(err => console.log(err));\n }\n dispatch(userData({\n role,\n username: res.username,\n subRole\n }));\n switch (role) {\n case ADMIN:\n return browserHistory.push('/therapists');\n case THERAPIST:\n return browserHistory.push('/participants');\n default:\n return browserHistory.push('/home');\n }\n })\n .catch(() => {\n dispatch(authFail(true))\n });\n};\n\nexport const logoutUser = () => dispatch => {\n const token = localStorage.getItem(TOKEN_KEY);\n if (!token) {\n return;\n }\n api.auth.logout().then(() => {\n clearStorage();\n dispatch({ type: LOGOUT });\n browserHistory.push('/login');\n }).catch(() => {\n clearStorage();\n dispatch({ type: LOGOUT });\n browserHistory.push('/login');\n });\n};\n","import React from 'react';\nimport {TextField} from '@material-ui/core';\n\nconst LimitedTextField = ({...props}) => {\n return \n};\n\nexport default LimitedTextField;\n","import { makeStyles } from '@material-ui/core';\n\nexport const useStyles = makeStyles(theme => ({\n container: {\n padding: '47px'\n },\n title: {\n fontWeight: 'bold',\n fontSize: '18px',\n textAlign: 'center',\n padding: '0 5px',\n margin: 0,\n letterSpacing: '0.5px',\n lineHeight: 1.5,\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n formField: {\n margin: '30px 0',\n },\n passwordWrapper: {\n position: 'relative',\n width: '100%',\n },\n visibilityIcon: {\n position: 'absolute',\n right: 0,\n zIndex: 2,\n },\n loginButton: {\n color: theme.palette.white.main,\n backgroundColor: theme.palette.secondary.main,\n minWidth: '280px',\n minHeight: '42px',\n marginTop: '35px',\n fontWeight: 500,\n '&:hover': {\n backgroundColor: theme.palette.secondary.dark,\n }\n },\n error: {\n color: theme.palette.error.main,\n }\n}));\n","import React, { useState } from 'react';\nimport LimitedTextField from '../../../components/LimitedTextField';\nimport { useSelector } from \"react-redux\";\nimport {Button, IconButton, Typography, Box} from '@material-ui/core';\nimport {translation} from '../../../assets/translation';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\nimport { useStyles } from './styles';\n\nconst LOGIN = translation[\"login.login\"];\nconst ENTER_USERNAME = translation[\"login.enter.username\"];\nconst WRONG_USERNAME = translation[\"login.wrong.username\"];\n\nconst Form = props => {\n const {\n values,\n touched,\n errors,\n isSubmitting,\n handleChange,\n handleBlur,\n handleSubmit,\n isValid,\n dirty,\n } = props;\n const classes = useStyles();\n const [isShowError, setIsShowError] = useState(Boolean(useSelector(state => state.auth.error)));\n const [passwordIsHidden, setPasswordType] = useState(true);\n const changeHandler = (e) => {\n setIsShowError(false)\n handleChange(e);\n }\n return (\n
\n \n {ENTER_USERNAME}\n \n
\n \n
\n setPasswordType(!passwordIsHidden)}\n >\n {passwordIsHidden ? : }\n \n \n
\n

{isShowError ? WRONG_USERNAME : \"\\u00a0\"}

\n \n \n {LOGIN}\n \n \n \n
\n );\n};\n\nexport default Form;\n","import React from 'react';\nimport { withFormik } from 'formik';\nimport * as Yup from 'yup';\nimport Form from './Form';\nimport {translation} from '../../../assets/translation';\n\nconst REQUIRED = translation[\"required\"];\n\nconst ValidatedForm = props => {\n const {handleSubmit, clearAuthFail} = props;\n const ValidatedFormWithFormik = withFormik({\n mapPropsToValues: (props) => {\n const {formFields = {}} = props;\n return {\n username: formFields.username || '',\n password: formFields.password || ''\n };\n },\n\n validationSchema: Yup.object().shape({\n username: Yup.string().required(REQUIRED),\n password: Yup.string().required(REQUIRED),\n }),\n\n handleSubmit: handleSubmit\n })(Form);\n\n return \n}\n\n\nexport default ValidatedForm;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport { Grid, makeStyles } from '@material-ui/core';\nimport { loginUser, clearAuthFail } from './actions';\nimport Logo from '../../../assets/images/logoFull.svg';\nimport ValidatedForm from './ValidatedForm';\nimport Lines from '../../../assets/images/lines.svg';\nimport Background from '../../../assets/images/loginBackground.svg';\n\nconst useStyles = makeStyles(theme => ({\n wrapper: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: '1 0 auto',\n minHeight: '100vh',\n height: '100%',\n backgroundImage: `url(${Background})`,\n backgroundSize: 'cover',\n fontFamily: 'RubFlama',\n },\n formContainer: {\n display: 'flex',\n flexDirection: 'column',\n maxWidth: 375,\n width: '100%',\n minHeight: 550,\n position: 'relative',\n backgroundColor: theme.palette.white.main,\n boxShadow: '2px 2px 94px rgba(172, 188, 199, 0.5)',\n borderRadius: 24,\n },\n logo: {\n margin: '35px 35px 0 35px',\n },\n lines: {\n position: 'absolute',\n left: '50%',\n transform: 'translate(-50%, -221px)',\n },\n}));\n\nconst Login = () => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const errorData = useSelector(state => state.auth.error);\n\n const handleSubmit = values => {\n dispatch(loginUser(values));\n }\n\n const handleClearAuthFail = () => {\n if (errorData !== null ) {\n dispatch(clearAuthFail());\n }\n }\n\n return (\n \n \n \"lines\"\n \"logo\"\n \n \n \n )\n}\n\nexport default Login;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport const MainWrapper = ({ children }) => (\n \n { children }\n \n);\n\nconst Wrapper = styled.div`\n display: flex;\n position: relative;\n flex: 1;\n width: 100%;\n //min-height: 100vh;\n min-height: 650px;\n min-width: 1500px;\n background: #E5E5E5;\n flex-direction: column;\n`;\n","import React, { useState, useRef } from 'react';\nimport { Button, ClickAwayListener, Grow, MenuItem, MenuList, Paper, Popper, Typography, makeStyles } from '@material-ui/core';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport { translation } from '../../../../../assets/translation';\n\nconst useStyles = makeStyles((theme) => ({\n arrow: {\n minWidth: 50,\n height: '100%',\n color: theme.palette.white.main,\n },\n buttonLabel: {\n fontFamily: \"Arial\",\n fontSize: 14,\n lineHeight: \"17px\",\n letterSpacing: \"0.02em\",\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n },\n paper: {\n padding: '8px 0',\n },\n popper: {\n width: 200,\n },\n}));\n\nconst LogoutPopup = ({onLogout}) => {\n const classes = useStyles();\n const anchorRef = useRef(null);\n const [open, setOpen] = useState(false);\n\n const handleClose = e => {\n if (anchorRef.current && anchorRef.current.contains(e.target)) {\n return;\n }\n\n setOpen(false);\n };\n\n return (\n <>\n setOpen(!open)}\n className={classes.arrow}\n >\n \n \n \n {({ TransitionProps }) => (\n \n \n \n \n \n \n {translation[\"header.logout\"]}\n \n \n \n \n \n \n )}\n \n \n );\n}\n\nexport default LogoutPopup","import React from 'react';\nimport { Button, makeStyles } from '@material-ui/core';\nimport { translation } from '../../../../../assets/translation';\n\nconst useStyles = makeStyles((theme) => ({\n menuItem: {\n display: 'inlineBlock',\n fontWeight: '500',\n fontSize: '13px',\n margin: '0 20px',\n },\n menuItems: {\n color: '#ACBCC7',\n display: 'inline-block',\n verticalAlign: 'middle',\n textTransform: 'uppercase',\n },\n menuWrapper: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n borderLeft: '1px solid rgba(255, 255, 255, 0.2)',\n marginLeft: '15px'\n },\n button: {\n padding: 0\n }\n}));\n\nconst LogoutParticipant = ({onLogout}) => {\n const classes = useStyles();\n return (\n
\n \n
\n {translation[\"header.logout\"]}\n
\n \n
\n )\n};\n\nexport default LogoutParticipant;\n","import {createSelector} from 'reselect';\n\nconst rootSelector = state => state.auth;\n\nexport const selectRole = createSelector(\n [rootSelector],\n state => state.userRole\n);\n\nexport const selectUsername = createSelector(\n [rootSelector],\n state => state.userName\n);\n\nexport const selectImageUrl = createSelector(\n [rootSelector],\n state => state.imageUrl\n);\n\nexport const selectSubRole = createSelector(\n [rootSelector],\n state => state.subRole\n);\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport IdleTimer from 'react-idle-timer'\nimport { logoutUser } from '../../../../redux/pages/Login/actions';\nimport styles from './Header.module.scss';\nimport HomeIcon from '../../../../assets/images/homeIcon.svg';\nimport MenuDocument from '../../../../assets/images/menuDocument.svg';\nimport SequenceIcon from '../../../../assets/images/sequenceIcon.svg';\nimport LogoutPopup from './LogoutPopup/LogoutPopup';\nimport LogoutParticipant from './LogoutParticipant/LogoutParticipant';\nimport { selectRole, selectUsername, selectImageUrl, selectSubRole } from './selectors';\nimport { translation } from '../../../../assets/translation';\nimport Avatar from '@material-ui/core/Avatar';\nimport { browserHistory } from \"../../../../../src/browserHistory\";\nimport { Typography, makeStyles } from '@material-ui/core';\nimport { USER_ROLE } from '../../../../constants'\n\nconst DASHBOARD = translation[\"header.dashboard\"];\nconst PATIENTS = translation[\"header.patients\"];\nconst THERAPISTS = translation[\"header.therapists\"];\nconst SEQUENCES = translation[\"header.sequences\"];\nconst ADMIN = 'ADMIN';\nconst THERAPIST = 'THERAPIST';\nconst PARTICIPANT = 'PARTICIPANT';\nconst DEFAULT_TIMEOUT = 30; // min\n\nexport const useStyles = makeStyles(theme => ({\n userName: {\n fontSize: 14,\n lineHeight: \"17px\",\n letterSpacing: \"0.02em\",\n color: \"#FFFFFF\",\n },\n}));\n\nconst adminMenuItems = [\n {\n title: THERAPISTS,\n img: MenuDocument,\n url: '/therapists',\n isDisabled: false\n }\n];\n\nconst therapistMenuItems = [\n {\n title: PATIENTS,\n img: MenuDocument,\n url: '/participants',\n isDisabled: false\n },\n {\n title: SEQUENCES,\n img: SequenceIcon,\n url: '/sequences',\n isDisabled: false\n },\n];\n\nconst therapistWithAdminMenuItems = [\n {\n title: THERAPISTS,\n img: MenuDocument,\n url: '/therapists',\n isDisabled: false\n }\n];\n\nconst participantMenuItems = [\n {\n title: DASHBOARD,\n img: HomeIcon,\n url: '/home',\n isDisabled: false\n }\n]\n\nconst handleClick = (event, isDisabled) => {\n isDisabled && event.preventDefault()\n}\n\nconst Header = ({isShowMenu = true, asideButton = null}) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const role = useSelector(selectRole);\n const subRole = useSelector(selectSubRole);\n const username = useSelector(selectUsername);\n const imageUrl = useSelector(selectImageUrl);\n const logoutHandler = () => {\n dispatch(logoutUser());\n }\n const menuItems = (() => {\n switch (role) {\n case ADMIN:\n return adminMenuItems;\n case THERAPIST:\n return (\n subRole === ADMIN\n ? [...therapistMenuItems, ...therapistWithAdminMenuItems]\n : therapistMenuItems\n );\n default:\n return browserHistory.location.pathname === '/learning-pages' ? participantMenuItems : [];\n }\n })();\n\n return (\n
\n
\n
\n\n {isShowMenu &&\n
    \n {menuItems.map(item => (\n
  • \n handleClick(event, item.isDisabled)}\n to={item.url}\n key={item.title}\n className={styles.menuWrapper}\n activeClassName={styles.menuWrapperActive}\n exact={true}\n >\n
    \n {item.title}\n {item.title}\n
    \n \n
  • \n ))}\n
\n }\n\n
\n {asideButton &&\n browserHistory.location.pathname !== '/training' &&\n asideButton}\n {!asideButton &&\n browserHistory.location.pathname !== '/training' &&\n
\n {localStorage.getItem(USER_ROLE) !== PARTICIPANT &&\n }\n \n {username}\n \n {(localStorage.getItem(USER_ROLE) !== PARTICIPANT) ? :\n }\n browserHistory.push(`/login`)}\n debounce={250}\n />\n
\n }\n
\n )\n};\n\nexport default Header;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport const Body = ({flexDirection = 'row', children}) => (\n \n {children}\n \n);\n\nconst Wrapper = styled.div`\n display: flex;\n flex: 1;\n height: 100%;\n width: 100%;\n`;\n","import { createGlobalStyle } from 'styled-components';\n\nconst GlobalStyle = createGlobalStyle`\n html,\n body {\n height: 100%;\n width: 100%;\n margin: 0px;\n font-family: Arial;\n }\n`;\n\nexport default GlobalStyle;\n","import React from 'react';\nimport { MainWrapper } from './components/MainWrapper';\nimport Header from './components/Header/Header';\nimport { Body } from './components/Body';\nimport GlobalStyle from '../../globalStyles';\n\nconst MainLayout = ({flexDirection, children}) => {\n return (\n \n \n
\n
\n \n { children }\n \n
\n );\n}\n\nexport default MainLayout;\n","import React from 'react';\nimport { Box } from '@material-ui/core';\nimport SortingDown from '../../assets/images/sortingDown.svg';\nimport NoSorting from '../../assets/images/notSorting.svg';\n\nconst SortingArrow = ({orderBy, headCell, order}) => (\n \n \n \n);\n\nexport default SortingArrow;\n","import React from 'react';\nimport { Checkbox, TableCell, TableHead, TableRow } from '@material-ui/core';\nimport SortingArrow from '../../SortingArrow/SortingArrow';\nimport {translation} from '../../../assets/translation';\n\nconst headCells = [\n {id: 'id', label: translation[\"label.username\"], isSortable: true, width: 120},\n {id: 'results', label: translation[\"label.results\"], isSortable: false, width: 'auto'},\n {id: 'age', label: translation[\"label.age\"], isSortable: true, width: 50},\n {id: 'sex', label: translation[\"label.gender\"], isSortable: false, width: 'auto'},\n {id: 'disease', label: translation[\"label.disease\"], isSortable: false, width: 'auto'},\n {id: 'group', label: translation[\"label.group\"], isSortable: true, width: 81},\n {id: 'curSequence', label: translation[\"label.curSequence\"], isSortable: true, width: 155},\n {id: 'curSession', label: translation[\"label.curSession\"], isSortable: true, width: 81},\n {id: 'actions', label: translation[\"label.details\"], isSortable: false, width: 150},\n];\n\nconst EnhancedTableHead = ({ order, orderBy, onRequestSort, onSelectAllClick, numSelected, rowCount }) => {\n const createSortHandler = ({ id, isSortable }) => e => isSortable && onRequestSort(e, id);\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n \n {headCells.map((headCell) => (\n \n {headCell.label}\n {headCell.isSortable && }\n \n ))}\n \n \n )\n}\n\nexport default EnhancedTableHead;\n","function descendingComparator(a, b, orderBy) {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n}\n\nexport const getComparator = (order, orderBy) => {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n}\n","export const stableSort = (array, comparator) => {\n const stabilizedThis = array.map((el, index) => [el, index]);\n stabilizedThis.sort((a, b) => {\n const order = comparator(a[0], b[0]);\n if (order !== 0) return order;\n return a[1] - b[1];\n });\n return stabilizedThis.map((el) => el[0]);\n}\n\nexport const handleCheckRow = (id, selected, setSelected) => {\n const selectedIndex = selected.indexOf(id);\n let newSelected = [];\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, id);\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1));\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1));\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1),\n );\n }\n setSelected(newSelected);\n};","import React, { useState }from 'react';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport EnhancedTableHead from './EnhancedTableHead/EnhancedTableHead';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { handleCheckRow, getComparator, stableSort } from '../../utils';\nimport { ROWS_PER_PAGE } from '../../constants';\nimport Pagination from '@material-ui/lab/Pagination';\nimport { DownloadButton } from '../index';\nimport { translation } from '../../assets/translation';\nimport { Link } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n sessionLink: {\n color: theme.palette.secondary.main,\n fontWeight: 500,\n textDecoration: 'none',\n },\n}));\n\nconst ParticipantsTable = ({rows, setIsModalEditOpen, setModalValues, selected, setSelected, onDownloadDetails}) => {\n const classes = useStyles();\n const [order, setOrder] = React.useState('asc');\n const [orderBy, setOrderBy] = React.useState('');\n const [page, setPage] = useState(1);\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleSelectAllClick = (event) => {\n if (event.target.checked) {\n const newSelecteds = rows.map((n) => n.id);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const isSelected = (name) => selected.indexOf(name) !== -1;\n\n const onEditParticipantClick = (event, participant) => {\n event.stopPropagation && event.stopPropagation();\n setIsModalEditOpen(true);\n setModalValues({\n \"group\": participant.group.toLowerCase(),\n \"userName\": participant.userName,\n \"gender\": participant.gender ? participant.gender.toLowerCase() : null,\n \"password\": participant.password,\n \"email\": participant.email,\n \"age\": participant.age,\n \"disease\": participant.disease,\n \"notes\": participant.notes,\n \"id\": participant.id\n });\n }\n\n const startElement = (page - 1) * ROWS_PER_PAGE;\n const currentParticipants = rows.slice(startElement, startElement + ROWS_PER_PAGE);\n\n const getSessionLink = session => {\n if (!session || !session.title) {\n return '-';\n }\n return {session.title}\n }\n\n const getSequenceLink = sequence => {\n if (!sequence || !sequence.title) {\n return '-';\n }\n return {sequence.title}\n }\n\n return (\n \n \n \n \n {stableSort(currentParticipants, getComparator(order, orderBy))\n .map(row => {\n const isItemSelected = isSelected(row.id);\n return(\n handleCheckRow(row.id, selected, setSelected)}\n >\n \n \n \n {row.userName}\n event.stopPropagation && event.stopPropagation()}>\n onDownloadDetails(row.id, `Participant details-${row.userName}.xlsx`)}/>\n \n {row.age}\n {row.gender ? row.gender.charAt(0) : ''}\n {row.disease}\n {row.group}\n {getSequenceLink(row.sequence)}\n {getSessionLink(row.session)}\n \n \n \n \n )})}\n \n
\n setPage(page)}\n />\n
\n )\n}\n\nexport default ParticipantsTable;\n","import {createSelector} from 'reselect';\n\nconst rootSelector = state => state.participants;\n\nexport const selectValue = createSelector(\n [rootSelector],\n state => state.value\n);\n\nexport const selectIsLoading = createSelector(\n [rootSelector],\n state => state.isLoading\n);\n\nexport const selectError = createSelector(\n [rootSelector],\n state => state.error\n);\n","import React, {useState} from 'react';\nimport TextField from '@material-ui/core/TextField';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { translation } from '../../../../../assets/translation';\nimport { IconButton } from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\nimport { groupOptions, genderOptions } from '../../constants';\nimport LimitedTextField from '../../../../../components/LimitedTextField';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n '& .MuiTextField-root': {\n margin: theme.spacing(1),\n width: '280px',\n marginTop: '35px',\n marginBottom: '0',\n },\n '& > .semiContainer': {\n width: '50%',\n minWidth: '280px',\n },\n '& .ageRoot, .genderRoot': {\n width: '44.5%',\n },\n '& .emailRoot, .groupRoot, .confirmRoot, .notesRoot, .diseaseRoot, .ageRoot, .genderRoot': {\n marginTop: '15px',\n },\n '& .passwordWrapper': {\n position: 'relative',\n },\n '& .visibilityIcon': {\n position: 'absolute',\n right: '12px',\n top: '39px',\n zIndex: 2,\n }\n }\n}));\n\nconst ModalContent = ({ modalValues, setModalValues, isConfirmType, modalErrors, setModalErrors, isEdit }) => {\n const classes = useStyles();\n const [isPasswordHidden, setIsPasswordHidden] = useState(true);\n\n const handleChange = (event) => {\n setModalValues({...modalValues, [event.target.id]: event.target.value || null})\n switch (event.target.id) {\n case 'age':\n if (\n event.target.value && (\n isNaN(event.target.value) ||\n event.target.value < 1\n )\n ) {\n setModalErrors({...modalErrors, age: translation[\"participants.modal.age.errorText\"]})\n } else {\n setModalErrors({...modalErrors, age: ''})\n }\n break;\n case 'password':\n setModalErrors({\n ...modalErrors,\n password: event.target.value === modalValues.confirmPassword\n ? ''\n : translation[\"password.does.not.match\"]\n })\n break;\n case 'confirmPassword':\n setModalErrors({\n ...modalErrors,\n password: event.target.value === modalValues.password\n ? ''\n : translation[\"password.does.not.match\"]\n })\n break;\n case 'userName':\n if (event.target.value !== '') {\n setModalErrors({\n ...modalErrors,\n userName: ''\n })\n }\n break;\n case 'group':\n if (event.target.value) {\n setModalErrors({\n ...modalErrors,\n group: ''\n })\n } else {\n setModalErrors({\n ...modalErrors,\n group: translation[\"required\"]\n })\n }\n break;\n\n default:\n break;\n }\n }\n\n const handleEmailBlur = () => {\n const regEx = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (regEx.test(modalValues.email)) {\n setModalErrors({...modalErrors, email: ''})\n }\n else {\n modalValues.email && setModalErrors({...modalErrors, email: translation[\"invalid.email.format\"]})\n }\n }\n\n return (\n isConfirmType\n ? translation[\"participants.modal.remove.content\"]\n :
\n
\n \n \n {groupOptions.map((option) => (\n \n ))}\n \n \n {genderOptions.map((option) => (\n \n ))}\n \n \n \n \n
\n
\n
\n setIsPasswordHidden(!isPasswordHidden)}\n >\n {isPasswordHidden ? : }\n \n \n
\n \n \n
\n
\n )\n}\n\nexport default ModalContent;\n","import React from 'react';\nimport { Button, makeStyles } from '@material-ui/core';\nimport { translation } from '../../../../../assets/translation';\n\nconst useStyles = makeStyles(theme => ({\n button: {\n fontWeight: 700,\n padding: '8px 20px',\n borderRadius: 4,\n lineHeight: '16px',\n marginRight: theme.spacing(2),\n },\n}));\n\n\nconst RemoveButton = ({ onClick }) => {\n const classes = useStyles();\n\n return (\n \n {translation[\"participants.button.remove\"]}\n \n );\n}\n\nexport default RemoveButton;\n","import React, { useEffect, useState } from 'react';\nimport { Grid, makeStyles } from '@material-ui/core';\nimport MainLayout from '../../../containers/MainLayout';\nimport ParticipantsTable from '../../../components/ParticipantsTable/ParticipantsTable';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getParticipants, createPartisipant, editPartisipant, removeParticipant } from './actions';\nimport {selectValue} from './selectors';\nimport { AddButton, ModalWithActions, TableHeader } from '../../../components'\nimport { ModalContent, RemoveButton } from './components'\nimport { translation } from '../../../assets/translation';\nimport { modalDefaultValues, modalDefaultErrors } from './constants'\nimport { downloadFile } from '../../../api/file';\n\nconst useStyles = makeStyles(() => ({\n contentWrap: {\n margin: '45px 20px 100px',\n },\n}));\n\nconst Participants = () => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const value = useSelector(selectValue);\n\n useEffect(() => {\n dispatch(getParticipants());\n }, [dispatch]);\n\n const [isModalCreateOpen, setIsModalCreateOpen] = useState(false);\n const [isModalEditOpen, setIsModalEditOpen] = useState(false);\n const [isModalConfirmOpen, setIsModalConfirmOpen] = useState(false);\n const [modalErrors, setModalErrors] = useState(modalDefaultErrors);\n const [modalValues, setModalValues] = useState(modalDefaultValues);\n const [selected, setSelected] = React.useState([]);\n\n const onCloseModal = () => {\n isModalCreateOpen && setIsModalCreateOpen(false);\n isModalEditOpen && setIsModalEditOpen(false);\n isModalConfirmOpen && setIsModalConfirmOpen(false);\n setModalValues(modalDefaultValues);\n setModalErrors(modalDefaultErrors)\n }\n\n const isErrorsCheck = () => {\n let isErrors = Object.keys(modalErrors).reduce((acc, key) => acc || !!modalErrors[key], false);\n const isEmptyRequiredPassword = !modalValues.password && !isModalEditOpen;\n if (!modalValues.userName || isEmptyRequiredPassword || !modalValues.group) {\n setModalErrors({\n ...modalErrors,\n userName: !modalValues.userName ? translation[\"required\"] : '',\n password: isEmptyRequiredPassword ? translation[\"required\"] : '',\n group: !modalValues.group ? translation[\"required\"] : '',\n });\n isErrors = true;\n }\n return isErrors;\n }\n\n const onYesModal = () => {\n if (isModalConfirmOpen){\n dispatch(removeParticipant(selected));\n setSelected([]);\n onCloseModal();\n } else if (isErrorsCheck()) {\n return false\n }\n isModalCreateOpen && dispatch(createPartisipant({...modalValues, confirmPassword: undefined}));\n isModalEditOpen && dispatch(editPartisipant({...modalValues, confirmPassword: undefined}));\n onCloseModal();\n }\n\n const onDownloadDetails = (id, fileName) => {\n downloadFile(id, '/statistic/participant/').then(\n blob => {\n const link = document.createElement('a');\n link.href = blob;\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n link.parentNode.removeChild(link);\n }\n );\n }\n\n return (\n \n \n \n {selected.length > 0 &&\n setIsModalConfirmOpen(true)}/>}\n setIsModalCreateOpen(true)}\n title={translation[\"label.addParticipant\"]}\n />\n \n {(value && value.length > 0) &&\n }\n \n {(isModalCreateOpen ||\n isModalEditOpen ||\n isModalConfirmOpen) &&\n \n }\n onClose={onCloseModal}\n onYes={onYesModal}\n title={\n (isModalCreateOpen && translation[\"label.newParticipant\"]) ||\n (isModalEditOpen && translation[\"participants.modal.edit.header\"]) ||\n (isModalConfirmOpen && translation[\"participants.modal.remove.header\"])\n }\n titleYesButton={isModalConfirmOpen\n ? translation[\"participants.modal.remove.buttonYes\"]\n : translation[\"participants.modal.save.buttonYes\"]}\n titleNoButton={isModalConfirmOpen\n ? translation[\"participants.modal.remove.buttonNo\"]\n : translation[\"participants.modal.save.buttonNo\"]}\n />}\n \n )\n};\n\nexport default Participants;\n","import api from '../../../api';\n\nimport {\n IS_LOADING_PARTICIPANTS,\n LOADED_PARTICIPANTS,\n ERROR_PARTICIPANTS\n} from './constants';\n\nexport const getParticipants = () => (dispatch) => {\n dispatch({type: IS_LOADING_PARTICIPANTS});\n api.therapist.getAllParticipants()\n .then(res => {\n dispatch({type: LOADED_PARTICIPANTS, payload: res.content})\n })\n .catch(() => {\n dispatch({type: ERROR_PARTICIPANTS})\n })\n}\n\nexport const createPartisipant = (data) => (dispatch) => {\n api.therapist.createOneParticipant(data)\n .then(\n () => api.therapist.getAllParticipants()\n )\n .then(res => {\n dispatch({type: LOADED_PARTICIPANTS, payload: res.content})\n })\n .catch(() => {\n dispatch({type: ERROR_PARTICIPANTS})\n })\n}\n\nexport const editPartisipant = (data) => (dispatch) => {\n const id = data.id;\n delete data.id;\n api.therapist.saveEditedParticipant(id, data)\n .then(\n () => api.therapist.getAllParticipants()\n )\n .then(res => {\n dispatch({type: LOADED_PARTICIPANTS, payload: res.content})\n })\n .catch(() => {\n dispatch({type: ERROR_PARTICIPANTS})\n })\n}\n\nexport const removeParticipant = (data) => (dispatch) => {\n api.therapist.removeSelectedParticipant(data)\n .then(\n () => api.therapist.getAllParticipants()\n )\n .then(res => {\n dispatch({type: LOADED_PARTICIPANTS, payload: res.content})\n })\n .catch(() => {\n dispatch({type: ERROR_PARTICIPANTS})\n })\n}","import React, { useState } from 'react';\nimport { isEmpty } from 'lodash';\nimport{\n Grid,\n makeStyles,\n FormControl,\n InputLabel,\n Select,\n Typography,\n MenuItem\n} from '@material-ui/core';\nimport { ExpandMore } from '@material-ui/icons';\nimport { translation } from '../../../../../assets/translation';\nimport { ModalWithActions } from '../../../../../components';\n\nconst useStyles = makeStyles(theme => ({\n controlsWrap: {\n marginTop: 40,\n marginBottom: 10,\n },\n formControl: {\n width: 315,\n background: theme.palette.gray.main,\n '& .MuiInputLabel-formControl': {\n fontSize: 15,\n paddingLeft: 10,\n },\n '& .MuiFormLabel-filled': {\n paddingTop: 10,\n },\n '& .MuiSelect-icon': {\n right: 10,\n top: 'calc(50% - 16px)',\n },\n '& .MuiInput-underline.Mui-disabled:before': {\n borderBottomStyle: 'solid',\n }\n },\n paper: {\n minWidth: 710,\n },\n select: {\n '& .MuiSelect-select': {\n padding: '10px 34px 10px 10px',\n },\n '& .MuiSelect-select:focus': {\n backgroundColor: 'transparent',\n }\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n}));\n\nconst MenuProps = {\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n getContentAnchorEl: null,\n PaperProps: {\n style: {\n marginTop: 4,\n maxHeight: 250,\n },\n },\n};\n\nconst AddSessionDialog = ({\n currentSequence = {},\n getCurrentSessions,\n onClose,\n onYes,\n sequences = [],\n sessionsForSelect = [],\n title,\n titleYesButton,\n}) => {\n const classes = useStyles();\n const [form, setForm] = useState({\n sequence: '',\n session: '',\n });\n\n const handleChangeSequence = e => {\n const { name, value } = e.target;\n const newForm = {\n ...form,\n session: '',\n [name]: value,\n };\n setForm(newForm);\n getCurrentSessions(value);\n };\n\n\n const handleChangeSession = e => {\n const { name, value } = e.target;\n const newForm = {\n ...form,\n [name]: value,\n };\n setForm(newForm);\n };\n\n const controls = [\n {\n handler: handleChangeSequence,\n id: 'select-sequence-label',\n label: translation[\"sequences.modal.sessions.add.select.title_1\"],\n name: 'sequence',\n options: sequences,\n },\n {\n disabled: isEmpty(sessionsForSelect),\n handler: handleChangeSession,\n id: 'select-session-label',\n label: translation[\"sequences.modal.sessions.add.select.title_2\"],\n name: 'session',\n options: sessionsForSelect,\n },\n ];\n\n return (\n onYes(form.session)}\n title={title}\n titleYesButton={titleYesButton}\n >\n \n \n {translation[\"sequences.modal.sessions.add.description\"]}\n \n \n {controls.map(({ disabled, handler, id, label, name, options }) => (\n \n {label}\n \n {options.map(({ id, title }) => {title})}\n \n \n ))}\n \n \n \n );\n};\n\nexport default AddSessionDialog;\n","import React from \"react\";\nimport { Button, Box } from \"@material-ui/core\";\nimport { translation } from \"../../../../../assets/translation\";\nimport PropTypes from \"prop-types\";\nimport { lighten, makeStyles } from \"@material-ui/core/styles\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n buttonText: {\n color: \"#fff\",\n fontWeight: 500,\n },\n highlight:\n theme.palette.type === \"light\"\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n },\n titleHeader: {\n flex: \"1 1 100%\",\n fontSize: 24,\n letterSpacing: \"0.02em\",\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n const { currentSequence, onUpdate } = props;\n\n return (\n \n \n \n {`${translation[\"sequences.details.participants.header.title.assign\"]} \"${currentSequence.title || ''}\" ${translation[\"sequences.details.participants.header.title.toParticipants\"]}`}\n \n \n \n \n \n \n );\n};\n\nEnhancedTableToolbar.propTypes = {\n currentSequence: PropTypes.object.isRequired,\n onUpdate: PropTypes.func,\n};\n\nexport default EnhancedTableToolbar;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Box from \"@material-ui/core/Box\";\nimport { translation } from '../../../../../assets/translation';\n\nconst headCells = [\n {\n id: \"title\",\n colSpan: 5,\n numeric: false,\n disablePadding: true,\n label: translation[\"sequences.details.table.header.title_1\"],\n },\n];\n\nfunction EnhancedTableHead(props) {\n const { onSelectAllClick, numSelected, rowCount } = props;\n\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n inputProps={{ \"aria-label\": \"select all participants\" }}\n />\n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n numSelected: PropTypes.number.isRequired,\n onSelectAllClick: PropTypes.func.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nexport default EnhancedTableHead;\n","import { createSelector } from 'reselect';\nimport { initialState } from './reducer';\nimport { get } from 'lodash';\n\nconst selectRoot = state => state.sequences || initialState;\n\nexport const selectSequences = () =>\n createSelector(\n selectRoot,\n state => get(state.tableData, 'content', []),\n );\n\nexport const selectSequencesModal = () =>\n createSelector(\n selectRoot,\n state => state.modalType,\n );\n\nexport const selectSequencesSessions = () =>\n createSelector(\n selectRoot,\n state => state.sessions,\n );\n\nexport const selectSequencesParticipants = () =>\n createSelector(\n selectRoot,\n state => state.participants,\n );\n\nexport const selectSequencesSessionsForSelect = () =>\n createSelector(\n selectRoot,\n state => state.sessionsForSelect,\n );\n\nexport const selectSequencesMaterials = createSelector(\n [selectRoot],\n state => state.materials\n);\n\nexport const selectMaterialsSelected = createSelector(\n [selectRoot],\n state => state.materialsSelected\n);\n\nexport const selectIsMaterialsModalOpen = createSelector(\n [selectRoot],\n state => state.isMaterialsModalOpen\n);\n\nexport const selectContent = createSelector(\n [selectRoot],\n state => get(state.tableData, 'content', [])\n);\n\nexport const selectNewSessionNumber = () =>\n createSelector(\n selectRoot,\n state => state.newSessionNumber\n);\n\nexport const selectNewCreatedSequence = () =>\n createSelector(\n selectRoot,\n state => state.newCreatedSequence\n );\n\nexport const selectCurrentSequences = createSelector(\n [selectRoot],\n state => state.currentSequences\n);\n\nexport const selectMaterialFiles = createSelector(\n [selectRoot],\n state => state.materialFiles\n);\n","import api from '../../../api';\nimport {\n NONE,\n SET_SEQUENCES,\n SET_SEQUENCE_MODAL,\n SET_SEQUENCES_SESSIONS,\n SET_SEQUENCES_SESSIONS_FOR_SELECT,\n SET_SEQUENCES_MATERIALS,\n SET_SEQUENCES_PARTICIPANTS,\n SET_MATERIALS_SELECTED,\n SET_MATERIALS_MODAL_OPEN,\n SET_NEW_CREATED_SEQUENCE,\n INCREMENT_SESSIONS_NUMBER,\n RESET_SESSIONS_NUMBER,\n AFTER_COPY,\n AFTER_CREATE,\n SET_CURRENT_SEQUENCES,\n SET_MATERIAL_FILES,\n} from './constants';\n\nconst getActionAfterSequenceRequest = dispatch => {\n dispatch(setSequenceModal(NONE));\n dispatch(getSequences());\n}\n\nexport const setNewCreatedSequence = payload => ({\n type: SET_NEW_CREATED_SEQUENCE,\n payload\n});\n\nexport const copySequence = data => dispatch => {\n api.sequences.copySequences(data)\n .then(({id}) => {\n dispatch(setNewCreatedSequence(id));\n dispatch(setSequenceModal(AFTER_COPY));\n dispatch(getSequences());\n })\n .catch(err => console.log(err));\n}\n\nexport const createSequence = data => dispatch => {\n api.sequences.createSequences(data)\n .then(({id}) => {\n dispatch(setNewCreatedSequence(id));\n dispatch(setSequenceModal(AFTER_CREATE));\n dispatch(getSequences());\n })\n .catch(err => console.log(err));\n}\n\nexport const getSequences = () => dispatch => {\n api.sequences.getAllSequences()\n .then(res => dispatch(setSequences(res)))\n .catch(err => console.log(err));\n}\n\nexport const markAsActiveSequences = data => dispatch => {\n api.sequences.changeStatusSequences(data)\n .then(() => getActionAfterSequenceRequest(dispatch))\n .catch(err => console.log(err));\n}\n\nexport const removeSequences = data => dispatch => {\n api.sequences.deleteSequences(data)\n .then(() => getActionAfterSequenceRequest(dispatch))\n .catch(err => console.log(err));\n}\n\nexport const updateSequence = (id, data) => dispatch => {\n api.sequences.updateSequence(id, data)\n .then(() => dispatch(getCurrentSequence(id)))\n .then(() => getActionAfterSequenceRequest(dispatch))\n .catch(err => console.log(err));\n}\n\nexport const setSequences = payload => ({\n type: SET_SEQUENCES,\n payload\n});\n\nexport const setSequenceModal = payload => ({\n type: SET_SEQUENCE_MODAL,\n payload\n});\n\nexport const incrementSessionsNumber = () => ({\n type: INCREMENT_SESSIONS_NUMBER\n});\n\nexport const resetSessionsNumber = () => ({\n type: RESET_SESSIONS_NUMBER\n})\n\nconst getActionAfterSessionsRequest = (dispatch, sequenceId) => {\n dispatch(setSequenceModal(NONE));\n dispatch(getSequencesSessions(sequenceId));\n}\n\nexport const bindSession = (sequenceId, sessionId) => dispatch => {\n api.sessions.bindSession(sequenceId, sessionId)\n .then(() => {\n getActionAfterSessionsRequest(dispatch, sequenceId)\n dispatch(getSequences())\n })\n .catch(err => console.log(err));\n}\n\nexport const changeSession = (id, data, sequenceId) => dispatch => {\n api.sessions.changeSession(id, data)\n .then(() => getActionAfterSessionsRequest(dispatch, sequenceId))\n .catch(err => console.log(err));\n}\n\nexport const changeSessionOrder = (sequenceId, data) => dispatch => {\n api.sequences.changeSessionOrder(sequenceId, data)\n .then(() => getActionAfterSessionsRequest(dispatch, sequenceId))\n .catch(err => console.log(err));\n}\n\nexport const copySession = (sequenceId, sessionId) => dispatch => {\n api.sessions.copySession({id: sessionId})\n .then(() => getActionAfterSessionsRequest(dispatch, sequenceId))\n .then(() => dispatch(getSequences()))\n .catch(err => console.log(err));\n}\n\nexport const createSession = data => dispatch => {\n api.sessions.createSession(data)\n .then(() => {\n dispatch(incrementSessionsNumber())\n dispatch(getActionAfterSessionsRequest(dispatch, data.sequenceId))\n })\n .catch(err => console.log(err));\n}\n\nexport const getSequencesSessions = id => dispatch => {\n api.sessions.getSequencesSessions(id)\n .then((res) => {\n const sortData = res.sort((a, b) => a.index === b.index ? a.id - b.id : a.index - b.index);\n dispatch(setSequencesSessions(sortData));\n })\n .catch(err => console.log(err));\n}\n\nexport const getSessionsForSelect = id => dispatch => {\n api.sessions.getSequencesSessions(id)\n .then((res) => dispatch(setSequencesSessionsForSelect(res)))\n .catch(err => console.log(err));\n}\n\nexport const markAsActiveSessions = (data, sequenceId) => dispatch => {\n api.sessions.changeStatusSessions(data)\n .then(() => getActionAfterSessionsRequest(dispatch, sequenceId))\n .catch(err => console.log(err));\n}\n\nexport const removeSessions = (data, sequenceId) => dispatch => {\n api.sessions.deleteSessions(data)\n .then(() => getActionAfterSessionsRequest(dispatch, sequenceId))\n .catch(err => console.log(err));\n}\n\nexport const setSequencesSessions = payload => ({\n type: SET_SEQUENCES_SESSIONS,\n payload\n});\n\n\nexport const setSequencesSessionsForSelect = payload => ({\n type: SET_SEQUENCES_SESSIONS_FOR_SELECT,\n payload\n});\n\nexport const getSequencesMaterials = id => dispatch => {\n api.sequences.getSequencesMaterials(id)\n .then((res) => dispatch(setSequencesMaterials(res)))\n .catch(err => console.log(err));\n};\n\nexport const setSequencesMaterials = payload => ({\n type: SET_SEQUENCES_MATERIALS,\n payload\n})\nconst getActionAfterParticipantsRequest = (id, dispatch) => {\n dispatch(getSequenceParticipants(id));\n}\n\nexport const getSequenceParticipants = data => dispatch => {\n api.sequences.getParticipants(data)\n .then((res) => dispatch(setSequencesParticipants(res)))\n .catch(err => console.log(err));\n}\n\nexport const assignSequenceToParticipants = (id, participantIds) => dispatch => {\n api.sequences.assignParticipants(id, participantIds)\n .then(() => getActionAfterParticipantsRequest(id, dispatch))\n .then(() => dispatch(getSequences()))\n .catch(err => console.log(err));\n}\n\nexport const setSequencesParticipants = payload => ({\n type: SET_SEQUENCES_PARTICIPANTS,\n payload\n});\n\nexport const deleteSequencesMaterials = (sequenceId, id) => dispatch => {\n api.sequences.deleteSequenceMaterial(sequenceId, id)\n .then(() => dispatch(getSequencesMaterials(sequenceId)))\n .catch(err => console.log(err));\n}\n\nexport const setMaterialsSelected = payload => ({\n type: SET_MATERIALS_SELECTED,\n payload\n});\n\nexport const sequenceBindFiles = (sequenceId, fileId) => dispatch => {\n api.sequences.sequenceBindFiles(sequenceId, fileId)\n .then(() => {\n dispatch(getSequencesMaterials(sequenceId));\n dispatch(setMaterialsModalOpen(false))\n })\n .catch(err => console.log(err));\n};\n\nexport const setMaterialsModalOpen = (payload) => ({\n type: SET_MATERIALS_MODAL_OPEN,\n payload\n});\n\nexport const setCurrentSequence = payload => ({\n type: SET_CURRENT_SEQUENCES,\n payload\n})\n\nexport const changeMaterialOrder = (sequenceId, data) => dispatch => {\n api.sequences.changeMaterialsOrder(sequenceId, data)\n .then(() => dispatch(getSequencesMaterials(sequenceId)))\n .catch(err => console.log(err));\n};\n\nexport const getCurrentSequence = id => dispatch => {\n api.sequences.getCurrentSequence(id)\n .then(data => dispatch(setCurrentSequence(data)))\n .catch(err => console.log(err));\n};\n\nexport const setMaterialFiles = payload => ({\n type: SET_MATERIAL_FILES,\n payload\n})\n","import React, { useState, useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport { createStructuredSelector } from \"reselect\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport EnhancedTableToolbar from \"../TableExtencions/EnhancedTableToolbar\";\nimport EnhancedTableHead from \"../TableExtencions/EnhancedTableHead\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport { selectSequencesParticipants } from \"../../selectors\";\nimport { handleCheckRow } from \"../../../../../utils\";\nimport {\n getSequenceParticipants,\n assignSequenceToParticipants,\n} from \"../../actions\";\nimport { get, isNull } from \"lodash\";\nimport { ROWS_PER_PAGE } from '../../../../../constants';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n },\n paper: {\n width: \"100%\",\n marginBottom: theme.spacing(2),\n },\n visuallyHidden: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: 1,\n margin: -1,\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 20,\n width: 1,\n },\n}));\n\nconst TabParticipants = ({\n currentSequences,\n participants,\n getSequencesParticipantsAction,\n assignSequenceToParticipantsAction,\n }) => {\n const classes = useStyles();\n const [selected, setSelected] = useState([]);\n const [page, setPage] = useState(1);\n const startElement = (page - 1) * ROWS_PER_PAGE;\n const currentParticipants = get(participants, \"content\", []).slice(startElement, startElement + ROWS_PER_PAGE);\n const [sequenceId, setSequenceId] = useState(null);\n\n useEffect(() => {\n if (sequenceId) {\n const assignedParticipants = get(participants, \"content\", []).reduce(\n (acc, item) => {\n const itemSequenceId = get(item, \"sequence.id\", null);\n if (!isNull(itemSequenceId) && itemSequenceId === sequenceId) {\n acc = [item.id, ...acc];\n }\n return acc;\n },\n []\n );\n setSelected(assignedParticipants);\n }\n }, [participants]);\n\n useEffect(() => {\n setSequenceId(currentSequences.id);\n }, [currentSequences]);\n\n useEffect(() => {\n if (sequenceId) {\n getSequencesParticipantsAction(sequenceId);\n }\n }, [sequenceId]);\n\n const handleSelectAllClick = (event) => {\n if (event.target.checked) {\n const newSelecteds = get(participants, \"content\", []).map((n) => n.id);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const handleOnUpdateParticipants = () => {\n assignSequenceToParticipantsAction(sequenceId, selected);\n };\n\n const isSelected = (name) => selected.indexOf(name) !== -1;\n\n return (\n
\n \n \n \n \n \n \n {currentParticipants.map(({ id, userName }, index) => {\n const isItemSelected = isSelected(id);\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleCheckRow(id, selected, setSelected)}\n role=\"checkbox\"\n aria-checked={isItemSelected}\n tabIndex={-1}\n key={id}\n selected={isItemSelected}\n >\n \n \n \n \n {userName}\n \n \n );\n })}\n\n \n \n setPage(page)}\n />\n \n \n
\n );\n};\n\nconst mapStateToProps = createStructuredSelector({\n participants: selectSequencesParticipants(),\n});\n\nconst mapDispatchToProps = {\n getSequencesParticipantsAction: getSequenceParticipants,\n assignSequenceToParticipantsAction: assignSequenceToParticipants,\n};\n\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TabParticipants);\n","import React, { useState, useEffect } from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport { Link, useParams, withRouter } from 'react-router-dom';\nimport { get } from 'lodash';\nimport { Breadcrumbs, Grid, IconButton, makeStyles, Tabs, Tab, Typography } from '@material-ui/core';\nimport { translation } from '../../../../../assets/translation';\nimport { TabSessions, TabMaterials } from '../index';\nimport { Edit } from \"@material-ui/icons\";\nimport TabParticipants from '../TabParticipants';\nimport {getCurrentSequence} from '../../actions';\nimport {selectCurrentSequences} from '../../selectors';\n\nconst useStyles = makeStyles(theme => ({\n breadcrumb: {\n color: theme.palette.secondary.main,\n textDecoration: 'none',\n },\n descriptionWrap: {\n flexWrap: 'nowrap',\n background: theme.palette.white.main,\n padding: \"20px 25px\",\n marginBottom: 20,\n marginTop: 15,\n minHeight: 125,\n },\n descriptionLeft: {\n marginRight: 20,\n width: 180,\n },\n descriptionRight: {\n marginRight: 10,\n },\n editButton: {\n transform: 'translate(12px, -12px)',\n marginLeft: 'auto',\n },\n tabBodyWrap: {\n minHeight: 300,\n padding: 20,\n background: theme.palette.white.main,\n },\n}));\n\nconst tabs = [\n {\n id: 'tab-1',\n label: translation[\"sequences.details.tabs.title_1\"],\n },\n {\n id: 'tab-2',\n label: translation[\"sequences.details.tabs.title_2\"],\n },\n {\n id: 'tab-3',\n label: translation[\"sequences.details.tabs.title_3\"],\n },\n]\n\nconst DetailsSequence = ({ onEdit }) => {\n const dispatch = useDispatch();\n const classes = useStyles();\n const [value, setValue] = useState(0);\n const { id: sequenceId } = useParams();\n const currentSequences=useSelector(selectCurrentSequences);\n useEffect(() => {\n sequenceId && dispatch(getCurrentSequence(sequenceId))\n }, [sequenceId])\n const tabsData = [\n { component: },\n { component: },\n { component: },\n ];\n\n return (\n \n \n \n {translation[\"sequences.title\"]}\n \n {get(currentSequences, 'title', '')}\n \n \n \n \n {translation[\"sequences.details.header.title\"]}\n \n {get(currentSequences, 'title', '')}\n \n \n \n {translation[\"sequences.details.header.description\"]}\n \n {get(currentSequences, 'description', '')}\n \n \n \n \n \n setValue(newValue)}>\n {tabs.map((tab => ))}\n \n \n {tabsData[value].component}\n \n \n );\n};\n\nexport default withRouter(DetailsSequence);\n","import React from 'react';\nimport { Button, makeStyles } from '@material-ui/core';\nimport { translation } from '../../../../../assets/translation';\nimport { AddButton, TableHeader } from '../../../../../components';\nimport {\n ADD_SEQUENCE,\n MARK_ACTIVE_SEQUENCE,\n MARK_INACTIVE_SEQUENCE,\n REMOVE_SEQUENCE,\n} from '../../constants';\n\nconst useStyles = makeStyles(theme => ({\n button: {\n fontWeight: 700,\n padding: '8px 20px',\n borderRadius: 4,\n lineHeight: '16px',\n marginRight: theme.spacing(2),\n },\n}));\n\nconst HeaderSequence = ({\n isShowMakeCopyButton,\n isShowActionsButtons,\n onCopy,\n onShowSequenceModal,\n title,\n isActivating\n}) => {\n const classes = useStyles();\n\n return (\n \n {isShowActionsButtons &&\n <>\n {isActivating() ? (\n onShowSequenceModal(MARK_ACTIVE_SEQUENCE)}\n >\n {translation[\"sequences.button.activate\"]}\n \n ) : (\n onShowSequenceModal(MARK_INACTIVE_SEQUENCE)}\n >\n {translation[\"sequences.button.deactivate\"]}\n \n )}\n onShowSequenceModal(REMOVE_SEQUENCE)}\n >\n {translation[\"sequences.button.remove\"]}\n \n \n }\n {isShowMakeCopyButton &&\n \n {translation[\"sequences.button.makeCopy\"]}\n \n }\n onShowSequenceModal(ADD_SEQUENCE)} />\n \n );\n};\n\nexport default HeaderSequence;\n","import React, { useState } from 'react';\nimport {\n Grid,\n makeStyles,\n} from '@material-ui/core';\nimport { translation } from '../../../../../assets/translation';\nimport { ModalWithActions } from '../../../../../components';\nimport LimitedTextField from '../../../../../components/LimitedTextField';\n\nconst useStyles = makeStyles(() => ({\n inputTitle: {\n width: 280,\n marginBottom: 20,\n },\n inputDescription: {\n width: '100%',\n },\n}));\n\nconst fields = [\n {\n className: \"inputTitle\",\n id: \"title\",\n label: translation[\"sequences.modal.input.title\"],\n },\n {\n className: \"inputDescription\",\n id: \"description\",\n label: translation[\"sequences.modal.input.description\"],\n multiline: true,\n rows: 5,\n },\n];\n\nconst initialData = {\n description: '',\n title: '',\n};\n\nconst getInitialData = defObj => defObj ? {...defObj} : {...initialData};\n\nconst NewSequenceDialog = ({defaultData = null, onClose, onYes, title, isTitleRequired = false}) => {\n const classes = useStyles();\n const [form, setForm] = useState(getInitialData(defaultData));\n const [titleError, setTitleError] = useState(null);\n const TITLE = 'title';\n\n const handleForm = e => {\n const {name, value} = e.target;\n if (name === TITLE && isTitleRequired) {\n value ? setTitleError(null) : setTitleError(translation[\"required\"]);\n }\n setForm({\n ...form,\n [name]: value,\n })\n };\n\n const onHandleYes = () => {\n if (!form.title) {\n setTitleError(translation[\"required\"]);\n return;\n }\n onYes(form)\n }\n\n return (\n \n {fields.map(({className, id, label, multiline, rows}) => (\n \n \n \n )\n )}\n \n );\n};\n\nexport default NewSequenceDialog;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\nimport { isEmpty } from 'lodash';\nimport { Link, useParams } from 'react-router-dom';\nimport Pagination from '@material-ui/lab/Pagination';\nimport { Box } from '@material-ui/core';\nimport { Button, Checkbox, Grid, IconButton, makeStyles, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography } from '@material-ui/core';\nimport { AddButton, ActiveInactiveIcon, ModalWithActions } from '../../../../../components';\nimport { AddSessionDialog } from '../index';\nimport LimitedTextField from '../../../../../components/LimitedTextField';\nimport { Edit, DeleteOutline, FileCopy, ArrowDownward, ArrowUpward } from \"@material-ui/icons\";\nimport { translation } from '../../../../../assets/translation';\nimport { handleCheckRow } from '../../../../../utils';\nimport {\n bindSession,\n changeSession,\n createSession,\n changeSessionOrder,\n copySession,\n getSequencesSessions,\n getSessionsForSelect,\n markAsActiveSessions,\n removeSessions,\n setSequenceModal,\n resetSessionsNumber,\n} from '../../actions';\nimport { ADD_SESSION, NONE, EDIT_SESSION, MARK_ACTIVE_SESSION, REMOVE_SESSION, MARK_INACTIVE_SESSION, CREATE_SESSION } from '../../constants';\nimport { selectSequences, selectSequencesSessions, selectSequencesModal, selectSequencesSessionsForSelect, selectNewSessionNumber } from '../../selectors';\nimport { ROWS_PER_PAGE } from '../../../../../constants';\n\nconst useStyles = makeStyles(theme => ({\n actionButton: {\n backgroundColor: theme.palette.gray.main,\n borderRadius: 4,\n padding: '6px 7px',\n },\n actionDetails: {\n fontWeight: 500,\n color: theme.palette.secondary.main,\n textTransform: 'uppercase',\n marginRight: 10,\n textDecoration: 'none',\n },\n actionTableButton: {\n marginRight: theme.spacing(1),\n },\n btnWidth: {\n minWidth: 165,\n },\n changeSessionInput: {\n marginTop: 20,\n },\n headerButtonsWrap: {\n '& button:not(:last-child)': {\n marginRight: theme.spacing(1),\n }\n },\n headerWrap: {\n marginBottom: 25,\n },\n noData: {\n margin: 'auto',\n },\n titleHeader: {\n fontSize: 24,\n letterSpacing: '0.02em',\n },\n arrows: {\n display: 'inline-flex',\n alignItems: 'center',\n minWidth: '190px'\n },\n arrowButton: {\n '&:hover': {\n backgroundColor: theme.palette.gray.main\n }\n }\n}));\n\nconst headCells = [\n {\n align: 'left',\n id: 'title',\n label: translation[\"sequences.details.table.header.title_1\"]\n },\n // {\n // align: 'center',\n // id: 'results',\n // label: translation[\"sequences.details.table.header.title_2\"]\n // },\n {\n align: 'center',\n id: 'sessionCount',\n label: translation[\"sequences.details.table.header.title_3\"]\n },\n {\n align: 'center',\n id: 'actions',\n label: translation[\"label.details\"],\n },\n];\n\nconst TabSessions = ({\n bindSessionAction,\n changeSessionAction,\n changeSessionOrderAction,\n copySessionAction,\n createSessionAction,\n currentSequence,\n getSequencesSessionsAction,\n getSessionsForSelectAction,\n markAsActiveSessionsAction,\n modalType,\n removeSessionsAction,\n sequences,\n sessions,\n sessionsForSelect,\n setSequenceModalAction,\n newSessionNumber,\n resetSessionsNumberAction\n}) => {\n const classes = useStyles();\n const [page, setPage] = useState(1);\n const [selected, setSelected] = useState([]);\n const [sessionTitle, setSessionTitle] = useState('');\n const { id: sequenceId } = useParams();\n const SESSION_PREFIX = `${translation[\"session\"]} - `;\n const [newSessionTitle, setNewSessionTitle] = useState(`${SESSION_PREFIX}${newSessionNumber}`);\n const [sessionError, setSessionError] = useState(null);\n\n useEffect(() => {\n getSequencesSessionsAction(sequenceId);\n resetSessionsNumberAction();\n }, []);\n\n useEffect(() => {\n if (modalType === NONE && !isEmpty(selected)) {\n setSelected([])\n }\n }, [sessions]);\n\n useEffect(() => {\n setNewSessionTitle(`${SESSION_PREFIX}${newSessionNumber}`)\n }, [newSessionNumber]);\n\n const handleSelectAllClick = e => {\n if (e.target.checked) {\n const newSelecteds = sessions.map(({ id }) => id);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const handleBindSession = sessionId => bindSessionAction(sequenceId, sessionId);\n\n const handleCopySession = () => copySessionAction(sequenceId, selected[0]);\n\n const handleEditTitle = () => {\n const currentTitle = sessions.find(item => item.id === selected[0]).title;\n setSessionTitle(currentTitle);\n setSequenceModalAction(EDIT_SESSION);\n };\n\n const handleChangeSession = () => {\n changeSessionAction(selected[0], { title: sessionTitle }, sequenceId);\n };\n\n const handleCreateSession = () => {\n createSessionAction({ title: newSessionTitle, sequenceId })\n }\n\n const handleChangeOrder = (currentId, isUp = true) => {\n const oldIndex = sessions.findIndex(({ id }) => id === currentId);\n const newSessions = sessions.map(({ id } , i) => {\n let index = null;\n if (oldIndex === i) {\n index = isUp ? i - 1 : i + 1;\n } else if (isUp ? i === oldIndex - 1 : i === oldIndex + 1) {\n index = isUp ? i + 1 : i - 1;\n } else {\n index = i;\n }\n\n return { id, index }\n });\n changeSessionOrderAction(sequenceId, newSessions);\n };\n\n const getModalData = () => {\n switch (modalType) {\n case ADD_SESSION:\n return {\n getCurrentSessions: getSessionsForSelectAction,\n currentSequence,\n sequences,\n sessionsForSelect,\n title: translation[\"sequences.modal.sessions.add.title\"],\n onYes: handleBindSession,\n };\n case EDIT_SESSION:\n return {\n children: (\n setSessionTitle(e.target.value)}\n />\n ),\n title: translation[\"sequences.modal.sessions.updateTitle\"],\n onYes: handleChangeSession,\n };\n case MARK_ACTIVE_SESSION:\n const inactiveSelected = selected.filter(item => !sessions.find(session => session.id === item).active);\n return {\n children: translation[\"sequences.modal.sessions.changeActive.description\"],\n title: translation[\"sequences.modal.sessions.changeActive.title\"],\n onYes: () => markAsActiveSessionsAction(inactiveSelected, sequenceId),\n };\n case MARK_INACTIVE_SESSION:\n return {\n children: translation[\"sequences.modal.sessions.changeActive.description\"],\n title: translation[\"sequences.modal.sessions.changeActive.title\"],\n onYes: () => markAsActiveSessionsAction(selected, sequenceId),\n };\n case REMOVE_SESSION:\n return {\n children: translation[\"sequences.modal.sessions.delete.description\"],\n title: translation[\"sequences.modal.sessions.delete.title\"],\n onYes: () => removeSessionsAction(selected, sequenceId),\n };\n case CREATE_SESSION:\n return {\n children: (\n {\n const {value} = e.target;\n const error = value ? null: translation[\"required\"];\n setNewSessionTitle(value);\n setSessionError(error);\n }}\n required\n error={Boolean(sessionError)}\n helperText={sessionError || \"\\u00a0\"}\n />\n ),\n title: translation[\"sequences.modal.sessions.create.title\"],\n onYes: handleCreateSession,\n isDisabled:Boolean(sessionError)\n }\n default:\n return {};\n }\n };\n\n const rowCount = sessions.length;\n const selectedCount = selected.length;\n const startElement = (page - 1) * ROWS_PER_PAGE;\n const currentSessions = sessions.slice(startElement, startElement + ROWS_PER_PAGE);\n const isItemSelected = id => selected.includes(id);\n const isActivating = () => {\n const actives = selected\n .map(item => {\n const selectedSession = sessions.find(session => session.id === item);\n return selectedSession ? selectedSession.active : false\n });\n const hasBoth = actives.includes(false) && actives.includes(true)\n return hasBoth || actives.includes(false);\n };\n\n return (\n \n \n \n {translation[\"sequences.details.sessions.header.title\"]}\n \n \n {selectedCount >= 1 &&\n <>\n {isActivating() ? (\n \n ) : (\n \n )}\n setSequenceModalAction(REMOVE_SESSION)} className={classes.actionButton} size=\"small\">\n \n \n \n }\n {selectedCount === 1 &&\n \n \n \n }\n {selectedCount === 1 &&\n \n \n \n }\n \n setSequenceModalAction(CREATE_SESSION)}\n />\n \n \n {!isEmpty(sessions) &&\n \n \n \n \n \n 0 && selectedCount < rowCount}\n checked={rowCount > 0 && selectedCount === rowCount}\n onChange={handleSelectAllClick}\n />\n \n {headCells.map(({ align, id, label }) => (\n \n {label}\n \n ))}\n \n \n \n {currentSessions.map(({ active, id, title, slides, slidesCount }) => (\n \n \n handleCheckRow(id, selected, setSelected)} />\n \n {title}\n \n \n \n \n \n {\n return acc.index === slide.index \n ? acc.id < slide.id ? acc : slide\n : acc.index < slide.index ? acc : slide;\n }).id}`\n : `/session/${id}`}\n >\n {translation[\"label.edit\"]}\n \n \n handleChangeOrder(id, false)}\n className={`${classes.actionButton} ${classes.actionTableButton} ${classes.arrowButton}`}\n size=\"small\"\n >\n \n \n handleChangeOrder(id)}\n className={`${classes.actionButton} ${classes.actionTableButton} ${classes.arrowButton}`}\n size=\"small\"\n >\n \n \n \n \n \n \n ))}\n \n
\n setPage(page)}\n />\n
\n }\n {isEmpty(sessions) &&\n {translation[\"sequences.details.sessions.empty\"]}\n }\n {[EDIT_SESSION, MARK_ACTIVE_SESSION, MARK_INACTIVE_SESSION, REMOVE_SESSION].includes(modalType) &&\n setSequenceModalAction(NONE)}\n titleNoButton={translation[\"no\"]}\n titleYesButton={translation[\"yes\"]}\n {...getModalData()}\n />\n }\n {[ADD_SESSION].includes(modalType) &&\n setSequenceModalAction(NONE)}\n titleYesButton={translation[\"add\"]}\n {...getModalData()}\n />\n }\n {[CREATE_SESSION].includes(modalType) &&\n {\n setNewSessionTitle(`${SESSION_PREFIX}${newSessionNumber}`);\n setSessionError(null);\n setSequenceModalAction(NONE);\n }}\n titleNoButton={translation[\"no\"]}\n titleYesButton={translation[\"yes\"]}\n {...getModalData()}\n />\n }\n
\n );\n};\n\nconst mapStateToProps = createStructuredSelector({\n modalType: selectSequencesModal(),\n sequences: selectSequences(),\n sessions: selectSequencesSessions(),\n sessionsForSelect: selectSequencesSessionsForSelect(),\n newSessionNumber: selectNewSessionNumber()\n});\n\nconst mapDispatchToProps = {\n bindSessionAction: bindSession,\n changeSessionAction: changeSession,\n changeSessionOrderAction: changeSessionOrder,\n copySessionAction: copySession,\n createSessionAction: createSession,\n getSequencesSessionsAction: getSequencesSessions,\n getSessionsForSelectAction: getSessionsForSelect,\n markAsActiveSessionsAction: markAsActiveSessions,\n removeSessionsAction: removeSessions,\n setSequenceModalAction: setSequenceModal,\n resetSessionsNumberAction: resetSessionsNumber,\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(TabSessions);\n","import React from 'react';\nimport { translation } from '../../../../../assets/translation';\nimport { Checkbox, TableCell, TableRow, TableHead } from '@material-ui/core';\n\nconst headCells = [\n {\n align: 'left',\n id: 'title',\n label: translation['sequences.materials.table.header.title']\n },\n {\n align: 'left',\n id: 'size',\n label: translation['sequences.materials.table.header.size']\n },\n {\n align: 'left',\n id: 'actions',\n label: '',\n },\n];\n\nconst MaterialsTableHead = ({onChange, checked, indeterminate}) => (\n \n \n \n \n \n {headCells.map(({align, id, label}) => (\n \n {label}\n \n ))}\n \n \n);\n\nexport default MaterialsTableHead;\n\n","import { makeStyles } from '@material-ui/core';\n\nexport const useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n justifyContent: 'space-between',\n '& .MuiTextField-root': {\n width: '290px',\n marginTop: '35px',\n },\n '& .MuiSelect-root': {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }\n },\n bold: {\n fontWeight: '500'\n },\n headerWrap: {\n marginBottom: 25,\n },\n titleHeader: {\n fontSize: 24,\n letterSpacing: '0.02em',\n },\n headerButtonsWrap: {\n '& button:not(:last-child)': {\n marginRight: theme.spacing(1),\n }\n },\n actionButton: {\n backgroundColor: theme.palette.gray.main,\n borderRadius: 4,\n padding: '6px 7px',\n },\n actionTableButton: {\n marginRight: theme.spacing(1),\n },\n btnWidth: {\n minWidth: 165,\n },\n noData: {\n margin: 'auto',\n },\n hidden: {\n display: 'none'\n },\n}));\n","import React from 'react';\nimport { translation } from '../../../../../assets/translation';\nimport { Button } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport api from '../../../../../api';\nimport { useDispatch } from 'react-redux';\nimport { getSequencesMaterials } from '../../actions';\n\nconst UploadFile = ({urlId}) => {\n let uploadInput = React.createRef();\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const uploadFile = () => {\n uploadInput.click();\n }\n\n const handleUserFile = data => {\n if (!data) {\n return;\n }\n\n api.sequences.uploadFile(urlId, data)\n .then(() => {\n dispatch(getSequencesMaterials(urlId));\n })\n .catch(err => console.log(err));\n }\n\n const setFile = (file, e) => {\n if (!file) {\n return;\n }\n e.preventDefault();\n const formData = new FormData();\n formData.append('files', file);\n handleUserFile(formData);\n }\n\n return (\n <>\n \n {\n uploadInput = elem;\n }}\n onChange={e => setFile(e.target.files[0], e)}\n />\n \n )\n};\n\nexport default UploadFile;\n","import React, { useEffect } from 'react';\nimport { translation } from '../../../../../assets/translation';\nimport { Typography } from '@material-ui/core';\nimport TextField from '@material-ui/core/TextField';\nimport { useStyles } from './styles';\nimport { get } from 'lodash';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { selectContent, selectMaterialFiles } from '../../selectors';\nimport {setMaterialFiles} from '../../actions';\n\nconst ModalAddMaterial = ({currentSequence, modalValues, setModalValues}) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const files = useSelector(selectMaterialFiles);\n const sequences = [{id: '', title: ''}, ...useSelector(selectContent)\n .map(({id, title}) => ({id, title}))];\n const defaultModalValues = {\n sequence: '',\n file: ''\n };\n useEffect(() => {\n setModalValues(defaultModalValues);\n }, []);\n\n const content = useSelector(state => state.sequences.tableData.content);\n\n const handleChange = (event) => {\n const {id, value} = event.target;\n if (id === 'sequence') {\n const current = content.find(item => item.id === Number(value));\n const currentMaterials = get(current, 'materials', []);\n dispatch(setMaterialFiles(currentMaterials));\n setModalValues({\n sequence: value,\n file: ''\n })\n } else {\n setModalValues({...modalValues, file: value})\n }\n\n }\n\n return (\n <>\n \n {translation['sequences.materials.title.modal.add.file']} \"{get(currentSequence, 'title', '')}\"\n \n
\n \n {sequences.map(({id, title}) => (\n \n ))}\n \n \n {[{id: '', originalName: ''}, ...files].map(({id, originalName}) => (\n \n ))}\n \n \n \n )\n};\n\nexport default ModalAddMaterial;\n\n","import React, { useEffect, useState } from 'react';\nimport {\n Checkbox,\n Grid,\n IconButton,\n Table, TableBody,\n TableCell, TableContainer,\n TableRow,\n Typography\n} from '@material-ui/core';\nimport { withRouter } from 'react-router';\nimport { isEmpty, isNull } from 'lodash';\nimport { translation } from '../../../../../assets/translation';\nimport { ArrowDownward, ArrowUpward, DeleteOutline } from '@material-ui/icons';\nimport { AddButton, ModalWithActions } from '../../../../../components';\nimport MaterialsTableHead from './MaterialsTableHead';\nimport { useStyles } from './styles';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getSequencesMaterials, deleteSequencesMaterials, setMaterialsSelected, sequenceBindFiles, setMaterialsModalOpen, changeMaterialOrder } from '../../actions';\nimport { selectSequencesMaterials, selectMaterialsSelected, selectIsMaterialsModalOpen } from '../../selectors';\nimport { ROWS_PER_PAGE } from '../../../../../constants';\nimport Pagination from '@material-ui/lab/Pagination';\nimport UploadFile from './UploadFile';\nimport ModalAddMaterial from './ModalAddMaterial';\n\nconst modalDefaultValues = {\n sequence: '',\n file: ''\n};\n\nconst UP = 'UP';\nconst DOWN = 'DOWN';\n\nconst TabMaterials = ({match, currentSequence}) => {\n const dispatch = useDispatch();\n const classes = useStyles();\n const materials = useSelector(selectSequencesMaterials);\n const [page, setPage] = useState(1);\n const isMaterialsModalOpen = useSelector(selectIsMaterialsModalOpen);\n const selected = useSelector(selectMaterialsSelected);\n const selectedCount = selected.length;\n const startElement = (page - 1) * ROWS_PER_PAGE;\n const currentMaterials = materials.slice(startElement, startElement + ROWS_PER_PAGE);\n const {id: urlId} = match.params;\n const [modalValues, setModalValues] = useState(modalDefaultValues);\n\n useEffect(() => {\n dispatch(getSequencesMaterials(urlId));\n }, []);\n\n const handleCheckRow = (e, name) => {\n const selectedIndex = selected.indexOf(name);\n let newSelected = [];\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, name);\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1));\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1));\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1),\n );\n }\n\n dispatch(setMaterialsSelected(newSelected));\n };\n\n const handleSelectAllClick = e => {\n if (e.target.checked) {\n const newSelecteds = materials.map(({id}) => id);\n dispatch(setMaterialsSelected(newSelecteds));\n return;\n }\n dispatch(setMaterialsSelected([]));\n };\n const rowCount = materials.length;\n\n const isItemSelected = id => selected.includes(id);\n\n const deleteMaterials = () => {\n selected.forEach(item => dispatch(deleteSequencesMaterials(urlId, item)));\n dispatch(setMaterialsSelected([]));\n }\n\n const handleCloseModal = () => {\n dispatch(setMaterialsModalOpen(false));\n }\n\n const handleAddFile = () => {\n dispatch(sequenceBindFiles(urlId, modalValues.file))\n }\n\n const handleChangeOrder = (currentMaterial, materials, direction) => {\n const length = materials.length;\n const currentIndex = materials.findIndex(item => item.id ===currentMaterial.id);\n const nextIndex = (direction === UP) ? currentIndex + 1 : currentIndex - 1;\n if (nextIndex < 0 || nextIndex >= length) {\n return;\n }\n const tmp = materials[currentIndex].index;\n materials[currentIndex].index = materials[nextIndex].index;\n materials[nextIndex].index = tmp;\n dispatch(changeMaterialOrder(urlId, materials));\n }\n\n const getFileSize = (bytes) => {\n if (isNull(bytes)) return '';\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed())} ${sizes[i]}`\n }\n\n return (\n \n \n \n {translation['sequences.materials.header.manage.files']}\n \n \n {selectedCount >= 1 &&\n \n \n \n }\n \n dispatch(setMaterialsModalOpen(true))}\n />\n \n \n {!isEmpty(materials) &&\n \n \n 0 && selectedCount < rowCount}\n checked={rowCount > 0 && selectedCount === rowCount}\n />\n \n {currentMaterials.map(({id, originalName, index, size}) => (\n \n \n handleCheckRow(e, id)} />\n \n {originalName}\n {getFileSize(size)}\n \n handleChangeOrder(({id, index}), materials, UP)}\n className={`${classes.actionButton} ${classes.actionTableButton}`}\n size=\"small\"\n >\n \n \n handleChangeOrder(({id, index}), materials, DOWN)}\n className={`${classes.actionButton} ${classes.actionTableButton}`}\n size=\"small\"\n >\n \n \n \n \n ))}\n \n
\n setPage(page)}\n />\n
\n }\n {isEmpty(materials) &&\n {translation['sequences.materials.empty']}\n }\n {isMaterialsModalOpen && \n \n }\n
\n )\n};\n\nexport default withRouter(TabMaterials);\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\nimport { Link } from 'react-router-dom';\nimport { isEmpty } from 'lodash';\nimport Pagination from '@material-ui/lab/Pagination';\nimport { Checkbox, Grid, makeStyles, Paper, Table, TableBody, TableCell, TableContainer, TableHead, TableRow } from '@material-ui/core';\nimport { MainLayout } from '../../../containers';\nimport { ActiveInactiveIcon, DownloadButton, ModalWithActions } from '../../../components';\nimport { DetailsSequence, HeaderSequence, NewSequenceDialog } from './components';\nimport { translation } from '../../../assets/translation';\nimport {\n copySequence,\n createSequence,\n getSequences,\n markAsActiveSequences,\n removeSequences,\n setSequenceModal,\n updateSequence,\n} from './actions';\nimport {\n ADD_SEQUENCE,\n AFTER_CREATE,\n COPY_SEQUENCE,\n AFTER_COPY,\n EDIT_SEQUENCE,\n MARK_ACTIVE_SEQUENCE,\n MARK_INACTIVE_SEQUENCE,\n NONE,\n REMOVE_SEQUENCE,\n} from './constants';\nimport { selectSequences, selectSequencesModal, selectNewCreatedSequence } from './selectors';\nimport { downloadFile } from '../../../api/file';\nimport {browserHistory} from '../../../browserHistory';\nimport { handleCheckRow } from '../../../utils';\nimport { ROWS_PER_PAGE } from '../../../constants';\n\nconst useStyles = makeStyles(theme => ({\n actionsLink: {\n color: theme.palette.secondary.main,\n fontWeight: 500,\n textTransform: 'uppercase',\n textDecoration: 'none',\n },\n contentWrap: {\n margin: '45px 20px 100px',\n width: '100%',\n },\n}));\n\nconst headCells = [\n {\n align: 'left',\n id: 'title',\n label: translation[\"sequences.table.cells.title\"]},\n {\n align: 'left',\n id: 'results',\n label: translation[\"sequences.table.cells.results\"]},\n {\n align: 'center',\n id: 'sessionCount',\n label: translation[\"sequences.table.cells.numberOfSessions\"]},\n {\n align: 'center',\n id: 'participantCount',\n label: translation[\"sequences.table.cells.numberParticipants\"]},\n {\n align: 'left',\n id: 'active',\n label: translation[\"sequences.table.cells.active\"]},\n {\n align: 'left',\n id: 'actions',\n label: translation[\"sequences.table.cells.actions\"]},\n];\n\nconst Sequences = ({\n createSequenceAction,\n copySequenceAction,\n getSequencesAction,\n markAsActiveSequencesAction,\n match,\n modalType,\n removeSequencesAction,\n sequences,\n setSequenceModalAction,\n updateSequenceAction,\n newCreatedSequence\n}) => {\n const [currentRow, setCurrentRow] = useState({});\n const [page, setPage] = useState(1);\n const [selected, setSelected] = useState([]);\n const { id: urlId } = match.params;\n const classes = useStyles();\n\n useEffect(() => {\n getSequencesAction();\n }, [getSequencesAction]);\n\n useEffect(() => {\n if ([NONE, AFTER_COPY].includes(modalType) && !isEmpty(selected)) {\n setSelected([])\n }\n if (!isEmpty(sequences) && urlId) {\n handleToDetails(urlId)\n }\n }, [sequences, urlId]);\n\n const handleSelectAllClick = e => {\n if (e.target.checked) {\n const newSelecteds = sequences.map(({ id }) => id);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const handleUpdateSequence = ({ id, ...props }) => updateSequenceAction(id, props);\n\n const handleCopy = () => {\n const current = sequences.find(({ id }) => id === selected[0]);\n setCurrentRow(current)\n setSequenceModalAction(COPY_SEQUENCE);\n };\n\n const handleToDetails = currentId => {\n const current = sequences.find(({ id }) => id === Number(currentId));\n setCurrentRow(current)\n };\n\n const getModalData = () => {\n const { id, description, title = '' } = currentRow;\n switch (modalType) {\n case ADD_SEQUENCE:\n return {\n title: translation[\"sequences.new\"],\n onYes: createSequenceAction,\n };\n case AFTER_CREATE:\n return {\n title: translation[\"sequences.modal.create.created.successfully.title\"],\n children: translation[\"sequences.modal.create.created.successfully.description\"],\n onYes: () => {\n setSequenceModalAction(NONE);\n browserHistory.push(`/sequences/${newCreatedSequence}/details`);\n }\n }\n case COPY_SEQUENCE:\n return {\n defaultData: {\n id: selected[0],\n description,\n title: `${translation[\"sequenses.copy\"]} - ${title}`,\n },\n title: `${translation[\"sequenses.copy\"]} - ${title}`,\n onYes: copySequenceAction,\n };\n case AFTER_COPY:\n return {\n title: translation[\"sequences.modal.copy.created.successfully.title\"],\n children: translation[\"sequences.modal.copy.created.successfully.description\"],\n onYes: () => {\n setSelected([]);\n setSequenceModalAction(NONE);\n browserHistory.push(`/sequences/${newCreatedSequence}/details`);\n }\n };\n case EDIT_SEQUENCE:\n return {\n defaultData: {\n id,\n description,\n title,\n },\n title,\n onYes: handleUpdateSequence,\n };\n case MARK_ACTIVE_SEQUENCE:\n const inactiveSelected = selected.filter(item => {\n const current = currentSequences.find(session => session.id === item);\n return !(current && current.active)\n });\n return {\n children: translation[\"sequences.modal.activate.description\"],\n title: translation[\"sequences.modal.activate.title\"],\n onYes: () => markAsActiveSequencesAction(inactiveSelected),\n };\n case MARK_INACTIVE_SEQUENCE:\n return {\n children: translation[\"sequences.modal.activate.description\"],\n title: translation[\"sequences.modal.activate.title\"],\n onYes: () => markAsActiveSequencesAction(selected),\n };\n case REMOVE_SEQUENCE:\n return {\n children: translation[\"sequences.modal.delete.description\"],\n title: translation[\"sequences.modal.delete.title\"],\n onYes: () => removeSequencesAction(selected),\n };\n default:\n return {};\n }\n };\n\n const rowCount = sequences.length;\n const selectedCount = selected.length;\n const startElement = (page - 1) * ROWS_PER_PAGE;\n const currentSequences = sequences.slice(startElement, startElement + ROWS_PER_PAGE);\n const isActivating = () => {\n const actives = selected.map(item => {\n const checked = sequences.find(session => session.id === item);\n return checked && checked.active;\n });\n const hasBoth = actives.includes(false) && actives.includes(true)\n return hasBoth || actives.includes(false);\n }\n\n const downloadImage = (id, fileName) => {\n downloadFile(id, '/statistic/sequence/').then(\n blob => {\n const link = document.createElement('a');\n link.href = blob;\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n link.parentNode.removeChild(link);\n }\n );\n }\n\n return (\n \n \n = 1}\n onShowSequenceModal={setSequenceModalAction}\n onCopy={handleCopy}\n isActivating = {isActivating}\n title={urlId ? translation[\"sequences.details\"] : translation[\"sequences.title\"]}\n />\n {urlId\n ? setSequenceModalAction(EDIT_SEQUENCE)}\n />\n : \n \n \n \n \n 0 && selectedCount < rowCount}\n checked={rowCount > 0 && selectedCount === rowCount}\n onChange={handleSelectAllClick}\n />\n \n {headCells.map(({ align, id, label }) => (\n \n {label}\n \n ))}\n \n \n \n {currentSequences.map(({ active, id, participantCount, title, sessionCount }) => (\n \n \n handleCheckRow(id, selected, setSelected)} />\n \n {title}\n \n downloadImage(id, `${id}.xlsx`)}\n />\n \n {sessionCount}\n {participantCount}\n \n \n \n \n handleToDetails(id)}\n >\n {translation[\"view.details\"]}\n \n \n \n ))}\n \n
\n setPage(page)}\n />\n
\n }\n
\n {[ADD_SEQUENCE, COPY_SEQUENCE, EDIT_SEQUENCE].includes(modalType) &&\n setSequenceModalAction(NONE)}\n isTitleRequired={true}\n {...getModalData()}\n />\n }\n {[AFTER_COPY, AFTER_CREATE, MARK_ACTIVE_SEQUENCE, MARK_INACTIVE_SEQUENCE, REMOVE_SEQUENCE].includes(modalType) &&\n setSequenceModalAction(NONE)}\n titleNoButton={translation[\"no\"]}\n titleYesButton={translation[\"yes\"]}\n {...getModalData()}\n />\n }\n
\n );\n}\n\nconst mapStateToProps = createStructuredSelector({\n sequences: selectSequences(),\n modalType: selectSequencesModal(),\n newCreatedSequence: selectNewCreatedSequence(),\n});\n\nconst mapDispatchToProps = {\n createSequenceAction: createSequence,\n copySequenceAction: copySequence,\n getSequencesAction: getSequences,\n markAsActiveSequencesAction: markAsActiveSequences,\n removeSequencesAction: removeSequences,\n setSequenceModalAction: setSequenceModal,\n updateSequenceAction: updateSequence,\n};\n\nconst withConnect = connect(\n mapStateToProps,\n mapDispatchToProps,\n);\n\nexport default compose(\n withConnect,\n)(Sequences);\n","import React from 'react';\nimport { Checkbox, TableCell, TableHead, TableRow } from '@material-ui/core';\nimport SortingArrow from '../../SortingArrow/SortingArrow';\nimport {translation} from '../../../assets/translation';\n\nconst headCells = [\n {id: 'userName', label: translation[\"label.username\"], isSortable: false},\n {id: 'title', label: translation[\"label.title.name\"], isSortable: true},\n {id: 'email', label: translation[\"label.email\"], isSortable: true},\n {id: 'admin', label: translation[\"label.isAdministrator\"], isSortable: false},\n {id: 'phoneNumber', label: translation[\"label.phone\"], isSortable: false},\n {id: 'status', label: translation[\"label.status\"], isSortable: false},\n {id: 'details', label: translation[\"label.details\"], isSortable: false},\n];\n\nconst EnhancedTableHead = ({ onSelectAllClick, order, orderBy, onRequestSort, rowCount, selectedCount }) => {\n const createSortHandler = ({ id, isSortable }) => e => isSortable && onRequestSort(e, id);\n return (\n \n \n \n 0 && selectedCount < rowCount}\n checked={rowCount > 0 && selectedCount === rowCount}\n onChange={onSelectAllClick}\n />\n \n {headCells.map((headCell) => (\n \n {headCell.label}\n {headCell.isSortable && }\n \n ))}\n \n \n )\n};\n\nexport default EnhancedTableHead;\n\n","import React, { useState } from 'react';\nimport { Box, Button, Checkbox, makeStyles, Paper, Table, TableBody, TableCell, TableContainer, TableRow } from '@material-ui/core';\nimport Pagination from '@material-ui/lab/Pagination';\nimport { ActiveInactiveIcon } from '../index';\nimport EnhancedTableHead from './EnhancedTableHead/EnhancedTableHead';\nimport {translation} from '../../assets/translation';\nimport { handleCheckRow } from '../../utils';\nimport { ROWS_PER_PAGE } from '../../constants';\n\nconst useStyles = makeStyles(() => ({\n emailCell: {\n maxWidth: \"30ch\",\n whiteSpace: \"nowrap\",\n },\n}));\n\nconst TherapistsTable = ({ onRequestSort, onEditTherapist, selected, setSelected, therapists }) => {\n const classes = useStyles();\n const [page, setPage] = useState(1);\n const [sorting, setSorting] = useState({\n order: 'asc',\n orderBy: ''\n });\n\n const handleRequestSort = (e, property) => {\n const isAsc = sorting.orderBy === property && sorting.order === 'asc';\n const newSorting = {\n order: isAsc ? 'desc' : 'asc',\n orderBy: property\n };\n setSorting(newSorting);\n onRequestSort(newSorting);\n };\n\n const handleSelectAllClick = e => {\n if (e.target.checked) {\n const newSelecteds = therapists.map(({ id }) => id);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const startElement = (page - 1) * ROWS_PER_PAGE;\n const currentTherapists = therapists.slice(startElement, startElement + ROWS_PER_PAGE);\n const rowCount = therapists.length;\n const selectedCount = selected.length;\n\n return (\n \n \n \n \n {currentTherapists.map(therapist => (\n \n \n handleCheckRow(therapist.id, selected, setSelected)} />\n \n \n {therapist.userName}\n \n \n {therapist.title} {therapist.name}\n \n \n \n {therapist.email}\n \n \n \n \n \n {therapist.phoneNumber}\n \n \n \n \n \n \n \n ))}\n \n
\n setPage(page)}\n />\n
\n );\n}\n\nexport default TherapistsTable;\n","import api from '../../../api';\nimport {\n CLEAR_THERAPIST,\n LOADED_THERAPISTS,\n LOADED_THERAPIST,\n NONE,\n REMOVE_PHOTO, ADD_ID,\n SET_PHOTO_SRC,\n SET_MODAL_TYPE,\n} from './constants';\n\nexport const getTherapists = (params) => (dispatch) => {\n api.admin.getAllTherapists(params)\n .then(res => {\n dispatch({type: LOADED_THERAPISTS, payload: res.content})\n })\n .catch((err) => console.log(err))\n}\n\nexport const getTherapist = (id) => (dispatch) => {\n api.admin.getTherapist(id)\n .then(res => {\n dispatch({type: LOADED_THERAPIST, payload: res});\n })\n .catch((err) => console.log(err))\n}\n\nexport const clearTherapist = () => (dispatch) => dispatch({type: CLEAR_THERAPIST});\n\nexport const addTherapist = (therapist) => (dispatch) => {\n api.admin.addTherapist(therapist)\n .then(() => {\n dispatch(clearTherapist());\n dispatch(getTherapists());\n })\n .catch(err => console.log(err));\n}\n\nexport const updateTherapist = (id, therapist) => (dispatch) => {\n api.admin.updateTherapist(id, therapist)\n .then(() => {\n dispatch(clearTherapist());\n dispatch(getTherapists());\n })\n .catch(err => console.log(err));\n}\n\nexport const setPhotoSrc = src => (dispatch) => dispatch({type: SET_PHOTO_SRC, payload: src});\n\nexport const removePhoto = () => (dispatch) => dispatch({type: REMOVE_PHOTO});\n\nexport const addId = id => (dispatch) => dispatch({type: ADD_ID, payload: id})\n\nexport const setTherapistModal = payload => ({\n type: SET_MODAL_TYPE,\n payload\n});\n\nexport const removeSequences = data => dispatch => {\n api.admin.deleteTherapists(data)\n .then(() => {\n dispatch(setTherapistModal(NONE));\n dispatch(getTherapists());\n })\n .catch(err => console.log(err));\n}","import { makeStyles } from '@material-ui/core';\n\nexport const useStyles = makeStyles(theme => ({\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n },\n title: {\n fontWeight: '500',\n fontSize: '32px',\n lineHeight: '39px',\n color: theme.palette.primary.main,\n },\n item: {\n flexBasis: '50%'\n },\n photoUpload: {\n width: '280px',\n height: '280px',\n borderStyle: 'dashed',\n borderWidth: '2px',\n borderColor: theme.palette.secondary.main,\n marginRight: '40px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n photoWrapper: {\n width: '276px',\n height: '276px',\n borderStyle: 'solid',\n borderWidth: '2px',\n borderColor: theme.palette.secondary.main,\n marginRight: '40px',\n backgroundSize: 'cover',\n backgroundPosition: 'center'\n },\n deleteWrapper: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginRight: '40px'\n },\n dialog: {\n minWidth: '660px'\n },\n content: {\n display: 'flex',\n padding: 0,\n },\n form: {\n maxWidth: '280px'\n },\n uploadText: {\n color: theme.palette.secondary.main,\n fontWeight: '500',\n fontSize: '15px',\n letterSpacing: '0.15px',\n textTransform: 'none'\n },\n img: {\n marginRight: 5\n },\n checkbox: {\n paddingRight: 5\n },\n checkboxLabel: {\n marginRight: 0\n },\n noButton: {\n color: theme.palette.primary.main,\n backgroundColor: theme.palette.gray.main,\n padding: '13px 30px',\n fontWeight: '500',\n lineHeight: '16px',\n borderRadius: 0,\n boxShadow: 'none',\n minWidth: 136,\n },\n yesButton: {\n color: theme.palette.white.main,\n padding: '13px 30px',\n fontWeight: '500',\n lineHeight: '16px',\n minWidth: 136,\n },\n actions: {\n padding: '30px 0'\n },\n hidden: {\n display: 'none'\n },\n passwordWrapper: {\n position: 'relative',\n },\n visibilityIcon: {\n position: 'absolute',\n right: 0,\n zIndex: 2,\n }\n}));\n","import {createSelector} from 'reselect';\n\nconst rootSelector = state => state.doctors;\n\nexport const selectTherapist = createSelector(\n [rootSelector],\n state => state.therapist\n);\n\nexport const selectId = createSelector(\n [rootSelector],\n state => state.photo.id\n);\n\nexport const selectSrc = createSelector(\n [rootSelector],\n state => state.photo.src\n);\n","import React from 'react';\nimport { useStyles } from './styles';\nimport PicturePlus from '../../assets/images/picturePlus.svg';\nimport { translation } from '../../assets/translation';\nimport { Button, IconButton } from '@material-ui/core';\nimport { useSelector, useDispatch } from 'react-redux';\nimport api from '../../api';\nimport { downloadFile } from '../../api/file';\nimport { addId, setPhotoSrc, removePhoto } from '../../redux/pages/Therapists/actions';\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\nimport { selectSrc } from './selectors';\n\nconst PhotoUpload = () => {\n const dispatch = useDispatch();\n let uploadInput = React.createRef();\n const classes = useStyles();\n const src = useSelector(selectSrc);\n const uploadFile = () => {\n uploadInput.click();\n }\n const handleUserPhoto = data => {\n if (!data) {\n return;\n }\n\n api.file.uploadFile(data)\n .then(res => {\n dispatch(addId(res.id));\n downloadFile(res.id).then(\n res => {\n dispatch(setPhotoSrc(res))\n })\n })\n .catch(err => console.log('err = ', err));\n }\n\n const setPhoto = (file, e) => {\n if (!file) {\n return;\n }\n e.preventDefault();\n const formData = new FormData();\n formData.append('file', file);\n handleUserPhoto(formData);\n }\n\n return (\n <>\n {(src) ? (\n
\n
\n
\n dispatch(removePhoto())}\n >\n \n \n
\n
\n ) : (\n <>\n \n {\n uploadInput = elem;\n }}\n onChange={e => setPhoto(e.target.files[0], e)}\n />\n \n )}\n \n )\n};\n\nexport default PhotoUpload;\n","import React , {useState} from 'react';\nimport LimitedTextField from '../LimitedTextField';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport { translation } from '../../assets/translation';\nimport { useStyles } from './styles';\nimport { Button, IconButton, DialogActions } from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\n\nconst Form = ({onClose, modalValues, setModalValues, modalErrors, setModalErrors, onYes, isEdit}) => {\n const classes = useStyles();\n const [passwordIsHidden, changePasswordType] = useState(true);\n const [confirmIsHidden, setConfirmType] = useState(true);\n const handleChange = (event) => {\n if (['admin', 'isActive'].includes(event.target.id)) {\n setModalValues({...modalValues, [event.target.id]: !modalValues[event.target.id]})\n } else if (event.target.id === 'title') {\n setModalValues({...modalValues, [event.target.id]: event.target.value || ''})\n } else if (event.target.id === 'name') {\n setModalValues({...modalValues, [event.target.id]: event.target.value || ''})\n } else {\n setModalValues({...modalValues, [event.target.id]: event.target.value || null})\n }\n\n switch (event.target.id) {\n case 'userName':\n if (event.target.value !== '') {\n setModalErrors({\n ...modalErrors,\n userName: ''\n })\n }\n break;\n case 'password':\n setModalErrors({\n ...modalErrors,\n password: event.target.value === modalValues.confirm\n ? ''\n : translation[\"password.does.not.match\"]\n })\n break;\n case 'confirm':\n setModalErrors({\n ...modalErrors,\n password: event.target.value === modalValues.password\n ? ''\n : translation[\"password.does.not.match\"]\n })\n break;\n default:\n break;\n }\n }\n\n const handleEmailBlur = () => {\n const regEx = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (regEx.test(modalValues.email)) {\n setModalErrors({...modalErrors, email: ''})\n }\n else {\n modalValues.email && setModalErrors({...modalErrors, email: translation[\"invalid.email.format\"]})\n }\n }\n\n return (\n
\n \n \n
\n changePasswordType(!passwordIsHidden)}\n >\n {passwordIsHidden ? : }\n \n \n
\n
\n setConfirmType(!confirmIsHidden)}\n >\n {confirmIsHidden ? : }\n \n \n
\n }\n label={translation['therapist.also.administrator']}\n className={classes.checkboxLabel}\n />\n \n \n \n \n }\n label={translation['therapist.active.user']}\n className={classes.checkboxLabel}\n />\n \n \n \n \n \n \n )\n}\n\nexport default Form;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect } from 'react';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport { useStyles } from './styles';\nimport ModalWithActions from '../ModalWithActions';\nimport { selectId } from './selectors';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PhotoUpload from './PhotoUpload';\nimport { downloadFile } from '../../api/file';\nimport {setPhotoSrc} from '../../redux/pages/Therapists/actions';\nimport Form from './Form';\nimport { translation } from '../../assets/translation';\n\nconst AddTherapistsModal = ({onClose, isEdit, modalValues, setModalValues, modalErrors, setModalErrors, onYes}) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const id = useSelector(selectId);\n\n useEffect(() => {\n if (isEdit && id) {\n id && downloadFile(id).then (\n res => dispatch(setPhotoSrc(res))\n );\n }\n }, [isEdit, id]);\n\n return (\n \n \n \n \n \n \n );\n}\n\nexport default AddTherapistsModal;\n","import {createSelector} from 'reselect';\n\nconst rootSelector = state => state.doctors;\n\nexport const selectModal = createSelector(\n [rootSelector],\n state => state.modalType\n);\n\nexport const selectTherapists = createSelector(\n [rootSelector],\n state => state.list\n);","import React, { useEffect, useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Button, Grid, makeStyles } from '@material-ui/core';\nimport { isEmpty } from 'lodash';\nimport MainLayout from '../../../containers/MainLayout';\nimport TherapistsTable from '../../../components/TherapistsTable/TherapistsTable';\nimport { getTherapists, addTherapist, updateTherapist, addId, setTherapistModal, removePhoto, removeSequences } from './actions';\nimport { translation } from '../../../assets/translation';\nimport AddTherapistsModal from '../../../components/AddTherapistModal/AddTherapistsModal';\nimport { AddButton, ModalWithActions, TableHeader } from '../../../components';\nimport { selectModal, selectTherapists } from './selectors';\nimport {selectId} from '../../../components/AddTherapistModal/selectors';\nimport { modalDefaultValues, modalDefaultErrors, NONE, REMOVE_THERAPISTS } from './constants';\n\nconst useStyles = makeStyles(theme => ({\n button: {\n fontWeight: 700,\n padding: '8px 20px',\n borderRadius: 4,\n lineHeight: '16px',\n marginRight: theme.spacing(2),\n },\n contentWrap: {\n margin: '45px 20px 100px',\n },\n}));\n\nconst Therapists = () => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const therapists = useSelector(selectTherapists);\n const modalType = useSelector(selectModal);\n const id = useSelector(selectId);\n const [therapistId, setTherapistId] = useState(null);\n const [modalValues, setModalValues] = useState(modalDefaultValues);\n const [isModalCreateOpen, setIsModalCreateOpen] = useState(false);\n const [isModalEditOpen, setIsModalEditOpen] = useState(false);\n const [modalErrors, setModalErrors] = useState(modalDefaultErrors);\n const [selected, setSelected] = useState([]);\n\n const onCloseModal = () => {\n isModalCreateOpen && setIsModalCreateOpen(false);\n isModalEditOpen && setIsModalEditOpen(false);\n setModalValues(modalDefaultValues);\n setModalErrors(modalDefaultErrors);\n setTherapistId(null);\n dispatch(removePhoto());\n }\n\n useEffect(() => {\n dispatch(getTherapists());\n }, []);\n\n useEffect(() => {\n if (modalType === NONE && !isEmpty(selected)) {\n setSelected([])\n }\n }, [therapists]);\n\n const isErrorCheck = () => {\n let isErrors = Object.keys(modalErrors).reduce((acc, key) => acc || !!modalErrors[key], false);\n const isEmptyRequiredPassword = !modalValues.password && !isModalEditOpen;\n if (!modalValues.userName || isEmptyRequiredPassword) {\n setModalErrors({\n ...modalErrors,\n userName: !modalValues.userName ? translation[\"required\"] : '',\n password: (isEmptyRequiredPassword) ? translation[\"required\"] : '',\n });\n isErrors = true;\n }\n return isErrors;\n }\n\n const handleEditTherapist = ({userName, title, name, email, phoneNumber, admin, removed, id, file}) => {\n setModalValues({\n ...modalDefaultValues,\n userName,\n title,\n name,\n email,\n phoneNumber,\n admin,\n isActive: !removed\n });\n file && dispatch(addId(file.id));\n setIsModalEditOpen(true);\n setTherapistId(id);\n }\n\n const handleSubmit = () => {\n if (isErrorCheck()) {\n return false;\n }\n const therapist = {\n ...modalValues,\n removed: !modalValues.isActive,\n file: id ? {id} : null\n };\n delete therapist.confirm;\n delete therapist.isActive;\n if (therapistId) {\n dispatch(updateTherapist(therapistId, therapist));\n onCloseModal();\n } else {\n dispatch(addTherapist(therapist));\n onCloseModal();\n }\n }\n\n const handleRequestSort = ({order, orderBy}) => {\n const params = orderBy ? {sort: `${orderBy},${order}`} : {}\n dispatch(getTherapists(params));\n }\n\n const getModalData = () => {\n switch (modalType) {\n case REMOVE_THERAPISTS:\n return {\n children: translation[\"therapists.delete.modal.description\"],\n onClose: () => handleModal(NONE),\n onYes: () => dispatch(removeSequences(selected)),\n title: translation[\"therapists.delete.modal.title\"],\n titleNoButton: translation[\"no\"],\n titleYesButton: translation[\"yes\"],\n }\n default:\n return {};\n }\n };\n\n const handleModal = type => dispatch(setTherapistModal(type));\n\n return (\n \n \n \n {selected.length > 0 &&\n handleModal(REMOVE_THERAPISTS)}\n >\n {translation[\"therapists.delete.users\"]}\n \n }\n setIsModalCreateOpen(true)} />\n \n {therapists.length > 0 &&\n \n }\n \n {(isModalCreateOpen || isModalEditOpen) &&\n \n }\n {[REMOVE_THERAPISTS].includes(modalType) &&\n \n }\n \n )\n};\n\nexport default Therapists;\n","import { createSelector } from 'reselect';\nimport { initialState } from './reducer';\n\nconst rootSelector = state => state.auth;\nconst selectRoot = state => state.participantDasboard || initialState;\n\n\nexport const selectUserName = createSelector(\n [rootSelector],\n state => state.userName\n);\n\nexport const selectLearnMaterials = () => createSelector(\n selectRoot,\n state => state.learnMaterials\n);\n\nexport const selectSequenceProgress = () => createSelector(\n selectRoot,\n state => state.sequenceProgress\n);\n","import api from \"../../../api\";\nimport { SET_LEARN_MATERIALS, SET_SEQUENCE_PROGRESS } from \"./constants\";\n\nexport const getLearnMaterials = () => (dispatch) => {\n api.participantDashboard\n .getLearnMaterials()\n .then((res) => dispatch(setLearnMaterials(res)))\n .catch((err) => console.log(err));\n};\n\nexport const getSequenceProgress = () => (dispatch) => {\n api.participantDashboard\n .getSequenceProgress()\n .then((res) => dispatch(setSequenceProgress(res)))\n .catch((err) => console.log(err));\n};\n\nexport const setLearnMaterials = (payload) => ({\n type: SET_LEARN_MATERIALS,\n payload,\n});\n\nexport const setSequenceProgress = (payload) => ({\n type: SET_SEQUENCE_PROGRESS,\n payload,\n});\n","import React, { useEffect } from \"react\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { createStructuredSelector } from \"reselect\";\nimport { Link } from 'react-router-dom';\nimport { MainLayout } from \"../../../containers\";\nimport { useSelector } from \"react-redux\";\nimport { selectUserName } from './selectors';\nimport { Typography, Grid, Paper, Box, Button } from \"@material-ui/core\";\nimport { translation } from \"../../../assets/translation\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { CircularProgressWithLabel, TableHeader } from \"../../../components\";\nimport { getLearnMaterials, getSequenceProgress } from \"./actions\";\nimport { selectLearnMaterials, selectSequenceProgress } from \"./selectors\";\nimport { browserHistory } from '../../../browserHistory';\nimport { get, isNull } from \"lodash\";\n\nconst WELCOME = translation[\"home.welcome\"];\nconst homeStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n paper: {\n padding: theme.spacing(2),\n textAlign: \"left\",\n color: theme.palette.text.secondary,\n width: \"100%\",\n },\n button: {\n width: \"fit-content\",\n },\n buttonText: {\n color: \"#fff\",\n fontWeight: 500,\n },\n badgeContent: {\n fontSize: 18,\n fontFamily: \"InterRegular\",\n fontWeight: 600,\n color: \"white\",\n },\n cardContent: {\n color: \"#363B3F\",\n letterSpacing: \"0.02em\",\n },\n cardContentProgress: {\n color: \"#363B3F\",\n fontSize: 17,\n letterSpacing: \"0.02em\",\n },\n shapeCircle: {\n backgroundColor: theme.palette.secondary.main,\n width: 33,\n height: 33,\n borderRadius: \"50%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n grid: {\n maxWidth: \"100%\",\n flexGrow: 1,\n },\n diagram: {\n width: 110,\n height: 110,\n borderRadius: \"50%\",\n backgroundColor: \"#EDF1F3\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n },\n link: {\n textDecoration: 'none',\n },\n disabledLink: {\n cursor: 'default',\n },\n headerWrap: {\n marginBottom: 0,\n },\n wrap: {\n margin:' 45px 20px 0',\n width: '100%',\n },\n}));\n\nconst Home = ({\n sequenceProgressAction,\n learnMaterialsAction,\n learnMaterials,\n sequenceProgress,\n}) => {\n const classesHome = homeStyles();\n const username = useSelector(selectUserName);\n\n useEffect(() => {\n learnMaterialsAction();\n sequenceProgressAction();\n }, [learnMaterialsAction, sequenceProgressAction]);\n\n const getTrainingPath = () => {\n if (sequenceProgress && (sequenceProgress.progress === 1 || isNull(sequenceProgress.progress))) {\n return '/home'\n }\n return '/training';\n }\n\n return (\n \n \n \n {/* \n \n {translation[\"participant.dashboard.subline\"]}\n \n */}\n \n {(sequenceProgress || learnMaterials) && (\n \n {learnMaterials && (\n \n \n \n \n \n \n \n {translation[\"participant.dashboard.learnMaterials.title\"]}\n \n \n \n \n {(get(learnMaterials, \"length\", 0) > 0) ? 'Es stehen neue Lernmaterialien bereit' : 'Es stehen keine neuen Lernmaterialien bereit'}\n \n \n \n \n browserHistory.push('/learning-pages')}\n style={{transition: 'background-color 250ms linear'}}\n >\n browserHistory.push('/learning-pages')}\n >\n \n {\n translation[\n \"participant.dashboard.learnMaterials.button.gotToMaterials\"\n ]\n }\n \n \n \n \n \n \n \n \n {get(learnMaterials, \"length\", 0)}\n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n {translation[\"participant.dashboard.trainingSsession.title\"]}\n \n \n \n \n \n \n \n \n \n \n {translation[\"participant.dashboard.trainingSsession.button.participant\"]}\n \n \n \n \n \n \n \n {sequenceProgress &&\n sequenceProgress.progress !== 1 &&\n \n \n !\n \n \n }\n \n \n \n \n {sequenceProgress && (\n \n \n \n \n \n \n \n {get(sequenceProgress, \"title\", \"\")}\n \n \n \n \n {get(sequenceProgress, \"description\", \"\")}\n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n )}\n \n \n \n );\n};\n\nconst mapStateToProps = createStructuredSelector({\n learnMaterials: selectLearnMaterials(),\n sequenceProgress: selectSequenceProgress(),\n});\n\nconst mapDispatchToProps = {\n learnMaterialsAction: getLearnMaterials,\n sequenceProgressAction: getSequenceProgress,\n};\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(withConnect)(Home);\n","import { makeStyles } from '@material-ui/core';\n\nexport const useStyles = makeStyles(theme => ({\n contentWrap: {\n margin: '45px 20px 20px',\n maxWidth: '100%',\n },\n clickable: {\n cursor: 'pointer'\n },\n buttonWrap: {\n justifyContent: 'center',\n },\n button: {\n width: 100,\n height: 100,\n background: theme.palette.primary.main,\n borderRadius: 0,\n '& svg': {\n fill: theme.palette.white.main,\n width: 40,\n height: 40,\n },\n '&.Mui-disabled': {\n backgroundColor: '#687884',\n },\n '&:hover': {\n backgroundColor: '#003560ed',\n },\n },\n icon: {\n transform: 'scale(1.8)',\n display: 'inline-block',\n verticalAlign: 'middle',\n }\n}));\n","import React from 'react';\nimport { translation } from '../../../assets/translation';\nimport { TableCell, TableRow, TableHead } from '@material-ui/core';\nimport SortingArrow from '../../../components/SortingArrow/SortingArrow';\nimport { useStyles } from './styles';\n\nconst headCells = [\n {\n id: 'fileName',\n label: translation['learning.pages.header.file.name'],\n isSortable: true\n },\n {\n id: 'size',\n label: translation['learning.pages.header.size'],\n isSortable: true\n },\n {\n id: 'details',\n label: translation['learning.pages.header.details'],\n isSortable: false\n },\n];\n\nconst LearningPageTableHead = ({order, orderBy, onRequestSort}) => {\n const classes = useStyles();\n const createSortHandler = (headCell) => (event) => {\n const property = headCell.id\n headCell.isSortable && onRequestSort(event, property);\n };\n return (\n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n {headCell.isSortable && }\n \n ))}\n \n \n )\n};\n\nexport default LearningPageTableHead;\n","import React, { useEffect, useState } from \"react\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { MainLayout } from \"../../../containers\";\nimport {\n Grid,\n Paper,\n Table,\n TableBody,\n TableRow,\n TableCell,\n TableContainer,\n Avatar,\n Box, IconButton,\n} from \"@material-ui/core\";\nimport { translation } from \"../../../assets/translation\";\nimport { createStructuredSelector } from \"reselect\";\nimport { useStyles } from \"./styles\";\nimport LearningPageTableHead from \"./LearningPagesTableHead\";\nimport { DownloadButton, TableHeader } from '../../../components';\nimport { getComparator, stableSort } from \"../../../utils\";\nimport { getLearnMaterials } from \"../Home/actions\";\nimport { selectLearnMaterials } from \"../Home/selectors\";\nimport { findLastIndex, isNull } from \"lodash\";\nimport { downloadFile } from '../../../api/file';\nimport { Link } from 'react-router-dom';\nimport HomeIcon from '../../../assets/images/homeIcon.svg';\n\nconst LearningPages = ({ learnMaterials, learnMaterialsAction }) => {\n const classes = useStyles();\n const [order, setOrder] = useState(\"asc\");\n const [orderBy, setOrderBy] = useState(\"\");\n\n useEffect(() => {\n learnMaterialsAction();\n }, []);\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === \"asc\";\n setOrder(isAsc ? \"desc\" : \"asc\");\n setOrderBy(property);\n };\n\n const calculateFileSize = (size) => {\n return Math.round(size / 1024) + 'KB';\n }\n\n const downloadImage = (url, fileName) => {\n const slitedUrl = url.split(\"/\")\n const lastIndex = findLastIndex(slitedUrl);\n downloadFile(slitedUrl[lastIndex]).then(\n blob => {\n const link = document.createElement('a');\n link.href = blob;\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n link.parentNode.removeChild(link);\n }\n );\n }\n\n return (\n \n \n \n \n \n \n \n {!isNull(learnMaterials) && (\n \n {stableSort(learnMaterials, getComparator(order, orderBy)).map(\n (material, index) => (\n \n \n \n \n\n {material.originalName}\n \n \n \n {calculateFileSize(material.size)}\n \n \n downloadImage(material.url, material.originalName)}\n />\n \n \n )\n )}\n \n )}\n
\n
\n
\n \n \n \n {translation[\"slides.button.home\"]}\n \n \n \n
\n
\n );\n};\n\nconst mapStateToProps = createStructuredSelector({\n learnMaterials: selectLearnMaterials(),\n});\n\nconst mapDispatchToProps = {\n learnMaterialsAction: getLearnMaterials,\n};\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(withConnect)(LearningPages);\n","import { makeStyles } from '@material-ui/core';\n\nexport const useStyles = makeStyles(() => ({\n reactPlayer: {\n height: '100%',\n '& video': {\n objectFit: 'cover'\n }\n },\n domReactPlayer: {\n '& video': {\n objectFit: 'cover'\n }\n },\n reactPlayerWrapper: {\n flexBasis: '100%',\n height: '100%'\n },\n formatTextWrapper: {\n display: 'flex',\n flexDirection: 'column',\n textFormat: 'bold',\n fontFamily: 'Arial, sans-serif',\n padding: 0,\n margin: 0,\n listStyleType: 'none',\n '& p': {\n margin: 0\n },\n },\n imagePlayPause: {\n width: '80%'\n }\n}));\n","import { translation } from '../../../assets/translation';\n\nconst MAX_WIDTH_TEXT = 1200;\nconst MAX_HEIGHT_TEXT = 34;\n\nconst MAX_WIDTH_IMAGE = 1200;\nconst MAX_HEIGHT_IMAGE = 34;\n\nconst MAX_WIDTH_MEDIA = 1200;\nconst MAX_HEIGHT_MEDIA = 34;\n\nexport const getDataGrid = (data, isStatic = false) => {\n if (data.type === translation[\"slide.properties.button.label.text\"]) {\n data.coordinates.h = (data.coordinates.h > MAX_HEIGHT_TEXT) ? MAX_HEIGHT_TEXT : data.coordinates.h;\n data.coordinates.w = (data.coordinates.w > MAX_WIDTH_TEXT) ? MAX_WIDTH_TEXT : data.coordinates.w;\n data.coordinates.x = ((data.coordinates.x + data.coordinates.w) > MAX_WIDTH_TEXT) ? MAX_WIDTH_TEXT - data.coordinates.w : data.coordinates.x;\n data.coordinates.y = ((data.coordinates.y + data.coordinates.h) > MAX_HEIGHT_TEXT) ? MAX_HEIGHT_TEXT - data.coordinates.h : data.coordinates.y;\n\n return {\n x: data.coordinates.x || 0,\n y: data.coordinates.y || 0,\n w: data.coordinates.w || 0,\n h: data.coordinates.h || 0,\n static: isStatic,\n }\n }\n if (data.type === translation[\"slide.properties.button.label.image\"]) {\n data.coordinates.h = (data.coordinates.h > MAX_HEIGHT_IMAGE) ? MAX_HEIGHT_IMAGE : data.coordinates.h;\n data.coordinates.w = (data.coordinates.w > MAX_WIDTH_IMAGE) ? MAX_WIDTH_IMAGE : data.coordinates.w;\n data.coordinates.x = ((data.coordinates.x + data.coordinates.w) > MAX_WIDTH_IMAGE) ? MAX_WIDTH_IMAGE - data.coordinates.w : data.coordinates.x;\n data.coordinates.y = ((data.coordinates.y + data.coordinates.h) > MAX_HEIGHT_IMAGE) ? MAX_HEIGHT_IMAGE - data.coordinates.h : data.coordinates.y;\n\n return {\n x: data.coordinates.x || 0,\n y: data.coordinates.y || 0,\n w: data.coordinates.w || 0,\n h: data.coordinates.h || 0,\n static: isStatic,\n }\n }\n if (data.type === translation[\"slide.properties.button.label.media\"]) {\n data.coordinates.h = (data.coordinates.h > MAX_HEIGHT_MEDIA) ? MAX_HEIGHT_MEDIA : data.coordinates.h;\n data.coordinates.w = (data.coordinates.w > MAX_WIDTH_MEDIA) ? MAX_WIDTH_MEDIA : data.coordinates.w;\n data.coordinates.x = ((data.coordinates.x + data.coordinates.w) > MAX_WIDTH_MEDIA) ? MAX_WIDTH_MEDIA - data.coordinates.w : data.coordinates.x;\n data.coordinates.y = ((data.coordinates.y + data.coordinates.h) > MAX_HEIGHT_MEDIA) ? MAX_HEIGHT_MEDIA - data.coordinates.h : data.coordinates.y;\n\n return {\n x: data.coordinates.x || 0,\n y: data.coordinates.y || 0,\n w: data.coordinates.w || 0,\n h: data.coordinates.h || 0,\n static: isStatic,\n }\n }\n};\n","const ParticipantAudio = () => {\n return null;\n};\n\nexport default ParticipantAudio;\n","import React from \"react\";\nimport Play from '../../../../../../assets/images/play-button.svg';\n\nconst audioCoordinates = {\n w: 136,\n h: 98,\n x: 750,\n y: 273\n};\n\nconst TherapistAudio = ({l, onSelectElement}) => {\n return l.isCurrentElement ? (\n onSelectElement(l)}\n >\n \"play\"\n
\n ) : (\n onSelectElement(l)}\n >\n \"play\"\n
\n )\n};\n\nexport default TherapistAudio;\n","import React from \"react\";\nimport ParticipantAudio from './ParticipantAudio';\nimport TherapistAudio from './TherapistAudio';\n\nconst PictureWrappedAudio = ({l, isParticipantLayout, onSelectElement}) => {\n return isParticipantLayout ? (\n \n ) : (\n \n );\n};\n\nexport default PictureWrappedAudio;\n","import { createSelector } from 'reselect';\nimport { initialState } from './reducer';\nimport { get } from 'lodash';\n\nconst selectRoot = state => state.training || initialState;\n\nexport const selectSlideElements = () =>\n createSelector(\n selectRoot,\n state => get(state.currentSlide, 'elements', []),\n );\n\nexport const selectSlideId = () =>\n createSelector(\n selectRoot,\n state => get(state.currentSlide, 'id', null),\n );\n\nexport const selectCurrentSlide = () =>\n createSelector(\n selectRoot,\n state => state.currentSlide,\n );\n\nexport const selectSessionId = () =>\n createSelector(\n selectRoot,\n state => get(state.currentSlide, 'session.id', null),\n );\n\nexport const selectAudioId = createSelector(\n [selectRoot],\n state => state.playingAudioId\n);\n\nexport const selectIsPlayingAudioButton = createSelector(\n [selectRoot],\n state => state.isPlayingAudioButton\n);\n","import api from '../../../api';\nimport { shuffle } from 'lodash';\nimport {\n SET_CURRENT_SLIDE,\n SET_PLAYING_AUDIO_ID,\n SET_IS_PLAYING_AUDIO_BUTTON,\n} from './constants';\n\nconst getShuffleData = (data, anwersCoordinates) => {\n let anwerIndex = 0;\n const shuffleAnswers = shuffle(anwersCoordinates);\n return data.map(item => {\n if (item.isAnswer) {\n const result = {\n ...item,\n coordinates: {\n ...item.coordinates,\n ...shuffleAnswers[anwerIndex],\n }\n }\n anwerIndex++;\n return result;\n }\n return item;\n });\n};\n\nconst getNextSlide = (dispatch, data) => {\n const anwersCoordinates = [];\n if (Boolean(data.session)) {\n const formatElements = data.elements.map(({id, propertiesData}) => {\n const formatPropertiesData = JSON.parse(propertiesData);\n const {coordinates, isAnswer} = formatPropertiesData;\n if (data.sorting && isAnswer) {\n anwersCoordinates.push({\n x: coordinates.x,\n y: coordinates.y,\n })\n }\n return {\n ...formatPropertiesData,\n id,\n }\n });\n const result = {\n ...data,\n elements: data.sorting ? getShuffleData(formatElements, anwersCoordinates) : formatElements,\n }\n\n dispatch(setSlideData(result));\n dispatch(markAsOpenedSlide(data.id));\n } else {\n dispatch(setSlideData(data));\n }\n}\n\nexport const getCurrentSlide = () => dispatch => {\n api.slides.getCurrentSlide()\n .then(res => getNextSlide(dispatch, res))\n .catch(err => console.log(err));\n}\n\nexport const getPrewSlide = (currentSlideId) => dispatch => {\n api.slides.getPrewSlide(currentSlideId)\n .then(res => getNextSlide(dispatch, res))\n .catch(err => console.log(err));\n}\n\nexport const markAsOpenedSlide = id => {\n api.slides.markAsOpenedSlide(id)\n .catch(err => console.log(err));\n}\n\nexport const writeAnswerSlide = (id, answerId) => dispatch => {\n if (answerId === null) {\n answerId = [];\n }\n api.slides.writeAnswerSlide(id, answerId)\n .then(res => getNextSlide(dispatch, res))\n .catch(err => console.log(err));\n}\n\nexport const setSlideData = payload => ({\n type: SET_CURRENT_SLIDE,\n payload\n});\n\nexport const setPlayingAudioId = payload => dispatch =>\n dispatch({\n type: SET_PLAYING_AUDIO_ID,\n payload\n });\n\nexport const setIsPlayingAudioButton = payload => dispatch =>\n dispatch({\n type: SET_IS_PLAYING_AUDIO_BUTTON,\n payload\n })\n","import React, { useState, useRef } from \"react\";\nimport { API_BASE_ADDRESS } from '../../../../../../api/api';\n// import PlayPng from '../../../../../../assets/images/play-button-1.png';\n// import PausePng from '../../../../../../assets/images/pause-button-1.png';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {selectAudioId} from '../../../../../../redux/pages/Training/selectors';\nimport { setPlayingAudioId } from '../../../../../../redux/pages/Training/actions';\n\nconst ParticipantAudio = ({l, isStatic}) => {\n const [isPlaying, setIsPlaying] = useState(false);\n const isWhiteBorder = (l.borderColor.r === 255) && (l.borderColor.g === 255) && (l.borderColor.b === 255);\n const border = `1px solid rgba(${l.borderColor.r}, ${l.borderColor.g}, ${l.borderColor.b}, ${l.borderColor.a})`;\n const audio = useRef(null);\n const dispatch = useDispatch();\n const audioPlayingLink = useSelector(selectAudioId);\n\n let diffSize = 0;\n const w = () => {\n return 0.742 * l.coordinates.w - 12;\n }\n const h = () => {\n return 11 * l.coordinates.h - 12;\n }\n const x = () => {\n return (l.coordinates.x * 0.74) + 10;\n }\n const y = () => {\n return (l.coordinates.y * 10.94) + 10;\n }\n const urlLink = l.imageLink && l.imageLink.slice(4);\n const fullUrl = `${API_BASE_ADDRESS}${urlLink}`;\n let boxScale = w() ? w() / h() : 1;\n const {width = 10, height = 10} = l;\n let originalScale = height ? width / height : 1;\n if (originalScale >= boxScale) {\n diffSize = Math.trunc(originalScale * 100 / boxScale) - 100;\n } else {\n diffSize = Math.trunc(boxScale * 100 / originalScale) - 100;\n };\n\n const onPlay = e => {\n e.preventDefault();\n const { current: aud } = audio;\n\n if (isPlaying) {\n dispatch(setPlayingAudioId(null));\n aud.pause();\n setIsPlaying(!isPlaying);\n } else {\n if (!audioPlayingLink) {\n dispatch(setPlayingAudioId(l && l.embedAudioLink));\n aud.play();\n setIsPlaying(!isPlaying);\n }\n }\n };\n\n const onEnded = () => {\n setIsPlaying(false);\n dispatch(setPlayingAudioId(null));\n };\n\n const audioLink = l && l.embedAudioLink && l.embedAudioLink.slice(4);\n const fullAudioLink = `${API_BASE_ADDRESS}${audioLink}`;\n\n const getCursorType = () => (audioPlayingLink && !isPlaying) ? 'not-allowed' : 'pointer';\n\n return (\n 10) ? 'cover' : 'contain',\n backgroundPositionX: 'center',\n backgroundPositionY: 'center',\n cursor: getCursorType(),\n }}\n >\n \n {/**/}\n \n );\n};\n\nexport default ParticipantAudio;\n","import React from \"react\";\n// import PlayPng from '../../../../../../assets/images/play-button-1.png';\nimport { API_BASE_ADDRESS } from '../../../../../../api/api';\n\nconst TherapistAudio = ({l, onSelectElement, isStatic, selectedElement}) => {\n const isWhiteBorder = (l.borderColor.r === 255) && (l.borderColor.g === 255) && (l.borderColor.b === 255);\n const border = selectedElement === l.id\n ? '1px solid #003560'\n : `1px solid rgba(${l.borderColor.r}, ${l.borderColor.g}, ${l.borderColor.b}, ${l.borderColor.a})`;\n let diffSize = 0;\n const w = () => {\n return 0.742 * l.coordinates.w - 12;\n }\n const h = () => {\n return 11 * l.coordinates.h - 12;\n }\n const x = () => {\n return (l.coordinates.x * 0.74) + 10;\n }\n const y = () => {\n return (l.coordinates.y * 10.94) + 10;\n }\n const urlLink = l.imageLink && l.imageLink.slice(4);\n const fullUrl = `${API_BASE_ADDRESS}${urlLink}`;\n let boxScale = w() ? w() / h() : 1;\n const {width = 10, height = 10} = l;\n let originalScale = height ? width / height : 1;\n if (originalScale >= boxScale) {\n diffSize = Math.trunc(originalScale * 100 / boxScale) - 100;\n } else {\n diffSize = Math.trunc(boxScale * 100 / originalScale) - 100;\n }\n ;\n\n return (\n onSelectElement(l)}\n style={{\n border: isWhiteBorder ? 'none' : border,\n position: 'absolute',\n zIndex: l.zIndex,\n minWidth: `${w()}px`,\n minHeight: `${h()}px`,\n maxWidth: `${w()}px`,\n maxHeight: `${h()}px`,\n transform: `translate(${x()}px, ${y()}px)`,\n display: 'inline-block',\n backgroundColor: isStatic && '#fff',\n background: !urlLink && `#988F8F`,\n backgroundImage: urlLink && `url(${fullUrl})`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: ((diffSize < 5)) && (width > 10) ? 'cover' : 'contain',\n backgroundPositionX: 'center',\n backgroundPositionY: 'center',\n }}\n >\n {/**/}\n \n );\n};\n\nexport default TherapistAudio;\n","import React from \"react\";\nimport ParticipantAudio from './ParticipantAudio';\nimport TherapistAudio from './TherapistAudio';\n\nconst EmbedImageAudio = ({l, isParticipantLayout, onSelectElement, isStatic, selectedElement}) => {\n return isParticipantLayout ? (\n \n ) : (\n \n )\n};\n\nexport default EmbedImageAudio;\n","import { makeStyles } from '@material-ui/core';\n\nexport const useStyles = makeStyles(() => ({\n formatTextWrapper: {\n display: 'flex',\n flexDirection: 'column',\n textFormat: 'bold',\n fontFamily: 'Arial, sans-serif',\n padding: 0,\n margin: 0,\n listStyleType: 'none',\n '& p': {\n margin: 0\n },\n }\n}));\n","import React from \"react\";\n// import PlayPng from '../../../../../../assets/images/play-button-1.png';\nimport {useStyles} from './styles';\n\n\n\nconst TherapistAudio = ({l, onSelectElement}) => {\n const w = () => (742 * l.coordinates.w) / 1000 - 11;\n const h = () => 11 * l.coordinates.h - 10;\n const x = () => (742 * l.coordinates.x) / 1000 + 10;\n const y = () => 11 * l.coordinates.y + 10;\n\n const classes = useStyles();\n\n const getTextTemplate = ({fontSize, text, textColor}) => (\n \n );\n\n return (\n {\n onSelectElement(l);\n }}\n style={{\n position: 'absolute',\n zIndex: l.zIndex,\n overflow: 'hidden',\n minWidth: `${w()}px`,\n minHeight: `${h()}px`,\n maxWidth: `${w()}px`,\n maxHeight: `${h()}px`,\n transform: `translate(${x()}px, ${y()}px)`,\n display: 'inline-block',\n cursor: 'pointer',\n background: `rgba(${l.backgroundColor.r}, ${l.backgroundColor.g}, ${l.backgroundColor.b}, ${l.backgroundColor.a})`,\n border: `1px solid rgba(${l.borderColor.r}, ${l.borderColor.g}, ${l.borderColor.b}, ${l.borderColor.a})`,\n textAlign: `${l.textAlignment}`,\n fontStyle: `${l.textFormat.filter((value) => value === 'italic')[0] || 'normal'}`,\n fontWeight: `${l.textFormat.filter((value) => value === 'bold')[0] || 'normal'}`,\n wordBreak: \"break-word\",\n outline: \"none\",\n }}\n >\n {/**/}\n {getTextTemplate(l)}\n \n )\n};\n\nexport default TherapistAudio;\n","import React, { useState, useRef } from \"react\";\nimport { useStyles } from './styles';\n// import PlayPng from '../../../../../../assets/images/play-button-1.png';\n// import PausePng from '../../../../../../assets/images/pause-button-1.png';\nimport {API_BASE_ADDRESS} from '../../../../../../api/api';\nimport { setPlayingAudioId } from '../../../../../../redux/pages/Training/actions';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {selectAudioId} from '../../../../../../redux/pages/Training/selectors';\n\nconst ParticipantAudio = ({l}) => {\n const [isPlaying, setIsPlaying] = useState(false);\n const audio = useRef(null);\n const w = () => (742 * l.coordinates.w) / 1000 - 11;\n const h = () => 11 * l.coordinates.h - 10;\n const x = () => (742 * l.coordinates.x) / 1000 + 10;\n const y = () => 11 * l.coordinates.y + 10;\n\n const classes = useStyles();\n const dispatch = useDispatch();\n const audioPlayingLink = useSelector(selectAudioId);\n\n const getTextTemplate = ({fontSize, text, textColor}) => (\n \n );\n\n const onPlay = e => {\n e.preventDefault();\n const { current: aud } = audio;\n\n if (isPlaying) {\n dispatch(setPlayingAudioId(null));\n aud.pause();\n setIsPlaying(!isPlaying);\n } else {\n if (!audioPlayingLink) {\n dispatch(setPlayingAudioId(l && l.embedAudioLink));\n aud.play();\n setIsPlaying(!isPlaying);\n }\n }\n };\n\n const onEnded = () => {\n dispatch(setPlayingAudioId(null));\n setIsPlaying(false);\n };\n\n const audioLink = l && l.embedAudioLink && l.embedAudioLink.slice(4);\n const fullAudioLink = `${API_BASE_ADDRESS}${audioLink}`;\n\n const getCursorType = () => (audioPlayingLink && !isPlaying) ? 'not-allowed' : 'pointer';\n\n return (\n value === 'italic')[0] || 'normal'}`,\n fontWeight: `${l.textFormat.filter((value) => value === 'bold')[0] || 'normal'}`,\n wordBreak: \"break-word\",\n outline: \"none\",\n }}\n >\n \n {/**/}\n {getTextTemplate(l)}\n \n )\n};\n\nexport default ParticipantAudio;\n","import React from \"react\";\nimport TherapistAudio from './TherapistAudio';\nimport ParticipantAudio from './ParticipantAudio';\n\nconst EmbedTextAudio = ({l, isParticipantLayout, onSelectElement}) => {\n return isParticipantLayout ? (\n \n ) : (\n \n )\n};\n\nexport default EmbedTextAudio;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from \"react\";\nimport ReactPlayer from \"react-player\";\nimport { map } from \"lodash\";\nimport RGL, { WidthProvider } from \"react-grid-layout\";\nimport { useStyles } from './styles'\nimport { translation } from '../../../../assets/translation';\nimport { API_BASE_ADDRESS } from '../../../../api/api';\nimport { getDataGrid } from '../../../Sequence/utils';\nimport Play from '../../../../assets/images/play-button.svg';\nimport PlayPng from '../../../../assets/images/play-button-1.png';\nimport PictureWrappedAudio from './components/PictureWrappedAudio/PictureWrappedAudio';\nimport EmbedImageAudio from './components/EmbedImageAudio/EmbedImageAudio';\nimport EmbedTextAudio from './components/EmbedTextAudio/EmbedTextAudio';\nimport {useSelector} from 'react-redux';\nimport {selectAudioId} from '../../../../redux/pages/Training/selectors';\n\nconst ReactGridLayout = WidthProvider(RGL);\nconst unchecked = '3px 3px 18px 3px rgba(86,86,86,0.91)';\nconst checked = '3px 3px 18px 3px rgba(86,86,86,0.91) inset';\n\nconst AUDIO_FILES = ['m4a', 'mp3', 'wav', 'pcm', 'aac', 'ogg', 'wma', 'flac'];\n\n\nconst GridLayout = ({\n isStatic = false,\n isParticipantLayout = false,\n elements,\n onLayoutChange,\n onSelectElement,\n useCSSTransforms,\n selectedElement,\n currentDisplayingElement,\n ...props\n }) => {\n const classes = useStyles();\n const audioPlayingLink = useSelector(selectAudioId);\n\n const getTextTemplate = ({fontSize, text, textColor}) => (\n \n );\n\n const getPictureWrappedElement = (currentElement) => {\n if (currentElement && currentElement[0] && currentElement[0].isPictureWrapped) {\n return {\n ...currentElement[0],\n isCurrentElement: true\n };\n }\n return null;\n }\n\n const generateDOM = () => {\n return map(currentDisplayingElement, (l, i) => {\n const outline = '5px solid #003560'\n if (l.type === translation[\"slide.properties.button.label.text\"]) {\n return (\n onSelectElement(l)}\n data-grid={getDataGrid(l, isStatic)}\n className={'displayedElements'}\n style={{\n overflow: 'hidden',\n display: 'inline-block',\n cursor: 'pointer',\n position: 'absolute',\n zIndex: 120,\n wordBreak: \"break-word\",\n background: `rgba(${l.backgroundColor.r}, ${l.backgroundColor.g}, ${l.backgroundColor.b}, ${l.backgroundColor.a})`,\n border: `1px solid rgba(${l.borderColor.r}, ${l.borderColor.g}, ${l.borderColor.b}, ${l.borderColor.a})`,\n outline: outline,\n outlineOffset: '-10px',\n textAlign: `${l.textAlignment}`,\n fontStyle: `${l.textFormat.filter((value) => value === 'italic')[0] || 'normal'}`,\n fontWeight: `${l.textFormat.filter((value) => value === 'bold')[0] || 'normal'}`,\n }}\n >\n {getTextTemplate(l)}\n \n );\n }\n if (l.type === translation[\"slide.properties.button.label.image\"]) {\n const urlLink = l.imageLink && l.imageLink.slice(4);\n const fullUrl = `${API_BASE_ADDRESS}${urlLink}`;\n return (\n
onSelectElement(l)}\n data-grid={getDataGrid(l, isStatic)}\n className={'displayedElements'}\n style={{\n border: outline,\n position: 'absolute',\n zIndex: 120,\n backgroundColor: isStatic && '#fff',\n backgroundImage: `url(${fullUrl})`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: \"contain\",\n backgroundPositionX: 'center',\n backgroundPositionY: 'center',\n }}\n >\n
\n );\n }\n if (l.type === translation[\"slide.properties.button.label.media\"]) {\n const urlLink = l.mediaLink && l.mediaLink.slice(4);\n const ext = urlLink && urlLink.split('.').pop();\n const isAudio = Boolean(urlLink && AUDIO_FILES.includes(ext));\n\n return l.isPictureWrapped ?\n (\n onSelectElement(l)}\n >\n \"play\"\n \n )\n : (\n
onSelectElement(l)}\n data-grid={getDataGrid(l, isStatic)}\n className={'displayedElements'}\n style={{\n backgroundColor: isAudio ? (isStatic && '#fff') : 'transparent',\n outline: outline,\n outlineOffset: '-5px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n zIndex: 120,\n background: isAudio ? `#988F8F` : 'transparent',\n padding: 0\n }}\n >\n onSelectElement(l)}\n />\n \n
\n );\n }\n });\n };\n\n const generateDOMWithoutMoving = () => {\n const element = getPictureWrappedElement(currentDisplayingElement);\n const collection = element ? [...elements, element] : elements;\n return map(collection, (l, i) => {\n const isWhiteBorder = (l.borderColor.r === 255) && (l.borderColor.g === 255) && (l.borderColor.b === 255);\n const border = selectedElement === l.id\n ? '1px solid #003560'\n : `1px solid rgba(${l.borderColor.r}, ${l.borderColor.g}, ${l.borderColor.b}, ${l.borderColor.a})`;\n\n if (l.type === translation[\"slide.properties.button.label.text\"]) {\n const w = () => (742 * l.coordinates.w) / 1000 - 11;\n const h = () => 11 * l.coordinates.h - 10;\n const x = () => (742 * l.coordinates.x) / 1000 + 10;\n const y = () => 11 * l.coordinates.y + 10;\n const isChecked = isParticipantLayout && selectedElement.includes(l.id);\n const {isAnswer} = l;\n\n return l.isEmbedAudio ? (\n \n ) : (\n {\n Boolean(!audioPlayingLink) && onSelectElement(l);\n }}\n style={{\n position: 'absolute',\n zIndex: l.zIndex,\n overflow: 'hidden',\n minWidth: `${w()}px`,\n minHeight: `${h()}px`,\n maxWidth: `${w()}px`,\n maxHeight: `${h()}px`,\n transform: `translate(${x()}px, ${y()}px)`,\n display: 'inline-block',\n cursor: audioPlayingLink ? 'not-allowed' : 'pointer',\n background: `rgba(${l.backgroundColor.r}, ${l.backgroundColor.g}, ${l.backgroundColor.b}, ${l.backgroundColor.a})`,\n border: `1px solid rgba(${l.borderColor.r}, ${l.borderColor.g}, ${l.borderColor.b}, ${l.borderColor.a})`,\n textAlign: `${l.textAlignment}`,\n fontStyle: `${l.textFormat.filter((value) => value === 'italic')[0] || 'normal'}`,\n fontWeight: `${l.textFormat.filter((value) => value === 'bold')[0] || 'normal'}`,\n wordBreak: \"break-word\",\n transition: `${!isAnswer ? '0.2s' : ''}`,\n outline: \"none\",\n boxShadow: `${!isAnswer ? '' : isChecked ? checked : unchecked}`,\n WebkitBoxShadow: `${!isAnswer ? '' : isChecked ? checked : unchecked}`,\n }}\n >\n {l.isEmbedAudio && (\n \n )}\n {getTextTemplate(l)}\n \n );\n }\n if (l.type === translation[\"slide.properties.button.label.image\"]) {\n const urlLink = l.imageLink && l.imageLink.slice(4);\n const fullUrl = `${API_BASE_ADDRESS}${urlLink}`;\n const isChecked = isParticipantLayout && selectedElement.includes(l.id);\n const {isAnswer} = l;\n const {width = 10, height = 10} = l;\n let originalScale = height ? width / height : 1;\n ;\n\n let diffSize = 0;\n const w = () => {\n return 0.742 * l.coordinates.w - 12;\n }\n const h = () => {\n return 11 * l.coordinates.h - 12;\n }\n const x = () => {\n return (l.coordinates.x * 0.74) + 10;\n }\n const y = () => {\n return (l.coordinates.y * 10.94) + 10;\n }\n let boxScale = w() ? w() / h() : 1;\n if (originalScale >= boxScale) {\n diffSize = Math.trunc(originalScale * 100 / boxScale) - 100;\n } else {\n diffSize = Math.trunc(boxScale * 100 / originalScale) - 100;\n }\n ;\n return l.isEmbedAudio ? (\n \n ) : (\n Boolean(!audioPlayingLink) && onSelectElement(l)}\n style={{\n border: isWhiteBorder ? 'none' : border,\n position: 'absolute',\n zIndex: l.zIndex,\n minWidth: `${w()}px`,\n minHeight: `${h()}px`,\n maxWidth: `${w()}px`,\n maxHeight: `${h()}px`,\n transform: `translate(${x()}px, ${y()}px)`,\n display: 'inline-block',\n cursor: audioPlayingLink ? 'not-allowed' : 'pointer',\n backgroundColor: isStatic && '#fff',\n background: !urlLink && `#988F8F`,\n backgroundImage: urlLink && `url(${fullUrl})`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: ((diffSize < 5)) && (width > 10) ? 'cover' : 'contain',\n backgroundPositionX: 'center',\n backgroundPositionY: 'center',\n boxShadow: `${!isAnswer ? '' : isChecked ? checked : unchecked}`,\n WebkitBoxShadow: `${!isAnswer ? '' : isChecked ? checked : unchecked}`,\n }}\n >\n \n );\n }\n if (l.type === translation[\"slide.properties.button.label.media\"]) {\n const urlLink = l.mediaLink && l.mediaLink.slice(4);\n const ext = urlLink && urlLink.split('.').pop();\n const isAudio = Boolean(urlLink && AUDIO_FILES.includes(ext));\n const w = () => {\n return isParticipantLayout ? 0.742 * l.coordinates.w - 10 : 0.742 * l.coordinates.w - 10;\n }\n const h = () => {\n return isParticipantLayout ? 11 * l.coordinates.h - 10 : 11 * l.coordinates.h - 10;\n }\n const x = () => {\n return isParticipantLayout ? (l.coordinates.x * 0.741 + 10) : (l.coordinates.x * 0.741 + 10);\n }\n const y = () => {\n return isParticipantLayout ? (l.coordinates.y * 11 + 10) : (l.coordinates.y * 11) + 10;\n }\n return l.isPictureWrapped ? (\n \n ) : (\n <>\n onSelectElement(l)}\n >\n \n \n
\n {console.log('playing==', Boolean(isParticipantLayout && l.isStartAuto))}\n \n
\n \n \n );\n }\n });\n };\n\n\n return (\n \n
\n {generateDOMWithoutMoving()}\n
\n {!isParticipantLayout && (\n onSelectElement('none')}\n style={{\n width: '900px',\n height: '375px',\n position: 'absolute',\n zIndex: 100,\n }}\n >\n \n {generateDOM()}\n \n\n \n )}\n \n );\n};\n\nexport default GridLayout;\n","import { makeStyles } from '@material-ui/core';\n\nexport const useStyles = makeStyles(theme => ({\n buttonWrap: {\n justifyContent: 'center',\n marginTop: 55,\n '& button:first-child': {\n marginRight: 24,\n }\n },\n button: {\n width: 100,\n height: 100,\n background: theme.palette.primary.main,\n borderRadius: 0,\n '& svg': {\n fill: theme.palette.white.main,\n width: 40,\n height: 40,\n },\n '&.Mui-disabled': {\n backgroundColor: '#687884',\n },\n '&:hover': {\n backgroundColor: '#003560ed',\n },\n },\n buttonInvisible: {\n width: 100,\n height: 100,\n opacity: 0,\n cursor: 'auto',\n },\n navButtonswrapper: {\n display: 'inline-flex'\n },\n navGridWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n minWidth: '880px',\n },\n gridWrap: {\n flex: 1,\n // width: '90vw',\n // maxWidth: '1035px',\n width: '880px',\n maxWidth: '880px',\n // height: '450px',\n height: '364px',\n margin: '50px auto 0',\n // padding: '1.5vh 1vw',\n background: '#FFFFFF',\n boxShadow: '0px 4px 25px rgba(129, 154, 168, 0.25)',\n overflow: 'auto',\n },\n gridInner: {\n width: '880px',\n minWidth: '880px',\n minHeight: '364px',\n height: '364px',\n marginLeft: '-10px',\n marginTop: '-10px'\n },\n link: {\n textDecoration: 'none',\n display: 'flex',\n justifyContent: 'center',\n fontWeight: 'bold',\n fontSize: 13,\n minWidth: 100,\n alignItems: 'center',\n color: '#ACBCC7',\n textTransform: 'uppercase',\n },\n icon: {\n transform: 'scale(1.8)',\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n lockedLayer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: 300,\n cursor: 'not-allowed',\n },\n lockedWrapper: {\n position: 'relative',\n }\n}));\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport GridList from \"@material-ui/core/GridList\";\nimport GridListTile from \"@material-ui/core/GridListTile\";\nimport styled from 'styled-components';\nimport { Typography } from '@material-ui/core';\nimport { translation } from '../../../../../assets/translation';\nimport { API_BASE_ADDRESS } from '../../../../../api/api';\nimport { convertObjectToColorString } from './index';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: \"flex\",\n flexDirection: 'column',\n alignItems: 'center',\n flexWrap: \"wrap\",\n justifyContent: \"space-around\",\n overflow: \"hidden\",\n backgroundColor: theme.palette.background.paper,\n }\n}));\n\nconst MultipleAnswers = ({correctElements}) => {\n const classes = useStyles();\n const getHTML = (propertiesData) => {\n const formatPropertiesData = JSON.parse(propertiesData);\n return formatPropertiesData.text;\n };\n const getImage = (propertiesData) => {\n const formatPropertiesData = JSON.parse(propertiesData);\n const urlLink = formatPropertiesData.imageLink && formatPropertiesData.imageLink.slice(4);\n const fullUrl = `${API_BASE_ADDRESS}${urlLink}`;\n return fullUrl;\n }\n\n const getCols = () => {\n const numberOfAnswers = correctElements && correctElements.length;\n if (numberOfAnswers > 2) {\n return 3;\n }\n if (numberOfAnswers === 2) {\n return 2;\n }\n return 1;\n }\n\n const getWidth = () => {\n const numberOfAnswers = correctElements && correctElements.length;\n if (numberOfAnswers > 2) {\n return '1000px';\n }\n if (numberOfAnswers === 2) {\n return '670px';\n }\n return '500px';\n }\n\n return (\n
\n \n {translation[\"sequences.wrong.answers\"]}\n \n \n {correctElements.map(item => {\n if (item.type === \"TEXT\") {\n return (\n \n
\n \n
\n
\n )\n }\n if (item.type === \"IMAGE\") {\n return (\n \n
\n
\n
\n )\n\n }\n return null;\n })}\n
\n
\n );\n};\n\nexport default MultipleAnswers;\n\nconst WrongAnswer = styled(Typography)`\n font-size: 22px;\n color: #ec913d;\n padding: 5px;\n text-transform: uppercase;\n display: inline-flex;\n align-items: center;\n margin-bottom: 30px;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Grid, makeStyles, Typography, Button } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport Check from '../../../../../assets/images/check.svg';\nimport Repeat from '../../../../../assets/images/repeat.svg';\nimport { translation } from '../../../../../assets/translation';\nimport { API_BASE_ADDRESS } from '../../../../../api/api';\nimport { createStructuredSelector } from 'reselect';\nimport { selectIsLoading } from '../../../../../containers/Main/selectors';\nimport MultipleAnswers from './MultipleAnswers';\n\nconst useStyles = makeStyles(theme => ({\n wrapper: {\n padding: '100px',\n },\n nextButton: {\n fontSize: '16px'\n }\n}));\n\nexport const convertObjectToColorString = (data, styleName) => {\n const stylesObject = JSON.parse(data)[styleName];\n return `rgba(${Object.values(stylesObject).join(',')})`\n}\n\nconst ColorButton = withStyles((theme) => ({\n root: {\n color: '#FFF',\n backgroundColor: '#003560',\n '&:hover': {\n backgroundColor: '#003560',\n },\n minWidth: '175px',\n minHeight: '50px',\n marginTop: '50px',\n },\n}))(Button);\n\nconst SlideResult = ({feedbackForAnswer, onCloseResult, isLoading}) => {\n const classes = useStyles();\n const {correctElements, sessionId} = feedbackForAnswer;\n const getHTML = (propertiesData) => {\n const formatPropertiesData = JSON.parse(propertiesData);\n return formatPropertiesData.text;\n };\n const getImage = (propertiesData) => {\n const formatPropertiesData = JSON.parse(propertiesData);\n const urlLink = formatPropertiesData.imageLink && formatPropertiesData.imageLink.slice(4);\n const fullUrl = `${API_BASE_ADDRESS}${urlLink}`;\n return fullUrl;\n }\n return (\n
\n {!isLoading && \n {feedbackForAnswer.previousIsCorrect ? (\n \n \n \"Check\"\n \n {(feedbackForAnswer.correctElements && feedbackForAnswer.correctElements.length > 1) ? translation[\"sequences.correct.answers\"] : translation[\"sequences.correct.answer\"]}\n \n onCloseResult(sessionId)}>\n {translation[\"slide.answer.more\"]}\n \n \n \n ) : (\n \n \n \"Repeat\"\n \n\n {(correctElements.length === 1) ?\n \n \n {translation[\"sequences.wrong.answer\"]}\n \n \n {correctElements[0] && correctElements[0].type === \"TEXT\" &&\n }\n {correctElements[0] && correctElements[0].type === \"IMAGE\" &&\n
\n }\n \n : }\n\n \n onCloseResult(sessionId)}>\n {translation[\"slide.answer.more\"]}\n \n \n \n )}\n }\n
\n )\n};\n\nconst AnswerWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst CorrectAnswer = styled(Typography)`\n font-size: 22px;\n color: #5bca3f;\n text-transform: uppercase;\n`;\n\nconst WrongAnswer = styled(Typography)`\n font-size: 22px;\n line-height: 1.6;\n color: #ec913d;\n text-transform: uppercase;\n display: inline-flex;\n align-items: center;\n`;\n\nconst ImgWrapper = styled(Grid)`\n text-align: center;\n margin-bottom: 50px;\n`;\n\nconst mapStateToProps = createStructuredSelector({\n isLoading: selectIsLoading(),\n});\n\nconst withConnect = connect(\n mapStateToProps\n);\n\nexport default compose(\n withConnect,\n)(SlideResult);\n","import { makeStyles } from '@material-ui/core';\n\nexport const useStyles = makeStyles(() => ({\n placeholder: {\n width: 100,\n height: 100,\n position: 'relative'\n },\n // lockedLayer: {\n // position: 'fixed',\n // top: 0,\n // bottom: 0,\n // right: 0,\n // left: 0,\n // zIndex: 30,\n // cursor: 'not-allowed',\n // },\n buttonPlay: {\n width: 100,\n height: 100,\n background: '#92C13E',\n borderRadius: 0,\n '& svg': {\n fill: '#FFFFFF',\n width: 80,\n height: 80,\n },\n '&:hover': {\n backgroundColor: '#9cc751',\n },\n '&:disabled': {\n background: '#92C13E',\n },\n position: 'absolute',\n zIndex: '100',\n },\n hiddenButton: {\n width: 100,\n height: 100,\n opacity: 0,\n cursor: 'auto',\n pointerEvents: 'none',\n }\n}));\n","import React, { useRef, useEffect } from \"react\";\nimport { PlayArrow, Pause } from '@material-ui/icons';\nimport { IconButton } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport {API_BASE_ADDRESS} from '../../../../../api/api';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { selectAudioId, selectIsPlayingAudioButton } from '../../selectors';\nimport { setIsPlayingAudioButton } from '../../actions';\n\nconst AudioPlayButton = ({elements}) => {\n const pictureWrappedElement = elements && elements.find(item => item.isPictureWrapped);\n const classes = useStyles();\n const audio = useRef(null);\n const audioPlayingLink = useSelector(selectAudioId);\n const isPlaying = useSelector(selectIsPlayingAudioButton);\n const dispatch = useDispatch();\n\n const onPlay = e => {\n e.preventDefault();\n const { current: aud } = audio;\n\n if (isPlaying) {\n aud.pause();\n dispatch(setIsPlayingAudioButton(!isPlaying));\n } else {\n if (!audioPlayingLink) {\n aud.play();\n dispatch(setIsPlayingAudioButton(!isPlaying));\n }\n }\n };\n\n const autoStartPlaying = () => {\n const { current: aud } = audio;\n aud.currentTime = 0;\n aud.play();\n dispatch(setIsPlayingAudioButton(!isPlaying));\n }\n\n useEffect(() => {\n if (pictureWrappedElement && pictureWrappedElement.isStartAuto) {\n if (!isPlaying) {\n autoStartPlaying();\n }\n }\n }, [pictureWrappedElement]);\n\n const onEnded = () => {\n dispatch(setIsPlayingAudioButton(false));\n };\n\n const urlLink = pictureWrappedElement && pictureWrappedElement.mediaLink && pictureWrappedElement.mediaLink.slice(4);\n const fullUrl = `${API_BASE_ADDRESS}${urlLink}`;\n\n const getCursorType = () => audioPlayingLink ? 'not-allowed' : 'pointer';\n\n return (\n
\n {/*
*/}\n \n \n {isPlaying ? : }\n \n
\n )\n};\n\nexport default AudioPlayButton;\n","import React, { useEffect, useState } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\nimport { Link } from 'react-router-dom';\nimport { Grid, IconButton } from '@material-ui/core';\nimport { ArrowForward, ArrowBack } from \"@material-ui/icons\";\nimport HomeIcon from '../../../assets/images/homeIcon.svg';\nimport Header from '../../../containers/MainLayout/components/Header/Header';\nimport GridLayout from '../../../containers/Sequence/components/GridLayout';\nimport { translation } from '../../../assets/translation';\nimport { getCurrentSlide, writeAnswerSlide, getPrewSlide, setSlideData } from './actions';\nimport { selectSlideElements, selectSlideId, selectCurrentSlide, selectSessionId } from './selectors';\nimport { browserHistory } from '../../../browserHistory';\nimport {useStyles} from './styles';\nimport SlideResult from './components/SlideResult';\nimport { isNull } from \"lodash\";\nimport AudioPlayButton from './components/AudioPlayButton';\nimport { useSelector, useDispatch } from 'react-redux';\nimport {selectAudioId, selectIsPlayingAudioButton} from './selectors';\nimport { setPlayingAudioId, setIsPlayingAudioButton } from './actions';\nimport { get } from 'lodash';\n\nconst CURRENT_SESSION = 'CURRENT_SESSION';\n\nconst Training = ({\n elements,\n getCurrentSlideAction,\n slideId,\n writeAnswerSlideAction,\n getPrewSlideAction,\n setSlideDataAction,\n currentSlide,\n sessionId,\n ...props\n }) => {\n const [selectedElement, setSelectedElement] = useState([]);\n const [feedbackForAnswer, setFeedbackForAnswer] = useState({\n visible: false,\n previousIsCorrect: null,\n correctElements: null,\n sessionId: null\n });\n const [isExceptionFeedback, setIsExceptionFeedback] = useState(false);\n const classes = useStyles();\n const dispatch = useDispatch();\n const audioPlayingLink = useSelector(selectAudioId);\n const isPlayingAudioButton = useSelector(selectIsPlayingAudioButton);\n\n const checkAnswerFromMultiple = (id, selectedArr) => {\n const selectedIndex = (selectedArr || []).indexOf(id);\n let newSelected = [];\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selectedArr, id);\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selectedArr.slice(1));\n } else if (selectedIndex === selectedArr.length - 1) {\n newSelected = newSelected.concat(selectedArr.slice(0, -1));\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selectedArr.slice(0, selectedIndex),\n selectedArr.slice(selectedIndex + 1),\n );\n }\n ;\n return newSelected;\n }\n\n const handleSelectElement = ({id, isAnswer}) => {\n if (!isAnswer) {\n return;\n }\n const {canBack, multipleChoiseOfAnswers, showResult} = currentSlide;\n if (canBack) {\n const selected = multipleChoiseOfAnswers ? checkAnswerFromMultiple(id, selectedElement) : [id];\n setSelectedElement(selected);\n } else {\n setSelectedElement([id]);\n if (showResult) {\n setFeedbackForAnswer({\n ...feedbackForAnswer,\n visible: true\n });\n writeAnswerSlideAction(slideId, [id]);\n } else {\n browserHistory.push('/training', {\n prevPath: '/training'\n })\n writeAnswerSlideAction(slideId, [id]);\n }\n }\n };\n\n useEffect(() => {\n localStorage.removeItem(CURRENT_SESSION);\n }, [])\n\n useEffect(() => {\n getCurrentSlideAction();\n }, [getCurrentSlideAction]);\n\n useEffect(() => {\n if (!slideId) return;\n setSelectedElement([]);\n }, [slideId]);\n\n useEffect(() => {\n }, [selectedElement]);\n\n useEffect(() => {\n setFeedbackForAnswer({\n ...feedbackForAnswer,\n previousIsCorrect: currentSlide.previousIsCorrect,\n correctElements: currentSlide.correctElements,\n sessionId: currentSlide.session && currentSlide.session.id\n })\n }, [currentSlide])\n\n useEffect(() => {\n if (currentSlide && (!currentSlide.showResult) && sessionId && get(browserHistory.location.state, 'prevPath') !== '/home') {\n browserHistory.push('/home')\n }\n if (currentSlide && isExceptionFeedback && sessionId && get(browserHistory.location.state, 'prevPath') !== '/home') {\n browserHistory.push('/home')\n }\n if (currentSlide && (!currentSlide.showResult) && isNull(sessionId) && get(browserHistory.location.state, 'prevPath') !== '/home') {\n if (!feedbackForAnswer.visible) {\n browserHistory.push('/home');\n }\n }\n }, [sessionId])\n\n const handlePrevSlide = () => {\n if (audioPlayingLink) {\n dispatch(setPlayingAudioId(null));\n }\n if (isPlayingAudioButton) {\n dispatch(setIsPlayingAudioButton(false));\n }\n browserHistory.push('/training', {\n prevPath: '/training'\n })\n getPrewSlideAction(slideId)\n }\n const handleNextSlide = () => {\n if (audioPlayingLink) {\n dispatch(setPlayingAudioId(null));\n }\n if (isPlayingAudioButton) {\n dispatch(setIsPlayingAudioButton(false));\n }\n const {showResult, elements} = currentSlide;\n const answerIndex = elements.findIndex(element => element.isAnswer);\n browserHistory.push('/training', {\n prevPath: '/training'\n });\n if (showResult && answerIndex > -1) {\n setFeedbackForAnswer({\n ...feedbackForAnswer,\n visible: true\n });\n setIsExceptionFeedback(false);\n }\n // if (showResult && answerIndex === -1) {\n // setIsExceptionFeedback(true);\n // }\n if (answerIndex === -1) {\n setIsExceptionFeedback(true);\n }\n writeAnswerSlideAction(slideId, selectedElement)\n }\n\n const handleCloseResult = (sessionId) => {\n setFeedbackForAnswer({\n ...feedbackForAnswer,\n visible: false\n });\n const storedSession = localStorage.getItem(CURRENT_SESSION);\n if (isNull(sessionId)) {\n localStorage.removeItem(CURRENT_SESSION);\n setSlideDataAction({});\n browserHistory.push('/home');\n }\n if (isNull(storedSession)) {\n localStorage.setItem(CURRENT_SESSION, sessionId);\n } else {\n if (Number(storedSession) !== sessionId) {\n localStorage.setItem(CURRENT_SESSION, sessionId);\n browserHistory.push('/home');\n }\n }\n }\n\n return (\n \n {translation[\"header.link.home\"]}}\n />\n \n \n
\n {feedbackForAnswer.visible ?\n : \n \n \n \n }\n \n \n \n \n {(!feedbackForAnswer.visible && (currentSlide.canBack || currentSlide.multipleChoiseOfAnswers)) && (\n
\n \n \n \n \n {\n dispatch(setPlayingAudioId(null));\n dispatch(setIsPlayingAudioButton(false));\n }}\n >\n {translation[\"slides.button.home\"]}\n \n \n \n \n \n
\n )}\n {!feedbackForAnswer.visible && (\n )}\n
\n
\n \n \n );\n}\n\nconst mapStateToProps = createStructuredSelector({\n elements: selectSlideElements(),\n slideId: selectSlideId(),\n currentSlide: selectCurrentSlide(),\n sessionId: selectSessionId(),\n});\n\nconst mapDispatchToProps = {\n getCurrentSlideAction: getCurrentSlide,\n writeAnswerSlideAction: writeAnswerSlide,\n getPrewSlideAction: getPrewSlide,\n setSlideDataAction: setSlideData\n};\n\nconst withConnect = connect(\n mapStateToProps,\n mapDispatchToProps,\n);\n\nexport default compose(\n withConnect,\n)(Training);\n\nTraining.defaultProps = {\n className: \"layout\",\n rowHeight: 1,\n onLayoutChange: function () {\n },\n cols: 1200,\n initialLayout: [],\n autoSize: false,\n compactType: null,\n preventCollision: false,\n};\n","import React from 'react';\nimport { Route, Router, Redirect, Switch } from 'react-router-dom';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\nimport {\n selectIsError,\n selectIsErrorDescription,\n selectIsLoading,\n} from './selectors';\nimport {\n hideErrorModal,\n} from './actions';\nimport { Loading, ResponseErrorModal } from '../../components';\nimport {\n Home,\n Login,\n Participants,\n Sequences,\n Therapists,\n Training,\n LearningPages\n} from '../../redux/pages';\nimport {\n Sequence as SequencesCreateSession\n} from '../index';\nimport { browserHistory } from '../../browserHistory';\n\nconst Main = ({ hideErrorModalAction, isLoading, isResponseError, isResponseText }) => (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {isResponseError &&\n \n }\n \n);\n\nconst mapStateToProps = createStructuredSelector({\n isLoading: selectIsLoading(),\n isResponseError: selectIsError(),\n isResponseText: selectIsErrorDescription(),\n});\n\nconst mapDispatchToProps = {\n hideErrorModalAction: hideErrorModal,\n};\n\nconst withConnect = connect(\n mapStateToProps,\n mapDispatchToProps,\n);\n\nexport default compose(\n withConnect,\n)(Main);\n","import React, { Fragment } from \"react\";\nimport styled from \"styled-components\";\nimport PropTypes from \"prop-types\";\nimport Button from \"@material-ui/core/Button\";\nimport { Typography, makeStyles } from \"@material-ui/core\";\nimport CreateIcon from \"@material-ui/icons/Create\";\n\nconst useStyles = makeStyles(() => ({\n iconButton: {\n \"&:hover\": {\n background: \"none\",\n opacity: '.8 !important',\n }\n },\n overFlowWrapper: {\n overflowY: \"auto\"\n },\n }));\n\n export const SequenceAside = ({ onSelected, tools, selected, slides = [], onEditSlide }) => {\n const classes = useStyles();\n\n return (\n \n \n {tools.map((tool) => {\n return (\n \n tool.handler(Number(selected))}>{tool.icon}\n \n );\n })}\n \n
\n \n {slides\n .sort((a, b) => a.index === b.index ? a.id - b.id : a.index - b.index)\n .map((slide, index) => {\n return (\n \n onSelected(slide.id)}\n className={slide.id === Number(selected) ? \"selected\" : \"\"}\n >\n {`${index < 9 ? '0' : ''}${index + 1}: `}\n {slide.title}\n onEditSlide(slide)}\n disableRipple\n disableFocusRipple\n className={classes.iconButton}\n >\n \n \n \n \n );\n })}\n \n
\n
\n );\n};\n\nSequenceAside.propTypes = {\n tools: PropTypes.array.isRequired,\n slides: PropTypes.array,\n onEditSlide: PropTypes.func,\n};\n\nconst ToolsPanel = styled.div`\n display: flex;\n //height: 5vh;\n height: 50px;\n //min-height: 5vh;\n min-height: 50px;\n background: #f6f8f9;\n min-width: 250px;\n`;\n\nconst SlidesList = styled.div`\n display: flex;\n flex: 15;\n flex-direction: column;\n`;\n\nconst SlideItem = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n //min-height: 6vh;\n min-height: 60px;\n border: 2px solid transparent;\n transition: border .1s;\n &:hover {\n border: 2px solid #93c11c;\n button {\n opacity: .6;\n }\n }\n &.selected {\n border: 2px solid #93c11c;\n }\n button {\n opacity: 0;\n transition: .1s;\n will-change: opacity;\n }\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex: 2;\n z-index: 10;\n background: #ffffff;\n border: 1px solid #edf1f3;\n box-sizing: border-box;\n box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.1);\n height: calc(100vh - 50px);\n`;\n\nconst IconButton = styled(Button)`\n display: flex;\n flex: 1;\n justify-content: center;\n align-items: center;\n border-radius: 0px;\n`;\n\nconst StyledTypographyName = styled(Typography)`\n display: flex;\n flex: 5;\n font-style: normal;\n font-weight: bold;\n font-size: 16px;\n line-height: 17px;\n letter-spacing: 0.02em;\n color: #7a8b94;\n`;\n\nconst StyledTypographyTitle = styled(Typography)`\n display: flex;\n flex: 1;\n justify-content: center;\n align-items: center;\n font-style: normal;\n font-weight: bold;\n font-size: 14px;\n line-height: 17px;\n letter-spacing: 0.02em;\n color: #acbcc7;\n`;\n","import Add from '@material-ui/icons/Add';\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\nimport styled from 'styled-components';\nimport { ICON_COLOR } from './constants';\nimport ArrowUpward from '@material-ui/icons/ArrowUpward';\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\nimport FileCopy from '@material-ui/icons/FileCopy';\n\nexport const SvgImage = styled.svg`\n fill: #ACBCC7;\n root:hover {\n fill: #fff;\n }\n`;\n\nexport const AddIcon = styled(Add)`\n color: ${ICON_COLOR};\n`;\n\nexport const ArrowDownwardToolIcon = styled(ArrowDownward)`\n color: ${ICON_COLOR};\n`;\n\nexport const ArrowUpwardToolIcon = styled(ArrowUpward)`\n color: ${ICON_COLOR};\n`;\n\nexport const DeleteToolIcon = styled(DeleteOutline)`\n color: ${ICON_COLOR};\n`;\n\nexport const FileCopyToolIcon = styled(FileCopy)`\n color: ${ICON_COLOR};\n`;","export const ICON_COLOR = '#7A8B94';","import React from 'react';\nimport { AddIcon } from './styles';\n\nexport const AddSlideIcon = () => (\n \n)\n\n","import React from 'react';\nimport { ArrowDownwardToolIcon } from './styles';\n\nexport const ArrowDownwardIcon = () => (\n \n)\n","import React from 'react';\nimport { ArrowUpwardToolIcon } from './styles';\n\nexport const ArrowUpwardIcon = () => (\n \n)\n\n","import React from 'react';\nimport { DeleteToolIcon } from './styles';\n\nexport const DeleteIcon = () => (\n \n)\n\n","import React from 'react';\nimport { FileCopyToolIcon } from './styles';\n\nexport const FileCopyIcon = () => (\n \n)\n","import React from 'react';\nimport styled from 'styled-components';\nimport Button from '@material-ui/core/Button';\nimport { TransformWrapper, TransformComponent } from \"react-zoom-pan-pinch\";\nimport { Typography, IconButton } from '@material-ui/core';\nimport ArrowBackIos from \"@material-ui/icons/ArrowBackIos\";\nimport { translation } from '../../../assets/translation';\nimport { browserHistory } from '../../../browserHistory';\nimport { ArrowUpwardIcon, ArrowDownwardIcon } from './toolIcons';\nimport { maxBy } from \"lodash\";\nimport { v4 as uuid } from 'uuid';\n\nexport const SlideDisplayingArea = ({\n onUpdateSlide,\n children,\n sequenceId,\n sessionTitle,\n currentDisplayingElement,\n setCurrentDisplayingElement,\n elements,\n setElements\n }) => (\n \n
\n browserHistory.push(`/sequences/${sequenceId}/details`)}>\n \n {translation[\"session.button.back\"]}\n \n {sessionTitle}\n {\n currentDisplayingElement.length !== 0 ? (\n <>\n {\n setCurrentDisplayingElement([\n {\n\n ...currentDisplayingElement[0],\n zIndex: currentDisplayingElement[0].zIndex > 1 ? currentDisplayingElement[0].zIndex - 1 : currentDisplayingElement[0].zIndex\n }\n ])\n }}>\n \n \n {\n setCurrentDisplayingElement([\n {\n\n ...currentDisplayingElement[0],\n zIndex: currentDisplayingElement[0].zIndex === maxBy(elements, (e) => {\n return e.zIndex\n }).zIndex + 1 ? currentDisplayingElement[0].zIndex : currentDisplayingElement[0].zIndex + 1\n }\n ])\n }}>\n \n \n {\n setElements([\n ...elements,\n {\n ...currentDisplayingElement[0],\n id: `${currentDisplayingElement[0].id}-${uuid()}`,\n coordinates: {\n ...currentDisplayingElement[0].coordinates,\n x: currentDisplayingElement[0].coordinates.x + 10,\n y: currentDisplayingElement[0].coordinates.y + 10,\n\n }\n }\n ])\n }}\n disabled={currentDisplayingElement[0].isPictureWrapped}\n >\n {translation[\"copy\"]}\n \n \n ) : null\n }\n \n {translation[\"slides.button.updateSlide\"]}\n \n
\n \n {\n ({zoomIn, zoomOut}) => (\n <>\n \n \n \n \n \n \n \n \n \n {children}\n \n \n \n\n \n \n \n )\n\n }\n \n
\n );\n\nconst Wrapper = styled.div`\n display: flex;\n flex: 8;\n flex-direction: column;\n position: relative;\n z-index: 1\n`;\n\nconst Header = styled.div`\n display: flex;\n flex: 1;\n //height: 5vh;\n height: 50px;\n //max-height: 5vh;\n max-height: 50px;\n //min-height: 5vh;\n min-height: 50px;\n align-items: center;\n background: #F6F8F9;\n \n`;\nconst GridWrapper = styled.div`\n display: flex;\n flex: 1;\n // width: 56vw;\n // height: 50vh;\n width: 900px;\n height: 375px;\n background: #FFFFFF;\n box-shadow: 0px 4px 25px rgba(129, 154, 168, 0.25);\n margin-top: -10px;\n margin-left: -10px;\n margin-right: -10px;\n`;\n\nconst ZoomButtonWrapper = styled.div`\n display: flex;\n flex: 1;\n width: 100%;\n //padding-top: 1vh;\n padding-top: 10px;\n //padding-right: 1vh;\n padding-right: 10px;\n min-height: 100px;\n max-height: 100px;\n height: 100px;\n flex-direction: column;\n align-items: flex-end;\n opacity: 0;\n pointer-events: none;\n border: 1px solid pink;\n .MuiButtonBase-root {\n background: #F6F8F9;\n border-radius: 0px;\n //margin-bottom: 0.5vh;\n margin-bottom: 5px;\n //min-width: 4vh;\n min-width: 40px;\n //min-height: 4vh;\n min-height: 40px;\n //max-width: 4vh;\n max-width: 40px;\n //max-height: 4vh;\n max-height: 40px;\n };\n .MuiButton-label {\n font-size: 1.5rem;\n color: #7A8B94;\n }\n`;\n\nconst ZoomAreaWrapper = styled.div`\n display: flex;\n flex: 5;\n position: relative;\n z-index: 3;\n`;\n\nconst GridBackground = styled.div`\n width: 100%;\n background-image:\n radial-gradient(circle closest-side, #E1ECF3 calc(100% - 0.5px), transparent 10%),\n radial-gradient(circle closest-side, #E1ECF3 calc(100% - 0.5px), transparent 10%);\n background-position: 0 0, 100% 0, 0 100%;\n background-repeat: repeat;\n background-size: 1em 3px, 3px 1em;\n border: 1px dashed #E1ECF3;\n`;\n\nconst ContentArea = styled.div`\n display: flex;\n flex: 15;\n flex-direction: column;\n align-items: center;\n position: relative;\n z-index: 2;\n // overflow: auto;\n > div > div.react-transform-component {\n //overflow: auto;\n overflow: hidden;\n }\n`;\n\nconst Title = styled(Typography)`\n display: flex;\n flex: 15;\n align-items: center;\n justify-content: center;\n font-weight: 500;\n font-size: 14px;\n line-height: 17px;\n text-align: center;\n letter-spacing: 0.02em;\n color: #363B3F;\n`;\nconst BackButton = styled(Button)`\n display: flex;\n flex: 1;\n color: #93C11C;\n min-width: fit-content;\n`;\n\nconst UpdateButton = styled(Button)`\n color: white;\n margin-right: 1vw;\n`;\n\nconst ZoomLabel = styled(Typography)`\n font-size: 1.5rem;\n font-weight: 500;\n`\n\n","import React from 'react';\nimport { SvgImage } from './styles';\n\nexport const AddTextElement = () => (\n \n \n \n \n \n)","import React from \"react\";\nimport { SvgImage } from \"./styles\";\n\nexport const AddImageElement = () => (\n \n \n \n \n)","import React from 'react';\nimport { SvgImage } from './styles';\n\nexport const AddMediaElement = () => (\n \n \n \n \n \n)","import React from 'react';\nimport ReactQuill from 'react-quill';\nimport 'react-quill/dist/quill.snow.css';\nimport './styles.css';\n\nconst Editor = ({ onChange, value }) => (\n \n)\n\nEditor.modules = {\n toolbar: [\n ['bold', 'italic', 'underline'],\n [{'size': ['small', false, 'large', 'huge']}],\n [{'list': 'ordered'}, {'list': 'bullet'}, {'align': []}],\n [{'color': []}, {'background': []}],\n ],\n clipboard: {\n // toggle to add extra line breaks when pasting HTML:\n matchVisual: false,\n }\n}\n\nEditor.formats = [\n 'bold', 'italic', 'underline',\n 'size',\n 'list',\n 'color', 'background', 'align',\n]\n\nexport default Editor","import styled from 'styled-components';\n\n\nexport const FontColorSelect = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n background-color: #fff;\n`;\n\nexport const TextFormatAlignmentWrapper = styled.div`\n display: flex;\n marginBottom: 1vh;\n`;\n\nexport const TextPropertiesWrapper = styled.div`\n display: flex;\n flex-direction: column;\n background: inherit;\n padding-top: 1vh;\n flex-shrink: 0;\n`;\n\nexport const FontStyleWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-bottom: 1vh;\n`;\n\nexport const FormatButtonWrapper = styled.div`\n display: flex;\n flex: 1;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 1vh;\n`;\n\nexport const ColorBox = styled.div`\n width: 2.5vh;\n height: 2.5vh;\n`;\n\nexport const Swatch = styled.div`\n padding: 5px;\n background: #fff;\n display: inline-block;\n cursor: pointer;\n`;\n\nexport const Popover = styled.div`\n position: absolute;\n z-index: 2;\n`;\n\n\nexport const Cover = styled.div`\n position: fixed;\n top: 0px;\n right: 0px;\n bottom: 0px;\n left: 0px;\n`;\n\nexport const ShapeWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n`;\n\nexport const AnswerWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n`;\n\nexport const ItemWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 1vh;\n height: 20px;\n min-height: 20px;\n`;\n\nexport const IconButton = styled.div`\n display: flex;\n flex: 1;\n`;\n\nexport const EmbedAudioWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n`;\n","import React from \"react\";\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport { SketchPicker } from 'react-color';\nimport { get } from 'lodash';\nimport styled from \"styled-components\";\nimport { Typography } from \"@material-ui/core\";\nimport { translation } from \"../../../assets/translation\";\nimport {\n ShapeWrapper,\n ItemWrapper,\n FontColorSelect,\n Swatch,\n ColorBox,\n Popover,\n Cover\n} from \"./styles\";\n\nexport const ShapeProperties = ({\n handleOpenBorderColorPicker,\n handleCloseBorderColorPicker,\n displayBorderColorPicker,\n handleOpenBackgroundColorPicker,\n handleCloseBackgroundColorPicker,\n displayBackgroundColorPicker,\n isTextProperties,\n isMediaProperties,\n currentDisplayingElement,\n setCurrentDisplayingElement\n}) => {\n\n const handleChoseBorderColor = (color) => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n borderColor: color.rgb,\n }\n ]\n )\n }\n\n const handleChoseBackgroundColor = (color) => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n backgroundColor: color.rgb,\n }\n ]\n )\n }\n\n return (\n <>\n \n {!isMediaProperties ? (\n {translation[\"slide.shape.properties.border\"]}\n \n \n \n \n { displayBorderColorPicker ? \n \n \n : null }\n \n \n ) : null}\n {\n isTextProperties ? (\n \n {translation[\"slide.shape.properties.background\"]}\n \n \n \n \n { displayBackgroundColorPicker ? \n \n \n : null }\n \n \n \n ) : null\n }\n\n \n \n )\n}\n\nconst SecondaryTypography = styled(Typography)`\n font-size: 14px;\n line-height: 16px;\n letter-spacing: 0.4px;\n color: #7A8B94;\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Typography, TextField } from \"@material-ui/core\";\nimport { translation } from \"../../../assets/translation\";\nimport { get } from 'lodash';\nimport {\n ShapeWrapper,\n ItemWrapper,\n} from \"./styles\";\n\nexport const LinearProperties = ({\n currentDisplayingElement,\n setCurrentDisplayingElement\n }) => \n {\n const handleOnChange = (e) => {\n setCurrentDisplayingElement([\n {\n ...currentDisplayingElement[0],\n coordinates: {\n ...currentDisplayingElement[0].coordinates,\n [e.target.name]: Number(e.target.value)\n }\n }\n ])\n }\n \n\n const coordinates = get(currentDisplayingElement[0], 'coordinates');\n const w = coordinates ? coordinates.w : 0;\n const h = coordinates ? coordinates.h : 0;\n const x = coordinates ? coordinates.x : 0;\n const y = coordinates ? coordinates.y : 0;\n return (\n <>\n \n \n {translation[\"slide.linear.properties.x\"]}\n {\n setCurrentDisplayingElement([])\n setTimeout(function() { if (currentDisplayingElement.length === 1) setCurrentDisplayingElement([currentDisplayingElement[0]])}, 1)\n }}\n value={x}\n />\n \n \n {translation[\"slide.linear.properties.y\"]}\n {\n setCurrentDisplayingElement([])\n setTimeout(function() { if (currentDisplayingElement.length === 1) setCurrentDisplayingElement([currentDisplayingElement[0]])}, 1)\n }}\n />\n \n \n {translation[\"slide.linear.properties.width\"]}\n {\n setCurrentDisplayingElement([])\n setTimeout(function() { if (currentDisplayingElement.length === 1) setCurrentDisplayingElement([currentDisplayingElement[0]])}, 1)\n }}\n />\n \n \n {translation[\"slide.linear.properties.height\"]}\n {\n setCurrentDisplayingElement([])\n setTimeout(function() { if (currentDisplayingElement.length === 1) setCurrentDisplayingElement([currentDisplayingElement[0]])}, 1)\n }}\n />\n \n \n \n )\n}\n\nconst SecondaryTypography = styled(Typography)`\n font-size: 14px;\n line-height: 16px;\n letter-spacing: 0.4px;\n color: #7A8B94;\n`;\n\nconst StyledTextField = styled(TextField)`\nwidth: 5ch;\n//.MuiOutlinedInput-root {\n// fieldset {\n// border: 0px; \n// }\n.MuiInputBase-input {\n text-align: center;\n}\n`;\n","import React from 'react';\nimport { Typography } from '@material-ui/core';\nimport Switch from '@material-ui/core/Switch';\nimport styled from 'styled-components';\nimport { translation } from '../../../assets/translation';\nimport { AnswerWrapper, ItemWrapper } from './styles';\n\nexport const AnswerProperties = ({\n selectedElement,\n currentDisplayingElement,\n setCurrentDisplayingElement\n }) => {\n const handleChangeIsAnswer = (event) => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n isAnswer: event.target.checked,\n }\n ]\n )\n }\n\n const handleChangeCorrectAnswer = (event) => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n isCorrectAnswer: event.target.checked,\n }\n ]\n )\n }\n\n const getAnswerDisabled = currentDisplayingElement => {\n const isDisabled = Boolean(currentDisplayingElement && currentDisplayingElement[0] && (currentDisplayingElement[0].isPictureWrapped || currentDisplayingElement[0].isEmbedAudio));\n return isDisabled;\n }\n\n return (\n <>\n {\n selectedElement && selectedElement !== 'none' ? (\n \n {translation[\"slide.title.answer\"]}\n \n {translation[\"slide.answer.property.isAnswer\"]}\n \n \n \n {translation[\"slide.answer.property.correct\"]}\n \n \n \n ) : null\n }\n\n \n )\n}\n\nconst SecondaryTypography = styled(Typography)`\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 16px;\n letter-spacing: 0.4px;\n color: #7A8B94;\n`;\n\nconst MainTypography = styled(Typography)`\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n letter-spacing: 0.02em;\n margin-bottom: 1vh;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport { translation } from '../../../assets/translation';\n\nexport const MetaDataProperties = ({\n selectedElement,\n currentDisplayingElement,\n setCurrentDisplayingElement\n}) => {\n const handleOnChangeText = event => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n metaData: event.target.value,\n }\n ]\n )\n };\n\n return (\n <>\n {translation[\"slide.title.metaData\"]}\n \n \n )\n}\n\nconst StyledTextField = styled(TextField)`\nbackground-color: #fff;\n.MuiOutlinedInput-root {\n fieldset {\n border: 0px; \n }\n`;\nconst MainTypography = styled(Typography)`\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n letter-spacing: 0.02em;\n margin-bottom: 1vh;\n`;\n","import api from \"../../api\";\nimport {\n SET_SLIDES,\n SET_SLIDE_MODAL,\n SET_ADDED_SLIDE,\n NONE, UPLOAD_SLIDE_PHOTO,\n UPLOAD_SLIDE_MEDIA,\n} from \"./constants\";\n\nconst getActionAfterRequest = (dispatch, sessionId) => {\n dispatch(setSlideModal(NONE));\n dispatch(getSessionData(sessionId));\n};\n\nexport const getSessionData = id => (dispatch) => {\n api.sessions\n .getSession(id)\n .then((res) => dispatch(setSlides(res)))\n .catch((err) => console.log(err));\n};\n\nexport const getSlides = () => (dispatch) => {\n api.slides\n .getAllSlides()\n .then((res) => dispatch(setSlides(res)))\n .catch((err) => console.log(err));\n};\n\nexport const createSlide = (data, sessionId) => (dispatch) => {\n api.slides\n .createSlide(data)\n .then(res => dispatch(setAddedSlide(res)))\n .then(() => getActionAfterRequest(dispatch, sessionId))\n .catch((err) => console.log(err));\n};\n\nexport const updateSlide = (id, data, sessionId) => (dispatch) => {\n api.slides\n .updateSlide(id, data)\n .then(() => getActionAfterRequest(dispatch, sessionId))\n .catch((err) => console.log(err));\n};\n\nexport const copySlide = (data, sessionId) => async (dispatch) => \n api.slides.copySlide(data)\n .catch((err) => console.log(err));\n\nexport const deleteSlide = (id, sessionId) => (dispatch) => {\n api.slides\n .deleteSlide(id)\n .then(() => getActionAfterRequest(dispatch, sessionId))\n .catch((err) => console.log(err));\n};\n\nexport const changeOrderSlide = (sessionId, data) => (dispatch) => {\n api.slides\n .changeOrderSlide(sessionId, data)\n .then(() => getActionAfterRequest(dispatch, sessionId))\n .catch((err) => console.log(err));\n}\n\nexport const setSlides = (payload) => ({\n type: SET_SLIDES,\n payload,\n});\n\nconst setAddedSlide = (payload) => ({\n type: SET_ADDED_SLIDE,\n payload\n})\n\nexport const setSlideModal = (payload) => ({\n type: SET_SLIDE_MODAL,\n payload,\n});\n\nexport const setPhotoSrc = src => (dispatch) =>\n dispatch({type: UPLOAD_SLIDE_PHOTO, payload: {src}});\n\nexport const setMediaSrc = src => (dispatch) =>\n dispatch({type: UPLOAD_SLIDE_MEDIA, payload: {src}});\n","import React from 'react';\nimport styled from 'styled-components';\nimport PicturePlus from '../../../assets/images/picturePlus.svg';\nimport { Button, IconButton } from '@material-ui/core';\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\nimport { makeStyles } from '@material-ui/core';\nimport { translation } from '../../../assets/translation';\nimport api from '../../../api';\nimport { setPhotoSrc } from '../actions';\nimport { useDispatch } from 'react-redux';\n\n\nexport const ImageProperties = ({\n currentDisplayingElement,\n setCurrentDisplayingElement\n}) => {\n const dispatch = useDispatch();\n let uploadInput = React.createRef();\n const uploadFile = () => {\n uploadInput.click();\n }\n\n const handleUserPhoto = data => {\n if (!data) {\n return;\n }\n\n api.file.uploadFile(data)\n .then(res => {\n dispatch(setPhotoSrc(res));\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n imageLink: res.staticUrl,\n width: res.width,\n height: res.height\n }\n ]\n )\n })\n .catch(err => console.log(err));\n }\n\n\n const setPhoto = (file, e) => {\n if (!file) {\n return;\n }\n e.preventDefault();\n const formData = new FormData();\n formData.append('file', file);\n handleUserPhoto(formData);\n }\n\n const resetImageLink = () => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n imageLink: null,\n width: null,\n height: null\n }\n ]\n )\n }\n\n const useStyles = makeStyles(theme => ({\n photoUpload: {\n width: '13.5vw',\n height: '13vh',\n borderStyle: 'dashed',\n borderWidth: '2px',\n borderColor: theme.palette.secondary.main,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n photoWrapper: {\n width: '13.5vw',\n height: '13vh',\n borderStyle: 'solid',\n borderWidth: '2px',\n borderColor: theme.palette.secondary.main,\n backgroundSize: 'cover',\n backgroundPosition: 'center'\n },\n deleteWrapper: {\n display: 'flex',\n height: '13vh',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n },\n uploadText: {\n color: theme.palette.secondary.main,\n fontWeight: '500',\n fontSize: '15px',\n letterSpacing: '0.15px',\n textTransform: 'none'\n },\n img: {\n marginRight: 5\n },\n hidden: {\n display: 'none'\n },\n }));\n\n const classes = useStyles();\n\n return (\n <>\n \n <>\n {(currentDisplayingElement[0] && currentDisplayingElement[0].imageLink) ? (\n
\n
\n
\n \n \n \n
\n
\n
\n ) : (\n <>\n \n {\n uploadInput = elem;\n }}\n onChange={e => setPhoto(e.target.files[0], e)}\n />\n \n )}\n \n
\n \n )\n}\n\nconst ImageWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1vh;\n max-height: 13vh;\n max-width: 14vw;\n flex-shrink: 0;\n`;\n\nconst DeleteIconButton = styled(IconButton)`\n background: #fff;\n root:hover {\n background-color: theme.palette.secondary.main\n }\n`;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\n// const isFirefox = typeof InstallTrigger !== 'undefined';\nimport {isChrome} from 'react-device-detect';\n// const isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);\n\nconst useStyles = makeStyles(theme => ({\n firefoxWrapper: {\n display: 'flex',\n margin: '20px 0',\n flexShrink: 0,\n justifyContent: 'center',\n },\n chromeWrapper: {\n display: 'flex',\n margin: '20px 0',\n border: '2px solid #93C11C'\n }\n}));\n\nconst AudioWrapper = ({children}) => {\n const classes = useStyles();\n return (\n
\n {children}\n
\n )\n};\n\nexport default AudioWrapper;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { translation } from '../../../assets/translation';\nimport { useDispatch } from 'react-redux';\nimport { setMediaSrc } from '../actions';\nimport api from '../../../api';\nimport { makeStyles, IconButton, Button, Typography } from '@material-ui/core';\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\nimport PicturePlus from '../../../assets/images/picturePlus.svg';\nimport Switch from '@material-ui/core/Switch';\nimport { ItemWrapper } from './styles';\nimport { API_BASE_ADDRESS } from '../../../api/api';\nimport AudioWrapper from './AudioWrapper';\n\nconst AUDIO_FILES = ['m4a', 'mp3', 'wav', 'pcm', 'aac', 'ogg', 'wma', 'flac'];\n\nexport const MediaProperties = ({\n currentDisplayingElement,\n setCurrentDisplayingElement,\n elements\n }) => {\n const dispatch = useDispatch();\n const hasPictureWrapped = elements.findIndex(item => item.isPictureWrapped) > -1;\n let uploadInput = React.createRef();\n const uploadFile = () => {\n uploadInput.click();\n }\n\n const handleUserMedia = data => {\n if (!data) {\n return;\n }\n\n api.file.uploadFile(data)\n .then(res => {\n dispatch(setMediaSrc(res));\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n mediaLink: res.staticUrl,\n }\n ]\n )\n })\n .catch(err => console.log(err));\n }\n\n\n const setMedia = (file, e) => {\n if (!file) {\n return;\n }\n e.preventDefault();\n const formData = new FormData();\n formData.append('file', file);\n handleUserMedia(formData);\n }\n\n const resetMediaLink = () => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n mediaLink: null,\n }\n ]\n )\n }\n\n const setIsStartAuto = () => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n isStartAuto: !(currentDisplayingElement[0] && currentDisplayingElement[0].isStartAuto),\n }\n ]\n )\n }\n\n const setIsPictureWrapped = () => {\n const isPictureWrapped = (currentDisplayingElement[0] && currentDisplayingElement[0].isPictureWrapped);\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n isPictureWrapped: !isPictureWrapped,\n }\n ]\n )\n }\n\n const getMediaLink = (url) => {\n const urlLink = url && url.mediaLink && url.mediaLink.slice(4);\n const fullUrl = urlLink ? `${API_BASE_ADDRESS}${urlLink}` : null;\n return fullUrl;\n }\n\n const checkDisabled = (currentDisplayingElement, hasPictureWrapped) => {\n if (hasPictureWrapped) {\n return true;\n }\n const url = currentDisplayingElement && currentDisplayingElement[0] && currentDisplayingElement[0].mediaLink;\n const ext = url && url.split('.').pop();\n const isAudio = Boolean(AUDIO_FILES.includes(ext));\n return (!isAudio && Boolean(ext)) || (currentDisplayingElement[0] && currentDisplayingElement[0].isCorrectAnswer) || (currentDisplayingElement[0] && currentDisplayingElement[0].isAnswer);\n }\n\n const useStyles = makeStyles(theme => ({\n photoUpload: {\n width: '13.5vw',\n height: '13vh',\n borderStyle: 'dashed',\n borderWidth: '2px',\n borderColor: theme.palette.secondary.main,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n photoWrapper: {\n width: '13.5vw',\n height: '13vh',\n borderStyle: 'solid',\n borderWidth: '2px',\n borderColor: theme.palette.secondary.main,\n backgroundSize: 'cover',\n backgroundPosition: 'center'\n },\n deleteWrapper: {\n display: 'flex',\n height: '13vh',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n },\n uploadText: {\n color: theme.palette.secondary.main,\n fontWeight: '500',\n fontSize: '15px',\n letterSpacing: '0.15px',\n textTransform: 'none'\n },\n img: {\n marginRight: 5\n },\n hidden: {\n display: 'none'\n },\n }));\n const classes = useStyles();\n return (\n <>\n \n <>\n {(currentDisplayingElement[0] && currentDisplayingElement[0].mediaLink) ? (\n
\n
\n
\n \n \n \n
\n
\n
\n ) : (\n <>\n \n {\n uploadInput = elem;\n }}\n onChange={e => setMedia(e.target.files[0], e)}\n />\n \n )}\n \n
\n {Boolean(currentDisplayingElement[0] && currentDisplayingElement[0].isPictureWrapped && getMediaLink(currentDisplayingElement[0])) &&\n \n \n }\n \n {translation[\"slide.video.start.automatically\"]}\n \n \n \n {translation[\"slide.video.show.as.pictire\"]}\n \n \n \n )\n}\n\n\nconst DeleteIconButton = styled(IconButton)`\n background: #fff;\n root:hover {\n background-color: theme.palette.secondary.main\n }\n`;\nconst ImageWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1vh;\n flex-shrink: 0;\n`;\n\nconst SecondaryTypography = styled(Typography)`\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 16px;\n letter-spacing: 0.4px;\n color: #7A8B94;\n`;\n\n","import React from 'react';\nimport { Typography, Button, makeStyles, IconButton } from '@material-ui/core';\nimport Switch from '@material-ui/core/Switch';\nimport { translation } from '../../../assets/translation';\nimport styled from 'styled-components';\nimport { EmbedAudioWrapper, ItemWrapper } from './styles';\nimport PicturePlus from '../../../assets/images/picturePlus.svg';\nimport api from '../../../api';\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\nimport { API_BASE_ADDRESS } from '../../../api/api';\nimport AudioWrapper from './AudioWrapper';\n\nexport const EmbedAudioToText = ({\n selectedElement,\n currentDisplayingElement,\n setCurrentDisplayingElement\n }) => {\n\n let uploadInput = React.createRef();\n const useStyles = makeStyles(theme => ({\n photoUpload: {\n width: '13.5vw',\n height: '13vh',\n borderStyle: 'dashed',\n borderWidth: '2px',\n borderColor: theme.palette.secondary.main,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: '8px',\n },\n photoWrapper: {\n width: '13.5vw',\n height: '13vh',\n borderStyle: 'solid',\n borderWidth: '2px',\n borderColor: theme.palette.secondary.main,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n margin: '0 auto',\n },\n deleteWrapper: {\n display: 'flex',\n height: '13vh',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n },\n uploadText: {\n color: theme.palette.secondary.main,\n fontWeight: '500',\n fontSize: '15px',\n letterSpacing: '0.15px',\n textTransform: 'none'\n },\n img: {\n marginRight: 5\n },\n hidden: {\n display: 'none'\n },\n }));\n\n const handleChangeIsEmbedAudio = (event) => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n isEmbedAudio: event.target.checked,\n }\n ]\n )\n }\n\n const uploadFile = () => {\n uploadInput.click();\n }\n\n const handleUserMedia = data => {\n if (!data) {\n return;\n }\n api.file.uploadFile(data)\n .then(res => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n embedAudioLink: res.staticUrl,\n }\n ]\n )\n })\n .catch(err => console.log(err));\n }\n\n const setMedia = (file, e) => {\n if (!file) {\n return;\n }\n e.preventDefault();\n const formData = new FormData();\n formData.append('file', file);\n handleUserMedia(formData);\n }\n\n const resetMediaLink = () => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n embedAudioLink: null,\n }\n ]\n )\n }\n\n const getMediaLink = (url) => {\n const urlLink = url && url.embedAudioLink && url.embedAudioLink.slice(4);\n const fullUrl = urlLink ? `${API_BASE_ADDRESS}${urlLink}` : null;\n return fullUrl;\n }\n\n const checkDisabled = (currentDisplayingElement) => {\n return (currentDisplayingElement[0] && currentDisplayingElement[0].isCorrectAnswer) || (currentDisplayingElement[0] && currentDisplayingElement[0].isAnswer);\n }\n\n const classes = useStyles();\n return (\n <>\n {\n selectedElement && selectedElement !== 'none' ? (\n \n {translation[\"slide.title.embed.audio\"]}\n \n {translation[\"slide.title.embed.audio.question\"]}\n \n \n {(currentDisplayingElement[0] && currentDisplayingElement[0].isEmbedAudio) && (\n \n {(currentDisplayingElement[0] && currentDisplayingElement[0].embedAudioLink) ? (\n
\n
\n
\n \n \n \n
\n
\n \n \n \n
\n ) : (\n <>\n \n {\n uploadInput = elem;\n }}\n onChange={e => setMedia(e.target.files[0], e)}\n />\n \n )}\n\n
\n )}\n
\n ) : null\n }\n \n )\n};\n\nconst DeleteIconButton = styled(IconButton)`\n background: #fff;\n root:hover {\n background-color: theme.palette.secondary.main\n }\n`;\n\nconst ImageWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1vh;\n flex-shrink: 0;\n`;\n\nconst MainTypography = styled(Typography)`\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n letter-spacing: 0.02em;\n margin-bottom: 1vh;\n`;\n\nconst SecondaryTypography = styled(Typography)`\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 16px;\n letter-spacing: 0.4px;\n color: #7A8B94;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport { AddTextElement } from './toolIcons/AddTextElement';\nimport { AddImageElement } from './toolIcons/AddImageElement';\nimport { AddMediaElement } from './toolIcons/AddMediaElement';\nimport Editor from './Editor/index';\nimport { ShapeProperties } from './ShapeProperties';\nimport { LinearProperties } from './LinearProperties';\nimport { AnswerProperties } from './AnswerProperties';\nimport Divider from \"@material-ui/core/Divider\";\nimport { MetaDataProperties } from './MetaDataProperties';\nimport { ImageProperties } from './ImageProperties';\nimport { MediaProperties } from './MediaProperties';\nimport { EmbedAudioToText } from './EmbedAudioToText';\nimport { translation } from '../../../assets/translation';\n\nexport const SlideComponentEditingAside = ({\n selectedElement,\n setSelectedElement,\n slides,\n elements,\n setElements,\n displayFontColorPicker,\n displayBorderColorPicker,\n displayBackgroundColorPicker,\n handleOpenFontColorPicker,\n handleCloseFontColorPicker,\n handleOpenBackgroundColorPicker,\n handleCloseBackgroundColorPicker,\n handleOpenBorderColorPicker,\n handleCloseBorderColorPicker,\n onAddElement,\n currentDisplayingElement,\n setCurrentDisplayingElement\n}) => {\n\n const handleClickCreateElement = (type) => () => {\n onAddElement(type);\n }\n\n const handleOnChangeText = data => {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n text: data\n }\n ]\n )\n }\n\n return (\n \n \n {translation[\"slide.title\"]}\n \n \n \n \n \n \n \n \n {translation[\"slide.properties.button.label.text\"]}\n \n \n \n \n \n \n \n {translation[\"slide.properties.button.label.image\"]}\n \n \n \n \n \n \n \n {translation[\"slide.properties.button.label.media\"]}\n \n \n \n {\n currentDisplayingElement.length !== 0 ? (\n \n {\n setSelectedElement('none');\n setCurrentDisplayingElement([])\n }}\n >\n {translation[\"slide.properties.button.label.delete\"]}\n \n \n \n {\n currentDisplayingElement.length !== 0 ? `${currentDisplayingElement[0].type} ${translation[\"slide.properties\"]}` : null\n }\n \n {\n currentDisplayingElement[0].type === translation[\"slide.properties.button.label.text\"] && (\n <>\n \n \n \n \n )\n }\n {\n currentDisplayingElement[0].type === translation[\"slide.properties.button.label.image\"] && (\n <>\n \n \n \n \n )\n }\n {\n currentDisplayingElement[0].type === translation[\"slide.properties.button.label.media\"] && (\n \n )\n }\n \n \n \n \n {!(currentDisplayingElement[0].type === translation[\"slide.properties.button.label.media\"]) && }\n \n \n \n \n ) : null\n }\n\n \n \n)};\n\nconst MainTypography = styled(Typography)`\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n letter-spacing: 0.02em;\n margin-bottom: 1vh;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex: 2;\n background: #F6F8F9;\n border: 1px solid #EDF1F3;\n box-sizing: border-box;\n z-index: 10;\n box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.1);\n`;\n\nconst TitleArea = styled.div`\n display: flex;\n flex: 1;\n //min-height: 5vh;\n min-height: 50px;\n padding-left: 1vw;\n align-items: center;\n font-style: normal;\n font-weight: 500;\n letter-spacing: 0.02em;\n color: #363B3F;\n`;\n\nconst ToolsArea = styled.div`\n display: flex;\n flex: 15;\n flex-direction: column;\n`;\n\nconst ButtonsWrapper = styled.div`\n display: flex;\n flex: 1.5;\n //max-height: 13vh;\n max-height: 130px;\n justify-content: space-around;\n border-bottom: 1px solid #D6DCE0;\n`;\n\nconst SettingsWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex: 4;\n height: 65vh;\n padding: 3vh 2vh;\n max-height: 65vh;\n overflow-y: auto;\n & .ql-picker-options {\n left: -3px;\n }\n & .ql-toolbar {\n position: relative;\n }\n & .ql-color-picker {\n position: initial;\n }\n`;\n\nconst DeleteButtonWrapper = styled.div`\n display: flex;\n flex: 1;\n justify-content: center; \n color: #93C11C;\n text-transform: uppercase;\n cursor: pointer;\n height: 18px;\n min-height: 18px;\n`;\n\n\nconst CardWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst CreationButton = styled(IconButton)`\n box-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12);\n border-radius: 0;\n margin-bottom: 1vh;\n //height: 6.2vh;\n height: 62px;\n //width: 6.2vh;\n width: 62px;\n ${CardWrapper}:hover & {\n cursor: pointer;\n background: #93C11C;\n svg * {\n fill: #fff;\n }\n };\n ${CardWrapper}:focus {\n border: 5px solid red;\n }\n`;\n\nconst StyledDivider = styled(Divider)`\n list-style: none;\n margin: 2vh 0vh;\n`;\n","export const actionTypes = {\n add: 'toolAdd',\n copy: 'toolCopy',\n edit: 'toolEdit',\n downgradePriority: 'toolDowngradePriority',\n raisePriority: 'toolRaisePriority',\n delete: 'toolDelete',\n }\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useState, useEffect } from \"react\";\nimport {\n makeStyles,\n Box,\n FormControl,\n FormControlLabel,\n Typography,\n Switch,\n} from \"@material-ui/core\";\nimport LimitedTextField from '../../../components/LimitedTextField';\nimport { ModalWithActions } from \"../../../components\";\nimport { translation } from \"../../../assets/translation\";\nimport { actionTypes } from \"../actionTypes\";\nimport { get, isNull, merge } from \"lodash\";\n\nconst useStyles = makeStyles(() => ({\n textFieldTitle: {\n width: 280,\n },\n textField: {\n width: \"100%\",\n },\n formControl: {\n width: \"100%\",\n },\n switchLabel: {\n width: \"47%\",\n }\n}));\n\nconst CrudSlideDialog = ({\n dialogParams,\n closeDialog,\n onСreate,\n onUpdate,\n onCopy,\n onDelete,\n}) => {\n const classes = useStyles();\n const TITLE = 'title';\n const [titleError, setTitleError] = useState(null);\n const [formValues, setFormValues] = useState({\n title: '',\n metadata: '',\n notes: '',\n canBack: true,\n sorting: false,\n multipleChoiseOfAnswers: false,\n showResult: false,\n });\n\n const defaultValues = value => isNull(value) ? \"\" : value;\n\n useEffect(() => {\n setFormValues({\n ...formValues,\n title: defaultValues(get(dialogParams, \"element.title\", \"\")),\n metadata: defaultValues(get(dialogParams, \"element.metadata\", \"\")),\n notes: defaultValues(get(dialogParams, \"element.notes\", \"\")),\n canBack: defaultValues(get(dialogParams, \"element.canBack\", true)),\n sorting: defaultValues(get(dialogParams, \"element.sorting\", false)),\n multipleChoiseOfAnswers: defaultValues(get(dialogParams, \"element.multipleChoiseOfAnswers\", false)),\n showResult: defaultValues(get(dialogParams, \"element.showResult\", false)),\n })\n }, [dialogParams]);\n\n const handleSelect = e => {\n const { name, checked } = e.target;\n if (name === \"multipleChoiseOfAnswers\" && checked) {\n setFormValues({\n ...formValues,\n [name]: checked,\n canBack: true\n })\n } else if (name === \"canBack\" && !checked) {\n setFormValues({\n ...formValues,\n [name]: checked,\n multipleChoiseOfAnswers: false\n })\n } else {\n setFormValues({\n ...formValues,\n [name]: checked,\n })\n }\n }\n\n const handleInput = e => {\n const { name, value } = e.target;\n if (name === TITLE) {\n value ? setTitleError(null) : setTitleError(translation[\"required\"]);\n }\n setFormValues({\n ...formValues,\n [name]: value,\n })\n }\n\n const onSubmit = () => {\n let elementData = get(dialogParams, \"element\", {});\n switch (dialogParams.type) {\n case actionTypes.add:\n return onСreate(formValues);\n case actionTypes.copy:\n return onCopy(merge(elementData, formValues));\n case actionTypes.edit:\n return onUpdate(merge(elementData, formValues));\n case actionTypes.delete:\n return onDelete(dialogParams.id);\n default:\n break;\n }\n };\n\n const switchers = [\n {\n name: \"sorting\",\n checked: formValues.sorting,\n label: translation[\"slide.dialog.random\"],\n },\n {\n name: \"canBack\",\n checked: formValues.canBack,\n label: translation[\"slide.dialog.canBack\"],\n },\n {\n name: \"multipleChoiseOfAnswers\",\n checked: formValues.multipleChoiseOfAnswers,\n label: translation[\"slide.dialog.multipleAnswer\"],\n },\n {\n name: \"showResult\",\n checked: formValues.showResult,\n label: translation[\"slide.dialog.showResult\"],\n },\n ];\n\n return (\n {\n if ([actionTypes.add, actionTypes.edit, actionTypes.copy].includes(dialogParams.type) && !formValues.title) {\n setTitleError(translation[\"required\"]);\n return;\n }\n setTitleError(null);\n onSubmit();\n }}\n titleNoButton={dialogParams.noButton}\n titleYesButton={dialogParams.yesButton}\n isDisabled={[actionTypes.add, actionTypes.edit, actionTypes.copy].includes(dialogParams.type) && Boolean(titleError)}\n >\n {[actionTypes.add, actionTypes.edit, actionTypes.copy].includes(\n dialogParams.type\n ) ? (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {switchers.map(({ checked, label, name }) => (\n \n }\n label={label}\n />\n ))}\n \n \n ) : (\n dialogParams.type === actionTypes.delete && (\n \n {translation[\"slide.modal.delete.description\"]}\n \n )\n )}\n \n );\n};\n\nexport default CrudSlideDialog;\n","import { createSelector } from \"reselect\";\nimport { initialState } from \"./reducer\";\nimport { get } from \"lodash\";\nimport {} from \"./constants\";\n\nconst selectRoot = (state) => state.slides || initialState;\n\nexport const selectSequenceId = () =>\n createSelector(selectRoot, (state) => get(state.sessionInfo, \"sequenceId\", []));\n\nexport const selectSessionTitle = () =>\n createSelector(selectRoot, (state) => get(state.sessionInfo, \"title\", ''));\n\nexport const selectSlides = () =>\n createSelector(selectRoot, (state) => get(state.sessionInfo, \"slides\", []));\n\nexport const selectSlidesModal = () =>\n createSelector(selectRoot, (state) => state.modalType);\n\nexport const selectAddedSlide = () =>\n createSelector(selectRoot, (state) => state.addedSlide);\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport { SequenceAside } from \"./components/SequenceAside\";\nimport { SlideDisplayingArea } from \"./components/SlideDisplayingArea\";\nimport { SlideComponentEditingAside } from \"./components/SlideComponentEditingAside\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { createStructuredSelector } from \"reselect\";\nimport {\n AddSlideIcon,\n ArrowDownwardIcon,\n ArrowUpwardIcon,\n DeleteIcon,\n FileCopyIcon,\n} from \"./components/toolIcons\";\nimport MainLayout from \"../MainLayout\";\nimport CrudSlideDialog from \"./components/CrudSlideDialogModal\";\nimport GridLayout from \"./components/GridLayout\";\nimport { translation } from \"../../assets/translation\";\nimport {\n getSessionData,\n createSlide,\n updateSlide,\n deleteSlide,\n copySlide,\n setSlides,\n changeOrderSlide,\n} from \"./actions\";\nimport {\n selectSequenceId,\n selectSlides,\n selectAddedSlide,\n selectSlidesModal,\n selectSessionTitle,\n} from \"./selectors\";\nimport { actionTypes } from \"./actionTypes\";\nimport { get, isEmpty, merge, clone, findIndex } from \"lodash\";\nimport { NONE } from \"./constants\";\nimport { browserHistory } from \"../../browserHistory\";\n\nconst Sequence = ({\n getSessionDataAction,\n createSlideAction,\n updateSlideAction,\n copySlideAction,\n deleteSlideAction,\n changeOrderSlideAction,\n slides,\n match,\n modalType,\n setSlidesAction,\n sequenceId,\n sessionTitle,\n addedSlide,\n ...props\n}) => {\n const TOOLS_LIST = [\n {\n id: actionTypes.add,\n icon: ,\n handler: () => {\n setDialogisOpen({\n isOpen: true,\n title: translation[\"slide.dialog.add\"],\n type: actionTypes.add,\n noButton: translation[\"discard\"],\n yesButton: translation[\"save\"],\n });\n },\n },\n {\n id: actionTypes.copy,\n icon: ,\n handler: (elementId) => {\n if (elementId) {\n const currentSlide = clone(\n slides.find((item) => item.id === elementId)\n );\n setDialogisOpen({\n isOpen: true,\n title: translation[\"slide.dialog.copy\"],\n type: actionTypes.copy,\n element: merge(currentSlide, {\n title: `${translation[\"slide.title.copy\"]} - ` + currentSlide.title,\n }),\n noButton: translation[\"discard\"],\n yesButton: translation[\"save\"],\n });\n }\n },\n },\n {\n id: actionTypes.downgradePriority,\n icon: ,\n handler: (elementId) => {\n const sortedSlides = slides\n .sort((a, b) => a.index === b.index ? a.id - b.id : a.index - b.index)\n .map((item, index) => {\n return { index, id: item.id };\n });\n const index = findIndex(sortedSlides, { id: elementId });\n if (index + 1 < sortedSlides.length) {\n sortedSlides[index].index++;\n sortedSlides[index + 1].index--;\n }\n changeOrderSlide(sortedSlides);\n },\n },\n {\n id: actionTypes.raisePriority,\n icon: ,\n handler: (elementId) => {\n const sortedSlides = slides\n .sort((a, b) => a.index === b.index ? a.id - b.id : a.index - b.index)\n .map((item, index) => {\n return { index, id: item.id };\n });\n const index = findIndex(sortedSlides, { id: elementId });\n if (index !== 0) {\n sortedSlides[index].index--;\n sortedSlides[index - 1].index++;\n }\n changeOrderSlide(sortedSlides);\n },\n },\n {\n id: actionTypes.delete,\n icon: ,\n handler: (elementId) => {\n if (elementId) {\n setDialogisOpen({\n isOpen: true,\n title: translation[\"sequences.modal.delete.title\"],\n type: actionTypes.delete,\n noButton: translation[\"no\"],\n yesButton: translation[\"yes\"],\n id: elementId,\n });\n }\n },\n },\n ];\n\n const { sessionId, slideId } = match.params;\n const [isDialogOpen, setDialogisOpen] = useState({ isOpen: false });\n const [mounted, setMounted] = useState(false);\n const [selectedElement, setSelectedElement] = useState(\"none\");\n const [displayFontColorPicker, setDisplayFontColorPicker] = useState(false);\n const [\n displayBackgroundColorPicker,\n setDisplayBackgroundColorPicker,\n ] = useState(false);\n const [displayBorderColorPicker, setDisplayBorderColorPicker] = useState(false);\n const [selected, setSelected] = useState(slideId || null);\n const [elements, setElements] = useState([]);\n const [currentDisplayingElement, setCurrentDisplayingElement] = useState([]);\n\n useEffect(()=> {\n if (selectedElement === 'none') {\n setCurrentDisplayingElement([])\n if (currentDisplayingElement[0]) {\n setElements([...elements, currentDisplayingElement[0]])\n } else {\n setElements([...elements ])\n }\n } else {\n if (currentDisplayingElement[0]) {\n setElements([...elements.filter((element) => element.id !== selectedElement ), currentDisplayingElement[0]])\n } else {\n setElements([...elements.filter((element) => element.id !== selectedElement )])\n }\n setCurrentDisplayingElement([elements.find((element) => element.id === selectedElement)])\n }\n }, [selectedElement])\n\n const ESCListener = (event) => {\n if (event.keyCode === 27) {\n setSelectedElement('none');\n }\n }\n\n function printMousePos(event) {\n // const textContent =\n // \"clientX: \" + event.clientX +\n // \" - clientY: \" + event.clientY;\n }\n document.addEventListener(\"click\", printMousePos);\n\n const componentWillUnmount = () => {\n setElements([]);\n setSlidesAction([]);\n window.removeEventListener('keyup', ESCListener, false)\n document.removeEventListener(\"click\", printMousePos);\n };\n\n useEffect(() => {\n setMounted(true);\n getSessionDataAction(Number(sessionId));\n window.addEventListener('keyup', ESCListener, false);\n document.addEventListener(\"click\", printMousePos);\n return () => componentWillUnmount()\n }, []);\n\n const handleCloseFontColorPicker = () => {\n setDisplayFontColorPicker(false);\n };\n\n const handleOpenBackgroundColorPicker = () => {\n setDisplayBackgroundColorPicker(!displayBackgroundColorPicker);\n };\n\n const handleCloseBackgroundColorPicker = () => {\n setDisplayBackgroundColorPicker(false);\n };\n\n const handleOpenBorderColorPicker = () => {\n setDisplayBorderColorPicker(!displayBorderColorPicker);\n };\n\n const handleCloseBorderColorPicker = () => {\n setDisplayBorderColorPicker(false);\n };\n\n const onAddElement = (type) => {\n const newTextBlock = {\n // id: `${type}-${currentDisplayingElement.length !== 0 && elements.length === 0 ? elements.length + 1 : elements.length}-${slideId}`,\n id: `${type}-${currentDisplayingElement.length + elements.length}-${slideId}`,\n type,\n zIndex: elements.length === 0 && currentDisplayingElement.length === 1 ? elements.length + 2 : elements.length + 1,\n coordinates: {\n x: 100*((elements.length * 2) % (props.cols.lg || 12)),\n y: 0, // puts it at the bottom\n w: 150,\n h: 10,\n },\n text: translation[\"slide.new.text.block\"],\n textAlignment: \"left\",\n textFormat: [],\n textColor: {\n r: \"0\",\n g: \"0\",\n b: \"0\",\n a: \"1\",\n },\n fontSize: 14,\n shapeName: \"\",\n borderColor: {\n r: 255,\n g: 255,\n b: 255,\n a: 0,\n },\n backgroundColor: {\n r: 255,\n g: 255,\n b: 255,\n a: 0,\n },\n isAnswer: false,\n isCorrectAnswer: false,\n metaData: \"\",\n };\n\n const newImageBlock = {\n // id: `${type}-${currentDisplayingElement.length !== 0 && elements.length === 0 ? elements.length + 1 : elements.length}-${slideId}`,\n id: `${type}-${currentDisplayingElement.length + elements.length}-${slideId}`,\n type,\n zIndex: elements.length === 0 && currentDisplayingElement.length === 1 ? elements.length + 2 : elements.length + 1,\n coordinates: {\n x: 100*((elements.length * 2) % (props.cols.lg || 12)),\n y: 0, // puts it at the bottom\n w: 200,\n h: 10,\n },\n imageLink: null,\n shapeName: \"\",\n borderColor: {\n r: 255,\n g: 255,\n b: 255,\n a: 0,\n },\n isAnswer: false,\n isCorrectAnswer: false,\n metaData: \"\",\n };\n const newMediaBlock = {\n // id: `${type}-${currentDisplayingElement.length !== 0 && elements.length === 0 ? elements.length + 1 : elements.length}-${slideId}`,\n id: `${type}-${currentDisplayingElement.length + elements.length}-${slideId}`,\n type,\n zIndex: elements.length === 0 && currentDisplayingElement.length === 1 ? elements.length + 2 : elements.length + 1,\n coordinates: {\n x: 200*((elements.length * 2) % (props.cols.lg || 12)),\n y: 0, // puts it at the bottom\n w: 400,\n h: 20,\n },\n mediaLink: null,\n shapeName: \"\",\n borderColor: {\n r: 255,\n g: 255,\n b: 255,\n a: 0,\n },\n isAnswer: false,\n isCorrectAnswer: false,\n metaData: \"\",\n isStartAuto: false,\n };\n if (type === translation[\"slide.properties.button.label.image\"]) {\n setElements([...elements, newImageBlock]);\n setSelectedElement(newImageBlock.id);\n }\n\n if (type === translation[\"slide.properties.button.label.text\"]) {\n setElements([...elements, newTextBlock]);\n setSelectedElement(newTextBlock.id);\n }\n if (type === translation[\"slide.properties.button.label.media\"]) {\n setElements([...elements, newMediaBlock]);\n setSelectedElement(newMediaBlock.id);\n }\n };\n\n useEffect(() => {\n if (modalType === NONE) {\n setDialogisOpen({ isOpen: false });\n }\n }, [modalType, slides]);\n\n const editSlide = (model) => {\n setDialogisOpen({\n isOpen: true,\n title: translation[\"slide.dialog.edit\"],\n type: actionTypes.edit,\n element: model,\n noButton: translation[\"discard\"],\n yesButton: translation[\"save\"],\n });\n };\n\n const createSlide = ({ canBack, title, metadata, multipleChoiseOfAnswers, notes, sorting, showResult }) => {\n const slideData = {\n canBack,\n index: get(slides, \"length\", 0),\n elements: [],\n title,\n metadata,\n multipleChoiseOfAnswers,\n showResult,\n notes,\n session: {\n id: sessionId,\n },\n sorting,\n };\n createSlideAction(slideData, sessionId);\n };\n\n useEffect(() => {\n if (isEmpty(slides)) return;\n setSelected(slideId);\n setDefaultElements();\n setSelectedElement('none')\n }, [slideId]);\n\n useEffect(() => {\n if (isEmpty(slides) && !isEmpty(elements)) {\n setElements([]);\n }\n if (isEmpty(slides)) return;\n if (!slides.map(({ id }) => id).includes(Number(selected))) {\n browserHistory.push(`/session/${sessionId}/${slides[0].id}`);\n }\n setDefaultElements();\n }, [slides]);\n\n useEffect(()=> {\n if (addedSlide) {\n browserHistory.push(`/session/${sessionId}/${addedSlide.id}`);\n }\n }, [slides.length]);\n\n const changeOrderSlide = (data) => {\n changeOrderSlideAction(sessionId, data);\n };\n\n const copySlide = async (data) => {\n const slide = await copySlideAction(data, sessionId);\n\n if (slide) {\n const newSlides = [...slides];\n const slideIndex = newSlides.findIndex(({id}) => id === data.id);\n\n newSlides.splice(slideIndex + 1, 0, slide);\n changeOrderSlide(newSlides.map((item, index) => ({...item, index})));\n }\n };\n\n const updateSlide = (data) => {\n updateSlideAction(data.id, data, sessionId);\n };\n\n const deleteSlide = (elementId) => {\n setCurrentDisplayingElement([]);\n deleteSlideAction(elementId, sessionId);\n };\n\n const handleUpdateSlide = () => {\n const currentSlide = slides.find(({ id }) => id === Number(slideId));\n const formatElements = [...elements, ...currentDisplayingElement].map((element) => {\n const elementType = element.type === 'Bild' ? 'image' : element.type.toLowerCase()\n return ({\n answer: element.isAnswer,\n correctAnswer: element.isCorrectAnswer,\n metadata: element.metaData,\n propertiesData: JSON.stringify(element),\n type: elementType,\n })}\n );\n updateSlide({\n ...currentSlide,\n elements: formatElements,\n });\n setTimeout(function(){ window.location.reload(); }, 1000);\n\n };\n\n\n const handleSelected = (id) => {\n setSelectedElement('none');\n browserHistory.push(`/session/${sessionId}/${id}`);\n }\n\n const setDefaultElements = () => {\n const currentElements = get(\n slides.find(({ id }) => id === Number(slideId)),\n \"elements\",\n []\n );\n const formatElements = currentElements.map(({ propertiesData }) =>\n JSON.parse(propertiesData)\n );\n const changeFormatElementsIDs = formatElements.map((formatElement, index) => {\n return {\n ...formatElement,\n id: `${formatElement.type}-${index}-${slideId}`,\n coordinates: {\n ...formatElement.coordinates,\n i: `${formatElement.type}-${index}-${slideId}`\n }\n }\n })\n setElements(changeFormatElementsIDs);\n };\n\n useEffect(() => {\n if (isEmpty(slides) && !isEmpty(elements)) {\n setElements([]);\n }\n if (isEmpty(slides)) return;\n if (!slides.map(({ id }) => id).includes(Number(selected))) {\n browserHistory.push(`/session/${sessionId}/${slides[0].id}`);\n }\n setDefaultElements();\n }, [slides]);\n\n useEffect(() => {\n if (isEmpty(slides)) return;\n setSelected(slideId);\n setDefaultElements();\n }, [slideId]);\n\n const onLayoutChange = useCallback((layouts) => {\n if (currentDisplayingElement.length !== 0) {\n setCurrentDisplayingElement(\n [\n {\n ...currentDisplayingElement[0],\n coordinates: layouts[0]\n }\n ]\n )\n\n }\n }, [currentDisplayingElement])\n\n\n const handleSelectElement = el => {\n if (el === 'none') {\n setSelectedElement(el)\n } else {\n setSelectedElement(el.id);\n }\n }\n\n return (\n \n \n \n \n \n \n\n setDialogisOpen({ isOpen: false })}\n onСreate={createSlide}\n onUpdate={updateSlide}\n onCopy={copySlide}\n onDelete={deleteSlide}\n >\n \n );\n};\n\nSequence.defaultProps = {\n className: \"layout\",\n rowHeight: 1,\n onLayoutChange: function () {},\n cols: 1200,\n initialLayout: [],\n autoSize: false,\n compactType: null,\n preventCollision: true,\n};\n\nconst mapStateToProps = createStructuredSelector({\n slides: selectSlides(),\n addedSlide: selectAddedSlide(),\n modalType: selectSlidesModal(),\n sequenceId: selectSequenceId(),\n sessionTitle: selectSessionTitle(),\n});\n\nconst mapDispatchToProps = {\n getSessionDataAction: getSessionData,\n createSlideAction: createSlide,\n updateSlideAction: updateSlide,\n copySlideAction: copySlide,\n deleteSlideAction: deleteSlide,\n changeOrderSlideAction: changeOrderSlide,\n setSlidesAction: setSlides,\n};\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps);\nexport default compose(withConnect)(Sequence);\n","import React from 'react';\nimport { StylesProvider, MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';\nimport { Provider } from 'react-redux';\nimport store from './store';\nimport { Main } from './containers';\nimport {\n PRIMARY_MAIN,\n PRIMARY_LIGHT,\n GRAY_LIGHT,\n GRAY_MAIN,\n WHITE_MAIN\n} from './constants';\nimport { BrowserRouter } from 'react-router-dom';\n\nconst theme = createMuiTheme({\n palette: {\n primary: {\n main: PRIMARY_MAIN,\n light: PRIMARY_LIGHT,\n },\n secondary: {\n main: \"#93C11C\",\n dark: \"#82ab19\",\n },\n error: {\n main: \"#f44336\",\n },\n white: {\n main: WHITE_MAIN,\n },\n gray: {\n main: GRAY_MAIN,\n }\n },\n fonts: {\n family: {\n primary: \"Arial\",\n secondary: \"Arial\",\n }\n },\n overrides: {\n MuiButton: {\n root: {\n letterSpacing: '0.75px',\n fontFamily: \"Arial\",\n },\n contained: {\n color: PRIMARY_MAIN,\n backgroundColor: GRAY_MAIN,\n boxShadow: 'none',\n },\n outlinedPrimary: {\n border: `2px solid ${PRIMARY_MAIN}`,\n '&:hover': {\n border: `2px solid ${PRIMARY_MAIN}`,\n },\n }\n },\n MuiCheckbox: {\n root: {\n '&:hover': {\n backgroundColor: \"transparent\",\n },\n '& path': {\n color: PRIMARY_MAIN,\n },\n },\n },\n MuiFilledInput: {\n root: {\n backgroundColor: GRAY_MAIN,\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n '&.Mui-focused' : {\n backgroundColor: GRAY_MAIN,\n }\n },\n },\n MuiTabs: {\n root: {\n width: 'min-content',\n '& .Mui-selected': {\n backgroundColor: WHITE_MAIN,\n }\n },\n indicator: {\n top: 0,\n height: 3,\n },\n },\n MuiTab: {\n root: {\n letterSpacing: '0.75px',\n borderTop: '3px solid rgba(123, 123, 123, .3)',\n },\n textColorPrimary: {\n color: '#212121',\n },\n },\n MuiTableCell: {\n head: {\n fontFamily: \"Arial\",\n color: PRIMARY_MAIN,\n fontStyle: \"normal\",\n fontWeight: \"600\",\n lineHeight: \"140%\",\n backgroundColor: GRAY_LIGHT,\n letterSpacing: '0.02em',\n padding: '7px 16px',\n },\n body: {\n padding: '7px 16px',\n fontFamily: \"Arial\",\n letterSpacing: '0.02em',\n },\n },\n MuiTableRow: {\n root: {\n '&$selected, &$selected:hover': {\n backgroundColor: GRAY_LIGHT,\n },\n },\n },\n MuiPagination: {\n root: {\n margin: '20px 30px',\n },\n ul: {\n '& li:first-child button, li:last-child button': {\n border: 'none',\n },\n },\n },\n MuiPaginationItem: {\n root: {\n color: PRIMARY_MAIN,\n margin: 0,\n padding: \"20px 16px\",\n fontSize: 12,\n fontFamily: \"Arial\",\n },\n icon: {\n color: PRIMARY_MAIN,\n },\n outlined: {\n border: `1px solid ${PRIMARY_LIGHT}`,\n },\n rounded: {\n borderRadius: 0,\n },\n },\n MuiPaper: {\n rounded: {\n borderRadius: 0,\n },\n },\n MuiInput: {\n root: {\n fontFamily: \"Arial\",\n fontWeight: 500,\n fontSize: 15,\n lineHeight: \"20px\"\n }\n },\n MuiInputBase: {\n root: {\n fontFamily: \"Arial\",\n fontWeight: 500,\n }\n },\n MuiTextField: {\n root: {\n fontFamily: \"Arial\",\n }\n },\n MuiTypography: {\n h1: {\n fontFamily: \"Arial\",\n\n },\n h2: {\n fontFamily: \"Arial\",\n\n },\n h3: {\n fontFamily: \"Arial\",\n\n },\n h4: {\n fontFamily: \"Arial\",\n\n },\n h5: {\n fontFamily: \"Arial\",\n\n },\n h6: {\n fontFamily: \"Arial\",\n\n },\n subtitle1: {\n fontFamily: \"Arial\",\n\n },\n subtitle2: {\n fontFamily: \"Arial\",\n\n },\n body1: {\n fontFamily: \"Arial\",\n fontSize: 14,\n lineHeight: '16px',\n },\n body2: {\n fontFamily: \"Arial\",\n fontSize: 18,\n lineHeight: '22px',\n fontWeight: 500,\n }\n }\n },\n});\n\nconst App = () => (\n \n \n \n \n
\n \n \n \n \n)\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport './index.css';\nimport * as serviceWorker from './serviceWorker';\n\nconst contentDiv = document.getElementById(\"root\");\nconst gridProps = window.gridProps || {};\nReactDOM.render(React.createElement(App, gridProps), contentDiv);\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Header_container__3VDbq\",\"navWrapper\":\"Header_navWrapper__3YRX-\",\"logoWrapper\":\"Header_logoWrapper__1zgvx\",\"menuItems\":\"Header_menuItems__pwcsN\",\"icon\":\"Header_icon__qjvd-\",\"menuItem\":\"Header_menuItem__1RtZg\",\"menuWrapper\":\"Header_menuWrapper__56JID\",\"menuWrapperActive\":\"Header_menuWrapperActive__3dcLg\",\"logoutWrapper\":\"Header_logoutWrapper__1X3g_\",\"smallAvatar\":\"Header_smallAvatar__3PBZK\"};","module.exports = __webpack_public_path__ + \"static/media/picturePlus.b63058d5.svg\";"],"sourceRoot":""}