{"version":3,"sources":["assets/icons/cancel.svg","assets/icons/plus_rounded_wine.svg","assets/icons/arrow_right_red.svg","assets/icons/trash-can_white.svg","assets/icons/pencil.svg","assets/icons/notes-wine.svg","assets/icons/quiz-paper-filled-wine.svg","assets/icons/quiz_list.svg","assets/icons/info.svg","assets/icons/courses_wine.svg","assets/icons/settings_wine.svg","assets/icons/feedback.svg","assets/icons/add_video.svg","assets/icons/analytics.svg","assets/icons/quiz.svg","assets/icons/profile-user.svg","assets/icons/menu1.svg","assets/images/topic.svg","assets/icons/tick.svg","assets/icons/floppy-disk_green.svg","assets/icons/delete-rounded-wine.svg","assets/images/Group49.svg","assets/illustrations/add_new.svg","assets/icons/trash-can_red.svg","assets/icons/trash-can.svg","assets/illustrations/delete.svg","assets/icons/add_white.svg","assets/icons/email.svg","assets/icons/checkmark_green.svg","assets/icons/minus_red.svg","assets/icons/checkmark-settings_green.svg","components/highlightedText.js","components/adminSideBar.js","components/uiComponents/button.js","utils/utilFnx.js","utils/api/httpClient.js","utils/api/accountApi.js","utils/storage/auth.js","components/uiComponents/uiElements.js","components/topBar.js","components/card.js","components/input.js","components/settings/account.js","components/settings/profile.js","components/settings/security.js","pages/authorized/settings.js","components/uiComponents/text.js","components/topic/extraInfoCard.js","utils/functions/storage.js","utils/api/videoApi.js","components/topic/videoUploadModal.js","utils/api/quizApi.js","components/topic/quizModal.js","utils/api/noteApi.js","components/topic/noteModal.js","components/topic/syllabusContent.js","components/topic/syllabusSection.js","utils/api/topicApi.js","components/uiComponents/modal.js","pages/authorized/topicLab.js","components/courseCard.js","pages/authorized/topicsList.js","components/uiComponents/InputLabel.js","components/quiz/answerCard.js","components/quiz/question.js","pages/authorized/quizLab.js","components/quiz/quizListItem.js","pages/authorized/quizList.js","utils/api/analyticsApi.js","components/analytics/analyticsGraph.js","components/analytics/singleAnalytics.js","components/analytics/unavailableAnalytics.js","components/analytics/topic.js","components/analytics/video.js","components/analytics/quiz.js","pages/authorized/analytics.js","utils/api/dialogueApi.js","pages/authorized/feedback.js","layouts/authorized.js","pages/unauthorized/login.js","pages/unauthorized/signup.js","pages/unauthorized/forgotPassword.js","pages/unauthorized/resetPassword.js","pages/unauthorized/activate.js","layouts/unAuthorized.js","App.js","serviceWorker.js","index.js","assets/images/defaultTopic.jpg","assets/icons/video_wine.svg"],"names":["module","exports","HighlightedText","styled","h1","size","weight","fontStyle","lineHeight","color","margin","background","radius","padding","display","alignItems","textAlign","width","space","flexFlow","HightlightedSpan","span","AdminSideBar","props","state","SideBar","className","this","onClick","activeClassName","to","src","AddVideoIcon","alt","height","isActive","match","location","pathname","includes","TopicIcon","AnalyticsIcon","SettingsIcon","QuizIcon","FeedbackIcon","Component","div","Button","button","border","boxShadow","PassButton","setItemToLocal","name","data","localStorage","setItem","JSON","stringify","getItemFromLocal","getItem","parse","removeItemsWithPrefixFromLocal","arr","i","length","key","substring","push","removeItem","convertDurationStringToMinutes","duration","convertDurationStringToSeconds","toFixed","split","reverse","seconds","map","value","parseInt","parseFloat","durationReadableFromNumber","Boolean","secs","Math","floor","mins","numberingShortnerReadable","number","String","timeSince","date","Date","interval","readableServerError","err","response","status","Array","isArray","e","Object","entries","ee","toLocaleUpperCase","message","packageFormDataSubmission","field","sendField","bodyFormData","FormData","forEach","kvPair","append","calculateDurationForNote","note","APIClient","url","process","accountApi","axios","create","baseURL","accountAuthApi","headers","Authorization","AnalyticsApi","DialogueApi","IxamApi","NoteApi","QuizApi","TopicApi","TopicMediaApi","VideoApi","isLoggedIn","a","account","get","login","email","password","post","userLogout","registerUser","registerData","retrieveMyProfile","updateUserBasicAccountSettings","userData","put","updateUserAccountProfile","profileData","endpoint","profilePictureData","console","log","profile_picture","updatePasswordData","passwordData","extra_data","confirm_new_password","forgottenPassword","resetData","activateAccount","activationData","resetPassword","getFirstName","getLastName","getUserId","deleteAuthToken","LogoImg","img","fit","TopBar","handleClick","setState","prevState","logout_option","handleLogout","then","clear","window","reload","catch","href","baseUrl","isOpen","TopBarContainer","open","onClose","direction","MenuIcon","UserIcon","Card","shadow","hoverBorderColor","Input","input","textTransform","borderFocus","TextArea","textarea","resize","Account","handleChange","user","target","saveChanges","onSaveChanges","loading","snackMessage","type","first_name","last_name","username","render","AccountContainer","position","timeout","placeholder","onChange","disabled","SavedIcon","React","Profile","componentDidMount","profile","subjects_of_interest","getUserProfileData","onVariableChange","onAddDeleteLabel","command","updatedLabels","filter","item","interest","handleProfileChange","handleImages","URL","createObjectURL","files","onSaveProfileChanges","returnData","hasOwnProperty","call","element","pruneDataObject","ProfileContainer","ProfilePic","accept","hidden","document","getElementsByName","click","date_of_birth","gender","school","telephone","biography","CancelIcon","Security","handlePasswordChange","savePasswordChanges","onSavePasswordChanges","loadingPassword","new_password","onsavePrivacyChanges","privacy","loadingPrivacy","savePrivacyChanges","SecurityContainer","required","checked","display_real_name","public_profile","Settings","SettingsContainer","exact","path","component","AshMidTitle","title","SuperScript","sup","ExtraInfoCard","ExtraCardContainer","thumbnail","CourseImg","handleTopicImage","topicID","rel","TickIcon","style","cursor","labels","label","topicData","appendItemToLocal","allData","defaultValue","videoCreateUpdate","videoData","api","id","uploadVideoToCloudFlare","onProgress","onSuccess","onAfterResponse","onError","file","video_file","options","chunkSize","metadata","filename","filetype","description","defaulttimestamppct","thumbnailTimestampPct","parallelUploads","retryDelays","upload","Upload","findPreviousUploads","previousUploads","resumeFromPreviousUpload","start","VideoModal","onTextChange","handleVideo","video","createElement","preload","onloadedmetadata","onLoadedVideoMetadata","revokeObjectURL","video_url","uploadReady","handleSubmitVideo","onUploadPercentageChange","tusUploadOnProgress","tusUploadOnSuccess","tusUploadOnAfterResponse","tusUploadOnError","backendUploadVideo","onSubmitVideo","index","content","modal","error","finally","contentData","bytesUploaded","bytesTotal","percentage","req","res","Promise","resolve","mediaIdHeader","getHeader","ModalContainter","stopPropagation","bottom","right","top","left","show","VideoIcon","rows","handleClose","primaryButton","transform","getQuizzes","deleteQuiz","delete","getOnlyQuizQuestions","getQuizAndQuestions","quizCreateUpdate","quizData","QuizModal","cachedQuizzes","toISOString","slice","quizzes","handleSubmitQuiz","onSubmitQuiz","saveBeforeNavigate","quizListItem","published","UnSelectableIcon","quiz","noteCreateUpdate","noteData","NoteModal","handleSubmitNote","currentContentPlain","convertFromRaw","getPlainText","onSavingState","onSubmitNote","onEditorStateChange","NotesIcon","toolbarClassName","wrapperClassName","editorClassName","onContentStateChange","defaultContentState","SyllabusContent","borderLeft","edit","onEdit","order","keys","orderNumber","content_type","NoteIcon","raduis","DeleteIcon","SyllabusSection","onAddSyllabusContent","allSyllabusContent","syllabus_contents","onEditSyllabusContent","syllabusContent","splice","collapse","css","LoadingAnimationStyle","PublishedIcon","UnPublishedIcon","SaveIcon","EditIcon","isOpened","AddItemIcon","uploadTopicThumbnaileImage","thumbnailUploadData","topicCreateUpdate","thumbnailFileData","syllabus_sections","sectionCreateUpdate","sectionData","getSyllabusSections","sectionDelete","sectionID","getTopics","retrieveFullTopic","AppModal","showHideClassName","image","ErrorPicture","header","body","secondaryButton","primary","Topic","REACT_APP_DEBUG","addEventListener","onRefreshPrompt","params","topic","learning_goals","createBrowserHistory","replace","newTopicModal","componentWillUnmount","removeEventListener","onTopicChange","onChangeLearningGoal","onAddModule","onEditSyllabusSection","onSaveTopic","allSyllabusSection","syllabusSection","d","updateTopicWithDuration","responseData","updateSyllabusContents","getEntireTopicDuration","updateSyllabusSections","tRes","syllabusSections","topicDuration","oldSyllabusContents","newSyllabusContents","updatedSC","s_con","syllabus_content","oldSyllabusSections","newSyllabusSections","updatedSS","s_sec","getSyllabusSectionDuration","syllabusContents","CourseContainer","when","action","level","AddSectionIcon","AddNewTopicIllustration","history","payment_plan","preventDefault","returnValue","prevProps","prop","CourseCard","enrolls","CourseCardContainer","toString","join","enrollment","updated_datetime","Link","TopicList","getTopicsData","topics","errorMessage","TopicsContainer","currentBroadCastID","showBroadcast","InputLabel","displayType","minWidth","AnswerCard","answer","genre","correct","Question","onAddPossibleAnswer","possible_answers","onEditPossibleAnswer","allPossibleAnswers","pa","points","questionNumber","question","right_answer_explanation","QuizLab","quizID","questions","getQuizAndQuestionsData","onAddQuestion","onEditQuestion","allQuestions","onQuizChange","onSaveQuiz","QuestionPageContainer","InfoIcon","pass_mark","questions_per_quiz","QuizListItem","onDeleteQuiz","deleteModal","QuizListItemContainer","QuizListIcon","toDateString","pass_percent","attempts","DeleteIllustration","Quizzes","getUserQuizData","CoursesContainer","AddQuizIcon","overallOverviewAnalytics","topicsOverviewAnalytics","quizzesOverviewAnalytics","videosOverviewAnalytics","AnalyticsGraph","makeDummyDataPoint","dataSeriesMeta","dummy","x_axis","y_axis","y","graphColors","dataSeries","ResponsiveContainer","AreaChart","y_i","x1","y1","x2","y2","offset","stopColor","stopOpacity","XAxis","dataKey","YAxis","tickFormatter","Tooltip","Legend","verticalAlign","Area","presentation","stroke","fillOpacity","fill","SingleAnalytics","singles","single","s_i","unit","UnavailableAnalytics","TopicAnalytics","getTopicsOverViewAnalyticsData","TopicDefaultImg","marginLeft","substr","created_datetime","toLocaleString","analytics_data","data_series","data_series_meta","VideoAnalytics","getVideoOverViewAnalyticsData","likes","QuizAnalytics","Analytics","getOverallOverViewAnalyticsdata","overViewItem","overview","AnalyticsPageContainer","postFeedback","feedback","Feedback","handleCancel","subject","anonymous","handleSend","FeedbackPageContainer","Authorized","loggedIn","UserContainer","UserBody","ProfileSettingsPage","TopicCreateEdit","QuizList","QuestionsCreateEdit","FeedBack","AdminLogin","handleSubmit","token","profile_pic","LoginFormContainer","onSubmit","AdminSignUp","confirm_password","organization","SignUpFormContainer","ForgotPassword","submitted","ForgotPasswordEmailFormContainer","EmailIcon","ResetPassword","newPassword","confirmNewPassword","resetID","ResetPasswordFormContainer","ActivateAccount","code","r_err","ActivateAccountEmailFormContainer","UnAuthorized","SignUp","Login","App","createContext","sighted","toggleSighted","speechControlsFunction","speechControlsCallBackFunction","hostname","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e5f82cce.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/cancel.0908d405.svg\";","module.exports = __webpack_public_path__ + \"static/media/plus_rounded_wine.9469f8d0.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow_right_red.a4f5ed1f.svg\";","module.exports = __webpack_public_path__ + \"static/media/trash-can_white.97351ea3.svg\";","module.exports = __webpack_public_path__ + \"static/media/pencil.cf7652d9.svg\";","module.exports = __webpack_public_path__ + \"static/media/notes-wine.81481754.svg\";","module.exports = __webpack_public_path__ + \"static/media/quiz-paper-filled-wine.2d8498d8.svg\";","module.exports = __webpack_public_path__ + \"static/media/quiz_list.2371583c.svg\";","module.exports = __webpack_public_path__ + \"static/media/info.4b99e4e3.svg\";","module.exports = __webpack_public_path__ + \"static/media/courses_wine.d7c8b1c9.svg\";","module.exports = __webpack_public_path__ + \"static/media/settings_wine.300f93e4.svg\";","module.exports = __webpack_public_path__ + \"static/media/feedback.95432abe.svg\";","module.exports = __webpack_public_path__ + \"static/media/add_video.a52e8b8d.svg\";","module.exports = __webpack_public_path__ + \"static/media/analytics.ca206d76.svg\";","module.exports = __webpack_public_path__ + \"static/media/quiz.bc3465cc.svg\";","module.exports = __webpack_public_path__ + \"static/media/profile-user.7cc9a685.svg\";","module.exports = __webpack_public_path__ + \"static/media/menu1.a450cc10.svg\";","module.exports = __webpack_public_path__ + \"static/media/topic.c13a1100.svg\";","module.exports = __webpack_public_path__ + \"static/media/tick.9804068f.svg\";","module.exports = __webpack_public_path__ + \"static/media/floppy-disk_green.784b1959.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete-rounded-wine.fe9f17f8.svg\";","module.exports = __webpack_public_path__ + \"static/media/Group49.aaab3383.svg\";","module.exports = __webpack_public_path__ + \"static/media/add_new.2ece666f.svg\";","module.exports = __webpack_public_path__ + \"static/media/trash-can_red.d3f987e6.svg\";","module.exports = __webpack_public_path__ + \"static/media/trash-can.d558d5c5.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete.1c54e591.svg\";","module.exports = __webpack_public_path__ + \"static/media/add_white.0ce0de8c.svg\";","module.exports = __webpack_public_path__ + \"static/media/email.c2c5ca0a.svg\";","module.exports = __webpack_public_path__ + \"static/media/checkmark_green.c87194c8.svg\";","module.exports = __webpack_public_path__ + \"static/media/minus_red.9938bb29.svg\";","module.exports = __webpack_public_path__ + \"static/media/checkmark-settings_green.570ddd97.svg\";","import styled from 'styled-components';\n\n\n\nexport const HighlightedText = styled.h1`\n font-size: ${({ size }) => size};\n font-weight: ${({ weight }) => weight || \"bold\"};\n font-style: ${({ fontStyle }) => fontStyle || \"normal\"};\n font-stretch: normal;\n line-height: ${({ lineHeight }) => lineHeight || \"normal\"};\n letter-spacing: normal;\n color: ${({ color }) => color || \"#000000\"};\n margin: ${({ margin }) => margin || \"0px\"};\n background-color: ${({ background }) => background};\n border-radius: ${({ radius }) => radius};\n padding: ${({ padding }) => padding};\n display: ${({ display }) => display};\n align-items: ${({ alignItems }) => alignItems};\n text-align: ${({ textAlign }) => textAlign};\n width: ${({ width }) => width};\n justify-content: ${({space}) => space};\n flex-flow: ${({ flexFlow }) => flexFlow};\n\n \n .center-text{\n text-align: center;\n }\n\n .right-text{\n float: right;\n }\n\n /*@media only screen and (max-width: 768px){\n font-size:medium\n }*/\n\n`\n\nexport const HightlightedSpan = styled.span`\n font-size: ${({ size }) => size};\n font-weight: ${({ weight }) => weight || \"bold\"};\n font-style: ${({ fontStyle }) => fontStyle || \"normal\"};\n font-stretch: normal;\n line-height: normal;\n letter-spacing: normal;\n color: ${({ color }) => color || \"#000000\"};\n margin: ${({ margin }) => margin || \"0px\"};\n background-color: ${({ background }) => background};\n padding: ${({ padding }) => padding};\n margin: ${({ margin }) => margin};\n border-radius: ${({ radius }) => radius};\n\n .center-text{\n text-align: center;\n }\n\n .right-text{\n float: right;\n }\n\n`\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText } from './highlightedText';\nimport { NavLink } from 'react-router-dom'\n/* imported images*/\nimport TopicIcon from \"../assets/icons/courses_wine.svg\";\nimport SettingsIcon from \"../assets/icons/settings_wine.svg\";\nimport FeedbackIcon from \"../assets/icons/feedback.svg\"\nimport AddVideoIcon from \"../assets/icons/add_video.svg\"\nimport AnalyticsIcon from \"../assets/icons/analytics.svg\"\nimport QuizIcon from \"../assets/icons/quiz.svg\"\n\nclass AdminSideBar extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n }\n }\n\n\n render() {\n return (\n this.props.onClick && this.props.onClick()}>\n \n Skideo Lab\n {/* TODO: add \"pun-intended\" subscript in the future for Skideo Studio */}\n \n\n
\n \n \"icon\"\n \n Create Topic\n \n\n \n {\n return location.pathname.includes(`/topic/list`)\n || location.pathname.includes(`/topic/edit`)\n }}\n >\n \"icon\"\n \n Topics\n \n\n \n\n \n \"icon\"\n \n Analytics\n \n\n \n\n \n \"icon\"\n \n Account Settings\n \n\n \n\n\n
\n {\n return (location.pathname.includes(`/quizzes`)\n || location.pathname.includes(`/quiz`) )\n && !location.pathname.includes(`/analytics`)\n }}\n >\n \"icon\"\n \n Quizzes\n \n\n \n\n
\n \n \"icon\"\n \n Feedback\n \n\n \n
\n\n\n\n
\n )\n }\n}\n\nexport default AdminSideBar\n\n\n\n\n\nconst SideBar = styled.div`\n min-width: 15%;\n height: 100vh;\n box-shadow: 0px 3px 6px #00000029;\n background-color: #fff;\n z-index:1;\n\n hr{\n margin: 1em;\n }\n\n .middleDiv{\n position: absolute;\n top: 20%;\n text-align-last: center;\n padding: 0.5em;\n margin: 0.5em;\n\n }\n\n .feedbackDiv{\n position: absolute;\n top: 30%;\n text-align-last: center;\n padding: 0.5em;\n margin: 0.5em;\n\n }\n\n .bottomDiv{\n /* position: absolute;\n bottom: 20%; */\n text-align-last: center;\n padding: 0.5em;\n margin: 0.5em;\n }\n\n a{\n align-items: center;\n text-decoration: none;\n display: flex;\n padding: 0em 1em;\n\n &.active { // & - making a class name inside the tag itself\n background-color: rgba(128,128,128, 0.2);\n border-radius: 0.3em;\n margin: 0em 0.5em;\n \n .img {\n filter: drop-shadow(0px 0px 13px #fff) brightness(1.2); \n }\n h1 {\n font-weight: bold;\n }\n }\n\n }\n\n\n @media only screen and (min-width: 768px) and (max-width: 1100px){\n img{\n width: 15px;\n height: 15px;\n }\n a{\n padding: 0 0.8em;\n &.active{\n margin: 0em 0.3em;\n }\n h1 {\n font-size: 14px;\n }\n }\n\n .skideoTitle{\n font-size: 20px\n }\n\n h1{\n font-size: 12px;\n margin: 1em 0.5em;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n \n }\n\n\n`\n\n","import styled from 'styled-components';\n\nexport const Button = styled.button`\ncolor: ${({ color }) => color || \"#ffffff\"};\nbackground-color: ${({ background }) => background || \"#923d41\"};\nborder: ${({ border }) => border || 0};\npadding: ${({ padding }) => padding || \"7px 53px\"};\nmargin: ${({ margin }) => margin || \"0px 0px\"};\nborder-radius: ${({ radius }) => radius || \"2px\"};\nwidth: ${({ width }) => width || \"auto\"};\nheight: ${({ height }) => height || \"auto\"};\ndisplay: ${({ display }) => display};\njustify-content: ${({space}) => space};\nalign-items: ${({alignItems}) => alignItems};\nbox-shadow: ${({boxShadow}) => boxShadow};\n\n &:disabled{\n background-color: #e1e4e8;\n cursor: no-drop;\n }\n\n`;\n\n\nexport const PassButton = styled.button`\n color: ${({ color }) => color || \"#767676\"};\n background-color: ${({ background }) => background || \"#F7F7F7\"};\n padding: ${({ padding }) => padding || \"10px 30px\"};\n border: ${({ border }) => border || \"0\"};\n // margin: ${({ margin }) => margin || \"0px 0px 0px\"};\n border-radius: 6px;\n cursor: pointer;\n display: flex; \n flex-direction: row;\n\n img{\n margin-right: 15px;\n margin-bottom: -1px;\n }\n\n a {\n text-decoration: none;\n color: ${({ color }) => color || \"#8f3336\"};\n }\n\n\n`;\n\n","export const setItemToLocal = (name, data) => {\n localStorage.setItem(name, JSON.stringify(data));\n}\n\nexport const getItemFromLocal = (name) => {\n return localStorage.getItem(name) ? JSON.parse(localStorage.getItem(name)) : null;\n}\n\nexport const removeItemFromLocal = (name) => {\n return localStorage.removeItem(name);\n\n}\nexport const removeItemsWithPrefixFromLocal = (name) => {\n var arr = []; // Array to hold the keys\n // Iterate over localStorage and insert the keys that meet the condition into arr\n for (var i = 0; i < localStorage.length; i++) {\n if (localStorage.key(i).substring(0, name.length) === name) {\n arr.push(localStorage.key(i));\n }\n }\n\n // Iterate over arr and remove the items by key\n for (i = 0; i < arr.length; i++) {\n localStorage.removeItem(arr[i]);\n }\n\n}\n\n\n\nexport const durationReadable = (duration) => {\n // return \"\"\n duration = duration.split(\":\")\n if (parseInt(duration[0]) > 0) {\n duration[0] = parseInt(duration[0]).toString() // hh:mm:ss or \n return duration.join(\":\")\n }\n else {\n duration[1] = parseInt(duration[1]).toString() // mm:ss \n return duration.slice(1, 3).join(\":\")\n }\n\n}\n\nexport const convertDurationStringToMinutes = (duration) => {\n return (convertDurationStringToSeconds(duration) / 60).toFixed(1)\n\n}\n\nexport const convertDurationStringToSeconds = (duration) => {\n if (typeof (duration) === \"number\") {\n return duration\n }\n duration = duration.split(\":\").reverse()\n var seconds = 0\n duration.map((value, i) => {\n if (i > 0) {\n seconds += parseInt(value) * 60 ** i\n } else {\n seconds += parseFloat(value) * 60 ** i\n }\n return []\n })\n return seconds\n}\n\nexport const durationReadableFromNumber = (duration) => {\n\n if (typeof (duration) === \"string\") {\n duration = convertDurationStringToSeconds(duration)\n }\n\n if (!Boolean(duration)) {\n return \"\"\n }\n var secs = Math.floor(duration % 60);\n if (duration / 60 < 1) {\n return secs + \" secs\";\n }\n var mins = Math.floor(duration / 60);\n if (mins < 60) {\n return mins + \":\" + secs + \" mins\"\n }\n else {\n mins = mins % 60\n return Math.floor(duration / 3600) + \":\" + mins + \":\" + secs + \" hrs\"\n }\n\n}\n\n\n\nexport const enrollment = (enrolls) => {\n if (enrolls > 1000) {\n return `${enrolls / 1000}K enrolled`\n } else {\n return `${enrolls} enrolled`\n }\n}\n\n\nexport const numberingShortnerReadable = (number) => {\n\n if (number >= 1e6) {\n return `${number / 1e6}M`\n } else if (number >= 1e3) {\n return `${number / 1e3}K`\n } else {\n return String(number)\n }\n\n}\n\n\n\nexport function timeSince(date) {\n\n if (typeof (date) === \"string\") {\n date = new Date(date)\n }\n\n var seconds = Math.floor((new Date() - date) / 1000);\n\n var interval = seconds / 31536000;\n\n if (interval > 1) {\n return Math.floor(interval) + \" years ago\";\n }\n interval = seconds / 2592000;\n if (interval > 1) {\n return Math.floor(interval) + \" months ago\";\n }\n interval = seconds / 86400;\n if (interval > 1) {\n return Math.floor(interval) + \" days ago\";\n }\n interval = seconds / 3600;\n if (interval > 1) {\n return Math.floor(interval) + \" hours ago\";\n }\n interval = seconds / 60;\n if (interval > 1) {\n return Math.floor(interval) + \" minutes ago\";\n }\n return Math.floor(seconds) + \" seconds ago\";\n}\n\n\n\nexport const readableServerError = (err) => {\n return err.response\n ? err.response.status === 500\n ? \"The server had an issue with your request\"\n : err.response.status === 404 ?\n \"Resource not found\"\n : typeof (err.response.data) === \"string\" ?\n err.response.data\n : Array.isArray(err.response.data) ?\n err.response.data.map(e => {\n if (typeof (e) === \"string\") {\n return e\n } else {\n return Object.entries(e).map(ee =>\n `${ee[0].toLocaleUpperCase()}-${ee[1]} \\n`)\n\n }\n })\n :\n Object.entries(err.response.data).map(e =>\n `${e[0].toLocaleUpperCase()}-${e[1]} \\n`)\n : err.message ?? \"Unknown error. Kindly report for fixing\"\n\n\n}\n\nexport const pruneDataObject = (data) => {\n let returnData = {}\n for (const key in data) {\n if (Object.hasOwnProperty.call(data, key)) {\n const element = data[key];\n if (Boolean(element)) {\n // console.log(element);\n returnData[key] = element\n }\n }\n }\n return returnData\n}\n\n\n\nexport const handleImagesFnx = (e, imageReadingFinished, errorHandler) => {\n // this export is no longer used\n // URL.createObjectURL(e.target.files[0]) is not used to upload images\n getImage(e.target.files[0], imageReadingFinished, errorHandler)\n}\n\nconst getImage = (fileToRead, imageReadingFinished, errorHandler) => {\n var reader = new FileReader();\n // Read file into memory as UTF-8\n reader.readAsDataURL(fileToRead);\n\n reader.onload = imageReadingFinished;\n reader.onerror = errorHandler;\n}\n\nexport const packageFormDataSubmission = (data, field, sendField) => {\n let bodyFormData = new FormData();\n\n Object.entries(data).forEach(kvPair => {\n if (kvPair[1] !== null && !(Array.isArray(kvPair[1]) && kvPair[1].length === 0)) {\n if (Array.isArray(kvPair[1])) {\n bodyFormData.append(kvPair[0], JSON.stringify(kvPair[1]))\n\n } else {\n bodyFormData.append(kvPair[0], kvPair[1])\n }\n\n }\n })\n if (data[field]) {\n bodyFormData.append(sendField, data[field]);\n }\n return bodyFormData\n}\n\nexport const calculateDurationForNote = (note) => {\n return (note.split(\" \").length * 0.2).toFixed(10)\n}","import axios from 'axios';\n\n/* \nif going to production, change the `url` in APIClient to url for production in .env\n*/\n\nclass APIClient {\n\n url = process.env.REACT_APP_SKIDEO_BACKEND;\n\n accountApi = axios.create({\n baseURL: `${this.url}/account/`,\n });\n\n\n accountAuthApi = axios.create({\n baseURL: `${this.url}/account/`,\n headers: {\n Authorization: Boolean(localStorage.getItem(\"a_bearer\")) ? `Token ${JSON.parse(localStorage.getItem(\"a_bearer\"))}` : null\n }\n });\n\n AnalyticsApi = axios.create({\n baseURL: `${this.url}/analytics/`,\n headers: {\n Authorization: Boolean(localStorage.getItem(\"a_bearer\")) ? `Token ${JSON.parse(localStorage.getItem(\"a_bearer\"))}` : null\n }\n });\n DialogueApi = axios.create({\n baseURL: `${this.url}/dialogue/`,\n headers: {\n Authorization: Boolean(localStorage.getItem(\"a_bearer\")) ? `Token ${JSON.parse(localStorage.getItem(\"a_bearer\"))}` : null\n }\n\n });\n\n IxamApi = axios.create({\n baseURL: `${this.url}/ixam/`,\n headers: {\n Authorization: Boolean(localStorage.getItem(\"a_bearer\")) ? `Token ${JSON.parse(localStorage.getItem(\"a_bearer\"))}` : null\n }\n\n });\n\n // NOTE API\n NoteApi = axios.create({\n baseURL: `${this.url}/note/`,\n headers: {\n Authorization: Boolean(localStorage.getItem(\"a_bearer\")) ? `Token ${JSON.parse(localStorage.getItem(\"a_bearer\"))}` : null,\n }\n });\n\n QuizApi = axios.create({\n baseURL: `${this.url}/quiz/`,\n headers: {\n Authorization: Boolean(localStorage.getItem(\"a_bearer\")) ? `Token ${JSON.parse(localStorage.getItem(\"a_bearer\"))}` : null\n }\n\n });\n\n // TOPIC API\n TopicApi = axios.create({\n baseURL: `${this.url}/topic/`,\n headers: {\n Authorization: Boolean(localStorage.getItem(\"a_bearer\")) ? `Token ${JSON.parse(localStorage.getItem(\"a_bearer\"))}` : null,\n }\n });\n \n // this was dedicated to just files in using the topic api. \n // Using form for the main api endpoint variable above can\n // be tricky because of embedded form data inside. such as syllabus_sections, etc\n TopicMediaApi = axios.create({\n baseURL: `${this.url}/topic/`,\n headers: {\n Authorization: Boolean(localStorage.getItem(\"a_bearer\")) ? `Token ${JSON.parse(localStorage.getItem(\"a_bearer\"))}` : null,\n \"content-type\": 'multipart/form-data',\n }\n });\n\n // VIDEO API\n VideoApi = axios.create({\n baseURL: `${this.url}/video/`,\n headers: {\n Authorization: Boolean(localStorage.getItem(\"a_bearer\")) ? `Token ${JSON.parse(localStorage.getItem(\"a_bearer\"))}` : null,\n }\n });\n\n\n\n}\n\nexport default APIClient;\n","import { packageFormDataSubmission } from '../utilFnx';\nimport APIClient from './httpClient';\n\nexport const isLoggedIn = async () => {\n const account = new APIClient();\n const endpoint = '/check/logged-in/';\n const { data } = await account.accountAuthApi.get(endpoint);\n // console.log(data);\n return data;\n\n}\n\nexport const login = async (email, password) => {\n const account = new APIClient();\n const endpoint = '/login/';\n const { data } = await account.accountApi.post(endpoint, { email, password });\n return data\n}\n\nexport const userLogout = async () => {\n const account = new APIClient();\n const endpoint = '/logout/';\n const { data } = await account.accountAuthApi.post(endpoint);\n return data;\n\n}\n\n\n\nexport const registerUser = async (registerData) => {\n \n const account = new APIClient();\n\n const endpoint = '/register/';\n\n const { data } = await account.accountApi.post(endpoint, registerData);\n\n return data\n}\n\n\n\nexport const getAdminStudents = async () => {\n\n const account = new APIClient();\n const endpoint = '/students/';\n\n try {\n const { data } = await account.accountAuthApi.get(endpoint);\n return data;\n\n } catch (error) {\n return []\n }\n}\n\n\nexport const retrieveMyProfile = async () => {\n\n const account = new APIClient();\n const endpoint = '/user/profile/me/';\n\n const { data } = await account.accountAuthApi.get(endpoint);\n return data;\n}\n\nexport const updateUserBasicAccountSettings = async (userData) => {\n\n const account = new APIClient();\n const endpoint = '/update/account/';\n\n const { data } = await account.accountAuthApi.put(endpoint, userData);\n return data;\n}\n\nexport const updateUserAccountProfile = async (profileData) => {\n\n const account = new APIClient();\n const endpoint = '/user/profile/update/';\n if (profileData.profilePictureData) {\n console.log(\"profileData\");\n profileData = packageFormDataSubmission(profileData, \"profilePictureData\", \"profile_picture\")\n const { data } = await account.accountAuthApi.put(endpoint, profileData);\n return data;\n\n } else {\n delete profileData.profile_picture\n\n const { data } = await account.accountAuthApi.put(endpoint, profileData);\n return data;\n }\n\n}\n\n\n\nexport const updatePasswordData = async (passwordData) => {\n\n const account = new APIClient();\n const endpoint = '/update/change_password/';\n\n passwordData.extra_data = passwordData.confirm_new_password // new password field according to backend\n\n const { data } = await account.accountAuthApi.put(endpoint, passwordData);\n return data;\n\n\n}\n\n\nexport const forgottenPassword = async (resetData) =>{\n const account = new APIClient();\n const endpoint = '/forgot_password/';\n const { data } = await account.accountApi.post(endpoint, resetData);\n return data;\n}\n\n\n\nexport const activateAccount = async (activationData) => {\n \n const account = new APIClient();\n\n const endpoint = '/activate/';\n\n const { data } = await account.accountApi.post(endpoint, activationData);\n\n return data\n}\n\nexport const resetPassword = async (resetData) =>{\n const account = new APIClient();\n const endpoint = '/reset/';\n const { data } = await account.accountApi.post(endpoint, resetData);\n return data;\n}\n\n","\n\n\nexport const setAuthToken = (token) => {\n localStorage.setItem(\"a_bearer\", JSON.stringify(token));\n}\nexport const getAuthToken = () => {\n return localStorage.getItem(\"a_bearer\") ? JSON.parse(localStorage.getItem(\"a_bearer\")) : null;\n}\nexport const setInstitution = (token) => {\n localStorage.setItem(\"se_insti_ion\", JSON.stringify(token));\n}\nexport const getInstitution = () => {\n return localStorage.getItem(\"se_insti_ion\") ? JSON.parse(localStorage.getItem(\"se_insti_ion\")) : null;\n}\n\nexport const setFirstName = (firstName) => {\n localStorage.setItem(\"f_name\", JSON.stringify(firstName));\n}\nexport const getFirstName = () => {\n return localStorage.getItem(\"f_name\") ? JSON.parse(localStorage.getItem(\"f_name\")) : null;\n}\n\n\nexport const setLastName = (lastName) => {\n localStorage.setItem(\"l_name\", JSON.stringify(lastName));\n}\nexport const getLastName = () => {\n return localStorage.getItem(\"l_name\") ? JSON.parse(localStorage.getItem(\"l_name\")) : null;\n}\n\n\n\nexport const setUserId = (userId) => {\n localStorage.setItem(\"u_id\", JSON.stringify(userId));\n}\nexport const getUserId = () => {\n return localStorage.getItem(\"u_id\") ? JSON.parse(localStorage.getItem(\"u_id\")) : null;\n}\n\n\n\nexport const setAuthGroup = (group) => {\n localStorage.setItem(\"g_user\", JSON.stringify(group));\n}\n\n\nexport const getGroup = () => {\n return localStorage.getItem(\"g_user\") ? JSON.parse(localStorage.getItem(\"g_user\")) : null;\n}\n\nexport const deleteAuthToken = () => {\n return localStorage.removeItem(\"a_bearer\");\n}\n\n\nexport const setCity = (city) => {\n localStorage.setItem(\"secitiyy\", JSON.stringify(city));\n}\nexport const getCity = () => {\n return localStorage.getItem(\"secitiyy\") ? JSON.parse(localStorage.getItem(\"secitiyy\")) : null;\n}\nexport const setCountry = (country) => {\n localStorage.setItem(\"se_country\", JSON.stringify(country));\n}\nexport const getCountry = () => {\n return localStorage.getItem(\"se_country\") ? JSON.parse(localStorage.getItem(\"se_country\")) : null;\n}\nexport const setImageUrl = (imageUrl) => {\n localStorage.setItem(\"image_pfrl\", JSON.stringify(imageUrl));\n}\nexport const getImageUrl = () => {\n return localStorage.getItem(\"image_pfrl\") ? JSON.parse(localStorage.getItem(\"image_pfrl\")) : null;\n}\nexport const setEmail = (email) => {\n localStorage.setItem(\"em_u_id\", JSON.stringify(email));\n}\nexport const getEmail = () => {\n return localStorage.getItem(\"em_u_id\") ? JSON.parse(localStorage.getItem(\"em_u_id\")) : null;\n}\n\nexport const deleteLocalStorageForLogout = () => {\n // remove token\n localStorage.removeItem(\"a_bearer\");\n // remove sighted state. \n localStorage.removeItem(\"s_sghtd\");\n}\n\nexport const setWindowLocationPathName = (pathname) => {\n localStorage.setItem(\"pth_nme\", JSON.stringify(pathname));\n}\nexport const getWindowLocationPathName = () => {\n return localStorage.getItem(\"pth_nme\") ? JSON.parse(localStorage.getItem(\"pth_nme\")) : null;\n}\n\nexport const setInitialInstruction = (pathname) => {\n localStorage.setItem(\"init_instr\", JSON.stringify(pathname));\n}\nexport const getInitialInstruction = () => {\n return localStorage.getItem(\"init_instr\") ? JSON.parse(localStorage.getItem(\"init_instr\")) : null;\n}\nexport const deleteInitialInstruction = () => { \n localStorage.removeItem(\"init_instr\");\n}\n\nexport const getCounter = () => {\n return localStorage.getItem(\"cntr\") ? JSON.parse(localStorage.getItem(\"cntr\")) : 0;\n}\nexport const setCounter = (pathname) => {\n localStorage.setItem(\"cntr\", JSON.stringify(pathname));\n}\n","import styled from \"styled-components\";\n\n\nexport const LogoImg = styled.img`\n border-radius: ${({ radius }) => radius};\n object-fit: ${({ fit }) => fit || \"contain\"};\n display: block;\n background-color: ${({ background }) => background};\n margin: ${({ margin }) => margin};\n`;\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport UserIcon from '../assets/icons/profile-user.svg'\n// import SearchIcon from '../assets/icons/search_white.svg'\nimport { Button } from './uiComponents/button'\nimport { userLogout } from '../utils/api/accountApi'\nimport baseUrl from '../utils/api/httpClient'\nimport { deleteAuthToken, getAuthToken, getFirstName, getLastName } from '../utils/storage/auth'\n// import { Input } from './input';\nimport { LogoImg } from './uiComponents/uiElements';\nimport MenuIcon from \"../assets/icons/menu1.svg\";\nimport AdminSideBar from './adminSideBar';\n// import component 👇\nimport Drawer from 'react-modern-drawer'\n\n//import styles 👇\nimport 'react-modern-drawer/dist/index.css'\n\n\nclass TopBar extends Component {\n\n constructor(props) {\n super(props)\n\n this.state = {\n logout_option: false,\n isOpen: false,\n }\n }\n\n\n handleClick = (e) => {\n\n this.setState(prevState => ({\n logout_option: !prevState.logout_option\n }));\n }\n\n handleLogout = (e) => {\n\n userLogout().then(data => {\n deleteAuthToken();\n localStorage.clear()\n window.location.reload();\n }).catch(() => {\n window.location.href = baseUrl;\n deleteAuthToken();\n })\n }\n\n render() {\n return (\n \n\n
\n this.setState({ isOpen: !this.state.isOpen })}\n onClick={() => this.setState({ isOpen: !this.state.isOpen })}\n direction='left'>\n this.setState({ isOpen: !this.state.isOpen })}/>\n \n this.setState({ isOpen: !this.state.isOpen })}\n >\n\n \"menu\n \n
\n\n
\n {/* \n */}\n
\n\n\n {getAuthToken() !== null ?
\n\n\n \n\n {this.state.logout_option ?\n <>\n \n \n : \n {`${getFirstName()} ${getLastName()}`}\n }\n\n
:
\n \n Login\n \n \n Register\n \n
}\n\n
\n )\n }\n}\n\nexport default TopBar\n\n\n\nconst TopBarContainer = styled.div`\n width: 100%;\n height: 50px;\n box-shadow: 0px 1px 6px #00000029;\n justify-content: space-between;\n display: flex;\n\n .resp__so{\n align-self: center;\n }\n\n\n form{\n align-items: center;\n display: flex;\n margin-left: 2em;\n width: 50%;\n\n input{\n &:hover{\n border :1px solid rgba(120,120,120, 0.5);\n box-shadow: inset 0 0 0 2px rgba(120,120,120, 0.5);\n }\n\n &:focus {\n outline: none !important;\n box-shadow: inset 0 0 0 2px rgba(146, 61, 65, 0.5);\n border: 1px solid #923D41;\n }\n \n }\n\n }\n\n .auth_container{\n display: flex;\n margin: 10px 2em;\n cursor:pointer;\n\n\n span{\n align-self: center;\n }\n\n }\n\n .unauth_container{\n margin: 0 1em;\n align-self: center;\n display: flex;\n\n .login{\n text-decoration: none;\n padding: 7px 15px;\n color: rgba(31, 58, 147, 1);\n background: rgba(137, 196, 244, 0.7);\n margin: 0 1em;\n display: block;\n border-radius: 1em;\n }\n .signup{\n text-decoration: none;\n\n padding: 7px 15px;\n color: rgba(30, 130, 76, 1);\n background: rgba(0, 230, 64, 0.3);\n /* margin-top: 19em; */\n display: block;\n border-radius: 1em;\n }\n }\n\n .btn-group{ \n padding: 0px 40px;\n margin: 0px 10px;\n }\n\n .logout{\n background:#ffffff;\n color: red;\n border: 2px solid green;\n padding: 0px 36px;\n margin: 0px 10px;\n }\n\n\n @media only screen and (max-width: 768px){\n /* responsiveness code has to be at the bottom so it overrides any conflicting above css */\n\n width: 100%;\n height: 45px;\n box-shadow: 0px 3px 6px #00000029;\n \n .auth_container{\n \n display: flex;\n margin: 5px 0em;\n cursor:pointer;\n\n\n span{\n align-self: center;\n }\n \n }\n \n input{\n padding: 1em 1em;\n height: -webkit-fill-available;\n border: none;\n font-size: 12px;\n width: 80%;\n \n }\n \n form{\n margin-left: 1em;\n width: 50%;\n float: left;\n \n }\n\n \n }\n`\n/*\n\n*/\n\n\n","import styled from 'styled-components';\n\nexport const Card = styled.div`\ndisplay: ${({ display }) => display || \"block\"};\ncolor: ${({ color }) => color || \"#ffffff\"};\nbackground-color: ${({ background }) => background || \"#ffffff\"};\nborder: ${({border}) => border || 0};\npadding: ${({ padding }) => padding || \"0px 0px\"};\nmargin: ${({ margin }) => margin || \"0px 0px\"};\nborder-radius: ${({radius}) => radius || \"2px\"};\nwidth: ${({width}) => width || \"auto\"};\nheight: ${({height}) => height || \"auto\"};\nbox-shadow: ${({shadow}) => shadow || \"none\"};\njustify-content: ${({space}) => space || \"normal\"};\nalign-items: ${({alignItems}) => alignItems || \"normal\"};\n\nflex-flow: ${({flexFlow}) => flexFlow};\n/* TODO: use display flex instead of this class*/\n &.flexInCard{\n display: flex;\n }\n\n &.spaceAround{\n justify-content: space-around;\n }\n \n /* to use the hover, make sure you already have a border property set by default */\n &:hover{\n border-color: ${({ hoverBorderColor }) => hoverBorderColor || \"#a93b3f\"};\n }\n \n`;\n","import styled from \"styled-components\";\n\nexport const Input = styled.input`\n border: ${({border}) => border || \"1px solid black\"};\n border-radius: ${({radius}) => radius || \"3px\"};\n display: ${({ display }) => display || \"block\"};\n padding: ${({ padding }) => padding || \"10px 20px\"};\n margin: ${({ margin }) => margin || \"25px auto\"};\n width: ${({ width }) => width || \"80%\"};\n height: ${({ height }) => height || \"1.5em\"};\n \n\n text-align: ${({ textAlign }) => textAlign || \"left\"};;\n font-size: ${({ size }) => size || \"14px\"};\n text-transform: ${({ textTransform }) => textTransform || \"none\"};\n font-weight: ${({ weight }) => weight || \"bold\"};\n letter-spacing: 0;\n color: ${({ color }) => color || \"#000\"};\n\n &:focus {\n outline: none !important;\n border: ${({borderFocus}) => borderFocus || \"2px solid #923D41\"};\n }\n \n`\n\nexport const TextArea = styled.textarea`\n\n border: 1px solid black;\n border-radius: 5px;\n display: block;\n padding: 8px 15px;\n margin: ${({ margin }) => margin || \"15px 2px\"};\n width: -moz-available;\n width: ${({ width }) => width || \"-webkit-fill-available\"};\n text-align: left;\n font-size: 15px;\n font-weight: ${({ weight }) => weight || \"bold\"};\n letter-spacing: 0;\n color: #923D41;\n resize: ${({ resize }) => resize};\n display: ${({ display }) => display};\n\n &:focus {\n outline: none !important;\n border:2px solid #923D41;\n box-shadow: 0px 12px 30px #923D411A;\n }\n\n input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #923D41;\n font-weight: normal;\n opacity: 1; /* Firefox */\n }\n`","\nimport React from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText } from '../highlightedText';\nimport { Card } from \"../card\";\nimport { Input } from \"../input\";\nimport { Button } from '../uiComponents/button'\nimport SavedIcon from '../../assets/icons/checkmark-settings_green.svg'\nimport { getItemFromLocal, readableServerError, setItemToLocal } from '../../utils/utilFnx';\nimport SnackBar from 'my-react-snackbar';\nimport HashLoader from \"react-spinners/HashLoader\";\nimport { updateUserBasicAccountSettings } from '../../utils/api/accountApi';\n\n\n\n\nclass Account extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n user: {\n username: getItemFromLocal(\"username\"),\n first_name: getItemFromLocal(\"f_name\"),\n last_name: getItemFromLocal(\"l_name\"),\n email: getItemFromLocal(\"email\"),\n },\n saveChanges: false,\n loading: false,\n snackMessage: { type: null, message: null },\n }\n }\n\n handleChange = (e) => {\n this.setState({\n user: { ...this.state.user, [e.target.name]: e.target.value, },\n saveChanges: true,\n });\n }\n\n onSaveChanges = () => {\n\n this.setState({\n loading: true,\n snackMessage: { type: null, message: null },\n })\n updateUserBasicAccountSettings(this.state.user).then((data) => {\n console.log(data);\n setItemToLocal(\"email\", this.state.user.email || getItemFromLocal(\"email\"))\n setItemToLocal(\"f_name\", data.first_name)\n setItemToLocal(\"l_name\", data.last_name)\n setItemToLocal(\"username\", data.username)\n this.setState({\n loading: false,\n snackMessage: { type: \"success\", message: \"Account details successfully updated.\" },\n\n })\n\n }).catch((err) => {\n this.setState({\n loading: false,\n snackMessage: { type: \"error\", message: readableServerError(err) },\n\n })\n })\n\n }\n\n render = () => {\n return (\n\n \n \n\n \n \n Account Information\n \n \n\n\n \n\n \n \n First Name\n \n \n \n \n \n Last Name\n \n \n \n\n \n\n \n \n Username\n \n \n \n Username is unique name used to identify your account other than your legal name.\n \n \n \n \n Your email address\n \n \n \n This is the email address used to identify the account. It is another communication channel for this platform. Login to your account with the email you input here.\n \n \n\n\n\n \n {this.state.loading ?\n \n :\n \n {this.state.saveChanges ? \"Save Changes\" : \"Saved!\"}\n {!this.state.saveChanges &&\n }\n \n }\n\n \n\n \n\n )\n }\n}\n\n\nexport default Account\n\n\nconst AccountContainer = styled.div`\n\n padding: 1em 1em 3em;\n margin: 1em;\n background-color: white;\n\n button{\n img{\n margin: 0px 0px 0px 10px;\n }\n }\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 5% 0%;\n width: auto;\n h1{\n width: 90%;\n margin: 2%;\n }\n \n input{\n width: auto;\n margin: 5% 0;\n }\n\n div{\n display: block;\n }\n\n }\n`","\nimport React from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText, HightlightedSpan } from '../highlightedText';\nimport { Card } from \"../card\";\nimport ProfilePic from '../../assets/images/topic.svg'\nimport { Input, TextArea } from \"../input\";\nimport { Button } from '../uiComponents/button'\nimport SavedIcon from '../../assets/icons/checkmark-settings_green.svg'\nimport CancelIcon from '../../assets/icons/cancel.svg'\nimport { retrieveMyProfile, updateUserAccountProfile } from '../../utils/api/accountApi';\nimport { getItemFromLocal, pruneDataObject, readableServerError, setItemToLocal } from '../../utils/utilFnx';\nimport SnackBar from 'my-react-snackbar';\nimport HashLoader from \"react-spinners/HashLoader\";\nimport { LogoImg } from \"../uiComponents/uiElements\";\n\n\n\nclass Profile extends React.Component {\n constructor(props) {\n super();\n this.state = {\n profile: {\n subjects_of_interest: [],\n },\n saveChanges: false,\n loading: false,\n snackMessage: { type: null, message: null },\n }\n }\n\n componentDidMount = () => {\n if (Boolean(getItemFromLocal(\"profile\"))) {\n const data = getItemFromLocal(\"profile\")\n this.setState({\n profile: { ...data, subjects_of_interest: data.subjects_of_interest || [] }\n })\n\n } else {\n this.getUserProfileData()\n\n }\n }\n\n getUserProfileData = () => {\n this.setState({\n loading: true,\n snackMessage: { type: null, message: null },\n })\n retrieveMyProfile().then((data) => {\n // console.log(data);\n this.setState({\n profile: { ...data, subjects_of_interest: data.subjects_of_interest || [] },\n loading: false,\n\n })\n setItemToLocal(\"profile\", data)\n\n }).catch((err) => {\n this.setState({\n loading: false,\n snackMessage: { type: \"error\", message: readableServerError(err) },\n })\n })\n }\n\n\n onVariableChange = (e) => {\n // track variable changes that are not conventional\n this.setState({\n [e.target.name]: e.target.value,\n });\n // console.log(this.state.label);\n }\n\n\n onAddDeleteLabel = (e, command) => {\n // TODO: merge this function into `onTopicChange`\n if (command === \"delete\") {\n const updatedLabels = this.state.profile.subjects_of_interest.filter(item => !(item === e))\n\n this.setState({\n profile: { ...this.state.profile, subjects_of_interest: updatedLabels }, saveChanges: true,\n })\n\n } else {\n\n\n\n this.setState({\n // NOTE: the variable for storing labels interrim is called \n interest: \"\",\n profile: {\n ...this.state.profile,\n subjects_of_interest: [\n ...this.state.profile.subjects_of_interest,\n this.state.interest\n ],\n },\n saveChanges: true,\n })\n }\n\n\n }\n\n handleProfileChange = (e) => {\n this.setState({\n profile: { ...this.state.profile, [e.target.name]: e.target.value },\n saveChanges: true,\n })\n // console.log(this.state.profile);\n }\n\n\n handleImages = (e) => {\n this.setState({\n profile: {\n ...this.state.profile,\n profile_picture: URL.createObjectURL(e.target.files[0]),\n profilePictureData: e.target.files[0],\n },\n saveChanges: true,\n })\n // console.log(e.target.files[0]);\n\n }\n\n \n\n onSaveProfileChanges = (e) => {\n this.setState({\n loading: true,\n snackMessage: { type: null, message: null },\n })\n updateUserAccountProfile(pruneDataObject(this.state.profile)).then((data) => {\n this.setState({\n loading: false,\n saveChanges: false,\n profile: { ...data, subjects_of_interest: data.subjects_of_interest || [] },\n snackMessage: { type: \"success\", message: \"Profile details successfully updated.\" },\n })\n setItemToLocal(\"profile\", data)\n }).catch(err => {\n console.log(err.response);\n this.setState({\n loading: false,\n snackMessage: { type: \"error\", message: readableServerError(err) },\n })\n })\n\n }\n\n render = () => {\n return (\n \n \n\n \n \n Profile Information\n \n
\n \n Your Photo\n \n \n
\n \n \n document.getElementsByName(\"profile_picture\")[0].click()}\n >\n Browse\n \n \n
\n \n\n\n\n\n \n\n \n \n Date of birth\n \n \n\n \n \n \n Gender\n \n \n \n\n \n\n \n \n Institution/School\n \n \n \n School or institution you are currently affiliated with.\n \n \n\n \n\n \n \n Location\n \n \n \n Knowing the location in which you are using the platform enables us to know\n how best to tailer content to you by factoring internet speed, need and popularity.\n \n \n \n \n Telephone\n \n \n \n This telephone number is going to be our secondary contact\n \n \n\n \n\n\n\n\n \n \n About You\n \n \n \n \n \n Subjects / Areas of interest\n \n \n {this.state.profile.subjects_of_interest?.map((interest, i) => {\n return (\n\n \n \n {interest}\n this.onAddDeleteLabel(interest, \"delete\")}\n >\n \"cancel\n \n \n\n \n )\n })\n }\n\n \n \n \n\n Add\n \n \n\n\n\n\n \n\n\n \n {this.state.loading ?\n \n :\n \n {this.state.saveChanges ? \"Save Changes\" : \"Saved!\"}\n {!this.state.saveChanges &&\n }\n }\n \n\n\n
\n\n )\n }\n}\n\n\nexport default Profile\n\n\nconst ProfileContainer = styled.div`\n padding: 1em;\n margin: 1em;\n background-color: white;\n\n select{\n width: 80%;\n margin: 0 1em;\n padding: 0.7em 1em;\n font-size: 1em;\n }\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 5% 0%;\n width: auto;\n h1{\n width: 90%;\n margin: 2%;\n }\n \n input{\n width: auto;\n margin: 5% 0;\n }\n textarea{\n width: auto;\n margin: 5% 0;\n }\n select{\n width: auto;\n margin: 5% 0;\n }\n\n div{\n display: block;\n margin: 2px;\n }\n\n }\n`","\nimport React from 'react';\nimport { HighlightedText } from '../highlightedText';\nimport { Card } from \"../card\";\nimport { Input } from \"../input\";\nimport { Button } from '../uiComponents/button'\nimport SavedIcon from '../../assets/icons/checkmark-settings_green.svg'\nimport styled from 'styled-components';\nimport HashLoader from \"react-spinners/HashLoader\";\nimport SnackBar from 'my-react-snackbar';\nimport { updatePasswordData, updateUserAccountProfile } from '../../utils/api/accountApi';\nimport { getItemFromLocal, readableServerError, setItemToLocal } from '../../utils/utilFnx';\n\n\n\nclass Security extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n password: {\n password: \"\",\n new_password: \"\",\n confirm_new_password: \"\",\n },\n privacy: {\n display_real_name: getItemFromLocal(\"profile\")?.display_real_name ?? true,\n public_profile: getItemFromLocal(\"profile\")?.public_profile ?? true,\n },\n savePasswordChanges: false,\n savePrivacyChanges: false,\n loadingPassword: false,\n loadingPrivacy: false,\n snackMessage: { type: null, message: null },\n\n\n }\n }\n\n handlePasswordChange = (e) => {\n this.setState({\n password: { ...this.state.password, [e.target.name]: e.target.value, },\n savePasswordChanges: true,\n });\n }\n\n onSavePasswordChanges = () => {\n this.setState({\n loadingPassword: true,\n })\n if (this.state.password.new_password !== this.state.password.confirm_new_password) {\n this.setState({\n loadingPassword: false,\n snackMessage: { type: \"error\", message: \"New passwords do not match\" },\n })\n } else {\n updatePasswordData(this.state.password).then((data) => {\n this.setState({\n loadingPassword: false,\n savePasswordChanges: false,\n snackMessage: { type: \"success\", message: \"Password changed successfully.\" },\n })\n }).catch((err)=>{\n this.setState({\n loadingPassword: false,\n snackMessage: { type: \"error\", message: readableServerError(err) },\n })\n })\n\n\n }\n }\n onsavePrivacyChanges = () => {\n updateUserAccountProfile(this.state.privacy).then((data) => {\n setItemToLocal(\"profile\", data)\n this.setState({\n loadingPrivacy: false,\n savePrivacyChanges: false,\n snackMessage: { type: \"success\", message: \"Privacy settings saved successfully.\" },\n })\n }).catch((err)=>{\n this.setState({\n loadingPassword: false,\n snackMessage: { type: \"error\", message: readableServerError(err) },\n })\n })\n }\n\n render = () => {\n return (\n\n \n \n \n \n Security Information\n \n \n\n
\n\n \n Change password\n \n\n \n \n \n Current Password\n \n \n \n Password of the current account\n \n \n\n \n \n New Password\n \n \n \n Confirm New Password\n \n \n\n \n Confirm new password to make sure you got it right.\n \n \n\n\n \n {this.state.loadingPassword ?\n \n :\n\n \n {this.state.savePasswordChanges ? \"Save Password Changes\" : \"Saved!\"}\n {!this.state.savePasswordChanges &&\n }\n \n }\n \n\n \n\n
\n\n \n \n Privacy Information\n \n
\n \n this.setState({ privacy: { ...this.state.privacy, [e.target.name]: e.target.checked }, savePrivacyChanges: true })}\n />\n Display your real name on your profile\n \n \n If unchecked, your username will be displayed instead of your full name across all mentions on the platform.\n \n
\n \n this.setState({ privacy: { ...this.state.privacy, [e.target.name]: e.target.checked }, savePrivacyChanges: true })}\n\n />\n Allow everyone to see your profile\n \n \n If unchecked, your profile will be private and no one except you will be able to view it.\n \n
\n\n\n \n {\n this.state.loadingPrivacy ?\n \n :\n \n {this.state.savePrivacyChanges ? \"Save Privacy Changes\" : \"Saved!\"}\n {!this.state.savePrivacyChanges &&\n }\n \n\n }\n\n \n\n\n\n
\n\n )\n }\n}\n\n\nexport default Security\n\n\n\nconst SecurityContainer = styled.div`\n\n padding: 1em 3em 3em;\n margin: 1em 1em 3em;\n background-color: white;\n\n button{\n img{\n margin: 0px 0px 0px 10px;\n }\n }\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 5% 0%;\n width: auto;\n h1{\n width: 90%;\n margin: 2%;\n }\n \n input{\n width: auto;\n margin: 5% 2px;\n }\n }\n`","\nimport React from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Card } from \"../../components/card\";\nimport { NavLink, Redirect, Route, Switch } from 'react-router-dom';\nimport Account from '../../components/settings/account';\nimport Profile from '../../components/settings/profile';\nimport Security from '../../components/settings/security';\n\n\n\n\nclass Settings extends React.Component {\n\n constructor(props) {\n super();\n\n }\n\n\n componentDidMount = () => {\n\n }\n\n\n render = () => {\n // console.log(this.props.match.path);\n return (\n \n\n \n Account Settings\n \n \n \n \n Account\n \n\n \n \n \n Profile\n \n\n \n \n \n Security and Privacy\n \n\n \n \n\n \n\n \n \n \n \n\n \n\n \n\n )\n }\n\n}\n\nexport default Settings\n\n\n\n\nconst SettingsContainer = styled.div`\n margin: 1em;\n\n a{\n text-decoration: none;\n margin: 10px 20px;\n \n border-radius: 10px;\n\n &.active{\n background-color: rgba(232, 232, 232, 0.6)\n }\n }\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 5% 2%;\n width: auto;\n h1{\n width: 90%;\n margin: 2%;\n }\n .tab{\n padding: 0 2%;\n margin: 2%;\n align-items: center;\n justify-content: space-between;\n a{\n margin: 0;\n padding: 3% 4%;\n }\n }\n }\n`","import React from 'react';\nimport { HighlightedText } from \"../highlightedText\";\nimport styled from 'styled-components';\n\n\nexport function AshMidTitle(props) {\n\nreturn {props.title}\n\n}\n\nexport const SuperScript = styled.sup`\n font-size: ${({ size }) => size};\n font-weight: ${({ weight }) => weight || \"bold\"};\n font-style: ${({ fontStyle }) => fontStyle || \"normal\"};\n font-stretch: normal;\n line-height: ${({ lineHeight }) => lineHeight || \"normal\"};\n letter-spacing: normal;\n color: ${({ color }) => color || \"#000000\"};\n margin: ${({ margin }) => margin || \"0px\"};\n`\n","import React from 'react';\nimport { HighlightedText, HightlightedSpan } from '../highlightedText';\nimport { Card } from \"../card\";\nimport { SuperScript } from \"../uiComponents/text\";\nimport { Button } from '../uiComponents/button';\nimport CancelIcon from '../../assets/icons/cancel.svg'\nimport TickIcon from '../../assets/icons/tick.svg'\nimport { Input } from \"../input\";\nimport CourseImg from '../../assets/images/defaultTopic.jpg'\nimport styled from 'styled-components';\n\nclass ExtraInfoCard extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n topicData: {},\n\n }\n }\n\n\n\n render = () => {\n return \n \n Settings and Information\n \n\n \n \n Image/Thumbnail\n \n \"Topic\n \n \n \n Topic url: link\n \n
\n \n Monetization!\n \n \n \n \n\n \n
\n\n \n Labels\n \n Keywords to the topic in a search\n\n \n \n {this.props.labels.map((label, i) => {\n return (\n\n \n \n {label}\n this.props.onAddDeleteLabel(label, \"delete\")}\n >\n \"cancel\n \n \n\n \n )\n })\n }\n\n \n \n \n \n \n \n\n
\n\n }\n}\n\nexport default ExtraInfoCard\n\n\nconst ExtraCardContainer = styled.div`\n width: 25%;\n height: fit-content;\n margin: 2em 1em 1em;\n padding: 1em;\n background-color: white;\n position: sticky;\n top: 10%;\n text-align: center;\n \n @media only screen and (max-width: 768px){\n\n width: min-content;\n margin: 5% 1% 1%;\n padding: 1em;\n .fileUpload{\n border: 1px solid black;\n border-radius: 3px;\n display: block;\n padding: 10px 5px;\n margin: 10px 0;\n width: auto;\n height: 1.5em;\n text-align: left;\n font-size: 14px;\n text-transform: none;\n font-weight: bold;\n letter-spacing: 0;\n color: #000;\n }\n }\n\n`","export const appendItemToLocal = (name, data) => {\n let allData = getItemFromLocal(name, [])\n allData.push(data)\n localStorage.setItem(name, JSON.stringify(allData));\n}\n\nexport const sliceItemFromLocal = (name, data) => {\n let allData = getItemFromLocal(name, [])\n \n data = allData.filter(item => !(item === data))\n localStorage.setItem(name, JSON.stringify(data));\n}\n\nexport const getItemFromLocal = (name, defaultValue) => {\n return localStorage.getItem(name) ? JSON.parse(localStorage.getItem(name)) : defaultValue ?? null;\n}","import APIClient from './httpClient';\nimport { Upload } from \"tus-js-client\";\nimport { getItemFromLocal } from '../functions/storage';\n\nexport const videoCreateUpdate = async (videoData) => {\n /* upload a video\n */\n const api = new APIClient()\n\n if (videoData.id) {\n const endpoint = `/update/${videoData.id}/`;\n const { data } = await api.VideoApi.put(endpoint, videoData);\n return data;\n\n } else {\n const endpoint = \"/\";\n const { data } = await api.VideoApi.post(endpoint, videoData);\n return data;\n\n }\n\n}\n\n\nexport const uploadVideoToCloudFlare = async (videoData, onProgress, onSuccess, onAfterResponse, onError) => {\n\n\n /* DEBUG: if you notice weird CORS errors or an error like this \n Video upload was interrupted Error: tus: invalid or missing offset value, originated from request (method: HEAD, url: https://video-one-time-upload-link.canamali.workers.dev/null, response code: 200, response text: , request id: n/a)\n at Upload._emitHttpError (upload.js:412)\n at upload.js:643 \n \n check the auth tokens. \n */\n // Get the selected file from the input element\n var file = videoData.video_file\n\n // console.log(3, videoData.description, file.duration);\n\n var options = {\n endpoint: process.env.REACT_APP_CLOUDFLARE_ONE_TIME_VIDEO_UPLOAD_URL,\n chunkSize: 10 * 1024 * 1024, // Required a minimum chunk size of 5MB, here we use 10MB.\n metadata: {\n filename: file.name || \"No title\",\n name: videoData.title || \"No title\", // name that appears on the video. same as title\n title: videoData.title || \"No title\",\n filetype: file.type || \"video/mp4\",\n description: videoData.description,\n defaulttimestamppct: 0.5,\n user: getItemFromLocal(\"u_id\"),\n thumbnailTimestampPct: 0.568427,\n // watermark: \"$WATERMARKUID\", // TODO: work on it later\n // maxDurationSeconds: file.duration,\n // \"thumbnailTimestampPct\": 0.568427,\n // \"allowedOrigins\": [\"example.com\"], //https://developers.cloudflare.com/stream/uploading-videos/direct-creator-uploads\n },\n // uploadSize: file.size,\n parallelUploads: 1,\n retryDelays: [0, 1000, 3000, 5000,],\n onError: onError,\n onProgress: onProgress,\n onSuccess: onSuccess,\n onAfterResponse: onAfterResponse\n\n };\n\n\n var upload = new Upload(file, options);\n // Check if there are any previous uploads to continue.\n await upload.findPreviousUploads().then(function (previousUploads) {\n // Found previous uploads so we select the first one. \n if (previousUploads.length) {\n upload.resumeFromPreviousUpload(previousUploads[0])\n }\n\n // Start the upload\n upload.start()\n })\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport VideoIcon from '../../assets/icons/video_wine.svg';\nimport { uploadVideoToCloudFlare, videoCreateUpdate } from '../../utils/api/videoApi';\nimport { appendItemToLocal } from '../../utils/functions/storage';\nimport { convertDurationStringToSeconds } from '../../utils/utilFnx';\nimport { Card } from '../card';\nimport { Input, TextArea } from '../input';\nimport { PassButton } from \"../uiComponents/button\";\n\n\nclass VideoModal extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n title: \"\",\n description: \"\",\n video: null,\n uploadReady: false,\n }\n }\n\n onTextChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value\n });\n }\n\n\n handleVideo = (e) => {\n // console.log(e.target.files[0]);\n // console.log(e.target.result);\n var video = document.createElement('video');\n video.preload = 'metadata';\n\n video.onloadedmetadata = this.onLoadedVideoMetadata\n\n video.src = URL.createObjectURL(e.target.files[0]);\n this.setState({\n video_file: e.target.files[0],\n title: this.state.title || e.target.files[0].name,\n })\n // since there is no video preview, this part goes away, video file is just saved\n }\n\n onLoadedVideoMetadata = (e) => {\n // console.log(e.target.duration);\n window.URL.revokeObjectURL(e.target.src);\n this.setState({\n duration: e.target.duration?.toFixed(10),\n video_url: e.target.src,\n uploadReady: true\n })\n }\n handleSubmitVideo = (e) => {\n if (this.state.video_file) {\n this.props.onUploadPercentageChange(\"Preparing ...\")\n uploadVideoToCloudFlare(this.state,\n this.tusUploadOnProgress,\n this.tusUploadOnSuccess,\n this.tusUploadOnAfterResponse,\n this.tusUploadOnError)\n\n } else {\n this.backendUploadVideo()\n }\n\n\n this.props.onSubmitVideo(this.props.index, { content: this.state, modal: false })\n }\n\n backendUploadVideo = () => {\n videoCreateUpdate(this.state).then((data) => {\n // console.log(data);\n appendItemToLocal(\"unconfirmedVideos\", data.id)\n this.setState({\n ...this.state, ...data\n })\n\n }).catch((error) => {\n console.log(error.response);\n })\n .finally(() => {\n // TODO: check if this is necessary\n this.props.onSubmitVideo(this.props.index, { content: this.state.id, contentData: this.state, modal: false })\n })\n }\n\n tusUploadOnProgress = (bytesUploaded, bytesTotal) => {\n var percentage = (bytesUploaded / bytesTotal * 100).toFixed(2);\n this.props.onUploadPercentageChange(`${percentage}%`)\n // console.log(bytesUploaded, bytesTotal, percentage + \"%\");\n }\n tusUploadOnSuccess = () => {\n // console.log(\"Upload finished\");\n this.props.onUploadPercentageChange(\"Done uploading\")\n }\n\n tusUploadOnAfterResponse = (req, res) => {\n return new Promise(resolve => {\n var mediaIdHeader = res.getHeader(\"stream-media-id\");\n if (mediaIdHeader) {\n this.setState({\n video: mediaIdHeader\n })\n // console.log(this.state);\n this.backendUploadVideo()\n }\n resolve()\n })\n }\n\n tusUploadOnError = (error) => {\n // console.log(\"Video upload was interrupted\", error);\n this.props.onUploadPercentageChange(\"Error uploading.\")\n // throw error;\n\n }\n\n\n\n\nrender() {\n // console.log(this.props);\n return (\n { e.stopPropagation() }}\n width=\"100%\"\n bottom=\"0\"\n right=\"0\"\n top=\"0\"\n left=\"0\"\n radius=\"0\"\n display={this.props.show ? \"block\" : \"none\"}\n >\n\n
\n
\n
\n {\n\n // TODO: work on video preview\n \"Video}\n {this.state.duration && `Duration: ${convertDurationStringToSeconds(this.state.duration)} secs`}\n
\n
\n
\n

Upload video content

\n

\n To upload a video, first click upload to upload a file and fill in the other details.\n

\n
\n\n \n \n\n \n \n \n \n\n\n \n \n {this.props.primaryButton || 'Cancel'}\n \n\n \n {'Done'}\n \n\n
\n
\n
\n\n \n\n \n );\n}\n}\n\n\nexport default VideoModal\n\n\n\n\n\nconst ModalContainter = styled.div`\n width: ${({ width }) => width || \"100%\"};\n position:fixed;\n background: ${({ background }) => background || \"rgba(0, 0, 0, 0.6)\"};\n color: ${({ color }) => color || \"#ffffff\"};\n border-radius: ${({ radius }) => radius || \"0px\"};\n height: auto;\n top: ${({ top }) => top};\n left: ${({ left }) => left};\n bottom: ${({ bottom }) => bottom};\n right: ${({ right }) => right};\n transform: ${({ transform }) => transform};\n z-index: 1;\n display: ${({ display }) => display} !important; // make modal work in responsivenss\n\n\n .modalBody{\n\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100vh;\n margin: 0 50px;\n\n .container {\n display: flex;\n width: 80%;\n height: 70%;\n\n }\n\n .leftPane{\n background-color: #fff;\n width: 50%;\n border-top-left-radius: 15px;\n border-bottom-left-radius: 15px;\n padding: 20px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: black;\n\n img {\n height: 175px;\n }\n }\n\n .rightPane{\n background-color: #F7F7F7;\n width: 100%;\n border-top-right-radius: 15px;\n border-bottom-right-radius: 15px;\n box-sizing: border-box;\n padding: 0px 8%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n overflow: hidden scroll;\n\n\n .buttonContainer{\n margin: 20px;\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: space-between; \n }\n\n .formTop {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n margin-bottom: 30px;\n\n input {\n margin-top: 20px;\n border-bottom: 1px solid #A93B3F;\n color: #A93B3F;\n margin-bottom: 10px;\n width: 100%;\n }\n\n input::placeholder{\n color: #A93B3F;\n }\n }\n\n .title {\n color: #535353;\n font-size: 32px;\n margin-bottom: 0;\n }\n p{\n color: #767676;\n width: 90%;\n margin-right: 10%;\n font-size: 15px;\n line-height: 1.6;\n }\n }\n \n\n }\n @media only screen and (max-width: 768px){\n background-color: white !important;\n margin: 0 auto !important;\n div{\n background-color: white !important;\n }\n\n .modalBody{\n margin: 0 10px;\n .container{\n display: block;\n width: 100%;\n height: 90%;\n margin: 0px auto;\n text-align: -webkit-center;\n overflow: auto;\n }\n\n .leftPane{\n width: 90%;\n border-bottom-left-radius: 0;\n border-top-right-radius: 15px;\n\n img {\n height: 125px;\n }\n }\n .rightPane{\n border-top-right-radius: 0;\n border-bottom-left-radius: 15px;\n width: 90%;\n }\n }\n }\n\n \n`","import APIClient from './httpClient';\n\nexport const getQuizzes = async () => {\n /* get the quizzes belong to the user making the request\n */\n const api = new APIClient();\n const endpoint = '/me/';\n\n const { data } = await api.QuizApi.get(endpoint);\n return data;\n\n}\n\nexport const deleteQuiz = async (id) => {\n /* delete a quiz\n */\n const api = new APIClient();\n const endpoint = `/${id}/`;\n\n try {\n const { data } = await api.QuizApi.delete(endpoint);\n return data;\n\n } catch (error) {\n return {}\n }\n}\n\n\nexport const getOnlyQuizQuestions = async (id) => {\n /* get only questions for a particular quiz\n */\n const api = new APIClient();\n const endpoint = `/${id}/instructor/questions/`;\n\n const { data } = await api.QuizApi.get(endpoint);\n return data;\n\n}\n\nexport const getQuizAndQuestions = async (id) => {\n /* get only questions for a particular quiz\n */\n const api = new APIClient();\n const endpoint = `/${id}/`;\n\n\n const { data } = await api.QuizApi.get(endpoint);\n return data;\n\n\n}\n\n\nexport const quizCreateUpdate = async (quizData) =>{\n /* create a new quiz\n */\n const api = new APIClient();\n // console.log(quizData);\n\n if (quizData.id) {\n // update\n const endpoint = `/${quizData.id}/`;\n const { data } = await api.QuizApi.put(endpoint, quizData);\n return data;\n\n } else {\n // create\n const endpoint = \"/\";\n const { data } = await api.QuizApi.post(endpoint, quizData);\n return data;\n\n }\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText } from \"../highlightedText\";\nimport QuizIcon from '../../assets/icons/quiz-paper-filled-wine.svg';\nimport TickIcon from '../../assets/icons/checkmark_green.svg';\nimport UnSelectableIcon from '../../assets/icons/delete-rounded-wine.svg';\nimport { getItemFromLocal } from '../../utils/functions/storage';\nimport { readableServerError, removeItemsWithPrefixFromLocal, setItemToLocal } from '../../utils/utilFnx';\nimport { Button, PassButton } from \"../uiComponents/button\";\nimport { getQuizzes } from '../../utils/api/quizApi';\nimport SnackBar from 'my-react-snackbar';\nimport { Link } from 'react-router-dom'\n\n\n\nclass QuizModal extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n id: null,\n title: \"\",\n quizzes: [],\n snackMessage: { type: null, message: null },\n }\n }\n\n componentDidMount = () => {\n // console.log(this.props.data);\n // saving props data to state. \n this.setState({\n ...this.props.data\n })\n const cachedQuizzes = getItemFromLocal(`quizList-${new Date().toISOString().slice(0, 10)}`)\n if (!cachedQuizzes) {\n removeItemsWithPrefixFromLocal(\"quizList-\")\n getQuizzes().then(data => {\n // console.log(data);\n setItemToLocal(`quizList-${new Date().toISOString().slice(0, 10)}`, data)\n this.setState({\n quizzes: data\n })\n }).catch((err) => {\n console.log(readableServerError(err));\n this.setState({\n snackMessage: { type: \"error\", message: readableServerError(err) },\n })\n\n })\n } else {\n this.setState({\n quizzes: cachedQuizzes\n })\n }\n }\n\n\n handleSubmitQuiz = (e) => {\n this.props.onSubmitQuiz(this.props.index, { content: this.state.id, contentData: this.state, modal: false })\n }\n\n saveBeforeNavigate =(e)=>{\n this.props.onSubmitQuiz(this.props.index, { modal: false }, \"save-all\")\n }\n\n\n render() {\n // console.log(this.props);\n return (\n { e.stopPropagation() }}\n width=\"100%\"\n bottom=\"0\"\n right=\"0\"\n top=\"0\"\n left=\"0\"\n radius=\"0\"\n display={this.props.show ? \"block\" : \"none\"}\n\n >\n \n
\n
\n
\n \"Quiz\n
\n
\n
\n

Choose quiz to upload

\n

\n Make sure you have already created and published the quiz from the quiz section else, you would not be able to select them.\n

\n
\n\n {this.state.quizzes.length === 0 ?\n \n Create a new quiz\n \n :\n this.state.quizzes.map((quiz, i) => )\n }\n\n \n \n {this.props.primaryButton || 'Cancel'}\n \n\n \n {'Done'}\n \n\n
\n
\n
\n\n \n\n \n );\n }\n\n quizListItem = (props) => {\n return this.setState({ ...props.data })}\n >\n \n {props.data.title}\n \n\n {\n props.data.published ?\n this.state.id === props.data.id &&\n \n :\n <>\n \n Unpublished\n \n \"chosen\"\n \n }\n\n ;\n }\n}\n\n\nexport default QuizModal\n\n\n\n\n\nconst ModalContainter = styled.div`\n width: ${({ width }) => width || \"100%\"};\n position:fixed;\n background: ${({ background }) => background || \"rgba(0, 0, 0, 0.6)\"};\n color: ${({ color }) => color || \"#ffffff\"};\n border-radius: ${({ radius }) => radius || \"0px\"};\n height: auto;\n top: ${({ top }) => top};\n left: ${({ left }) => left};\n bottom: ${({ bottom }) => bottom};\n right: ${({ right }) => right};\n transform: ${({ transform }) => transform};\n z-index: 1;\n display: ${({ display }) => display} !important; // make modal work in responsivenss\n\n\n .modalBody{\n\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100vh;\n margin: 0 50px;\n\n .container {\n display: flex;\n width: 80%;\n height: 70%;\n\n }\n\n .leftPane{\n background-color: #fff;\n width: 50%;\n border-top-left-radius: 15px;\n border-bottom-left-radius: 15px;\n padding: 20px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: black;\n\n img {\n height: 175px;\n }\n }\n\n .rightPane{\n background-color: #F7F7F7;\n width: 100%;\n border-top-right-radius: 15px;\n border-bottom-right-radius: 15px;\n box-sizing: border-box;\n padding: 0px 8%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n overflow: hidden scroll;\n\n\n .buttonContainer{\n margin: 20px;\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: space-between; \n }\n\n .formTop {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n margin-bottom: 30px;\n\n input {\n margin-top: 20px;\n border-bottom: 1px solid #A93B3F;\n color: #A93B3F;\n margin-bottom: 10px;\n width: 100%;\n }\n\n input::placeholder{\n color: #A93B3F;\n }\n }\n\n .title {\n color: #535353;\n font-size: 32px;\n margin-bottom: 0;\n }\n p{\n color: #767676;\n width: 90%;\n margin-right: 10%;\n font-size: 15px;\n line-height: 1.6;\n }\n\n a{\n text-decoration: none;\n background-color: #ebf5ff;\n border: 1px solid #0366d650;\n color: #0366d6;\n padding: 10px 15px;\n border-radius: 10px;\n\n &:hover{\n text-decoration: underline;\n }\n }\n }\n \n\n }\n @media only screen and (max-width: 768px){\n background-color: white !important;\n margin: 0 auto !important;\n div{\n background-color: white !important;\n }\n\n .modalBody{\n margin: 0 10px;\n .container{\n display: block;\n width: 100%;\n height: 90%;\n margin: 0px auto;\n text-align: -webkit-center;\n overflow: auto;\n }\n\n .leftPane{\n width: 90%;\n border-bottom-left-radius: 0;\n border-top-right-radius: 15px;\n\n img {\n height: 125px;\n }\n }\n .rightPane{\n border-top-right-radius: 0;\n border-bottom-left-radius: 15px;\n width: 90%;\n }\n }\n }\n\n \n`","import APIClient from './httpClient';\n\nexport const noteCreateUpdate = async (noteData) => {\n /* create or update a note\n */\n const api = new APIClient()\n if (noteData.id) {\n const endpoint = `/${noteData.id}/`;\n const { data } = await api.NoteApi.put(endpoint, noteData);\n return data;\n\n } else {\n const endpoint = \"/\";\n const { data } = await api.NoteApi.post(endpoint, noteData);\n return data;\n }\n\n}","import React from 'react';\nimport styled from 'styled-components';\nimport NotesIcon from '../../assets/icons/notes-wine.svg';\nimport { PassButton } from \"../uiComponents/button\";\nimport SnackBar from 'my-react-snackbar';\nimport { convertFromRaw } from 'draft-js';\nimport { Editor } from 'react-draft-wysiwyg';\nimport { Input } from '../input';\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { noteCreateUpdate } from '../../utils/api/noteApi';\nimport { calculateDurationForNote } from '../../utils/utilFnx';\nimport { appendItemToLocal } from '../../utils/functions/storage';\n\n\nclass NoteModal extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n id: null,\n title: \"\",\n note: null,\n snackMessage: { type: null, message: null },\n }\n }\n\n componentDidMount = () => {\n this.setState({\n ...this.state, ...this.props.data\n })\n\n }\n\n\n handleSubmitNote = async (e) => {\n const currentContentPlain = convertFromRaw(this.state.note)?.getPlainText('');\n\n await this.setState({\n duration: calculateDurationForNote(currentContentPlain),\n })\n this.props.onSavingState(\"Loading...\")\n\n noteCreateUpdate(this.state).then(data => {\n appendItemToLocal(\"unconfirmedNotes\", data.id)\n this.setState({\n ...this.state, ...data\n })\n this.props.onSavingState(\"Done\")\n\n }).catch(err => {\n console.log(err.response, calculateDurationForNote(currentContentPlain));\n this.props.onSavingState(\"Error\")\n }).finally(() => {\n // NOTE: this makes sync after it is stored in the db. \n // TODO: Add to the \"then\". it should be fine, i guess\n this.props.onSubmitNote(this.props.index, { content: this.state.id, contentData: this.state, modal: false })\n })\n // this is an async update of the data while it is storing in db\n this.props.onSubmitNote(this.props.index, { content: this.state.id, contentData: this.state, modal: false })\n }\n\n\n onEditorStateChange = (note) => {\n this.setState({\n note: note,\n });\n };\n onTextChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value,\n });\n };\n\n\n\n render() {\n\n return (\n { e.stopPropagation() }}\n width=\"100%\"\n bottom=\"0\"\n right=\"0\"\n top=\"0\"\n left=\"0\"\n radius=\"0\"\n display={this.props.show ? \"block\" : \"none\"}\n\n >\n \n
\n
\n
\n \"Note\n
\n
\n
\n

Notes

\n

\n Type up notes using the rich text editor.\n

\n
\n\n \n\n {\n // NOTE: the condition below is necessary since the `Editor` component\n // doesnt refresh even after the initial state change\n (((this.props.data.note) && this.state.note) || !(this.props.data.note)) && }\n\n \n \n {this.props.primaryButton || 'Cancel'}\n \n\n \n Done\n \n\n
\n
\n
\n\n \n\n \n );\n }\n\n}\n\n\nexport default NoteModal\n\n\n\n\n\nconst ModalContainter = styled.div`\n width: ${({ width }) => width || \"100%\"};\n position:fixed;\n background: ${({ background }) => background || \"rgba(0, 0, 0, 0.6)\"};\n color: ${({ color }) => color || \"#ffffff\"};\n border-radius: ${({ radius }) => radius || \"0px\"};\n height: auto;\n top: ${({ top }) => top};\n left: ${({ left }) => left};\n bottom: ${({ bottom }) => bottom};\n right: ${({ right }) => right};\n transform: ${({ transform }) => transform};\n z-index: 1;\n display: ${({ display }) => display} !important; // make modal work in responsivenss\n\n\n .modalBody{\n\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100vh;\n margin: 0 50px;\n\n .container {\n display: flex;\n width: 80%;\n height: 70%;\n\n }\n\n .leftPane{\n background-color: #fff;\n width: 50%;\n border-top-left-radius: 15px;\n border-bottom-left-radius: 15px;\n padding: 20px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: black;\n\n img {\n height: 175px;\n }\n }\n\n .rightPane{\n background-color: #F7F7F7;\n width: 100%;\n border-top-right-radius: 15px;\n border-bottom-right-radius: 15px;\n box-sizing: border-box;\n padding: 0px 8%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n overflow: hidden scroll;\n\n .wrapperClassName{\n color: #030508;\n border: #0A111F 1px solid;\n border-radius: 5px;\n padding: 5px;\n min-width: 100%;\n }\n\n .editorClassName{\n \n background-color: #ebf5ff !important;\n padding: 5px 15px;\n }\n\n .rdw-editor-main{\n height: auto;\n }\n\n\n .buttonContainer{\n margin: 20px;\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: space-between; \n }\n\n .formTop {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n margin-bottom: 30px;\n\n input {\n margin-top: 20px;\n border-bottom: 1px solid #A93B3F;\n color: #A93B3F;\n margin-bottom: 10px;\n width: 100%;\n }\n\n input::placeholder{\n color: #A93B3F;\n }\n }\n\n .title {\n color: #535353;\n font-size: 32px;\n margin-bottom: 0;\n }\n p{\n color: #767676;\n width: 90%;\n margin-right: 10%;\n font-size: 15px;\n line-height: 1.6;\n }\n\n a{\n text-decoration: none;\n background-color: #ebf5ff;\n border: 1px solid #0366d650;\n color: #0366d6;\n\n }\n }\n \n\n }\n @media only screen and (max-width: 768px){\n background-color: white !important;\n margin: 0 auto !important;\n div{\n background-color: white !important;\n }\n\n .modalBody{\n margin: 0 10px;\n .container{\n display: block;\n width: 100%;\n height: 90%;\n margin: 0px auto;\n text-align: -webkit-center;\n overflow: auto;\n }\n\n .leftPane{\n width: 90%;\n border-bottom-left-radius: 0;\n border-top-right-radius: 15px;\n\n img {\n height: 125px;\n }\n }\n .rightPane{\n border-top-right-radius: 0;\n border-bottom-left-radius: 15px;\n width: 90%;\n }\n }\n }\n\n \n`","import React from 'react';\nimport { HighlightedText } from '../highlightedText';\nimport { Card } from \"../card\";\nimport { Button } from '../uiComponents/button';\nimport DeleteIcon from '../../assets/icons/trash-can_white.svg'\nimport VideoIcon from '../../assets/icons/video_wine.svg';\nimport NoteIcon from '../../assets/icons/notes-wine.svg';\nimport QuizIcon from '../../assets/icons/quiz-paper-filled-wine.svg';\nimport VideoModal from './videoUploadModal';\nimport { durationReadableFromNumber } from '../../utils/utilFnx';\nimport QuizModal from './quizModal';\nimport NoteModal from './noteModal';\n\nclass SyllabusContent extends React.Component {\n\n render = () => {\n // console.log(this.props.data)\n return (\n
  • \n \n {this.props.edit ?\n \n this.props.onEdit(this.props.index, { modal: true })}\n >\n {this.props.data.contentData?.title || this.props.data.content?.title || \"No title\"}\n \n \n \n :\n \n {this.props.data.contentData?.title || this.props.data.content?.title}\n\n }\n \n\n {\n this.state?.percentage\n &&\n \n {this.state.percentage}\n \n }\n\n {\n \n }\n \n {durationReadableFromNumber(this.props.data.contentData?.duration || this.props.data.content.duration)}\n \n {this.props.edit && }\n\n \n\n \n\n {this.props.data.content_type === \"note\" &&\n this.props.onEdit(this.props.index, { modal: false },)}\n onSubmitNote={this.props.onEdit}\n index={this.props.index}\n data={this.props.data.contentData || this.props.data.content}\n onSavingState={(percentage) => this.setState({ percentage: percentage })}\n />}\n\n {this.props.data.content_type === \"video\" &&\n this.props.onEdit(this.props.index, { modal: false },)}\n onSubmitVideo={this.props.onEdit}\n index={this.props.index}\n data={this.props.data.contentData || this.props.data.content}\n onUploadPercentageChange={(percentage) => this.setState({ percentage: percentage })}\n />}\n {this.props.data.content_type === \"quiz\" &&\n this.props.onEdit(this.props.index, { modal: false },)}\n onSubmitQuiz={this.props.onEdit}\n index={this.props.index}\n data={this.props.data.contentData || this.props.data.content}\n />}\n\n
  • \n )\n }\n}\n\nexport default SyllabusContent","\nimport React from 'react';\nimport { HighlightedText } from '../highlightedText';\nimport { Card } from \"../card\";\nimport { Button } from '../uiComponents/button';\nimport AddItemIcon from '../../assets/icons/arrow_right_red.svg'\nimport DeleteIcon from '../../assets/icons/trash-can_white.svg'\nimport UnPublishedIcon from '../../assets/icons/minus_red.svg'\nimport PublishedIcon from '../../assets/icons/checkmark_green.svg'\nimport SaveIcon from '../../assets/icons/floppy-disk_green.svg'\nimport EditIcon from '../../assets/icons/pencil.svg'\nimport { Collapse } from 'react-collapse';\nimport { Input } from '../input';\nimport SyllabusContent from './syllabusContent';\nimport BarLoader from \"react-spinners/BarLoader\";\nimport { css } from \"@emotion/react\";\n\n\nclass SyllabusSection extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n collapse: true,\n content_type: \"note\",\n }\n }\n\n\n onAddSyllabusContent = (e) => {\n\n // when someone clicks on th Add module button, an empty map is added to the \n // `syllabusSection` array in state. and then edit=True property is set for that item.\n let allSyllabusContent = [\n ...this.props.data.syllabus_contents,\n {\n content_type: this.state.content_type,\n modal: true,\n order: this.props.data.syllabus_contents.length,\n content: {},\n }\n ]\n\n this.props.onEdit(this.props.index, { syllabus_contents: allSyllabusContent })\n }\n\n onEditSyllabusContent = (id, data, command) => {\n if (command === \"save-all\") {\n this.props.onEdit(this.props.index, data, command)\n }\n // console.log(data);\n let allSyllabusContent = this.props.data.syllabus_contents\n let syllabusContent = allSyllabusContent[id]\n if (command === \"delete\") {\n allSyllabusContent.splice(id, 1);\n\n } else {\n\n syllabusContent = { ...syllabusContent, ...data }\n allSyllabusContent[id] = syllabusContent\n }\n // updating the syllabus content on the bigger screen \n // console.log(this.props.data.syllabus_contents);\n\n this.props.onEdit(this.props.index, { syllabus_contents: allSyllabusContent })\n\n }\n\n handleChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value\n })\n }\n\n\n render = () => {\n // console.log(this.props.data);\n return (\n \n \n {this.props.data.edit ?\n \n\n this.props.onEdit(this.props.index, { [e.target.name]: e.target.value })} />\n \n \n \n \n : this.setState({ collapse: !this.state.collapse })}\n background=\"transparent\"\n padding=\"0\" margin=\"0 0\"\n radius=\"1em\"\n display=\"flex\"\n space=\"space-between\"\n width=\"70%\"\n >\n\n \n {this.props.data.title || \"No title\"}\n \n \n }\n {this.props.data.loading ?\n\n \n :\n this.props.data.edit ?\n \n {\n if (this.props.data.id) {\n this.props.onEdit(this.props.index, { published: !this.props.data.published }, \"push\")\n }\n }}\n >\n {this.props.data.published ? \"Published\" : \"Publish\"} \"unpublished/published\"\n \n \n\n \n this.props.onEdit(this.props.index, { edit: !this.props.data.edit }, \"save\")}>\n\n Save \"saveIcon\"\n \n\n\n :\n\n \n {\n if (this.props.data.id) {\n this.props.onEdit(this.props.index, { published: !this.props.data.published }, \"push\")\n }\n }}\n radius=\"30%\"\n >\n \"unpublished/published\"\n \n this.props.onEdit(this.props.index, { edit: !this.props.data.edit })}>\n Edit \"edit\n \n \n }\n \n \n
      \n\n {this.props.data.syllabus_contents.map((syllabusContent, i) =>\n )\n }\n\n
    • \n \n \"add\n \n\n \n \n Add a new material\n \n \n \n \n \n \n\n\n \n\n
    • \n\n
    \n
    \n\n
    \n )\n\n }\n}\n\nexport default SyllabusSection;\n\n\nconst LoadingAnimationStyle = css`\n align-self: center;\n margin: 0 auto;\n\n`;\n","import APIClient from './httpClient';\n\nexport const uploadTopicThumbnaileImage = async (thumbnailUploadData) => {\n const api = new APIClient();\n let bodyFormData = new FormData();\n bodyFormData.append('thumbnail', thumbnailUploadData.thumbnail);\n bodyFormData.append('user', thumbnailUploadData.user);\n bodyFormData.append('title', thumbnailUploadData.title);\n\n\n // update\n const endpoint = `/update/${thumbnailUploadData.id}/`;\n const { data } = await api.TopicMediaApi.put(endpoint, bodyFormData);\n return data;\n}\n\nexport const topicCreateUpdate = async (topicData) => {\n\n const api = new APIClient();\n // console.log(topicData);\n // to post a file, use FormData. Postman confirms this. \n let bodyFormData = new FormData();\n\n Object.entries(topicData).forEach(kvPair => {\n\n if (kvPair[1] !== null && kvPair[1] !== []) {\n bodyFormData.append(kvPair[0], kvPair[1])\n }\n return []\n })\n if (topicData.thumbnailFileData) {\n bodyFormData.append('thumbnail', topicData.thumbnailFileData);\n }\n if (topicData.id) {\n // update\n delete topicData.thumbnail\n /* DEBUG: when running update section and update topic full concurrently, you get slammed with this error \n AttributeError: 'NoneType' object has no attribute 'user' \n to correct it, make sure it is not running full as there would be conflicts\n */\n const endpoint = topicData.syllabus_sections?.length ? `/full/${topicData.id}/` : `/update/${topicData.id}/`;\n const { data } = await api.TopicApi.put(endpoint, topicData);\n return data;\n\n } else {\n // create\n const endpoint = topicData.syllabus_sections?.length !== 0 ? \"/full/\" : \"/create/\";\n const { data } = await api.TopicApi.post(endpoint, topicData);\n return data;\n\n }\n\n}\n\nexport const sectionCreateUpdate = async (topicID, sectionData) => {\n /* create a new quiz\n */\n const api = new APIClient();\n if (Array.isArray(sectionData) || !(sectionData.id)) {\n const endpoint = `/${topicID}/sections/`;\n const { data } = await api.TopicApi.post(endpoint, sectionData);\n return data;\n } else {\n const endpoint = `/${topicID}/sections/${sectionData.id}/`;\n const { data } = await api.TopicApi.put(endpoint, sectionData);\n return data;\n\n }\n}\n\nexport const getSyllabusSections = async (topicID) => {\n const api = new APIClient();\n const endpoint = `/${topicID}/sections/`;\n const { data } = await api.TopicApi.get(endpoint);\n return data;\n}\n\nexport const sectionDelete = async (topicID, sectionID) => {\n /* create a new quiz\n */\n const api = new APIClient();\n const endpoint = `/${topicID}/sections/${sectionID}/`;\n const { data } = await api.TopicApi.delete(endpoint);\n return data;\n\n}\n\nexport const getTopics = async () => {\n /* get the topics belonging to a user\n */\n const api = new APIClient();\n const endpoint = '/me/';\n\n const { data } = await api.TopicApi.get(endpoint);\n return data;\n}\n\nexport const retrieveFullTopic = async (topicID) => {\n /* get the topics belonging to a user\n */\n const api = new APIClient();\n const endpoint = `/full/${topicID}/`;\n\n const { data } = await api.TopicApi.get(endpoint);\n return data;\n}\n\nexport const createNewContent = async () => {\n /* get the topics belonging to a user\n */\n const api = new APIClient();\n const endpoint = '/content/';\n\n try {\n const { data } = await api.TopicApi.get(endpoint);\n return data;\n\n } catch (error) {\n return {}\n }\n}\n\n\n\n","import React from 'react';\nimport styled from 'styled-components';\nimport ErrorPicture from '../../assets/images/Group49.svg';\nimport { PassButton } from \"../uiComponents/button\";\n\n\nclass AppModal extends React.Component {\n\n\n\n\n render() {\n const showHideClassName = this.props.show ? \"modal display-block\" : \"modal display-none\";\n\n // console.log(this.props);\n return (\n
    \n { e.stopPropagation() }}\n width=\"100%\"\n bottom=\"0\"\n right=\"0\"\n top=\"0\"\n left=\"0\"\n radius=\"0\"\n >\n\n
    \n
    \n
    \n\n\n \"ResetPass\n\n
    \n
    \n
    \n

    {this.props.header || \"Oops!\"}

    \n

    {\n this.props.message\n || \"Something went wrong. Contact IT for assistance.\"}\n

    \n
    \n {this.props.body}\n \n \n {this.props.secondaryButton || 'Cancel'}\n \n\n \n {this.props.primaryButton || 'Done'}\n \n\n
    \n
    \n
    \n\n
    \n\n \n \n );\n }\n}\n\n\nexport default AppModal\n\n\n\n\n\nconst ModalContainter = styled.div`\n width: ${({ width }) => width || \"100%\"};\n position:fixed;\n background: ${({ background }) => background || \"rgba(0, 0, 0, 0.6)\"};\n color: ${({ color }) => color || \"#ffffff\"};\n border-radius: ${({ radius }) => radius || \"0px\"};\n height: auto;\n top: ${({ top }) => top};\n left: ${({ left }) => left};\n bottom: ${({ bottom }) => bottom};\n right: ${({ right }) => right};\n transform: ${({ transform }) => transform};\n z-index: 1;\n\n .modalBody{\n\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100vh;\n margin: 0 50px;\n\n .container {\n display: flex;\n width: 80%;\n height: 70%;\n\n }\n\n .leftPane{\n background-color: #fff;\n width: 50%;\n border-top-left-radius: 15px;\n border-bottom-left-radius: 15px;\n padding: 20px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: black;\n\n img {\n height: 175px;\n }\n }\n\n .rightPane{\n background-color: #F7F7F7;\n width: 100%;\n border-top-right-radius: 15px;\n border-bottom-right-radius: 15px;\n box-sizing: border-box;\n padding: 0px 8%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n overflow: scroll;\n\n\n .buttonContainer{\n margin: 20px;\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: space-between; \n }\n\n .formTop {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n margin-bottom: 30px;\n\n input {\n margin-top: 20px;\n border-bottom: 1px solid #A93B3F;\n color: #A93B3F;\n margin-bottom: 10px;\n width: 100%;\n }\n\n input::placeholder{\n color: #A93B3F;\n }\n }\n\n .title {\n color: #535353;\n font-size: 32px;\n margin-bottom: 0;\n }\n p{\n color: #767676;\n width: 90%;\n margin-right: 10%;\n font-size: 15px;\n line-height: 1.6;\n }\n }\n\n }\n \n @media only screen and (max-width: 768px){\n .modalBody{\n margin: 0 10px;\n .container{\n display: block;\n width: 100%;\n height: 90%;\n margin: 0px auto;\n text-align: -webkit-center;\n overflow: auto;\n }\n\n .leftPane{\n width: 90%;\n border-bottom-left-radius: 0;\n border-top-right-radius: 15px;\n\n img {\n height: 125px;\n }\n }\n .rightPane{\n border-top-right-radius: 0;\n border-bottom-left-radius: 15px;\n width: 90%;\n }\n }\n }\n \n`","\nimport React from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Card } from \"../../components/card\";\nimport { AshMidTitle } from \"../../components/uiComponents/text\";\nimport { Button } from '../../components/uiComponents/button';\nimport AddSectionIcon from '../../assets/icons/plus_rounded_wine.svg'\nimport { Input, TextArea } from \"../../components/input\";\nimport { getFirstName, getLastName, getUserId } from '../../utils/storage/auth';\nimport ExtraInfoTab from '../../components/topic/extraInfoCard';\nimport SyllabusSection from '../../components/topic/syllabusSection';\nimport UnPublishedIcon from '../../assets/icons/minus_red.svg'\nimport PublishedIcon from '../../assets/icons/checkmark_green.svg'\nimport SavedIcon from '../../assets/icons/checkmark-settings_green.svg'\nimport {\n getSyllabusSections,\n retrieveFullTopic,\n sectionCreateUpdate,\n sectionDelete,\n topicCreateUpdate,\n uploadTopicThumbnaileImage\n} from '../../utils/api/topicApi';\nimport { createBrowserHistory } from 'history'\nimport AppModal from \"../../components/uiComponents/modal\";\nimport AddNewTopicIllustration from \"../../assets/illustrations/add_new.svg\";\nimport SnackBar from 'my-react-snackbar';\nimport BeatLoader from \"react-spinners/BeatLoader\";\nimport { convertDurationStringToSeconds, durationReadableFromNumber, readableServerError } from '../../utils/utilFnx';\nimport { Prompt } from 'react-router';\n\nclass Topic extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n topic: {\n payment_plan: \"per view\",\n labels: [],\n published: false,\n level: \"Beginner\",\n user: getUserId()\n }, // defaults. very important until further notice\n learning_goals: [],\n label: \"\",\n syllabus_sections: [],// [{edit:true, published: true}], //defaults\n saveChanges: false,\n newTopicModal: false,\n loading: false,\n snackMessage: { type: null, message: null },\n }\n\n this.onRefreshPrompt = e => {\n // the method that will be used for both add and remove event\n e.preventDefault();\n e.returnValue = '';\n }\n }\n\n componentDidMount = () => {\n // prompt the user they'll loose all saved work if refreshed\n\n // TODO: uncomment this before launch\n if (!process.env.REACT_APP_DEBUG) {\n window.addEventListener(\"beforeunload\", this.onRefreshPrompt);\n }\n\n if (this.props.match.params.topicID) {\n if (this.props.location.state != null) {\n // console.log(this.props.location.state);\n this.setState({\n topic: { ...this.props.location.state, user: getUserId() },\n learning_goals: this.props.location.state.learning_goals,\n loading: true,\n })\n getSyllabusSections(this.props.match.params.topicID).then((data) => {\n this.setState({\n syllabus_sections: data,\n loading: false,\n })\n }).catch((err) => {\n console.log(err.response);\n this.setState({\n snackMessage: { type: \"error\", message: readableServerError(err) },\n loading: false,\n })\n })\n // without the 2 lines below, the state still \n // refers to the old state of the application even after refresh\n const history = createBrowserHistory();\n history.replace();\n\n }\n else {\n this.setState({\n loading: true\n })\n retrieveFullTopic(this.props.match.params.topicID).then(data => {\n // console.log(data);\n this.setState({\n topic: { ...data, user: getUserId() },\n learning_goals: data.learning_goals,\n syllabus_sections: data.syllabus_sections,\n loading: false,\n })\n })\n\n }\n } else {\n // create a new topic but with name first\n this.setState({\n newTopicModal: true\n })\n }\n\n\n }\n\n componentWillUnmount = () => {\n if (!process.env.REACT_APP_DEBUG) {\n window.removeEventListener(\"beforeunload\", this.onRefreshPrompt)\n }\n }\n\n\n componentDidUpdate(prevProps, prevState) {\n if (this.prop === prevProps || this.state === prevState) {\n // for resetting the course if someone show click on a create new course\n // TODO: expound on this to make it possible for it to load topic details when one with ID comes into play \n this.setState({\n topic: {\n payment_plan: \"per view\",\n labels: [],\n published: false,\n level: \"Beginner\",\n user: getUserId()\n },\n syllabus_sections: [],\n learning_goals: [],\n saveChanges: false,\n newTopicModal: true,\n })\n }\n }\n\n\n onTopicChange = (e) => {\n this.setState({\n topic: { ...this.state.topic, [e.target.name]: e.target.value },\n saveChanges: true,\n });\n // console.log(this.state.topic)\n }\n\n onAddDeleteLabel = (e, command) => {\n // TODO: merge this function into `onTopicChange`\n if (command === \"delete\") {\n const updatedLabels = this.state.topic.labels.filter(item => !(item === e))\n\n this.setState({\n topic: { ...this.state.topic, labels: updatedLabels }, saveChanges: true,\n })\n\n } else {\n // add a new key value to the end\n this.setState({\n // NOTE: the variable for storing labels interrim is called \n label: \"\",\n topic: { ...this.state.topic, labels: [...this.state.topic.labels, this.state.label], },\n saveChanges: true,\n })\n }\n\n\n }\n onVariableChange = (e) => {\n // track variable changes that are not conventional\n this.setState({\n [e.target.name]: e.target.value, saveChanges: true,\n });\n // console.log(this.state.label);\n }\n\n\n handleImages = (e) => {\n // console.log(e.target.files[0]);\n this.setState({\n thumbnail: URL.createObjectURL(e.target.files[0]),\n thumbnailFileData: e.target.files[0],\n saveChanges: true,\n })\n }\n\n\n\n onChangeLearningGoal = (e) => {\n\n let learning_goals = this.state.learning_goals\n learning_goals[e.target.name] = e.target.value\n\n this.setState({\n learning_goals: learning_goals,\n saveChanges: true,\n })\n // console.log(this.state.learning_goals);\n }\n\n\n onAddModule = (e) => {\n\n // when someone clicks on th Add module button, an empty map is added to the \n // `syllabusSection` array in state. and then edit=True property is set for that item.\n this.setState({\n syllabus_sections: [\n ...this.state.syllabus_sections,\n {\n edit: true,\n published: false,\n order: this.state.syllabus_sections.length,\n syllabus_contents: []\n }]\n })\n\n }\n\n onEditSyllabusSection = (id, data, command) => {\n if (command === \"save-all\") {\n return this.onSaveTopic()\n }\n let allSyllabusSection = this.state.syllabus_sections\n let syllabusSection = allSyllabusSection[id]\n\n if (command === \"delete\") {\n allSyllabusSection.splice(id, 1);\n if (syllabusSection.id) {\n sectionDelete(this.state.topic.id, syllabusSection.id).then(d=>{\n this.setState({\n snackMessage: { type: \"info\", message: \"Delete success\" },\n })\n })\n this.updateTopicWithDuration(allSyllabusSection)\n }\n\n } else {\n\n syllabusSection = {\n ...syllabusSection,\n ...data,\n loading: command === \"save\" || command === \"push\"\n }\n allSyllabusSection[id] = syllabusSection\n }\n this.setState({\n syllabus_sections: allSyllabusSection,\n saveChanges: true,\n })\n if (command === \"save\") {\n // console.log(syllabusSection.syllabus_contents);\n if (this.state.topic.id) { // if the topic already on the db\n // save the syllabus section\n this.updateTopicWithDuration(allSyllabusSection)\n // NOTE: this is storing data for a single section\n sectionCreateUpdate(this.state.topic.id, syllabusSection).then((responseData) => {\n // console.log(responseData);\n responseData.syllabus_contents = this.updateSyllabusContents(syllabusSection.syllabus_contents, responseData.syllabus_contents)\n this.onEditSyllabusSection(id, responseData) // this takes care of `loading: false`\n }).catch((error) => {\n // console.log(readableServerError(error), error.response);\n this.onEditSyllabusSection(id, data)\n throw error\n })\n\n\n }\n\n else {\n // save the topic\n this.onSaveTopic(id)\n // NOTE: after it is saved, clear from the draft cache\n }\n } else if (command === \"push\") {\n // when wanting to push one thing.\n if (syllabusSection.id) {\n sectionCreateUpdate(this.state.topic.id, syllabusSection).then((d) => {\n\n this.onEditSyllabusSection(id, d)\n })\n } else {\n this.onEditSyllabusSection(id, syllabusSection, \"save\")\n }\n }\n }\n\n onSaveTopic = () => {\n let topic = this.state.topic\n topic.learning_goals = this.state.learning_goals\n topic.syllabus_sections = this.state.syllabus_sections\n topic.duration = this.getEntireTopicDuration(topic.syllabus_sections)\n // console.log(this.state.syllabus_sections);\n this.setState({\n loading: true,\n snackMessage: { type: null, message: null },\n\n })\n // console.log(topic);\n topicCreateUpdate(topic).then((data) => {\n this.setState({\n topic: { ...this.state.topic, ...data },\n syllabus_sections: this.updateSyllabusSections(this.state.syllabus_sections, data.syllabus_sections) || [],\n saveChanges: false,\n loading: false,\n snackMessage: { type: \"success\", message: \"Topic succesfully saved\" },\n\n })\n\n if (this.state.thumbnailFileData) {\n uploadTopicThumbnaileImage({\n id: data.id,\n user: data.user,\n title: data.title,\n thumbnail: this.state.thumbnailFileData\n }).then((tRes) => {\n // console.log(tRes);\n }).catch((err) => {\n this.setState({\n snackMessage: { type: \"error\", message: readableServerError(err) },\n\n })\n })\n }\n\n }).catch((err) => {\n console.log(err.response);\n this.setState({\n snackMessage: { type: \"error\", message: readableServerError(err) },\n loading: false,\n })\n })\n\n // console.log(topic);\n\n }\n\n updateTopicWithDuration = (syllabusSections) => {\n const topicDuration = this.getEntireTopicDuration(syllabusSections || this.state.syllabus_sections)\n // save other things on the topic that this may affect\n if (topicDuration !== this.state.topic.duration) {\n topicCreateUpdate({\n id: this.state.topic.id,\n duration: topicDuration,\n // below is required for the request\n user: getUserId(),\n title: this.state.topic.title,\n }).then((data) => {\n this.setState({\n topic: { ...this.state.topic, ...data }\n })\n }).catch(err => {\n console.log(readableServerError(err));\n })\n }\n }\n\n updateSyllabusContents = (oldSyllabusContents, newSyllabusContents) => {\n let updatedSC = []\n\n for (let i = 0; i < newSyllabusContents.length; i++) {\n const s_con = newSyllabusContents[i];\n oldSyllabusContents[i].syllabus_content = s_con.id // TODO: this line seems redundant. test and remove if necessary\n\n updatedSC.push({\n ...oldSyllabusContents[i],\n ...s_con,\n content: (s_con.content && Object.keys(s_con.content).length !== 0) ? s_con.content : oldSyllabusContents[i].content\n })\n }\n return updatedSC\n }\n\n updateSyllabusSections = (oldSyllabusSections, newSyllabusSections) => {\n\n let updatedSS = []\n for (let i = 0; i < newSyllabusSections?.length; i++) {\n\n const s_sec = newSyllabusSections[i];\n let updatedSC = this.updateSyllabusContents(oldSyllabusSections[i].syllabus_contents, s_sec.syllabus_contents)\n updatedSS.push({ ...oldSyllabusSections[i], ...s_sec, loading: false, syllabus_contents: updatedSC })\n }\n return updatedSS\n }\n\n getEntireTopicDuration = (syllabusSections) => {\n let duration = 0\n for (let i = 0; i < syllabusSections.length; i++) {\n const s_sec = syllabusSections[i];\n duration += this.getSyllabusSectionDuration(s_sec.syllabus_contents)\n }\n // DEBUG: .toFixed returns a string instead of a float digit. \n // DEBUG: .toFixed(10) is a control measure. If decimal points exceed 10, backend would throw an error\n return parseFloat(duration?.toFixed(10) || 0)\n }\n\n getSyllabusSectionDuration = (syllabusContents) => {\n\n let duration = 0\n\n for (let i = 0; i < syllabusContents.length; i++) {\n const s_con = syllabusContents[i];\n duration += convertDurationStringToSeconds(s_con.content?.duration || s_con.contentData?.duration || 0)\n }\n return duration || 0\n }\n\n\n render = () => {\n return (\n \n \n {\n if (action !== \"POP\") {\n return \"You are leaving this page with unsaved work. Are you sure you want to do this?\"\n }\n }\n }\n />\n
    \n
    \n\n \n\n\n {\n // without await, this doesnot update state to save data\n await this.setState({ topic: { ...this.state.topic, published: !this.state.topic.published } });\n this.onSaveTopic()\n }}\n >\n {this.state.loading ?\n <>\n \n Loading...\n \n :\n <>{this.state.topic.published ? \"Published\" : \"Publish\"}\n }\n\n \n \n {\n this.state.loading ?\n <>\n \n Loading...\n \n :\n\n <> {this.state.saveChanges ? \"Save Changes\" : \"Saved!\"}\n {!this.state.saveChanges && }\n \n }\n\n \n\n\n
    \n\n \n \n \n Instructor: {getFirstName()} {getLastName()}\n \n \n\n \n \n Duration: {durationReadableFromNumber(this.state.topic.duration) || \"Indeterminate\"}\n \n \n Computes automatically on save\n \n\n \n \n \n \n \n\n \n \n \n\n \n \n {this.props.data.genre === \"essay\" ?\n \n Note that, currently, the platform does not support grading of essay type questions.\n Hence we kindly recommend that you use this type of question for taking answers that do not need to be graded. Thank you.\n \n :\n <> {this.props.data.possible_answers?.map((pa, i) =>\n )\n }\n\n \n Add a possible answer\n \n\n\n\n \n\n this.props.onEdit(this.props.index, { [e.target.name]: e.target.value })}\n />\n {this.props.data.genre === \"short-answer\" && \n this.props.onEdit(this.props.index, { [e.target.name]: e.target.checked })}\n />\n Exact\n }\n\n \n\n \n }\n \n \n\n\n )\n }\n}\n\nexport default Question;\n\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport { Card } from '../../components/card';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Input } from \"../../components/input\";\nimport InfoIcon from \"../../assets/icons/info.svg\";\nimport AddSectionIcon from '../../assets/icons/plus_rounded_wine.svg'\nimport { Button } from '../../components/uiComponents/button';\nimport UnPublishedIcon from '../../assets/icons/minus_red.svg'\nimport PublishedIcon from '../../assets/icons/checkmark_green.svg'\nimport SavedIcon from '../../assets/icons/checkmark-settings_green.svg'\nimport Question from '../../components/quiz/question';\nimport {\n getOnlyQuizQuestions,\n getQuizAndQuestions,\n quizCreateUpdate\n} from \"../../utils/api/quizApi\";\nimport { createBrowserHistory } from 'history'\nimport BeatLoader from \"react-spinners/BeatLoader\";\nimport { convertDurationStringToMinutes, readableServerError } from '../../utils/utilFnx';\nimport SnackBar from 'my-react-snackbar';\nimport { Prompt } from 'react-router';\n\nclass QuizLab extends Component {\n\n constructor(props) {\n super();\n this.state = {\n questions: [],\n quiz: { published: false, duration: 10},\n saveChanges: false,\n loading: false,\n snackMessage: { type: null, message: null },\n\n }\n\n this.onRefreshPrompt = e => {\n // the method that will be used for both add and remove event\n e.preventDefault();\n e.returnValue = '';\n }\n }\n\n componentDidMount = () => {\n\n if (!process.env.REACT_APP_DEBUG) {\n window.addEventListener(\"beforeunload\", this.onRefreshPrompt);\n }\n\n if (this.props.match.params.quizID) {\n if (this.props.location.state != null) {\n // console.log(this.props.location.state);\n this.setState({\n quiz: {\n ...this.props.location.state,\n duration: convertDurationStringToMinutes(this.props.location.state.duration)\n },\n })\n // without the 2 lines below, the state still \n // refers to the old state of the application even after refresh\n const history = createBrowserHistory();\n history.replace();\n // get just questions\n this.setState({\n loading: true\n })\n getOnlyQuizQuestions(this.props.match.params.quizID).then((data) => {\n // console.log(data);\n this.setState({\n questions: data,\n loading: false,\n })\n }).catch(err => {\n this.setState({\n loading: false,\n snackMessage: { type: \"error\", message: readableServerError(err) },\n })\n })\n\n }\n else {\n // if is it not coming from state, fetch from db\n this.getQuizAndQuestionsData()\n\n }\n }\n }\n\n componentWillUnmount = () => {\n if (!process.env.REACT_APP_DEBUG) {\n window.removeEventListener(\"beforeunload\", this.onRefreshPrompt)\n }\n }\n\n getQuizAndQuestionsData = () => {\n this.setState({\n loading: true\n })\n getQuizAndQuestions(this.props.match.params.quizID).then((data) => {\n this.setState({\n questions: data.questions,\n quiz: { ...data, duration: convertDurationStringToMinutes(data.duration) },\n loading: false,\n })\n }).catch(err => {\n this.setState({\n loading: false,\n snackMessage: { type: \"error\", message: readableServerError(err) },\n })\n })\n }\n\n onAddQuestion = (e) => {\n\n // when someone clicks on th Add module button, an empty map is added to the \n // `syllabusSection` array in state. and then edit=True property is set for that item.\n this.setState({\n questions: [...this.state.questions,\n {\n number: this.state.questions.length,\n possible_answers: [],\n genre: \"multiple-choice\"\n }],\n saveChanges: true\n })\n\n }\n\n onEditQuestion = (id, data, command) => {\n let allQuestions = this.state.questions\n let question = allQuestions[id]\n if (command === \"delete\") {\n allQuestions.splice(id, 1);\n\n } else {\n\n question = { ...question, ...data }\n allQuestions[id] = question\n }\n this.setState({\n questions: allQuestions,\n saveChanges: true,\n })\n }\n onQuizChange = (e) => {\n this.setState({ quiz: { ...this.state.quiz, [e.target.name]: e.target.value }, saveChanges: true })\n }\n\n onSaveQuiz = (e) => {\n let quiz = this.state.quiz\n quiz.questions = this.state.questions\n quiz.duration = this.state.quiz.duration *60\n // console.log(this.state.questions);\n\n this.setState({\n loading: true,\n snackMessage: { type: null, message: null },\n })\n quizCreateUpdate(this.state.quiz).then((data) => {\n this.setState({\n quiz: {\n ...this.state.quiz, ...data,\n duration: convertDurationStringToMinutes(data.duration)\n },\n questions: data.questions || this.state.questions,\n snackMessage: { type: \"success\", message: \"Quiz succesfully saved\" },\n loading: false,\n saveChanges: false,\n\n })\n }).catch(err => {\n this.setState({\n snackMessage: { type: \"error\", message: readableServerError(err) },\n loading: false,\n })\n })\n }\n\n\n render() {\n // console.log(this.state.quiz.duration);\n\n return (\n \n \n \n\n {/* titile */}\n\n {/* Instructions to hte quiz */}\n\n {/* Listing the questions. Questions is a combination of multiple chose and typed choice */}\n
    \n \n\n \n {\n await this.setState({ quiz: { ...this.state.quiz, published: !this.state.quiz.published } });\n this.onSaveQuiz()\n }}\n >\n {this.state.loading ?\n <>\n \n Loading...\n \n :\n <>{this.state.quiz.published ? \"Published\" : \"Publish\"}\n }\n \n \n {\n this.state.loading ?\n <>\n \n Loading...\n \n :\n\n <> {this.state.saveChanges ? \"Save Changes\" : \"Saved!\"}\n {!this.state.saveChanges && }\n \n }\n\n \n \n\n\n {\n this.state.questions.map((question, i) =>\n )\n }\n\n\n \n \"add\n \n ADD A QUESTION\n \n\n \n\n\n
    \n\n\n\n\n \n \n Settings\n \n \n \"info\n Pass Mark:\n \n \n \n \"info\n Questions per quiz:\n \n \n \n \"info\n Duration (mins):\n \n \n \n
    \n\n )\n }\n}\n\nexport default QuizLab;\n\n\n\n\nconst QuestionPageContainer = styled.div`\n\n margin: 1em;\n display: flex;\n\n .questionDivContainer{\n max-width: 80%;\n width:80%;\n margin: 1em;\n\n .pageHeader{\n position: sticky;\n top: 0;\n }\n }\n\n .pc-resultCard{\n position: sticky;\n top: 10%;\n }\n label{\n color: black;\n margin: 1em;\n select{\n margin: 0 1em;\n padding: 0.5em;\n font-size: 1em;\n }\n\n }\n button{\n img{\n margin: 0 5px;\n }\n }\n\n @media only screen and (max-width: 768px){\n flex-flow: wrap;\n margin: 5% 0;\n width: auto;\n\n .questionDivContainer{\n max-width: 100%;\n width:100%;\n margin: auto;\n padding: 0 5%;\n\n .pageHeader{\n margin: 1em auto;\n width: auto;\n }\n div{\n flex-flow: wrap;\n input{\n width: 80%;\n font-size: 1em;\n padding: 10px;\n margin: 10px 0;\n margin: 5px 0 0;\n }\n select{\n margin: 0.5em 1em;\n }\n }\n\n & > button{\n margin: auto;\n }\n \n }\n .pc-resultCard{\n position: relative;\n width: auto;\n }\n \n }\n\n`","import React from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText, HightlightedSpan } from '../../components/highlightedText';\nimport { Link } from 'react-router-dom'\nimport { Card } from \"../../components/card\";\nimport QuizListIcon from \"../../assets/icons/quiz_list.svg\";\nimport DeleteIcon from \"../../assets/icons/trash-can.svg\";\nimport EditIcon from \"../../assets/icons/pencil.svg\";\nimport DeleteIllustration from \"../../assets/illustrations/delete.svg\";\nimport { numberingShortnerReadable } from '../../utils/utilFnx';\nimport { Button } from '../uiComponents/button';\nimport AppModal from '../uiComponents/modal';\nimport { deleteQuiz } from '../../utils/api/quizApi';\n\n\n\nclass QuizListItem extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n deleteModal: false,\n }\n }\n\n onDeleteQuiz = (id) => {\n deleteQuiz(id).then(data => {\n window.location.reload();\n })\n }\n\n render() {\n return (\n\n \n\n \n \"quizIcon\"\n \n\n \n {this.props.data.title}\n\n {this.props.data.published ?\n \n Published\n \n :\n \n UnPublished\n \n }\n \n \n Updated: {new Date(this.props.data.updated_datetime).toDateString()}\n \n \n\n \n \n \n Pass: {this.props.data.pass_percent}%\n \n \n Taken by: {numberingShortnerReadable(this.props.data.attempts)}\n \n \n\n \n \n \"edit\n \n this.setState({ deleteModal: true })}\n >\n \"delete\n \n \n this.onDeleteQuiz(this.props.data.id)}\n header=\"Confirm Delete Action\"\n primaryButton=\"Go ahead!\"\n handleClose={() => this.setState({ deleteModal: false })}\n message={`Are you sure you want to delete this quiz titled, ${this.props.data.title}? Note that this action cannot be undone. Once you delete the quiz, it is deleted forever.`} />\n\n \n\n )\n }\n\n}\n\nexport default QuizListItem\n\n\nconst QuizListItemContainer = styled.div`\n display: flex;\n padding: 1em;\n margin: 0.5em 1em 1em;\n align-items: center;\n justify-content: space-between;\n border: solid 2px black;\n background-color: white;\n\n .editIcon{\n padding: 15px;\n background-color: rgba(38,166,91,0.2);\n text-decoration: none;\n border-radius: 0.5em;\n }\n &:hover{\n border-color: #a93b3f;\n box-shadow: 0px 3px 6px #00000029;\n }\n\n @media only screen and (max-width: 768px) {\n display: block;\n div{\n width: auto;\n }\n }\n \n`","import React from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Link } from 'react-router-dom'\nimport { Card } from \"../../components/card\";\nimport QuizListItem from \"../../components/quiz/quizListItem\";\nimport AddQuizIcon from '../../assets/icons/add_white.svg'\nimport { getQuizzes } from '../../utils/api/quizApi';\nimport SnackBar from 'my-react-snackbar';\nimport RingLoader from \"react-spinners/RingLoader\";\nimport { readableServerError, removeItemsWithPrefixFromLocal } from '../../utils/utilFnx';\n\n\n\n\nclass Quizzes extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n quizzes: [],\n loading: false,\n errorMessage: null,\n }\n }\n\n\n componentDidMount = () => {\n this.getUserQuizData()\n }\n\n getUserQuizData = () => {\n this.setState({\n loading: true\n })\n getQuizzes()\n .then(data => {\n // console.log(data)\n removeItemsWithPrefixFromLocal(\"quizList-\")\n\n this.setState({\n quizzes: data,\n loading: false,\n })\n }).catch((err) => {\n this.setState({\n loading: false,\n errorMessage: readableServerError(err)\n })\n\n\n });\n }\n\n\n render = () => {\n\n return (\n \n \n \n\n Quiz List\n \n \n\n \"addQuiz\"\n \n Create Quiz\n \n \n \n \n\n {this.state.loading ?\n \n \n
    \n
    \n\n Loading...\n
    \n : this.state.quizzes.length === 0\n ? \"You have not created any quiz yet.\"\n :\n this.state.quizzes.map((quiz, i) => )\n }\n\n\n
    \n\n )\n }\n\n}\n\nexport default Quizzes\n\nconst CoursesContainer = styled.div`\n\n margin: 1em;\n\n .courseDiv{\n display: flex;\n flex-flow: wrap;\n }\n\n a{\n text-decoration: none;\n background-color: #39903F;\n margin: 0.5em 1em; \n padding: 10px;\n border-radius: 0.25em;\n }\n`\n\n","import APIClient from './httpClient';\n\nexport const overallOverviewAnalytics = async () => {\n /* get high level analytics data*/\n const api = new APIClient();\n const endpoint = '/overview/';\n\n const { data } = await api.AnalyticsApi.get(endpoint);\n return data;\n}\n\nexport const topicsOverviewAnalytics = async () => {\n /* get high level analytics data*/\n const api = new APIClient();\n const endpoint = '/overview/topics/';\n\n const { data } = await api.AnalyticsApi.get(endpoint);\n return data;\n}\n\nexport const quizzesOverviewAnalytics = async () => {\n /* get high level analytics data*/\n const api = new APIClient();\n const endpoint = '/overview/quizzes/';\n\n const { data } = await api.AnalyticsApi.get(endpoint);\n return data;\n}\n\nexport const videosOverviewAnalytics = async () => {\n /* get high level analytics data*/\n const api = new APIClient();\n const endpoint = '/overview/videos/';\n\n const { data } = await api.AnalyticsApi.get(endpoint);\n return data;\n}\n","import React from 'react';\nimport {\n Area,\n AreaChart, ResponsiveContainer,\n XAxis, YAxis, Tooltip, Legend\n} from 'recharts';\n\nimport { numberingShortnerReadable } from '../../utils/utilFnx';\n\n\nclass AnalyticsGraph extends React.Component {\n\n makeDummyDataPoint = (dataSeriesMeta) => {\n let dummy = {\n [dataSeriesMeta.x_axis.data]: \"\",\n }\n\n dataSeriesMeta.y_axis.forEach(y => {\n dummy[y.data]= 0\n });\n\n return [dummy]\n\n\n }\n\n render = () => {\n const graphColors = this.props.graphColors\n const dataSeries = this.props.dataSeries\n const dataSeriesMeta = this.props.dataSeriesMeta\n return \n \n \n {\n dataSeriesMeta.y_axis.map((y_axis, y_i) =>\n \n \n \n )\n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n dataSeriesMeta.y_axis.map((y_axis, y_i) =>\n \n )\n }\n\n \n \n\n }\n}\n\nexport default AnalyticsGraph","import React from 'react';\nimport { Card } from \"../../components/card\";\nimport { HighlightedText } from '../../components/highlightedText';\nimport { durationReadableFromNumber } from '../../utils/utilFnx';\n\n\n\nclass SingleAnalytics extends React.Component {\n\n render =()=>{\n return this.props.singles.map((single, s_i) => {\n return \n \n {single.unit === \"time\" ? durationReadableFromNumber(single.data) || 0 : single.data || 0}\n \n \n {single.presentation}\n \n \n })\n }\n}\nexport default SingleAnalytics","\nimport React from 'react';\nimport { Card } from \"../../components/card\";\nimport { HighlightedText } from '../../components/highlightedText';\n\n\nclass UnavailableAnalytics extends React.Component{\n\n render =()=>{\n return \n \n No {this.props.content}\n \n \n }\n}\n\nexport default UnavailableAnalytics","import React from 'react';\nimport { Card } from \"../../components/card\";\nimport { HighlightedText } from '../../components/highlightedText';\nimport PublishedIcon from '../../assets/icons/checkmark_green.svg'\nimport UnPublishedIcon from '../../assets/icons/minus_red.svg'\nimport { timeSince } from '../../utils/utilFnx';\nimport { topicsOverviewAnalytics } from '../../utils/api/analyticsApi';\nimport PulseLoader from \"react-spinners/PulseLoader\";\nimport { css } from \"@emotion/react\";\nimport TopicDefaultImg from '../../assets/images/defaultTopic.jpg'\nimport { LogoImg } from \"../uiComponents/uiElements\";\nimport AnalyticsGraph from \"./analyticsGraph\";\nimport SingleAnalytics from \"./singleAnalytics\";\nimport UnavailableAnalytics from './unavailableAnalytics';\n\nconst graphColors = [\"#8884d8\", \"#82ca9d\", \"#2e3131\", \"#6c7a89\", \"#8e44ad\"]\n\nclass TopicAnalytics extends React.Component {\n\n constructor(props) {\n super();\n\n this.state = {\n data: [],\n loading: false\n }\n }\n\n componentDidMount = () => {\n this.getTopicsOverViewAnalyticsData()\n }\n getTopicsOverViewAnalyticsData = () => {\n this.setState({\n loading: true\n })\n topicsOverviewAnalytics().then((data) => {\n this.setState({\n loading: false,\n data: data\n })\n }).catch((err)=>{\n throw err\n })\n }\n\n\n render = () => {\n \n if (this.state.loading) {\n return \n }\n else {\n if (this.state.data.length) {\n return this.state.data.map((topic, i) =>\n \n \n \n\n \n {topic.title}\n {topic.published ?\n \"published\"\n :\n \"unpublished\"\n }\n \n \n {topic.description.substr(0, 150)}\n \n \n Created: {timeSince(topic.created_datetime)}\n \n \n Updated: {new Date(topic.updated_datetime).toLocaleString()}\n \n \n\n \n\n \n\n \n \n )\n \n } else {\n return \n }\n\n }\n }\n}\n\nexport default TopicAnalytics\n\nconst LoadingAnimationStyle = css`\n text-align: center;\n margin: 15vh auto;\n display: block;\n`;\n","import React from 'react';\nimport { Card } from \"../../components/card\";\nimport { HighlightedText } from '../../components/highlightedText';\nimport PublishedIcon from '../../assets/icons/checkmark_green.svg'\nimport UnPublishedIcon from '../../assets/icons/minus_red.svg'\nimport { timeSince } from '../../utils/utilFnx';\nimport { videosOverviewAnalytics } from '../../utils/api/analyticsApi';\nimport PulseLoader from \"react-spinners/PulseLoader\";\nimport { css } from \"@emotion/react\";\nimport VideoIcon from '../../assets/icons/video_wine.svg';\nimport { LogoImg } from \"../uiComponents/uiElements\";\nimport AnalyticsGraph from \"./analyticsGraph\";\nimport SingleAnalytics from \"./singleAnalytics\";\nimport UnavailableAnalytics from './unavailableAnalytics';\n\n\nconst graphColors = [\"#663399\", \"#e87e04\", \"#cf000f\", \"#8e44ad\", \"#a537fd\",]\n\nclass VideoAnalytics extends React.Component {\n\n constructor(props) {\n super();\n\n this.state = {\n data: [],\n loading: false\n }\n }\n\n componentDidMount = () => {\n this.getVideoOverViewAnalyticsData()\n }\n getVideoOverViewAnalyticsData = () => {\n this.setState({\n loading: true\n })\n videosOverviewAnalytics().then((data) => {\n this.setState({\n loading: false,\n data: data\n })\n }).catch((err) => {\n throw err\n })\n }\n\n\n render = () => {\n\n if (this.state.loading) {\n return \n }\n else {\n if (this.state.data.length) {\n return this.state.data.map((video, i) =>\n \n \n \n\n \n {video.title}\n {video.published ?\n \"published\"\n :\n \"unpublished\"\n }\n \n \n {video.description?.substr(0, 150)}\n \n \n Created: {timeSince(video.created_datetime)}\n \n \n Updated: {new Date(video.updated_datetime).toLocaleString()}\n \n \n\n \n\n \n \n \n )\n\n } else {\n return \n }\n }\n }\n}\n\nexport default VideoAnalytics\n\nconst LoadingAnimationStyle = css`\n text-align: center;\n margin: 15vh auto;\n display: block;\n`;\n","import React from 'react';\nimport { Card } from \"../../components/card\";\nimport { HighlightedText } from '../../components/highlightedText';\nimport PublishedIcon from '../../assets/icons/checkmark_green.svg'\nimport UnPublishedIcon from '../../assets/icons/minus_red.svg'\nimport { durationReadableFromNumber, timeSince } from '../../utils/utilFnx';\nimport { quizzesOverviewAnalytics } from '../../utils/api/analyticsApi';\nimport PulseLoader from \"react-spinners/PulseLoader\";\nimport { css } from \"@emotion/react\";\nimport QuizIcon from '../../assets/icons/quiz_list.svg';\nimport { LogoImg } from \"../uiComponents/uiElements\";\nimport AnalyticsGraph from \"./analyticsGraph\";\nimport SingleAnalytics from \"./singleAnalytics\";\nimport UnavailableAnalytics from './unavailableAnalytics';\n\n\nconst graphColors = [\"#cf000f\", \"#8e44ad\", \"#a537fd\", \"#663399\", \"#e87e04\",]\n\nclass QuizAnalytics extends React.Component {\n\n constructor(props) {\n super();\n\n this.state = {\n data: [],\n loading: false\n }\n }\n\n componentDidMount = () => {\n this.getVideoOverViewAnalyticsData()\n }\n getVideoOverViewAnalyticsData = () => {\n this.setState({\n loading: true\n })\n quizzesOverviewAnalytics().then((data) => {\n this.setState({\n loading: false,\n data: data\n })\n }).catch((err) => {\n throw err\n })\n }\n\n\n render = () => {\n\n if (this.state.loading) {\n return \n }\n else {\n if (this.state.data.length) {\n return this.state.data.map((quiz, i) =>\n \n \n \n\n \n {quiz.title}\n {quiz.published ?\n \"published\"\n :\n \"unpublished\"\n }\n \n \n Duration: {durationReadableFromNumber(quiz.duration)}\n
    \n Questions per quiz: {quiz.questions_per_quiz || \"All questions\"}\n
    \n Pass mark: {quiz.pass_mark}\n
    \n \n Created: {timeSince(quiz.created_datetime)}\n \n \n Updated: {new Date(quiz.updated_datetime).toLocaleString()}\n \n
    \n\n \n\n \n \n \n
    )\n } else {\n return \n }\n }\n }\n}\n\nexport default QuizAnalytics\n\nconst LoadingAnimationStyle = css`\n text-align: center;\n margin: 15vh auto;\n display: block;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Card } from \"../../components/card\";\nimport { NavLink, Redirect, Route, Switch } from 'react-router-dom';\nimport { durationReadableFromNumber } from '../../utils/utilFnx';\nimport { overallOverviewAnalytics } from '../../utils/api/analyticsApi';\nimport TopicAnalytics from '../../components/analytics/topic';\nimport VideoAnalytics from '../../components/analytics/video';\nimport QuizAnalytics from '../../components/analytics/quiz';\n\n\nclass Analytics extends React.Component {\n\n constructor(props) {\n super();\n\n this.state = {\n data: { overview: [] },\n loading: false\n }\n\n }\n\n componentDidMount = () => {\n this.getOverallOverViewAnalyticsdata()\n }\n\n getOverallOverViewAnalyticsdata = () => {\n this.setState({\n loading: true\n })\n overallOverviewAnalytics().then((data) => {\n this.setState({\n loading: false,\n data: data\n })\n }).catch((err) => {\n throw err\n })\n }\n\n /* DEBUG: After spending 4 hours, i have come to realise that \n creating a render function for a class component this way \n `render =() => {}` creates problems when i later on try to create a sub component in the class, such as: \n render =()=>{return } NOTE: breaks on production. \n IT WELL LEGIT BREAK THE ENTIRE APPLICATION IN PRODUCTION \n\n Instead, create the function like this if you plan to do that:\n render (){ return } this works!\n */\n\n render() {\n // console.log(this.state);\n return (\n \n
    \n Analytics\n \n
    \n\n Overview \n\n \n Last 28 days {this.state.loading && \" (Loading...) \"}\n\n \n {\n this.state.data.overview.map((overview, i) => )\n }\n\n \n \n\n\n \n \n \n Topics\n \n\n \n \n \n Videos\n \n\n \n \n \n Quizzes\n \n\n \n \n\n \n\n \n \n \n \n\n \n\n
    \n\n );\n }\n\n overViewItem = (props) => {\n return (\n \n \n {props.data.unit === \"time\"\n ? durationReadableFromNumber(props.data.value) || 0 : props.data.value || 0}\n
    \n {props.data.title}\n
    \n )\n }\n}\n\nexport default Analytics\n\n\nconst AnalyticsPageContainer = styled.div`\n\n a{\n text-decoration: none;\n margin: 10px 20px;\n \n border-radius: 5px;\n\n &.active{\n background-color: rgba(232, 232, 232, 0.6);\n border-bottom: 3px solid #923D41;\n }\n }\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 5% 2%;\n \n h1{\n width: 90%;\n margin: 2%;\n }\n .tab{\n padding: 0 2%;\n margin: 2%;\n align-items: center;\n justify-content: space-between;\n a{\n margin: 0;\n padding: 3% 4%;\n }\n }\n div{\n width: -webkit-fill-available;\n width: -moz-available;\n flex-flow: wrap;\n }\n }\n\n`","import APIClient from './httpClient';\n\nexport const postFeedback = async (feedback) => {\n /* post feedback\n */\n const api = new APIClient();\n const endpoint = '/feedback/';\n\n const { data } = await api.DialogueApi.post(endpoint, feedback);\n return data;\n\n}\n","\n\nimport React, { Component } from 'react';\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Card } from \"../../components/card\";\nimport { Button } from '../../components/uiComponents/button';\nimport { Input, TextArea } from '../../components/input';\nimport ScaleLoader from \"react-spinners/ScaleLoader\";\nimport { postFeedback } from '../../utils/api/dialogueApi';\nimport { readableServerError } from '../../utils/utilFnx';\nimport SnackBar from 'my-react-snackbar';\n\n\nclass Feedback extends Component {\n\n constructor(props) {\n super();\n this.state = {\n feedback: {\n subject: \"\",\n message: \"\",\n anonymous: false,\n },\n loading: false,\n snackMessage: { type: null, message: null },\n }\n }\n\n handleChange = (e) => {\n this.setState({\n feedback: { ...this.state.feedback, [e.target.name]: e.target.value, },\n });\n }\n\n handleCancel = () => {\n this.setState({\n feedback: {\n subject: \"\",\n message: \"\",\n anonymous: false,\n }\n })\n }\n\n handleSend = () => {\n this.setState({\n loading: true,\n snackMessage: { type: null, message: null },\n })\n\n postFeedback(this.state.feedback).then((data) => {\n\n this.handleCancel()\n this.setState({\n loading: false,\n snackMessage: { type: \"success\", message: \"Feedback posted successfully! We really appreciate this.\" },\n\n })\n\n }).catch(err => {\n this.setState({\n loading: false,\n snackMessage: { type: \"error\", message: readableServerError(err) },\n\n })\n\n })\n }\n\n\n render = () => {\n\n return (\n \n \n
    \n Feedback\n \n \n We build the best product for you through your feedback. Thank you in advance.\n \n
    \n\n \n \n Subject\n \n\n \n \n Message\n \n \n\n \n this.setState({ feedback: { ...this.state.feedback, [e.target.name]: e.target.checked } })}\n\n />\n Be Anonymous\n \n \n If you feel uncomfortable letting us know your identity, feel free to remain anonymous. Regardless, we don't bite.\n \n\n\n {\n this.state.loading ?\n \n :\n \n \n\n \n\n }\n\n \n\n\n
    \n\n );\n }\n\n}\n\nexport default Feedback\n\n\nconst FeedbackPageContainer = styled.div`\n\n\n`","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport AdminSideBar from '../components/adminSideBar'\nimport TopBar from '../components/topBar'\nimport { Switch, Route, Redirect } from 'react-router-dom';\nimport { isLoggedIn } from '../utils/api/accountApi'\nimport ProfileSettingsPage from '../pages/authorized/settings'\nimport TopicCreateEdit from '../pages/authorized/topicLab'\nimport TopicList from '../pages/authorized/topicsList'\nimport QuestionsCreateEdit from '../pages/authorized/quizLab'\nimport QuizList from '../pages/authorized/quizList'\nimport Analytics from '../pages/authorized/analytics'\nimport FeedBack from '../pages/authorized/feedback'\n\n\nclass Authorized extends Component {\n\n componentDidMount = () => {\n this.loggedIn()\n }\n\n loggedIn = () => {\n isLoggedIn().then(data => {\n if (!data.response) {\n this.props.history.push(\"/auth/login\");\n }\n\n }).catch((e) => {\n this.props.history.push(\"/auth/login\");\n\n // console.log(e.response);\n console.log(\n \"You're not logged in.😠\"\n );\n });\n }\n\n\n render() {\n // console.log(`${this.props.match.path}`); // debug statement for checking what route is being called\n\n return (\n \n\n {/* makes it only appear for big screens only */}\n {/* on smaller screens, check TopBar class */}\n \n \n \n {\n \n {/* TODO: dashboard feature would be coming in later */}\n {/* */}\n {/* */}\n \n \n \n \n \n \n \n \n \n \n\n \n }\n \n \n\n )\n }\n}\n\nexport default Authorized;\n\n\n\nconst UserContainer = styled.div`\n width:100%;\n display:flex;\n position: fixed;\n top: 0;\n bottom:0;\n\n`\nconst UserBody = styled.div`\n background-color: #F7F9FB;\n min-width: 85%;\n min-height: 90vh;\n overflow: scroll;\n overflow-y:scroll;\n overflow-x:hidden;\n padding-bottom: 7vh;\n\n @media only screen and (max-width: 768px){\n width: 100%;\n }\n\n`\n","\nimport React, { Component } from 'react';\nimport { Card } from '../../components/card'\nimport { Button } from '../../components/uiComponents/button'\nimport { login } from '../../utils/api/accountApi'\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Input } from '../../components/input';\nimport { readableServerError, setItemToLocal } from '../../utils/utilFnx';\nimport ClipLoader from \"react-spinners/ClipLoader\";\n\n\nclass AdminLogin extends Component {\n\n\n constructor(props) {\n super(props);\n\n this.state = {\n email: \"\",\n password: \"\",\n loading: false,\n errorMessage: null\n }\n }\n\n\n\n handleChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value,\n errorMessage: null,\n });\n // console.log(this.state)\n }\n\n handleSubmit = (e) => {\n e.preventDefault();\n this.setState({ loading: true })\n login(this.state.email, this.state.password)\n .then(data => {\n // console.log(data);\n this.setState({ loading: false })\n setItemToLocal(\"a_bearer\", data.token)\n setItemToLocal(\"email\", this.state.email)\n setItemToLocal(\"f_name\", data.first_name)\n setItemToLocal(\"l_name\", data.last_name)\n setItemToLocal(\"username\", data.username)\n setItemToLocal(\"u_id\", data.id)\n setItemToLocal(\"profile_pic\",data.profile_pic) // set profile pic \n\n\n this.props.history.push('/')\n })\n .catch(error => {\n console.log(error.message)\n this.setState({\n loading: false,\n errorMessage: readableServerError(error),\n })\n });\n }\n\n\n render() {\n\n return (\n \n \n Skideo Lab\n \n \n
    \n \n\n \n {this.state.errorMessage &&

    {this.state.errorMessage}

    }\n\n \n \n {!this.state.loading && LOGIN}\n \n\n Forgot password?\n\n \n
    \n Don't have an account? Sign up.\n
    \n\n );\n }\n}\nexport default AdminLogin;\n\n\n\nconst LoginFormContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width:25%;\n\n input{\n border: 1px solid black;\n border-radius: 3px;\n display: block;\n padding: 10px 20px;\n margin: 25px auto;\n width: 80%;\n height: 1.5em;\n\n text-align: left;\n font-size: 12px;\n font-weight: bold;\n letter-spacing: 0;\n color: #923D41;\n }\n\n\n input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #923D41;\n font-weight: normal;\n opacity: 1; /* Firefox */\n }\n\n\n button{\n display: block;\n height: 40px;\n }\n\n a{\n text-decoration: none;\n color: #923D41;\n font-size: 12px;\n text-align: center;\n display: block;\n margin-top: 2em;\n }\n\n .forgotPassword{\n color: #240046;\n }\n\n p{\n color: #923D41;\n text-align: center;\n margin: 0 auto;\n background: rgba(146, 61, 65, 0.1);\n width: fit-content;\n padding: 0.5em;\n border-radius: 0.5em\n }\n\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 20px auto;\n width:90%;\n\n }\n\n\n`\n\n","/*\nCHAT SECTION FOR PAGE:\n\nLet's place all our comments that have nothing to do with describing functionalities of the program here.\nLike conversations and ideas. It would make the structure of the code cleaner to read and it would make tracking of communication easier.\n\nGuidelines:\nWhenever you want to place a comment here ensure that you mark it with your name and the date. \nFor example:\nDavid (16/02/2021) : I placed this chat section in the code. Do you like it?\n\n\n------------------------------------------------------------------------------------------------------------------------------------------------------\n\n\n*/\n\n\nimport React, { Component } from 'react';\nimport { Card } from '../../components/card'\nimport { Button } from '../../components/uiComponents/button'\nimport { registerUser } from '../../utils/api/accountApi'\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Input } from '../../components/input';\nimport { readableServerError, setItemToLocal } from '../../utils/utilFnx';\nimport ClipLoader from \"react-spinners/ClipLoader\";\n\n\nclass AdminSignUp extends Component {\n\n\n constructor(props) {\n super(props);\n\n this.state = {\n email: \"\",\n first_name: \"\",\n last_name: \"\",\n organization: \"\",\n password: \"\",\n confirm_password: \"\",\n loading: false,\n errorMessage: null\n }\n }\n\n handleChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value,\n errorMessage: null,\n });\n }\n\n\n handleSubmit = (e) => {\n e.preventDefault();\n if (this.state.password !== this.state.confirm_password) {\n this.setState({ errorMessage: \"Password mismatch\" })\n return\n }\n\n else {\n this.setState({ loading: true })\n registerUser(this.state)\n .then(data => {\n console.log(data);\n this.setState({ loading: false })\n setItemToLocal(\"email\", this.state.email)\n setItemToLocal(\"a_bearer\", data.token)\n setItemToLocal(\"f_name\", data.first_name)\n setItemToLocal(\"l_name\", data.last_name)\n setItemToLocal(\"username\", data.username)\n setItemToLocal(\"u_id\", data.id)\n this.props.history.push('/auth/activate')\n })\n .catch(error => {\n console.log(error.message)\n this.setState({\n loading: false,\n errorMessage: readableServerError(error),\n })\n });\n }\n\n }\n\n render() {\n\n return (\n \n \n Sign Up to Skideo!\n \n \n
    \n \n \n \n \n \n {this.state.errorMessage &&

    {this.state.errorMessage}

    }\n \n \n {!this.state.loading && Sign Up}\n \n \n
    \n Already have an account? Sign In\n
    \n\n );\n }\n}\nexport default AdminSignUp;\n\n\nconst SignUpFormContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width:25%;\n\n input{\n border: 1px solid black;\n border-radius: 3px;\n display: block;\n padding: 10px 20px;\n margin: 25px auto;\n width: 80%;\n height: 1.5em;\n\n text-align: left;\n font-size: 12px;\n font-weight: bold;\n letter-spacing: 0;\n color: #923D41;\n }\n\n\n input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #923D41;\n font-weight: normal;\n opacity: 1; /* Firefox */\n }\n\n\n button{\n display: block;\n height: 40px;\n }\n\n a{\n text-decoration: none;\n color: #923D41;\n font-size: 12px;\n text-align: center;\n display: block;\n margin-top: 2em;\n }\n\n p{\n color: #923D41;\n text-align: center;\n margin: 0 auto;\n background: rgba(146, 61, 65, 0.1);\n width: fit-content;\n padding: 0.5em;\n border-radius: 0.5em\n }\n\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 20px auto;\n width:90%;\n\n }\n\n\n`\n","\nimport React, { Component } from 'react';\nimport { Card } from '../../components/card'\nimport { Button } from '../../components/uiComponents/button'\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Input } from '../../components/input';\nimport { forgottenPassword } from '../../utils/api/accountApi';\nimport { readableServerError } from '../../utils/utilFnx';\nimport ClipLoader from \"react-spinners/ClipLoader\";\nimport EmailIcon from \"../../assets/icons/email.svg\";\n\n\nclass ForgotPassword extends Component {\n\n\n constructor(props) {\n super();\n\n this.state = {\n email: null,\n loading: false,\n submitted: false,\n errorMessage: null\n }\n }\n\n\n handleChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value\n });\n // console.log(this.state)\n }\n\n handleSubmit = (e) => {\n e.preventDefault();\n this.setState({ loading: true })\n forgottenPassword({ email: this.state.email }).then(data => {\n this.setState({ loading: false, submitted: true })\n\n }).catch(err => {\n this.setState({\n loading: false,\n errorMessage: readableServerError(err),\n })\n })\n }\n\n\n render() {\n\n return (\n \n {this.state.submitted ?\n <>\n Check your email\n \n \n \n Back to Login\n\n \n \n :\n <> \n Provide your e-mail\n \n \n\n
    \n \n {this.state.errorMessage &&

    {this.state.errorMessage}

    }\n \n
    \n
    \n \n }\n
    \n\n );\n }\n}\nexport default ForgotPassword;\n\n\n\n\nconst ForgotPasswordEmailFormContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width:25%;\n\n input{\n border: 1px solid black;\n border-radius: 3px;\n display: block;\n padding: 10px 20px;\n margin: 25px auto;\n width: 80%;\n height: 1.5em;\n\n text-align: left;\n font-size: 12px;\n font-weight: bold;\n letter-spacing: 0;\n color: #923D41;\n }\n\n\n input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #923D41;\n font-weight: normal;\n opacity: 1; /* Firefox */\n }\n\n\n button{\n display: block;\n height: 40px;\n }\n\n a{\n text-decoration: none;\n color: #923D41;\n font-size: 12px;\n text-align: center;\n display: block;\n margin-top: 2em;\n }\n\n p{\n color: #923D41;\n text-align: center;\n margin: auto;\n background: rgba(146, 61, 65, 0.1);\n width: fit-content;\n padding: 0.5em;\n border-radius: 0.5em\n }\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 20px auto;\n width:90%;\n }\n\n\n`\n\n","\nimport React from 'react';\nimport { Card } from '../../components/card'\nimport { Button } from '../../components/uiComponents/button'\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Input } from '../../components/input';\nimport { resetPassword } from '../../utils/api/accountApi';\nimport { readableServerError } from '../../utils/utilFnx';\nimport ClipLoader from \"react-spinners/ClipLoader\";\n\n\nclass ResetPassword extends React.Component {\n\n\n constructor(props) {\n super(props);\n\n this.state = {\n newPassword: null,\n confirmNewPassword: null,\n resetID: null,\n loading: false,\n errorMessage: null\n }\n }\n\n handleChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value\n });\n // console.log(this.state)\n }\n\n\n handleSubmit = (e) => {\n e.preventDefault();\n if (this.state.newPassword && this.state.newPassword === this.state.confirmNewPassword) {\n this.setState({ loading: true });\n resetPassword({\n password: this.state.newPassword,\n extra_data: this.props.match.params.resetID\n }).then(data => {\n this.setState({ loading: false });\n\n this.props.history.push('/auth/login')\n\n }).catch(err => {\n console.log(err.message)\n this.setState({\n loading: false,\n errorMessage: readableServerError(err),\n })\n\n })\n\n } else {\n this.setState({\n errorMessage: \"Password Mismatch\"\n })\n\n }\n\n }\n\n\n render() {\n\n return (\n \n \n Reset Password\n \n \n
    \n \n \n {this.state.errorMessage &&

    {this.state.errorMessage}

    }\n \n
    \n
    \n
    \n\n );\n }\n}\nexport default ResetPassword;\n\n\nconst ResetPasswordFormContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width:25%;\n\n input{\n border: 1px solid black;\n border-radius: 3px;\n display: block;\n padding: 10px 20px;\n margin: 25px auto;\n width: 80%;\n height: 1.5em;\n\n text-align: left;\n font-size: 12px;\n font-weight: bold;\n letter-spacing: 0;\n color: #923D41;\n }\n\n\n input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #923D41;\n font-weight: normal;\n opacity: 1; /* Firefox */\n }\n\n\n button{\n display: block;\n height: 40px;\n }\n\n a{\n text-decoration: none;\n color: #923D41;\n font-size: 12px;\n text-align: center;\n display: block;\n margin-top: 2em;\n }\n\n p{\n color: #923D41;\n text-align: center;\n margin: 0 auto;\n background: rgba(146, 61, 65, 0.1);\n width: fit-content;\n padding: 0.5em;\n border-radius: 0.5em\n }\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 20px auto;\n width:90%;\n }\n\n\n`\n","\nimport React, { Component } from 'react';\nimport { Card } from '../../components/card'\nimport { Button } from '../../components/uiComponents/button'\nimport styled from 'styled-components';\nimport { HighlightedText } from '../../components/highlightedText';\nimport { Input } from '../../components/input';\nimport { activateAccount } from '../../utils/api/accountApi';\nimport { getItemFromLocal, readableServerError, setItemToLocal } from '../../utils/utilFnx';\nimport ClipLoader from \"react-spinners/ClipLoader\";\n\n\n\nclass ActivateAccount extends Component {\n\n\n constructor(props) {\n super();\n\n this.state = {\n code: null,\n loading: false,\n errorMessage: null\n }\n }\n\n\n handleChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value\n });\n // console.log(this.state)\n }\n\n handleSubmit = (e) => {\n e.preventDefault();\n this.setState({ loading: true })\n activateAccount({ extra_data: `${getItemFromLocal(\"u_id\")}-${this.state.code}` }).then(data => {\n console.log(data);\n this.setState({ loading: false })\n setItemToLocal(\"a_bearer\", data.token)\n setItemToLocal(\"f_name\", data.first_name)\n setItemToLocal(\"l_name\", data.last_name)\n setItemToLocal(\"username\", data.username)\n setItemToLocal(\"u_id\", data.id)\n setItemToLocal(\"profile_pic\", data.profile_pic) // set profile pic \n\n this.props.history.push('/')\n }).catch(error => {\n\n const r_err = readableServerError(error)\n console.log(error.message)\n\n if (r_err === \"Unexpected token u in JSON at position 0\") {\n localStorage.removeItem(\"a_bearer\")\n this.handleSubmit({ preventDefault: () => { } })\n }\n else {\n this.setState({\n loading: false,\n errorMessage: r_err,\n })\n\n }\n });\n\n }\n\n\n render() {\n\n return (\n \n \n Verify Email\n \n \n
    \n \n \n Shortcode sent to email\n \n {this.state.errorMessage &&

    {this.state.errorMessage}

    }\n \n
    \n
    \n
    \n\n );\n }\n}\nexport default ActivateAccount;\n\n\n\n\nconst ActivateAccountEmailFormContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width:25%;\n\n\n input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #1b263b;\n font-weight: normal;\n opacity: 0.5; /* Firefox */\n }\n\n\n button{\n display: block;\n height: 40px;\n }\n\n a{\n text-decoration: none;\n color: #923D41;\n font-size: 12px;\n text-align: center;\n display: block;\n margin-top: 2em;\n }\n\n p{\n color: #923D41;\n text-align: center;\n margin: 0 auto;\n background: rgba(146, 61, 65, 0.1);\n width: fit-content;\n padding: 0.5em;\n border-radius: 0.5em\n }\n\n @media only screen and (max-width: 768px){\n display: block;\n margin: 20px auto;\n width:90%;\n }\n\n\n`\n\n","import React from 'react';\nimport Login from '../pages/unauthorized/login'\nimport SignUp from '../pages/unauthorized/signup'\nimport ForgotPassword from '../pages/unauthorized/forgotPassword'\nimport ResetPassword from '../pages/unauthorized/resetPassword'\nimport { Switch, Route, Redirect } from 'react-router-dom';\nimport ActivateAccount from '../pages/unauthorized/activate'\n\n\n\nclass UnAuthorized extends React.Component {\n\n constructor(props) {\n super();\n this.state = {\n showBroadcast: true\n }\n }\n\n render() {\n return (\n
    \n {/* TODO: take out if a better way of broadcasting new is found */}\n {/* {this.state.showBroadcast &&\n \n\n \n Welcome to the Beta testing of Skideo.\n Please note that a stable server is currently being purchased. As such, you may experience slow loading and refreshing. Please bear with us.\n
    \n
    \n Also, please refrain from putting legitimate data in the fields here. Random data can do for now.\n You would be alerted when this is solved. Thank you.\n
    \n\n {\n this.setState({\n showBroadcast: false\n })\n }}\n >\n Close\n \n } */}\n \n \n \n \n \n \n \n \n
    \n )\n }\n}\n\nexport default UnAuthorized;\n","import './App.css'\nimport { BrowserRouter, Switch, Route, Redirect } from 'react-router-dom'\nimport Authorized from './layouts/authorized'\nimport UnAuthorized from './layouts/unAuthorized'\nimport React from 'react'\n\nexport const AuthContext = React.createContext({\n sighted: null,\n toggleSighted: () => { },\n speechControlsFunction: () => { },\n speechControlsCallBackFunction: () => { },\n})\n\n\n\n\n\n\n\nclass App extends React.Component {\n\n render() {\n return (\n \n \n \n \n \n \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.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\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();\nif (process.env.NODE_ENV !== 'development') {\n console.log = () => {}\n}","module.exports = __webpack_public_path__ + \"static/media/defaultTopic.8f4a58c0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/video_wine.504c6b8f.svg\";"],"sourceRoot":""}