{"version":3,"sources":["webpack:///./app/react/packages/assignments/constants/teacherScores.js","webpack:///./app/react/packages/assignments/constants/tooltips.js","webpack:///./app/react/packages/assignments/constants/studentHomeworkUrl.js","webpack:///./app/react/packages/assignments/components/ShareToGoogleClassRoom.js","webpack:///./app/react/packages/assignments/constants/defaultResult.js","webpack:///./app/react/packages/assignments/utils/getTaskStatusType.js","webpack:///./app/react/packages/assignments/components/AssignmentNotification.js","webpack:///./app/react/packages/assignments/components/AssignmentRowComponent.js","webpack:///./app/react/packages/assignments/components/ClassesOrStudents.js","webpack:///./app/react/packages/assignments/components/DeleteAssignmentModal.js","webpack:///./app/react/packages/assignments/components/ExportHomeworkReportModal.js","webpack:///./app/react/packages/assignments/components/FeedbackNotification.js","webpack:///./app/react/packages/assignments/components/PartialScoreWarning.js","webpack:///./app/react/packages/assignments/components/PostAssignmentModal.js"],"names":["teacherScoreValues","EMPTY_VALUE","HUNDRED_PERCENT","SEVENTYFIVE_PERCENT","FIFTY_PERCENT","TWENTYFIVE_PERCENT","ZERO_PERCENT","SCORING_REQUIRED","FEEDBACK_SENT","COMMENT_SENT","HAS_RESULTS","studentHomeworkUrl","ShareToGoogleClassRoom","url","title","props","useEffect","window","gapi","sharetoclassroom","go","className","data-url","data-size","data-title","data-onsharestart","defaultProps","PropTypes","string","isRequired","defaultResult","status","needsFeedback","hasFeedback","firstScoreTime","firstScore","bestScoreTime","bestScore","getTaskStatusType","AssignmentNotification","taskType","taskTypeHasResult","notification","teacherMarkableTasks","icon","color","weight","fontSize","pt","propTypes","bool","onClick","hoverColor","width","textAlign","px","SelectionButton","styled","TransparentButton","attrs","bg","borderRadius","display","flexDirection","alignItems","justifyContent","pb","position","theme","radii","rounded","shadows","Selection","image","as","fontWeight","ClassesOrStudents","onClassesClick","onStudentsClick","gridTemplateColumns","gridAutoRows","gridGap","height","node","func","DeleteAssignmentModal","isOpen","onClose","homeworkId","onAssignmentCancelled","useState","loading","setLoading","mt","secondary","small","mr","pr","xhr","cancelAssignmentUrl","method","then","number","ExportHomeworkReportModal","reportReady","setReportReady","exportExceededLimit","setExportExceededLimit","createAndRetrieveReport","createHomeworkReportUrl","data","homework_ids","exportId","id","limitExceeded","exceeded_size_limit","getHomeworkReportUrl","retrieveReport","errors","setTimeout","location","overflow","maxHeight","mb","p","flex","py","FeedbackNotification","pendingFeedbackCount","hasFeedbackCount","PartialScoreWarning","isTeacher","contentText","Root","delayDuration","tooltipDelayDuration","Trigger","mx","cursor","Content","Arrow","maxWidth","PostAssignmentModal","lessonTitle"],"mappings":"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","file":"package-assignments.ee390a0f91defa9a2616.chunk.js","sourcesContent":["export const teacherScoreValues = {\n EMPTY_VALUE: '-1',\n HUNDRED_PERCENT: '1.0',\n SEVENTYFIVE_PERCENT: '0.75',\n FIFTY_PERCENT: '0.5',\n TWENTYFIVE_PERCENT: '0.25',\n ZERO_PERCENT: '0.0',\n}\n\nexport const teacherScores = {\n [teacherScoreValues.EMPTY_VALUE]: 'Select...',\n [teacherScoreValues.HUNDRED_PERCENT]: '100% (Exceeds expectations)',\n [teacherScoreValues.SEVENTYFIVE_PERCENT]: '75% (Meets expectations)',\n [teacherScoreValues.FIFTY_PERCENT]: '50% (Approaching expectations)',\n [teacherScoreValues.TWENTYFIVE_PERCENT]: '25% (Does not meet expectations)',\n [teacherScoreValues.ZERO_PERCENT]: '0%',\n}\n","export const SCORING_REQUIRED = 'Scoring required'\nexport const FEEDBACK_SENT = 'Feedback given'\nexport const COMMENT_SENT = 'Comment given'\nexport const HAS_RESULTS = 'Visible results'\n","// eslint-disable-next-line import/prefer-default-export\nexport const studentHomeworkUrl = '/students/homework/tasks'\n// note: this is meant for the student ONLY\n","import { useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Box } from '@redriverpress/system'\n\n// Note: in order to use this, you need to include this in the html slim file: = render 'layouts/google_classroom'\nexport default function ShareToGoogleClassRoom({ url, title, ...props }) {\n // this tells google to search for the class and render the button on it\n useEffect(() => window.gapi.sharetoclassroom.go('gc-share'), [])\n\n return (\n \n )\n}\n\nShareToGoogleClassRoom.defaultProps = {\n url: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n}\n","const defaultResult = {\n status: 'unopened',\n needsFeedback: false,\n hasFeedback: false,\n firstScoreTime: '-',\n firstScore: '-',\n bestScoreTime: '-',\n bestScore: '-',\n}\n\nexport default defaultResult\n","import R from 'ramda'\n/**\n *\n * @example\n * const statusType = getTaskStatusType(status)\n * @param {object} config\n * @param {string} config.status - the task status\n * @returns {object} statusType - the type that represents the status color\n */\nexport default function getTaskStatusType(status) {\n return R.cond([\n [R.equals('complete'), R.always('success')],\n [R.equals('late'), R.always('success')],\n [R.equals('overdue'), R.always('critical')],\n [R.equals('incomplete'), R.always('warning')],\n [R.equals('unopened'), R.always('secondary')],\n [R.T, R.always('default')],\n ])(status)\n}\n","import PropTypes from 'prop-types'\nimport R from 'ramda'\n\nimport { Icon } from '@redriverpress/system'\nimport taskTypeHasResult from 'Packages/tasks/utils/taskTypeHasResult'\nimport {\n SCORING_REQUIRED,\n FEEDBACK_SENT,\n COMMENT_SENT,\n HAS_RESULTS,\n} from 'Packages/assignments/constants/tooltips'\nimport { teacherMarkableTasks } from 'Packages/tasks/constants/taskTypes'\n\n// the difference with FeedbackNotification is:\n// AssignmentNotification shows an eye if there are results\n// AssignmentNotification shows a bubble if there is a comment\n// Both show the pending feedback and feedback sent\nconst AssignmentNotification = ({\n hasFeedback,\n needsFeedback,\n taskType,\n status,\n ...props\n}) => {\n if (\n status &&\n taskType &&\n (!R.includes(status, ['complete', 'late']) || !taskTypeHasResult(taskType))\n )\n return null\n\n let notification = null\n // has new feedback and it's OEQ or speaking\n if (hasFeedback && R.includes(taskType, teacherMarkableTasks))\n notification = {\n icon: 'comment-alt-check',\n color: 'gray500',\n title: FEEDBACK_SENT,\n }\n // has general feedback\n else if (hasFeedback && !R.includes(taskType, teacherMarkableTasks))\n notification = {\n icon: 'comment-alt-lines',\n color: 'gray500',\n title: COMMENT_SENT,\n }\n\n if (needsFeedback)\n notification = {\n icon: 'comment-alt-edit',\n color: 'blue700',\n title: SCORING_REQUIRED,\n }\n\n // if there's nothing related to feedback, and no status/task type passed as parameter, then show nothing\n if (!taskType && !status && !notification) return null\n\n // if there's nothing related to feedback, then default to showing an eye\n if (!notification)\n notification = { icon: 'eye', color: 'gray500', title: HAS_RESULTS }\n\n return (\n \n )\n}\n\nAssignmentNotification.defaultProps = {\n taskType: null,\n status: null,\n}\n\nAssignmentNotification.propTypes = {\n hasFeedback: PropTypes.bool.isRequired,\n needsFeedback: PropTypes.bool.isRequired,\n taskType: PropTypes.string,\n status: PropTypes.string,\n}\n\nexport default AssignmentNotification\n","import R from 'ramda'\n\nimport { TransparentButton, Box } from '@redriverpress/system'\nimport taskTypeHasResult from 'Packages/tasks/utils/taskTypeHasResult'\n\nexport default ({ taskType, status, onClick, ...props }) => {\n // if task is completed and has results\n if (taskTypeHasResult(taskType) && R.includes(status, ['complete', 'late']))\n return (\n \n )\n\n return \n}\n","import PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport {\n Box,\n MultipleHands,\n Text,\n TransparentButton,\n TwoHands,\n} from '@redriverpress/system'\n\nconst SelectionButton = styled(TransparentButton).attrs({\n bg: 'white',\n borderRadius: 'rounded',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'space-between',\n pt: [3, null, 4],\n pb: 0,\n px: 0,\n position: 'relative',\n})`\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n border-radius: ${props => props.theme.radii.rounded};\n box-shadow: ${props => props.theme.shadows[2]};\n opacity: 0;\n transition: opacity 0.2s linear;\n }\n\n &:hover:after,\n &:focus:after {\n opacity: 1;\n }\n`\n\nfunction Selection({ title, image, onClick }) {\n return (\n \n \n {title}\n \n {image}\n \n )\n}\n\nSelection.propTypes = {\n title: PropTypes.string.isRequired,\n image: PropTypes.node.isRequired,\n onClick: PropTypes.func.isRequired,\n}\n\nexport default function ClassesOrStudents({ onClassesClick, onStudentsClick }) {\n return (\n \n }\n onClick={onClassesClick}\n />\n }\n onClick={onStudentsClick}\n />\n \n )\n}\n\nClassesOrStudents.propTypes = {\n onClassesClick: PropTypes.func.isRequired,\n onStudentsClick: PropTypes.func.isRequired,\n}\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n Box,\n Text,\n Button,\n Icon,\n MonoButton,\n LoadingPlane,\n} from '@redriverpress/system'\n\nimport { Modal } from 'Common/components/modal'\nimport xhr from 'Common/utils/xhr'\nimport { cancelAssignmentUrl } from 'Endpoints'\n\nexport default function DeleteAssignmentModal({\n isOpen,\n onClose,\n homeworkId,\n onAssignmentCancelled,\n}) {\n const [loading, setLoading] = useState(false)\n\n const cancelAssignment = () => {\n setLoading(true)\n xhr({\n url: cancelAssignmentUrl(homeworkId),\n method: 'POST',\n }).then(() => {\n onAssignmentCancelled()\n setLoading(false)\n })\n }\n\n return (\n \n {loading ? (\n \n \n \n ) : (\n <>\n \n \n If you delete this assignment, it will no longer be available for\n you and your students. Results will also be lost. What would you\n like to do?\n \n \n \n \n \n Keep Assignment\n \n \n \n >\n )}\n \n )\n}\n\nDeleteAssignmentModal.defaultProps = {\n homeworkId: null,\n}\n\nDeleteAssignmentModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n homeworkId: PropTypes.number,\n onAssignmentCancelled: PropTypes.func.isRequired,\n}\n","import { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n Box,\n Text,\n Heading,\n Icon,\n MonoButton,\n LoadingPlane,\n} from '@redriverpress/system'\n\nimport { Modal } from 'Common/components/modal'\nimport xhr from 'Common/utils/xhr'\nimport { createHomeworkReportUrl, getHomeworkReportUrl } from 'Endpoints'\n\nconst RETRIEVE_REPORT_DELAY = 5000\n\nexport default function ExportHomeworkReportModal({\n homeworkId,\n isOpen,\n onClose,\n}) {\n const [loading, setLoading] = useState(false)\n const [reportReady, setReportReady] = useState(false)\n const [exportExceededLimit, setExportExceededLimit] = useState(false)\n\n const createReport = () =>\n xhr({\n url: createHomeworkReportUrl,\n data: { homework_ids: [homeworkId] },\n method: 'POST',\n })\n\n const createAndRetrieveReport = async () => {\n setReportReady(false)\n setLoading(true)\n\n // creating the report. api returning the id\n const {\n data: { id: exportId, exceeded_size_limit: limitExceeded },\n } = await createReport()\n\n // if the report limit was exceeded, then return and show error below\n setExportExceededLimit(limitExceeded)\n if (limitExceeded) return\n\n const url = getHomeworkReportUrl(exportId)\n\n const retrieveReport = async () => {\n try {\n const response = await xhr({ url, method: 'GET' })\n if (response.errors) {\n // sometimes the error comes as an HTTP Code 200\n setTimeout(retrieveReport, RETRIEVE_REPORT_DELAY)\n } else {\n window.location = url\n setLoading(false)\n setReportReady(true)\n }\n } catch {\n // if error, then report is not ready yet, so we retrieve again in a few seconds\n setTimeout(retrieveReport, RETRIEVE_REPORT_DELAY)\n }\n }\n\n retrieveReport()\n }\n\n useEffect(() => {\n isOpen && createAndRetrieveReport()\n }, [isOpen])\n\n return (\n onClose()}\n overflow='visible'\n maxHeight='90vh'\n >\n \n Export Assignment Results\n \n {exportExceededLimit && (\n \n \n \n Your assignments exceed the limit for a single download. The file\n that downloads will include the 3,000 most recent records. Please\n contact us for a full set of results.\n \n \n )}\n {reportReady && (\n \n Your CSV is ready! It should start downloading shortly.\n \n onClose()}\n mr={[0, null, 1]}\n mb={[1, null, 0]}\n width={[1, null, 'auto']}\n >\n \n Close\n \n \n \n )}\n {loading && (\n \n Please wait while we generate your CSVā¦\n \n \n \n \n )}\n \n )\n}\n\nExportHomeworkReportModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n homeworkId: PropTypes.number.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { Box, Icon } from '@redriverpress/system'\n\nimport {\n SCORING_REQUIRED,\n FEEDBACK_SENT,\n} from 'Packages/assignments/constants/tooltips'\n\n// the difference with AssignmentNotification is:\n// AssignmentNotification shows an eye if there are results\n// AssignmentNotification shows a bubble if there is a comment\n// Both show the pending feedback and feedback sent\nconst FeedbackNotification = ({ pendingFeedbackCount, hasFeedbackCount }) => {\n if (pendingFeedbackCount)\n return (\n \n \n {pendingFeedbackCount}\n \n )\n\n if (hasFeedbackCount)\n return (\n \n )\n\n return null\n}\n\nFeedbackNotification.defaultProps = {\n pendingFeedbackCount: null,\n hasFeedbackCount: null,\n}\n\nFeedbackNotification.propTypes = {\n pendingFeedbackCount: PropTypes.number,\n hasFeedbackCount: PropTypes.number,\n}\n\nexport default FeedbackNotification\n","import PropTypes from 'prop-types'\n\nimport {\n Icon,\n Box,\n Text,\n Tooltip,\n tooltipDelayDuration,\n} from '@redriverpress/system'\n\nfunction PartialScoreWarning({ isTeacher }) {\n const contentText = isTeacher\n ? 'This is a partial score. Please score all questions to view the full score.'\n : 'Please wait for your teacher to score all of your answers.'\n\n return (\n \n \n \n \n \n \n \n \n {contentText}\n \n \n \n \n \n \n {contentText}\n \n \n \n )\n}\n\nPartialScoreWarning.propTypes = {\n isTeacher: PropTypes.bool.isRequired,\n}\n\nexport default PartialScoreWarning\n","import PropTypes from 'prop-types'\n\nimport { Box, Text } from '@redriverpress/system'\n\nimport { Modal } from 'Common/components/modal'\nimport { studentHomeworkUrl } from 'Packages/assignments/constants/studentHomeworkUrl'\n\nimport ShareToGoogleClassRoom from './ShareToGoogleClassRoom'\n\nexport default function PostAssignmentModal({\n isOpen,\n homeworkId,\n lessonTitle,\n onClose,\n}) {\n return (\n \n \n \n You can share this assignment with your students on Google Classroom\n by clicking the icon below:\n \n \n \n \n \n \n )\n}\n\nPostAssignmentModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n homeworkId: PropTypes.number.isRequired,\n lessonTitle: PropTypes.string.isRequired,\n}\n"],"sourceRoot":""}