{"version":3,"file":"src_edrolo_domains_lessons-chunkview_components_LessonDemo_index_js-src_edrolo_utils_scrollTo-eef26e-e45c9e881964b969fc4d.min.js","mappings":"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","sources":["webpack://tod_django/./src/edrolo/actions/SelfAssessmentActions.js","webpack://tod_django/./src/edrolo/api/SelfAssessment.js","webpack://tod_django/./src/edrolo/components/common/PercentageIndicator.jsx","webpack://tod_django/./src/edrolo/components/common/WrappedLink.jsx","webpack://tod_django/./src/edrolo/domains/activities/ActivityContainer.jsx","webpack://tod_django/./src/edrolo/domains/activities/components/ActivityTab/ActivityTab.jsx","webpack://tod_django/./src/edrolo/domains/activities/components/ActivityTab/index.js","webpack://tod_django/./src/edrolo/domains/activities/components/CollabModal/CollabModal.jsx","webpack://tod_django/./src/edrolo/domains/activities/components/CollabModal/index.js","webpack://tod_django/./src/edrolo/domains/activities/components/StudentResponses/NotAnsweredStudentNames.jsx","webpack://tod_django/./src/edrolo/domains/activities/components/StudentResponses/StudentResponse.jsx","webpack://tod_django/./src/edrolo/domains/activities/components/StudentResponses/StudentResponses.jsx","webpack://tod_django/./src/edrolo/domains/activities/components/StudentResponses/index.js","webpack://tod_django/./src/edrolo/domains/activities/components/index.js","webpack://tod_django/./src/edrolo/domains/activities/index.js","webpack://tod_django/./src/edrolo/domains/bookmarks/actions.js","webpack://tod_django/./src/edrolo/domains/bookmarks/api.js","webpack://tod_django/./src/edrolo/domains/bookmarks/components/BookmarkForm.jsx","webpack://tod_django/./src/edrolo/domains/bookmarks/components/ChunkBookmark/ChunkBookmark.jsx","webpack://tod_django/./src/edrolo/domains/bookmarks/components/ChunkBookmark/index.js","webpack://tod_django/./src/edrolo/domains/bookmarks/components/ChunkBookmarkPopoverTrigger/ChunkBookmarkPopoverTrigger.jsx","webpack://tod_django/./src/edrolo/domains/bookmarks/components/ChunkBookmarkPopoverTrigger/index.js","webpack://tod_django/./src/edrolo/domains/bookmarks/selectors.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Chunk.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/ChunkCarousel/ChunkCarousel.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/ChunkCarousel/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/Lesson.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/ComingSoon/ComingSoon.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/ComingSoon/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/EmptyLesson/EmptyLesson.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/EmptyLesson/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/LessonNav/LessonNav.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/LessonNav/LessonNavItem.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/LessonNav/LessonNavLink.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/LessonNav/icons.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/LessonNav/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/MaterialsPopover/Attachment.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/MaterialsPopover/Materials.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/MaterialsPopover/MaterialsPopover.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/MaterialsPopover/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/TeachingGuide/TeachingGuide.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/TeachingGuide/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/ToolbarSlideshow/ToolbarSlideshow.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/ToolbarSlideshow/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/hooks/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/hooks/usePlaybackRate.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/LessonDemo.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/hooks/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/hooks/useDemoActivity.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/hooks/useDemoActivityResponse.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/hooks/useDemoChunkVisits.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/hooks/useDemoClassmates.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/hooks/useDemoQuizAttempts.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/hooks/useDemoQuizStats.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/hooks/useDemoSuccessMeasureResponses.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Notes.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Question/Question.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Question/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/QuizIndicator.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SelfRateModal/SelfRateModal.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SelfRateModal/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SelfRating/SelfRating.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SelfRating/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Sidebar/Sidebar.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Sidebar/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SuccessMeasure/DislikeThumbSvg.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SuccessMeasure/LikeThumbSvg.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SuccessMeasure/PartlyThumbSvg.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SuccessMeasure/SuccessMeasure.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SuccessMeasure/SuccessMeasureOption.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SuccessMeasure/constants.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SuccessMeasure/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SupplementaryContent.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/YouTubeVideo.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/FreeTextQuestion.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/IntegerQuestion.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/MarkingResponse.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/MultiAnswerMultiChoiceQuestion.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/MultiChoiceOption.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/MultiChoiceResponse.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/NoResponseQuestion.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/SampleMarkQuestion.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/SelfMarkQuestion.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/SingleAnswerMultiChoiceQuestion.jsx","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/helpers.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/constants.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/hooks/index.js","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/hooks/useSuccessMeasureResponses.js","webpack://tod_django/./src/edrolo/domains/lessons/propTypes.js","webpack://tod_django/./src/edrolo/domains/studentNotes/components/Notebook/NotebookItem.tsx","webpack://tod_django/./src/edrolo/domains/studentNotes/components/Notebook/NotebookPage.tsx","webpack://tod_django/./src/edrolo/domains/studentNotes/components/Notebook/NotebookPageHeaderStudentView.tsx","webpack://tod_django/./src/edrolo/domains/studentNotes/components/Notebook/NotebookPageHeaderTeacherView.tsx","webpack://tod_django/./src/edrolo/domains/studentNotes/components/Notebook/NotebookPageTopBar.tsx","webpack://tod_django/./src/edrolo/domains/studentNotes/components/Notebook/index.tsx","webpack://tod_django/./src/edrolo/domains/studentNotes/components/RichText/RichText.tsx","webpack://tod_django/./src/edrolo/domains/studentNotes/components/StudentNote/StudentNote.tsx","webpack://tod_django/./src/edrolo/domains/studentNotes/components/StudentNote/index.ts","webpack://tod_django/./src/edrolo/domains/studentNotes/constants.ts","webpack://tod_django/./src/edrolo/domains/studentNotes/hooks/index.ts","webpack://tod_django/./src/edrolo/domains/studentNotes/hooks/useStudentChunkNote.ts","webpack://tod_django/./src/edrolo/domains/studentNotes/hooks/useStudentNotes.ts","webpack://tod_django/./src/edrolo/domains/studentNotes/hooks/utils.ts","webpack://tod_django/./src/edrolo/domains/studentNotes/index.ts","webpack://tod_django/./src/edrolo/utils/LessonUtils.js","webpack://tod_django/./src/edrolo/utils/PlaybackRateCookie.js","webpack://tod_django/./src/edrolo/utils/scrollToTop.js","webpack://tod_django/./src/edrolo/domains/activities/components/ActivityTab/styles.scss?b1f9","webpack://tod_django/./src/edrolo/domains/activities/components/CollabModal/styles.scss?5c8e","webpack://tod_django/./src/edrolo/domains/activities/components/StudentResponses/styles.scss?a011","webpack://tod_django/./src/edrolo/domains/activities/styles.scss?3680","webpack://tod_django/./src/edrolo/domains/bookmarks/components/ChunkBookmark/ChunkBookmark.scss?0ac6","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/ChunkCarousel/ChunkCarousel.scss?6b9a","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/Lesson.scss?9ed3","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/LessonNav/styles.scss?cb8f","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/MaterialsPopover/styles.scss?cfac","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/TeachingGuide/styles.scss?f94c","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Lesson/components/ToolbarSlideshow/ToolbarSlideshow.scss?e9f6","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/LessonDemo/LessonDemo.scss?e945","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Notes.scss?ffd5","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Question/Question.scss?c08a","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SelfRateModal/styles.scss?9160","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SelfRating/styles.scss?d0e0","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/Sidebar/Sidebar.scss?44ff","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/SuccessMeasure/SuccessMeasure.scss?d348","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/MultiAnswerMultiChoiceQuestion.scss?4388","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/MultiChoiceResponse.scss?275a","webpack://tod_django/./src/edrolo/domains/lessons-chunkview/components/questionTypes/SingleAnswerMultiChoiceQuestion.scss?0896","webpack://tod_django/./src/edrolo/domains/studentNotes/components/Notebook/NotebookItem.scss?05fa","webpack://tod_django/./src/edrolo/domains/studentNotes/components/Notebook/NotebookPageHeaderStudentView.scss?6662","webpack://tod_django/./src/edrolo/domains/studentNotes/components/Notebook/NotebookPageHeaderTeacherView.scss?9303","webpack://tod_django/./src/edrolo/domains/studentNotes/components/RichText/RichText.scss?b612","webpack://tod_django/./src/edrolo/domains/studentNotes/components/StudentNote/StudentNote.scss?a9ef"],"sourcesContent":["import Reflux from 'reflux';\n\nimport SelfAssessmentAPI from '../api/SelfAssessment';\n\nconst SelfAssessmentActions = Reflux.createActions({\n save: {\n asyncResult: true,\n },\n});\n\nSelfAssessmentActions.save.listen(function (branchId, rating) {\n SelfAssessmentAPI.save(branchId, rating).then(\n function (result) {\n return this.completed((result || {}).body);\n }.bind(this)\n );\n});\n\nexport default SelfAssessmentActions;\n","import Request from 'core/api/Request';\nimport urlResolver from 'edrolo/utils/URLResolver';\n\nconst SelfAssessmentAPI = {\n save(branchId, rating) {\n const url = urlResolver.getPath('ajax:self-assessment');\n\n const data = {\n branch_id: branchId,\n rating,\n };\n\n return (\n Request.post(url)\n // JSONResponseMixin requires X-Requested-With\n .set('X-Requested-With', 'XMLHttpRequest')\n .send(data)\n .end()\n );\n },\n};\n\nexport default SelfAssessmentAPI;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PropTypes from 'prop-types';\nimport { Component } from 'react';\nimport classNames from 'classnames';\n\nclass PercentageIndicator extends Component {\n static defaultProps = {\n orientation: 'vertical',\n showValue: true,\n };\n\n static propTypes = {\n // value: React.PropTypes.number,\n orientation: PropTypes.oneOf(['vertical', 'horizontal']),\n showValue: PropTypes.bool,\n };\n\n percentage() {\n if (!this.props.value) {\n return '0%';\n }\n return `${Math.round(this.props.value * 10) / 10}%`;\n }\n\n render() {\n let style = {};\n\n if (this.props.orientation === 'horizontal') {\n style = {\n width: this.percentage(),\n };\n } else {\n style = {\n height: this.percentage(),\n };\n }\n\n return (\n <div\n className={classNames('percentage-indicator', this.props.orientation)}\n >\n {this.props.showValue && (\n <span className=\"value\">\n {this.props.value ? this.percentage() : '-'}\n </span>\n )}\n <div\n className={classNames('indicator', this.props.className)}\n style={style}\n />\n </div>\n );\n }\n}\n\nexport default PercentageIndicator;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PropTypes from 'prop-types';\nimport { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport classNames from 'classnames';\n\nclass WrappedLink extends Component {\n static propTypes = {\n id: PropTypes.string,\n disabled: PropTypes.bool,\n };\n\n static defaultProps = {\n disabled: false,\n };\n\n handleClick = (e) => {\n if (this.props.disabled) {\n e.preventDefault();\n }\n };\n\n render() {\n const classes = classNames(this.props.className, {\n disabled: this.props.disabled,\n });\n\n return (\n <Link\n className={classes}\n id={this.props.id}\n to={this.props.to}\n onMouseEnter={this.props.onMouseEnter}\n onClick={this.handleClick}\n />\n );\n }\n}\n\nexport default WrappedLink;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { useEffect, useCallback, useState, useMemo } from 'react';\nimport debounce from 'lodash/debounce';\nimport PT from 'prop-types';\nimport { useActivity, useActivityResponse } from './hooks';\nimport { useClassmates } from '../bySchoolClass';\nimport { Container, TabNav, SaveStatus } from 'edrolo-style-guide';\nimport { StudentResponses, ActivityTab } from './components';\nimport { Activity, ErrorAlert } from 'core/components';\nimport styles from './styles.scss';\nimport LoadingIndicator from '../app/components/LoadingIndicator';\nimport { useInjectable } from 'core/hooks';\nimport { useAnalytics } from 'edrolo/analytics';\n\nexport const ActivityContainer = ({\n activityId,\n nextUrl,\n isTeacherView,\n classId,\n chunkId,\n lessonId,\n recordChunkVisit,\n}) => {\n const { track } = useAnalytics({\n eventAttributes: {\n activity_id: activityId,\n },\n throttle: 60000,\n });\n\n const useActivityInjectable = useInjectable(\n 'useActivityInjectable',\n useActivity\n );\n const useActivityResponseInjectable = useInjectable(\n 'useActivityResponseInjectable',\n useActivityResponse\n );\n const useClassmatesInjectable = useInjectable(\n 'useClassmatesInjectable',\n useClassmates\n );\n\n const {\n data: activity,\n error: activityError,\n loading: activityIsLoading,\n } = useActivityInjectable(activityId);\n\n const {\n activityResponse,\n status,\n activityResponseIsLoading,\n activityResponseError,\n saveActivityResponse,\n responseSaveError,\n } = useActivityResponseInjectable(activityId);\n\n const [tabId, setTabId] = useState('activity');\n const [error, setError] = useState();\n\n const { data: classmates } = useClassmatesInjectable(classId);\n\n const tabItems = [\n { id: 'activity', label: 'View activity' },\n {\n id: 'example',\n label: 'Example answer',\n disabled: !isTeacherView && !activityResponse?.ready_for_review,\n },\n ];\n\n if (isTeacherView) {\n tabItems.push({\n id: 'responses',\n label: 'View student responses',\n });\n }\n\n useEffect(() => {\n setTabId('activity');\n }, [chunkId]);\n\n // Record a chunk visit when the user first visits the activity.\n // This needs to be called explicitly because activities are rendered\n // outside of the ChunkCarousel component, which usually handles the\n // recording of chunk visits.\n useEffect(() => {\n recordChunkVisit(lessonId, chunkId);\n }, [lessonId, chunkId]); //eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n setError(activityError || activityResponseError || responseSaveError);\n }, [activityError, activityResponseError, responseSaveError]);\n\n // We need debounce to not make new instances on each render or it wont debounce.\n const debouncedSaveActivityResponse = useMemo(\n () =>\n debounce(saveActivityResponse, 1000, {\n leading: true,\n trailing: true,\n }),\n [saveActivityResponse]\n );\n\n const handleActivityResponseChange = useCallback(\n (updatedActivityResponse) => {\n debouncedSaveActivityResponse(updatedActivityResponse);\n track('activity response updated');\n },\n [debouncedSaveActivityResponse, track]\n );\n\n if (activityIsLoading || activityResponseIsLoading || !classmates) {\n return <LoadingIndicator loadingText=\"Loading activity\" />;\n }\n\n if ((!activity || !activityResponse) && error) {\n return (\n <section className={styles.activityContainer}>\n <Container>\n <ErrorAlert\n statusCode={activityError?.status || activityResponseError?.status}\n />\n </Container>\n </section>\n );\n }\n\n const collabModalOptions = classmates?.map((student) => ({\n value: student.profile_id,\n label: student.display_name,\n }));\n\n return (\n <section className={styles.activityContainer}>\n <Container>\n <header className={styles.header}>\n <div className={styles.nav}>\n <TabNav\n items={tabItems}\n selectedItemId={tabId}\n onChange={(id) => setTabId(id)}\n />\n <div className={styles.saveStatus}>\n <SaveStatus status={status} />\n </div>\n </div>\n\n {error && (\n <div className={styles.errorAlert}>\n <ErrorAlert statusCode={error.status} />\n </div>\n )}\n </header>\n\n {tabId === 'example' && (\n <Activity activity={activity} showExample readOnly />\n )}\n\n {tabId === 'responses' && (\n <StudentResponses\n activity={activity}\n classId={classId}\n lessonId={lessonId}\n collabModalOptions={collabModalOptions}\n students={classmates}\n />\n )}\n\n {tabId === 'activity' && (\n <ActivityTab\n students={classmates}\n isTeacherView={isTeacherView}\n nextUrl={nextUrl}\n activity={activity}\n saveActivityResponse={saveActivityResponse}\n activityResponse={activityResponse}\n onActivityResponseChange={handleActivityResponseChange}\n collabModalOptions={collabModalOptions}\n />\n )}\n </Container>\n </section>\n );\n};\n\nActivityContainer.propTypes = {\n activityId: PT.string,\n nextUrl: PT.string,\n isTeacherView: PT.bool,\n classId: PT.string,\n};\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { useState } from 'react';\nimport PT from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport { Button } from 'edrolo-style-guide';\nimport CollabModal from '../CollabModal';\nimport { Activity } from 'core/components/Activity';\nimport s from './styles.scss';\n\nexport const ActivityTab = ({\n students,\n isTeacherView,\n collabModalOptions,\n activity,\n activityResponse = {},\n saveActivityResponse,\n onActivityResponseChange,\n readOnly,\n nextUrl,\n showExample,\n reviewMode,\n analyticsPayload = {},\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const { enable_collaborators = false } = activity || {};\n const { collaborators = [] } = activityResponse;\n\n const handleBlockResponseChange = (blockId, blockResponseData) => {\n const updatedActivityResponse = {\n ...activityResponse,\n block_responses: {\n ...activityResponse?.block_responses,\n [blockId]: blockResponseData,\n },\n };\n onActivityResponseChange(updatedActivityResponse);\n };\n\n return (\n <div className={s.activityTab}>\n {enable_collaborators && !isTeacherView && (\n <header>\n <div className={s.collaborators}>\n <Button onClick={() => setIsOpen(true)} small outline>\n Select Collaborators\n </Button>\n {!!collaborators?.length && !!students.length && (\n <p>\n <strong>Collaborators: </strong>\n {collaborators.map((c, i) => {\n const student = students.find((s) => s.profile_id === c);\n return (\n <span key={student?.profile_id || i}>\n {student?.display_name}\n {i < collaborators.length - 1 && ', '}\n </span>\n );\n })}\n </p>\n )}\n </div>\n <div>\n {activityResponse?.has_collaborated_on_the_activity && (\n <p>\n <strong>\n {\n 'A group response has been submitted and your name has been included as a collaborator'\n }\n </strong>\n </p>\n )}\n <p>\n <strong>Note:</strong> only one person needs to submit a response\n for the group\n </p>\n </div>\n <CollabModal\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n studentOptions={collabModalOptions}\n selectedStudentIds={collaborators}\n onSubmit={(updatedCollaborators) => {\n const updatedCollaboratorIds = updatedCollaborators.map(\n (c) => c.value\n );\n\n onActivityResponseChange({\n ...activityResponse,\n collaborators: updatedCollaboratorIds,\n });\n analytics?.track('collaborators saved', {\n ...analyticsPayload,\n number_of_collaborators: updatedCollaboratorIds.length,\n });\n }}\n />\n </header>\n )}\n\n <Activity\n activity={activity}\n activityResponse={activityResponse}\n onBlockResponseChange={handleBlockResponseChange}\n readOnly={readOnly}\n showExample={showExample}\n reviewMode={reviewMode}\n />\n <footer className={s.footer}>\n <Button\n onClick={() => {\n saveActivityResponse({\n ...activityResponse,\n ready_for_review: true,\n });\n analytics?.track('clicked submit activity', {\n activity_id: activity.id,\n ...analyticsPayload,\n });\n }}\n disabled={activityResponse?.ready_for_review}\n >\n {activityResponse?.ready_for_review ? 'Submitted' : 'Submit answer'}\n </Button>\n {nextUrl && (\n <Link to={nextUrl}>\n <Button>Continue</Button>\n </Link>\n )}\n </footer>\n </div>\n );\n};\n\nActivityTab.propTypes = {\n collabModalOptions: PT.arrayOf(\n PT.shape({\n value: PT.number,\n label: PT.string,\n })\n ),\n students: PT.arrayOf(\n PT.shape({\n profile_id: PT.number,\n display_name: PT.string,\n })\n ),\n activity: PT.object,\n nextUrl: PT.string,\n activityResponse: PT.object,\n onActivityResponseChange: PT.func,\n readOnly: PT.bool,\n showExample: PT.bool,\n reviewMode: PT.bool,\n isTeacherView: PT.bool,\n};\n","export { ActivityTab } from './ActivityTab';\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PT from 'prop-types';\nimport { useState, useEffect } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { Button, Icon } from 'edrolo-style-guide';\nimport s from './styles.scss';\nimport Select from 'react-select-4';\n\nconst CollabModal = ({\n isOpen,\n onClose,\n studentOptions,\n selectedStudentIds,\n onSubmit,\n}) => {\n const [selectedStudents, setSelectedStudents] = useState(\n studentOptions.filter((s) => selectedStudentIds.includes(s.value))\n );\n\n useEffect(() => {\n setSelectedStudents(\n studentOptions.filter((s) => selectedStudentIds.includes(s.value))\n );\n }, [selectedStudentIds, studentOptions]);\n\n const MenuList = ({ innerRef, innerProps, children }) => {\n return (\n <div className={s.menuList} ref={innerRef} {...innerProps}>\n {children}\n </div>\n );\n };\n\n const Option = ({ innerRef, innerProps, data }) => {\n return (\n <div className={s.option} ref={innerRef} {...innerProps}>\n <option value={data.value} label={data.label} />\n </div>\n );\n };\n\n return (\n <Modal show={isOpen} onHide={onClose}>\n <Modal.Body>\n <header className={s.modalHeader}>\n <h3>Select collaborators</h3>\n <p>\n <strong>Note:</strong>\n only one person needs to submit a response for the group\n </p>\n </header>\n <section className={s.modalBody}>\n <Select\n closeMenuOnSelect={false}\n defaultValue={selectedStudents}\n options={studentOptions}\n isMulti\n isSearchable\n placeholder={\n <>\n <Icon name=\"search\" /> Search...\n </>\n }\n onChange={(e) => setSelectedStudents(e)}\n components={{ Option, MenuList }}\n />\n </section>\n <footer className={s.modalFooter}>\n <Button onClick={onClose} outline>\n Close\n </Button>\n <Button\n onClick={() => {\n onSubmit(selectedStudents);\n onClose();\n }}\n >\n Save\n </Button>\n </footer>\n </Modal.Body>\n </Modal>\n );\n};\n\nCollabModal.propTypes = {\n isOpen: PT.bool,\n onClose: PT.func.isRequired,\n onSubmit: PT.func.isRequired,\n studentOptions: PT.arrayOf(\n PT.shape({\n value: PT.number,\n label: PT.string,\n })\n ).isRequired,\n selectedStudentIds: PT.arrayOf(PT.number),\n};\n\nCollabModal.defaultProps = {\n isOpen: false,\n};\n\nexport default CollabModal;\n","import CollabModal from './CollabModal';\n\nexport default CollabModal;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { useState } from 'react';\nimport styles from './styles.scss';\nimport { Link } from 'react-router-dom';\n\nconst NUMBER_OF_NAMES_TO_SHOW_WITHOUT_EXPANDING = 4;\n\nconst NotAnsweredStudentNames = ({ studentNames }) => {\n const [expanded, setExpanded] = useState(false);\n const studentNamesToShow = expanded\n ? studentNames\n : studentNames.slice(0, NUMBER_OF_NAMES_TO_SHOW_WITHOUT_EXPANDING);\n\n const remainingCount =\n studentNames.length - NUMBER_OF_NAMES_TO_SHOW_WITHOUT_EXPANDING;\n\n return (\n <div className={styles.notAnsweredStudentNames}>\n {studentNamesToShow.join(', ')}\n {!expanded && remainingCount > 0 && (\n <span>\n {', and '}\n <Link className={styles.link} onClick={() => setExpanded(!expanded)}>\n {`${remainingCount} others`}\n </Link>\n </span>\n )}\n {expanded && (\n <>\n \n <Link\n className={styles.otherNamesLink}\n onClick={() => setExpanded(!expanded)}\n >\n show less\n </Link>\n </>\n )}\n </div>\n );\n};\n\nexport default NotAnsweredStudentNames;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { useState } from 'react';\nimport { Collapse, Icon } from 'edrolo-style-guide';\nimport CollabModal from '../CollabModal';\nimport { Activity } from 'core/components/Activity';\nimport s from './styles.scss';\n\nexport const StudentResponse = ({\n activity,\n activityResponse,\n student,\n students,\n updateCollaborators,\n collabModalOptions,\n analyticsPayload = {},\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n const { enable_collaborators } = activity;\n const { collaborators } = activityResponse;\n const collaboratorNames = collaborators.map((profileId) => {\n const targetStudents = students.filter((s) => s.profile_id === profileId);\n return targetStudents.length ? targetStudents[0].display_name : '';\n });\n\n return (\n <Collapse isOpen={isOpen}>\n <Collapse.Header onClick={() => setIsOpen(!isOpen)}>\n <div className={s.header}>\n <div>\n <span className={s.primaryResponderName}>\n {student?.display_name || 'No activity owner'}\n </span>\n {enable_collaborators && collaboratorNames && ', '}\n {enable_collaborators && collaboratorNames.join(', ')}\n </div>\n <Icon name={isOpen ? 'caret-up' : 'caret-down'} />\n </div>\n </Collapse.Header>\n <Collapse.Body>\n <div className={s.body}>\n {enable_collaborators && (\n <>\n <button className={s.link} onClick={() => setModalOpen(true)}>\n Edit collaborators\n </button>\n <CollabModal\n isOpen={modalOpen}\n onClose={() => setModalOpen(false)}\n studentOptions={collabModalOptions}\n selectedStudentIds={collaborators}\n onSubmit={(collaborators) => {\n const updatedCollaboratorIds = collaborators.map(\n (c) => c.value\n );\n updateCollaborators(\n updatedCollaboratorIds,\n activityResponse.id\n );\n analytics?.track('collaborators updated', {\n ...analyticsPayload,\n number_of_collaborators: updatedCollaboratorIds.length,\n });\n }}\n />\n </>\n )}\n\n <Activity\n activity={activity}\n activityResponse={activityResponse}\n readOnly\n reviewMode\n />\n </div>\n </Collapse.Body>\n </Collapse>\n );\n};\n\nStudentResponse.propTypes = {};\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { Link } from 'react-router-dom';\nimport { AnnotatedProgressBar } from 'edrolo-style-guide';\nimport { StudentResponse } from './StudentResponse';\nimport { useClassActivityResponses } from '../../hooks';\nimport NotAnsweredStudentNames from './NotAnsweredStudentNames';\nimport { STUDENT_RESPONSES_REFRESH_INTERVAL } from 'core/constants';\nimport { ErrorAlert } from 'core/components';\nimport PT from 'prop-types';\nimport cx from 'classnames';\nimport style from './styles.scss';\n\nexport const StudentResponses = ({\n activity,\n classId,\n lessonId,\n collabModalOptions = [],\n students = [],\n analyticsPayload = {},\n}) => {\n const { data, loading, error, updateCollaborators } =\n useClassActivityResponses(\n activity.id,\n classId,\n STUDENT_RESPONSES_REFRESH_INTERVAL\n );\n\n if (loading) {\n return <div>Loading...</div>;\n }\n if (!data && error) {\n return <ErrorAlert statusCode={error.status} />;\n }\n\n const {\n activity_responses,\n responded_profile_ids,\n not_responded_profile_ids,\n } = data;\n\n const total = responded_profile_ids.length + not_responded_profile_ids.length;\n const notAnsweredStudentNames = not_responded_profile_ids.map((profileId) => {\n const targetStudents = students.filter((s) => s.profile_id === profileId);\n return targetStudents.length ? targetStudents[0].display_name : '';\n });\n\n return (\n <section\n className={cx(style.studentResponses, {\n [style.hasResponses]: !!activity_responses.length,\n })}\n >\n <header>\n {error && (\n <p>\n <ErrorAlert statusCode={error.status} />\n </p>\n )}\n\n <div className={style.sectionLabel}>How students responded</div>\n\n <section className={style.answeredSection}>\n <p>Answered:</p>\n <AnnotatedProgressBar\n value={responded_profile_ids.length}\n total={total}\n >\n <div className={style.progress}>\n <strong>\n {responded_profile_ids.length} / {total}\n </strong>\n <span> students</span>\n </div>\n </AnnotatedProgressBar>\n </section>\n\n <section className={style.notAnsweredSection}>\n <p>Not Answered:</p>\n <NotAnsweredStudentNames studentNames={notAnsweredStudentNames} />\n </section>\n\n <Link\n className={style.link}\n to={`/class/${classId}/progress/lesson/${lessonId}/`}\n target=\"_blank\"\n >\n View class progress\n </Link>\n </header>\n\n <div className={style.groupResponsesText}>\n {!activity_responses.length\n ? 'No Student Responses Submitted'\n : 'Student Responses'}\n </div>\n\n {activity_responses.map((activityResponse) => {\n const primaryStudents = students.filter(\n (s) => s.profile_id === activityResponse.profile\n );\n return (\n <StudentResponse\n key={activityResponse.id}\n activity={activity}\n activityResponse={activityResponse}\n student={primaryStudents.length ? primaryStudents[0] : null}\n students={students}\n classId={classId}\n updateCollaborators={updateCollaborators}\n collabModalOptions={collabModalOptions}\n analyticsPayload={analyticsPayload}\n />\n );\n })}\n </section>\n );\n};\n\nStudentResponses.propTypes = {\n activity: PT.object.isRequired,\n classId: PT.string.isRequired,\n lessonId: PT.number.isRequired,\n collabModalOptions: PT.array,\n students: PT.array,\n};\n","export { StudentResponses } from './StudentResponses';\n","export { ActivityTab } from './ActivityTab';\nexport { StudentResponses } from './StudentResponses';\n","export { ActivityContainer } from './ActivityContainer';\n","import { normalize, schema } from 'normalizr';\nimport schemas from 'edrolo/schemas';\nimport { trackAnalytics } from 'edrolo/analytics';\n\nimport * as bookmarkConstants from './constants';\nimport * as BookmarksAPI from './api';\n\nexport const loadUserBookmarks = (userId, classId) => {\n return async (dispatch) => {\n dispatch({\n type: bookmarkConstants.BOOKMARKS_FETCH_REQUEST,\n userId,\n classId,\n });\n\n const response = await BookmarksAPI.loadBookmarks(userId, classId);\n if (response.ok) {\n const userBookmarks = normalize(\n { bookmarks: response.body },\n {\n bookmarks: new schema.Array(schemas.userBookmark),\n }\n );\n dispatch({\n type: bookmarkConstants.BOOKMARKS_FETCH_SUCCESS,\n bookmarks: userBookmarks.entities.bookmarks || {},\n });\n } else {\n dispatch({\n type: bookmarkConstants.BOOKMARKS_FETCH_ERROR,\n errors: response.failureReason,\n });\n }\n };\n};\n\nexport const saveBookmark = (chunkId, bookmarkData) => {\n return async (dispatch) => {\n dispatch({\n type: bookmarkConstants.BOOKMARK_SAVE_REQUEST,\n chunkId,\n ...trackAnalytics('bookmarked chunk', { chunk_id: chunkId }),\n });\n\n const response = await BookmarksAPI.saveBookmark(chunkId, bookmarkData);\n if (response.ok) {\n dispatch({\n type: bookmarkConstants.BOOKMARK_SAVE_SUCCESS,\n bookmark: response.body.bookmark,\n chunkId,\n });\n } else {\n dispatch({\n type: bookmarkConstants.BOOKMARK_SAVE_ERROR,\n errors: response.failureReason,\n });\n }\n };\n};\n\nexport const removeBookmark = (chunkId) => {\n return async (dispatch) => {\n dispatch({ type: bookmarkConstants.BOOKMARK_REMOVE_REQUEST });\n\n const response = await BookmarksAPI.saveBookmark(chunkId, null, !!'delete');\n\n if (response.ok) {\n dispatch({\n type: bookmarkConstants.BOOKMARK_REMOVE_SUCCESS,\n chunkId,\n });\n } else {\n dispatch({\n type: bookmarkConstants.BOOKMARK_REMOVE_ERROR,\n errors: response.failureReason,\n });\n }\n };\n};\n","import { get, post } from 'edrolo/domains/net';\nimport urlResolver from 'edrolo/utils/URLResolver';\n\nexport function loadBookmarks(userId, classId) {\n const url = urlResolver.reverse('api:class-bookmarks', { userId, classId });\n return get(url, {\n transformBody: (body) => body.toJS(),\n });\n}\n\nexport function saveBookmark(chunkId, data, deleteBookmark = false) {\n const url = urlResolver.getPath('ajax:bookmark');\n const updateData = data || {};\n updateData.chunk_pk = chunkId;\n updateData.object_id = chunkId;\n if (deleteBookmark) {\n // needs a valid form to delete for some reason\n updateData.reason = 'revisit';\n updateData.action = 'delete';\n }\n return post(url, updateData, {\n transformRequest: (request) => request.type('form'),\n transformBody: (body) => body.toJS(),\n });\n}\n","/* eslint-disable react/jsx-no-bind */\n/* eslint-disable react/prop-types */ // TODO: add props\nimport { Component } from 'react';\nimport { FormGroup, FormControl } from 'react-bootstrap';\n\nclass BookmarkFormContent extends Component {\n constructor(props) {\n super(props);\n const bookmark = this.props.bookmark;\n this.state = {\n reason: (bookmark && bookmark.get('reason')) || 'revisit',\n comment: (bookmark && bookmark.get('comment')) || '',\n };\n }\n\n handleRemove(e) {\n // stop form submitting\n e.preventDefault();\n this.props.onRemove();\n }\n\n handleSubmit(e) {\n e.preventDefault();\n if (this.props.onSave) {\n this.props.onSave(this.state);\n }\n }\n\n renderRemove() {\n return (\n <h3 className=\"bookmark-popup-heading remove\">\n <button\n className=\"remove-bookmark\"\n onClick={this.handleRemove.bind(this)}\n >\n Remove this bookmark\n </button>\n </h3>\n );\n }\n\n renderSave() {\n return <h3 className=\"bookmark-popup-heading add\">Bookmark this video</h3>;\n }\n\n render() {\n return (\n <form\n ref=\"form\"\n onSubmit={this.handleSubmit.bind(this)}\n className=\"bookmark-form\"\n >\n {this.props.bookmark ? this.renderRemove() : this.renderSave()}\n <FormGroup controlId=\"reason\">\n <FormControl\n componentClass=\"select\"\n defaultValue={this.state.reason}\n onChange={(e) => {\n this.setState({ reason: e.target.value });\n }}\n >\n <option value=\"revisit\">I want to watch again.</option>\n <option value=\"problem\">I'm having trouble</option>\n </FormControl>\n </FormGroup>\n <FormGroup controlId=\"comment\">\n <FormControl\n componentClass=\"textarea\"\n placeholder=\"Comment (Optional)\"\n rows=\"3\"\n value={this.state.comment}\n onChange={(e) => this.setState({ comment: e.target.value })}\n />\n </FormGroup>\n <button\n type=\"submit\"\n className=\"save-bookmark btn btn-primary\"\n name=\"action\"\n >\n Save\n </button>\n <button\n onClick={this.props.onCancel}\n className=\"hide-bookmark btn-link\"\n type=\"button\"\n name=\"cancel\"\n >\n Cancel\n </button>\n </form>\n );\n }\n}\n\nexport default BookmarkFormContent;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { Icon } from 'edrolo-style-guide';\nimport ChunkBookmarkPopoverTrigger from '../ChunkBookmarkPopoverTrigger';\nimport s from './ChunkBookmark.scss';\n\nconst ChunkBookmark = ({\n bookmark,\n chunkId,\n enabled,\n fullButton,\n disabled = false,\n}) => {\n const text = bookmark ? 'Bookmarked' : 'Bookmark chunk';\n\n const inner = fullButton ? (\n <button\n className={s.chunkBookmark}\n data-test=\"bookmark-button\"\n disabled={disabled}\n >\n <Icon name=\"bookmark\" />\n {text}\n </button>\n ) : (\n <span className={s.chunkBookmark} data-test=\"bookmark-link\" />\n );\n\n return (\n <>\n {enabled ? (\n <ChunkBookmarkPopoverTrigger\n chunkId={chunkId}\n bookmark={bookmark}\n placement=\"right\"\n narrowPlacement=\"left\"\n >\n {inner}\n </ChunkBookmarkPopoverTrigger>\n ) : (\n inner\n )}\n </>\n );\n};\n\nChunkBookmark.defaultProps = {\n fullButton: false,\n enabled: true,\n};\n\nexport default ChunkBookmark;\n","import { connect } from 'react-redux';\n\nimport ChunkBookmark from './ChunkBookmark';\nimport * as bookmarkSelectors from 'edrolo/domains/bookmarks/selectors';\n\nfunction makeMapStateToProps() {\n return (state, ownProps) => {\n const getChunkBookmark = bookmarkSelectors.makeGetChunkBookmark();\n return {\n bookmark: getChunkBookmark(state, ownProps),\n };\n };\n}\n\nexport default connect(makeMapStateToProps)(ChunkBookmark);\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { Popover } from 'react-bootstrap';\nimport { UniqueOverlayTrigger } from 'edrolo/domains/overlays';\nimport BookmarkForm from '../BookmarkForm';\n\nconst ChunkBookmarkPopoverTrigger = (props) => {\n const placement =\n $(window).width() <= 480 ? props.narrowPlacement : props.placement;\n return (\n <UniqueOverlayTrigger\n trigger=\"click\"\n placement={placement}\n rootClose\n uniqueOverlayId={`chunk-bookmark-${props.chunkId}`}\n renderOverlay={(overlayControl) => (\n <Popover id={`chunk-bookmark-${props.chunkId}`}>\n <BookmarkForm\n bookmark={props.bookmark}\n onRemove={() => {\n props.removeBookmark();\n overlayControl.hide();\n }}\n onCancel={() => {\n overlayControl.hide();\n }}\n onSave={(bookmarkData) => {\n props.saveBookmark(bookmarkData);\n overlayControl.hide();\n }}\n />\n </Popover>\n )}\n >\n {props.children}\n </UniqueOverlayTrigger>\n );\n};\n\nChunkBookmarkPopoverTrigger.defaultProps = {\n placement: 'left',\n narrowPlacement: 'bottom',\n};\n\nexport default ChunkBookmarkPopoverTrigger;\n","import { connect } from 'react-redux';\nimport ChunkBookmarkPopoverTrigger from './ChunkBookmarkPopoverTrigger';\n\nimport * as bookmarkActions from 'edrolo/domains/bookmarks/actions';\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n saveBookmark: (bookmarkData) =>\n dispatch(\n bookmarkActions.saveBookmark(ownProps.chunkId.toString(), bookmarkData)\n ),\n removeBookmark: () =>\n dispatch(\n bookmarkActions.removeBookmark(\n ownProps.chunkId.toString(),\n ownProps.bookmark\n )\n ),\n});\n\nexport default connect(null, mapDispatchToProps)(ChunkBookmarkPopoverTrigger);\n","import { createSelector } from 'reselect';\n\nconst getChunkId = (state, props) => props.chunkId.toString();\nexport const getBookmarks = (state) => state.bookmarks?.get('bookmarks');\n\nexport const makeGetChunkBookmark = () =>\n createSelector([getBookmarks, getChunkId], (bookmarks, chunkId) => {\n return bookmarks?.get(chunkId);\n });\n","import PT from 'prop-types';\nimport IPT from 'react-immutable-proptypes';\nimport { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group';\nimport isMobile from 'ismobilejs';\nimport _ from 'lodash';\nimport { WistiaPlayer } from 'edrolo/domains/video';\nimport WistiaUtils from 'edrolo/utils/WistiaUtils';\nimport Notes from './Notes';\nimport Question from './Question';\nimport YouTubeVideo from './YouTubeVideo';\nimport SuccessMeasure from './SuccessMeasure';\n\nimport {\n chunkPropType,\n lessonPropType,\n quizAttemptPropType,\n} from 'edrolo/domains/lessons/propTypes';\n\nclass Chunk extends Component {\n componentDidMount() {\n window.onresize = _.throttle(this.handleWindowResize, 100);\n this.handleWindowResize();\n this.viewChunk();\n }\n /* eslint-disable react/prop-types */ // TODO: add props\n\n componentDidUpdate(prevProps) {\n if (prevProps.chunk !== this.props.chunk) {\n this.viewChunk();\n }\n }\n\n componentWillUnmount() {\n window.onresize = null;\n }\n\n viewChunk() {\n this.props.recordChunkVisit(\n this.props.lesson.get('id'),\n this.props.chunk.get('id')\n );\n }\n\n handleVideoEnd = (closeFullScreenFn) => {\n if (this.props.chunk.get('question') || this.props.isLastChunk) {\n closeFullScreenFn();\n }\n\n if (!this.props.chunk.get('question')) {\n this.props.onChunkComplete();\n } else {\n this.props.onVideoEnd();\n }\n };\n\n // TODO: remove JS resizing\n handleWindowResize = () => {\n this.props.onChunkSizeKnown(\n // eslint-disable-next-line react/no-find-dom-node\n ($(ReactDOM.findDOMNode(this)).width() / 16) * 9\n );\n };\n\n get hasNotes() {\n return this.props.chunk.get('notes') || this.props.chunk.get('more_notes');\n }\n\n get showNotes() {\n return (\n !this.props.chunk.get('success_measure') &&\n !this.showVideo &&\n !this.showYoutube &&\n !this.showQuestion &&\n this.hasNotes\n );\n }\n\n get showQuestion() {\n return (\n !this.props.chunk.get('success_measure') &&\n !this.showVideo &&\n !this.showYoutube &&\n this.props.chunk.get('question') !== null\n );\n }\n\n get showVideo() {\n return (\n !this.props.chunk.get('success_measure') &&\n this.props.chunk.get('video') !== null\n );\n }\n\n get showYoutube() {\n return (\n !this.props.chunk.get('success_measure') &&\n !this.showVideo &&\n !_.isEmpty(this.props.chunk.get('youtube_url'))\n );\n }\n\n render() {\n return (\n <div className=\"chunk\" style={{ minHeight: this.props.height }}>\n <ReactCSSTransitionGroup\n transitionName=\"chunk-fade\"\n transitionAppear\n transitionAppearTimeout={200}\n transitionEnterTimeout={200}\n transitionLeaveTimeout={200}\n >\n {this.showVideo && (\n <WistiaPlayer\n videoHash={this.props.chunk.getIn(['video', 'wistia_hashed_id'])}\n thumbnailUrl={WistiaUtils.getThumbnail(\n this.props.chunk.get('video')\n )}\n autoPlay\n playButton={isMobile.any}\n playbackRate={this.props.playbackRate}\n onEnd={this.handleVideoEnd}\n height={this.props.height}\n origin=\"chunkview_v2\"\n appLabel=\"tod\"\n model=\"chunk\"\n objectId={this.props.chunk.get('id')}\n introWistiaHash={\n this.props.chunk.get('is_first_in_lesson')\n ? this.props.lesson.get('intro_wistia_hash')\n : ''\n }\n />\n )}\n {this.showYoutube && (\n <YouTubeVideo\n url={this.props.chunk.get('youtube_url')}\n style={{ minHeight: this.props.height }}\n />\n )}\n {this.showQuestion && (\n <Question\n key={this.props.chunk.get('id')}\n lesson={this.props.lesson}\n question={this.props.chunk.get('question')}\n style={{ minHeight: this.props.height }}\n onResponseSave={this.props.onChunkComplete}\n lessonQuizAttempts={this.props.lessonQuizAttempts}\n saveQuizAttempt={this.props.saveQuizAttempt}\n />\n )}\n {this.showNotes && (\n <Notes\n chunk={this.props.chunk}\n isSlideshow={this.props.lesson.get('lesson_type') === 'SLIDES'}\n style={{ minHeight: this.props.height }}\n />\n )}\n\n {this.props.chunk.get('success_measure') && (\n <SuccessMeasure\n chunk={this.props.chunk}\n lessonId={this.props.lesson.get('id')}\n nextChunkUrl={this.props.nextChunkUrl}\n successMeasureChunks={this.props.successMeasureChunks}\n />\n )}\n </ReactCSSTransitionGroup>\n </div>\n );\n }\n}\n\nChunk.propTypes = {\n chunk: chunkPropType,\n height: PT.number,\n isLastChunk: PT.bool,\n lesson: lessonPropType,\n lessonQuizAttempts: IPT.listOf(quizAttemptPropType),\n nextChunkUrl: PT.string,\n onChunkComplete: PT.func,\n onChunkSizeKnown: PT.func,\n onVideoEnd: PT.func,\n recordChunkVisit: PT.func,\n playbackRate: PT.number,\n saveQuizAttempt: PT.func,\n successMeasureChunks: IPT.listOf(chunkPropType),\n};\n\nexport default Chunk;\n","/* eslint-disable no-underscore-dangle */\n/* eslint-disable react/prop-types */ // TODO: add props\nimport { Component } from 'react';\nimport { browserHistory } from 'edrolo/utils/browserHistory';\nimport cx from 'classnames';\nimport scrollToComponent from 'react-scroll-to-component';\nimport { WistiaPreloader } from 'edrolo/domains/video';\nimport Chunk from '../Chunk';\nimport QuizIndicator from '../QuizIndicator';\nimport SupplementaryContent from '../SupplementaryContent';\nimport WrappedLink from 'edrolo/components/common/WrappedLink';\nimport SelfRateModal from '../SelfRateModal';\nimport style from './ChunkCarousel.scss';\nimport { QUESTION_TYPES } from 'edrolo/constants/QuestionTypes';\nimport { utils as u } from 'edrolo-ui';\n\nconst DifficultyIndicator = ({ level, max = 3 }) => {\n return (\n <span>\n {\n // Create an array of <max> length and replace it with spans\n /* eslint-disable prefer-spread */\n Array.apply(null, { length: max }).map((brain, index) => (\n <span\n key={index}\n className={cx('icon-brain', style.brain, {\n [style.activeBrain]: level >= index + 1,\n })}\n />\n ))\n }\n </span>\n );\n};\n\nconst KnowledgeUnits = ({ knowledgeUnits }) => {\n if (knowledgeUnits.length === 0) {\n return null;\n }\n const items = knowledgeUnits.map((ku) => {\n const { id, full_serial, title, difficulty } = ku.toJS();\n return (\n <li key={id}>\n <span className={style.title}>{full_serial}</span>\n <span className={style.title}>{title}</span>\n {difficulty !== null && <DifficultyIndicator level={difficulty} />}\n </li>\n );\n });\n\n return <ul className={style.knowledgeUnits}>{items}</ul>;\n};\n\nclass ChunkCarousel extends Component {\n constructor(props) {\n super(props);\n this.state = {\n chunkHeight: 0,\n showQuizIndicator: false,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.index === this.props.activeChunkIndex) {\n return;\n }\n this.setState({\n showQuizIndicator: false,\n });\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n return (\n nextProps.index !== this.props.activeChunkIndex ||\n nextState.showQuizIndicator !== this.state.showQuizIndicator ||\n nextState.chunkHeight !== this.state.chunkHeight ||\n nextProps.playbackRate !== this.props.playbackRate\n );\n }\n\n get nextChunk() {\n const { lesson, activeChunkIndex } = this.props;\n return (\n lesson\n .get('chunks')\n .skipUntil((chunk) => chunk.get('index') === activeChunkIndex)\n .rest()\n .first() || null\n );\n }\n\n get prevChunk() {\n const { lesson, activeChunkIndex } = this.props;\n return lesson\n .get('chunks')\n .takeUntil((chunk) => chunk.get('index') === activeChunkIndex)\n .last();\n }\n\n handleChunkComplete = () => {\n if (this.nextChunk) {\n const url = this.props.buildChunkUrl(this.nextChunk.get('index'));\n browserHistory.push(url);\n return;\n }\n };\n\n handleChunkSizeKnown = (height) => {\n if (height === this.state.chunkHeight) {\n return;\n }\n this.setState({\n chunkHeight: height,\n });\n };\n\n handleNextMouseEnter = () => {\n if (this.shouldShowQuizIndicator) {\n this.setState({\n showQuizIndicator: true,\n });\n }\n };\n\n handleVideoEnd = () => {\n if (this.shouldShowQuizIndicator) {\n this.setState({\n showQuizIndicator: true,\n });\n }\n };\n\n get shouldAttemptQuiz() {\n const { activeChunk, lessonQuizAttempts } = this.props;\n const question = activeChunk.get('question');\n\n if (!question) {\n return false;\n }\n\n const quizAttempts = lessonQuizAttempts.filter(\n (qa) => qa.get('question') === question.get('id')\n );\n\n return (\n question.get('answer_type') !== QUESTION_TYPES.NO_RESPONSE &&\n quizAttempts.size === 0 &&\n !this.props.hasAttemptedQuestion\n );\n }\n\n get shouldShowQuizIndicator() {\n return (\n !this.state.showQuizIndicator &&\n this.props.activeChunk.get('video') &&\n this.shouldAttemptQuiz\n );\n }\n\n supplementaryContentRef = null;\n\n scrollToSupplementaryContent = () => {\n if (!this.supplementaryContentRef) {\n return;\n }\n scrollToComponent(this.supplementaryContentRef, {\n duration: 1000,\n align: 'top',\n });\n };\n\n render() {\n const {\n lesson,\n recordChunkVisit,\n activeChunk,\n hasSuccessMeasure,\n successMeasureChunks,\n lessonQuizAttempts,\n saveQuizAttempt,\n } = this.props;\n\n return (\n <>\n <KnowledgeUnits\n knowledgeUnits={activeChunk.get('knowledge_units_read_only')}\n />\n <div className=\"carousel modal-container\">\n <div className=\"slides\">\n <div className={cx('slide', u.relative)}>\n <div className=\"chunk-wrapper\">\n <Chunk\n lesson={lesson}\n chunk={activeChunk}\n recordChunkVisit={recordChunkVisit}\n height={this.state.chunkHeight}\n playbackRate={this.props.playbackRate}\n onChunkSizeKnown={this.handleChunkSizeKnown}\n onChunkComplete={this.handleChunkComplete}\n onVideoEnd={this.handleVideoEnd}\n isLastChunk={!this.nextChunk}\n nextChunkUrl={\n this.nextChunk &&\n this.props.buildChunkUrl(this.nextChunk.get('index'))\n }\n successMeasureChunks={successMeasureChunks}\n lessonQuizAttempts={lessonQuizAttempts}\n saveQuizAttempt={saveQuizAttempt}\n />\n {this.prevChunk && (\n <WrappedLink\n className=\"carousel-nav\"\n id=\"prev\"\n to={this.props.buildChunkUrl(this.prevChunk.get('index'))}\n />\n )}\n {this.nextChunk && (\n <WrappedLink\n className=\"carousel-nav\"\n id=\"next\"\n to={this.props.buildChunkUrl(this.nextChunk.get('index'))}\n disabled={this.shouldAttemptQuiz}\n onMouseEnter={this.handleNextMouseEnter}\n />\n )}\n </div>\n\n {!this.nextChunk && (\n <SelfRateModal\n ref=\"selfRateModal\"\n container={this}\n disabled={this.shouldAttemptQuiz}\n lesson={lesson}\n onSave={this.props.onLessonComplete}\n hasQuestionSet={this.props.hasQuestionSet}\n hasSuccessMeasure={hasSuccessMeasure}\n />\n )}\n\n {this.state.showQuizIndicator ? (\n <QuizIndicator onClick={this.scrollToSupplementaryContent} />\n ) : null}\n </div>\n\n <SupplementaryContent\n lesson={lesson}\n chunk={activeChunk}\n lessonQuizAttempts={lessonQuizAttempts}\n saveQuizAttempt={saveQuizAttempt}\n onChunkComplete={(...args) => this.handleChunkComplete(...args)}\n ref={(ref) => {\n this.supplementaryContentRef = ref;\n }}\n />\n {this.nextChunk && this.nextChunk.get('video') && (\n <WistiaPreloader video={this.nextChunk.get('video')} />\n )}\n </div>\n </div>\n </>\n );\n }\n}\n\nexport default ChunkCarousel;\n","import ChunkCarousel from './ChunkCarousel';\n\nexport default ChunkCarousel;\n","import PT from 'prop-types';\nimport IPT from 'react-immutable-proptypes';\nimport {\n lessonPropType,\n chunkVisitPropType,\n} from 'edrolo/domains/lessons/propTypes';\nimport { useEffect } from 'react';\nimport cx from 'classnames';\nimport { useAnalytics } from 'edrolo/analytics';\nimport { usePlaybackRate } from './hooks';\nimport ShareLink from 'edrolo/components/common/ShareLink';\nimport urlResolver from 'edrolo/utils/URLResolver';\nimport { ActivityContainer } from 'edrolo/domains/activities';\nimport { StudentNote } from 'edrolo/domains/studentNotes';\nimport {\n ComingSoon,\n EmptyLesson,\n ToolbarSlideshow,\n LessonNav,\n TeachingGuide,\n} from './components';\nimport style from './Lesson.scss';\nimport ChunkCarousel from '../ChunkCarousel';\nimport { useInjectable } from 'core/hooks';\nimport { useQuizAttempts } from 'edrolo/domains/lessons/hooks';\n\n/**\n * This is the core Lesson experience.\n * Please be aware that there are two contexts to consider when working on this component:\n * The main application experience that is rendered in `edrolo/domains/lesson-chunkview/components/Chunkview`\n * The Lesson Demo experience that is rendered in `edrolo/domains/lesson-chunkview/components/LessonDemo`\n *\n * Anything that happens in here down in the tree needs to be considered for\n * both authenticated and unauthenticated views.\n */\n\nconst Lesson = ({\n lesson,\n activeChunkIndex,\n replace,\n chunkVisits,\n recordChunkVisit,\n coursePageUrl,\n classId,\n bookmarks,\n buildChunkUrl,\n hasSuccessMeasure,\n showStudentNotes,\n studentNotebookUrl,\n onLessonComplete,\n isTeacherView,\n isStaff,\n nextLessonId,\n disableSharelinks = false,\n disableBookmarks = false,\n disableNotebook = false,\n hasQuestionSet,\n}) => {\n const [playbackRate, setPlaybackRate] = usePlaybackRate();\n\n const activeChunk = lesson\n ?.get('chunks')\n ?.find((c) => c.get('index') === Number(activeChunkIndex));\n\n const { track } = useAnalytics({\n eventAttributes: {\n origin: 'chunkview_v2',\n class_id: classId,\n lesson_id: lesson.get('id'),\n chunk_id: activeChunk?.get('id'),\n },\n });\n\n const useQuizAttemptsInjectable = useInjectable(\n 'useQuizAttemptsInjectable',\n useQuizAttempts\n );\n\n const {\n data: lessonQuizAttempts,\n loading: loadingQA,\n error: errorQA,\n save: saveQuizAttempt,\n } = useQuizAttemptsInjectable(lesson?.get('id'));\n\n useEffect(() => {\n //TODO: This could probably move to parent component (Chunkview or LessonDemo)\n if (!activeChunkIndex) {\n const firstChunk = lesson.get('chunks').first();\n const url = buildChunkUrl(firstChunk.get('index'));\n\n replace(url);\n }\n }, [activeChunkIndex, lesson, buildChunkUrl, replace]);\n\n useEffect(() => {\n if (activeChunk) {\n track('viewed chunk');\n }\n }, [activeChunk, track]);\n\n const successMeasureChunks = lesson\n ?.get('chunks')\n ?.filter((chunk) => chunk.get('success_measure') !== null);\n\n const nextChunk = lesson\n ?.get('chunks')\n ?.find((c) => c.get('index') === Number(activeChunkIndex) + 1);\n\n if (lesson?.get('chunks')?.size === 0) {\n return <EmptyLesson lesson={lesson} classId={classId} />;\n }\n\n if (lesson.get('is_coming_soon') && !isStaff) {\n return (\n <ComingSoon\n lesson={lesson}\n coursePageUrl={coursePageUrl}\n mySubjectsUrl={urlResolver.getPath('courses-page')}\n />\n );\n }\n\n const hasAttemptedQuestion =\n activeChunk &&\n lessonQuizAttempts.some(\n (qa) => qa.get('question') === activeChunk.getIn(['question', 'id'])\n );\n\n if (loadingQA || !activeChunk || !lesson?.get('id')) {\n return <div>Loading...</div>;\n }\n if (errorQA) {\n return <div>{errorQA}</div>;\n }\n\n return (\n <div className=\"lesson-v2\">\n <div key={lesson.get('id')} className=\"lesson-body\">\n <h1>\n {lesson.get('title')} \n {!disableSharelinks && (\n <ShareLink\n title=\"To share this lesson, copy and paste this link:\"\n model=\"lesson\"\n objectId={lesson.get('id')}\n classId={classId}\n shareType=\"lesson\"\n origin=\"chunkview_v2\"\n >\n <button className={cx('share-link', style.shareLink)}>\n <i className=\"icon-share-square-o\" />\n </button>\n </ShareLink>\n )}\n </h1>\n <LessonNav\n buildChunkUrl={buildChunkUrl}\n chunks={lesson.get('chunks')}\n chunkVisits={chunkVisits}\n />\n {activeChunk.get('activity') ? (\n <ActivityContainer\n activityId={activeChunk.get('activity').toString()}\n nextUrl={nextChunk && buildChunkUrl(nextChunk.get('index'))}\n isTeacherView={isTeacherView}\n classId={classId}\n chunkId={activeChunk.get('id')}\n lessonId={lesson.get('id')}\n recordChunkVisit={recordChunkVisit}\n />\n ) : (\n <>\n <ChunkCarousel\n lesson={lesson}\n activeChunk={activeChunk}\n activeChunkIndex={parseInt(activeChunkIndex, 10)}\n playbackRate={playbackRate}\n nextLessonId={nextLessonId}\n onLessonComplete={onLessonComplete}\n recordChunkVisit={recordChunkVisit}\n buildChunkUrl={buildChunkUrl}\n hasSuccessMeasure={hasSuccessMeasure}\n successMeasureChunks={successMeasureChunks}\n lessonQuizAttempts={lessonQuizAttempts}\n saveQuizAttempt={saveQuizAttempt}\n hasAttemptedQuestion={hasAttemptedQuestion}\n hasQuestionSet={hasQuestionSet}\n />\n\n <ToolbarSlideshow\n key={`toolbar-${activeChunkIndex}`}\n lessonId={lesson.get('id')}\n chunkId={activeChunk.get('id')}\n classId={classId}\n bookmarks={bookmarks}\n playbackRate={playbackRate}\n onVideoSpeedChange={(speed) => setPlaybackRate(speed)}\n hasVideo={!!activeChunk.get('video')}\n disableSharelinks={disableSharelinks}\n disableBookmarks={disableBookmarks}\n />\n\n {showStudentNotes && !isTeacherView && (\n <StudentNote\n chunkId={activeChunk.get('id')}\n notebookUrl={studentNotebookUrl}\n disableNotebook={disableNotebook}\n />\n )}\n </>\n )}\n {(isTeacherView || isStaff) && <TeachingGuide chunk={activeChunk} />}\n </div>\n </div>\n );\n};\n\nLesson.propTypes = {\n activeChunkIndex: PT.string, // TODO: number\n classId: PT.string, //TODO: number\n nextLessonId: PT.number,\n lesson: lessonPropType,\n chunkVisits: IPT.listOf(chunkVisitPropType),\n bookmarks: IPT.listOf(\n IPT.contains({\n reason: PT.string,\n comment: PT.string,\n })\n ),\n\n buildChunkUrl: PT.func,\n recordChunkVisit: PT.func,\n onLessonComplete: PT.func,\n replace: PT.func,\n\n hasSuccessMeasure: PT.bool,\n isStaff: PT.bool,\n isTeacherView: PT.bool,\n showStudentNotes: PT.bool,\n studentNotebookUrl: PT.string,\n coursePageUrl: PT.string,\n disableBookmarks: PT.bool,\n disableSharelinks: PT.bool,\n disableNotebook: PT.bool,\n hasQuestionSet: PT.bool,\n};\n\nLesson.defaultProps = {\n onLessonComplete: () => {},\n};\n\nexport default Lesson;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport cameraHead from 'img/chunkview/camerahead.png';\n\nexport const ComingSoon = ({ lesson, coursePageUrl, mySubjectsUrl }) => {\n return (\n <div className=\"lesson-body\">\n <h1>{lesson.get('title')}</h1>\n <div className=\"carousel modal-container\">\n <div className=\"slides\">\n <div className=\"slide\">\n <div className=\"chunk-wrapper\">\n <div className=\"chunk\" id=\"empty-lesson\">\n <div className=\"empty-lesson-content container clearfix\">\n <img src={cameraHead} />\n <div className=\"instructions\">\n <h3>\n We’re still working on this lesson. It’s coming soon\n though. Promise!\n </h3>\n <p>\n Maybe you’d like to\n <a href={coursePageUrl}> view the available content </a>\n within this course?\n </p>\n <p>\n Or if not, feel free to go all the way back to\n <a href={mySubjectsUrl}> your list of Edrolo courses.</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","export { ComingSoon } from './ComingSoon';\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport ChunkCarousel from '../../../ChunkCarousel';\nimport ShareLink from 'edrolo/components/common/ShareLink';\n\nexport const EmptyLesson = ({ lesson, classId }) => {\n return (\n <div className=\"lesson-v2\">\n <div key={lesson.get('id')} className=\"lesson-body\">\n <h1>\n {lesson.get('title')} \n <ShareLink\n title=\"To share this lesson, copy and paste this link:\"\n model=\"lesson\"\n objectId={lesson.get('id')}\n classId={classId}\n shareType=\"lesson\"\n origin=\"chunkview_v2\"\n >\n <button className=\"share-link\">\n <i className=\"icon-share-square-o\" />\n </button>\n </ShareLink>\n </h1>\n <ChunkCarousel lesson={lesson} />\n </div>\n </div>\n );\n};\n","export { EmptyLesson } from './EmptyLesson';\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport LessonUtils from 'edrolo/utils/LessonUtils';\nimport LessonNavItem from './LessonNavItem';\nimport s from './styles.scss';\n\nexport const LessonNav = ({ chunks, chunkVisits, buildChunkUrl }) => {\n const groups = LessonUtils.groupChunks(chunks);\n\n return (\n <div className={s.lessonNav} data-test=\"lesson-nav\">\n <ul>\n {groups.map((chunks, i) => (\n <LessonNavItem\n key={i}\n chunkVisits={chunkVisits}\n chunks={chunks}\n buildChunkUrl={buildChunkUrl}\n />\n ))}\n </ul>\n </div>\n );\n};\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport s from './styles.scss';\nimport LessonNavLink from './LessonNavLink';\n\nconst LessonNavItem = ({ chunks, chunkVisits, buildChunkUrl }) => {\n const hasChunkVisit = (chunkId) =>\n chunkVisits.find((chunkVisit) => chunkVisit.get('chunk') === chunkId);\n\n const links = chunks.map((chunk) => (\n <LessonNavLink\n key={chunk.get('id')}\n url={buildChunkUrl(chunk.get('index'))}\n chunk={chunk}\n hasChunkVisit={hasChunkVisit(chunk.get('id'))}\n />\n ));\n\n return <li className={cx({ [s.grouped]: chunks.length > 1 })}>{links}</li>;\n};\n\nLessonNavItem.propTypes = {\n chunks: PropTypes.any,\n chunkVisits: PropTypes.any,\n};\n\nexport default LessonNavItem;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { NavLink } from 'react-router-dom';\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\nimport _ from 'lodash';\nimport cx from 'classnames';\nimport s from './styles.scss';\nimport { IconQuestion, IconActivity } from './icons';\n\nfunction padLeft(string, pad, length) {\n return (new Array(length + 1).join(pad) + string).slice(-length);\n}\n\nfunction getHumanDuration(seconds) {\n const minutes = Math.floor(seconds / 60);\n const remaining = Math.floor(seconds % 60);\n return `${minutes}:${padLeft(remaining, '0', 2)}`;\n}\n\nconst LessonNavLink = ({ chunk, url, hasChunkVisit = false }) => {\n const duration = chunk.getIn(['video', 'duration']);\n\n const tooltip = (\n <Tooltip id={_.uniqueId()}>\n {chunk.get('title_with_knowledge_unit_serial')} \n {duration ? <span>({getHumanDuration(duration)})</span> : null}\n </Tooltip>\n );\n\n return (\n <OverlayTrigger placement=\"bottom\" overlay={tooltip}>\n <NavLink\n className={cx({ [s.hasChunkVisit]: hasChunkVisit })}\n activeClassName={s.active}\n to={url}\n >\n {!chunk.get('activity') && chunk.get('question') && <IconQuestion />}\n {!chunk.get('question') && chunk.get('activity') && <IconActivity />}\n </NavLink>\n </OverlayTrigger>\n );\n};\n\nexport default LessonNavLink;\n","export const IconActivity = () => (\n <svg\n width=\"11\"\n height=\"11\"\n viewBox=\"0 0 11 11\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M0.6 8.2C0.434315 8.42091 0.479086 8.73431 0.7 8.9C0.920914 9.06569 1.23431 9.02091 1.4 8.8L0.6 8.2ZM4 4.5L4.35355 4.14645C4.25106 4.04395 4.10914 3.99098 3.96456 4.00126C3.81997 4.01153 3.68697 4.08404 3.6 4.2L4 4.5ZM6.5 7L6.14645 7.35355C6.24786 7.45496 6.38793 7.50795 6.53107 7.49903C6.67421 7.49012 6.80663 7.42018 6.89468 7.30697L6.5 7ZM10.3947 2.80697C10.5642 2.589 10.5249 2.27486 10.307 2.10532C10.089 1.93579 9.77486 1.97506 9.60532 2.19303L10.3947 2.80697ZM1.4 8.8L4.4 4.8L3.6 4.2L0.6 8.2L1.4 8.8ZM3.64645 4.85355L6.14645 7.35355L6.85355 6.64645L4.35355 4.14645L3.64645 4.85355ZM6.89468 7.30697L10.3947 2.80697L9.60532 2.19303L6.10532 6.69303L6.89468 7.30697Z\" />\n </svg>\n);\n\nexport const IconQuestion = () => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"6\" cy=\"6\" r=\"3\" fill=\"white\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 8C7.10457 8 8 7.10457 8 6C8 4.89543 7.10457 4 6 4C4.89543 4 4 4.89543 4 6C4 7.10457 4.89543 8 6 8ZM6 9C7.65685 9 9 7.65685 9 6C9 4.34315 7.65685 3 6 3C4.34315 3 3 4.34315 3 6C3 7.65685 4.34315 9 6 9Z\"\n fill=\"#838282\"\n />\n </svg>\n);\n","import { LessonNav } from './LessonNav';\n\nexport { LessonNav };\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\nconst Attachment = ({ attachment, onClick }) => (\n <div className=\"attachment\">\n <a\n href={attachment.get('url')}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={onClick}\n >\n {attachment.get('attachment_type') === 'link' ? (\n <i className=\"icon-share-square-o\" />\n ) : (\n <i className=\"icon-attachment\" />\n )}\n {attachment.get('title') || attachment.get('filename')}\n </a>\n </div>\n);\n\nAttachment.propTypes = {\n attachment: ImmutablePropTypes.shape({\n url: PropTypes.string,\n title: PropTypes.string,\n filename: PropTypes.string,\n attachment_type: PropTypes.string,\n }),\n onClick: PropTypes.func,\n};\n\nexport default Attachment;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PropTypes from 'prop-types';\nimport { Component } from 'react';\nimport classNames from 'classnames';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Immutable from 'immutable';\nimport { withAnalytics } from 'edrolo/analytics';\n\nimport Attachment from './Attachment';\n\n@withAnalytics\nclass Materials extends Component {\n static defaultProps = {\n title: null,\n attachments: Immutable.List(),\n inline: false,\n };\n\n static propTypes = {\n title: PropTypes.string,\n attachments: ImmutablePropTypes.list,\n inline: PropTypes.bool,\n };\n\n render() {\n const {\n title,\n attachments,\n inline,\n analytics: { track },\n } = this.props;\n const classes = classNames('materials', {\n 'list-inline': inline,\n });\n\n return (\n <ul className={classes}>\n {title ? <li key=\"title\"> {title} </li> : null}\n {attachments\n .map((attachment, i) => (\n <li key={i}>\n <Attachment\n attachment={attachment}\n onClick={() => track('opened supplementary material')}\n />\n </li>\n ))\n .toList()\n .toJS()}\n </ul>\n );\n }\n}\n\nexport default Materials;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PropTypes from 'prop-types';\nimport { Component } from 'react';\nimport { OverlayTrigger, Popover } from 'react-bootstrap';\nimport _ from 'lodash';\nimport Materials from './Materials';\nimport { Icon } from 'edrolo-style-guide';\nimport s from './styles.scss';\n\nclass MaterialsPopover extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n placement: PropTypes.string,\n attachments: PropTypes.object,\n };\n\n static defaultProps = {\n disabled: false,\n placement: 'bottom',\n };\n\n render() {\n const { attachments, placement, disabled, label, iconName, children } =\n this.props;\n\n const popover = (\n <Popover id={_.uniqueId()} className=\"materials-popover\">\n <Materials attachments={attachments} />\n </Popover>\n );\n\n return (\n <OverlayTrigger\n ref=\"overlay\"\n trigger=\"click\"\n placement={placement}\n overlay={popover}\n rootClose\n >\n <button className={s.button} disabled={disabled} type=\"button\">\n <Icon name={iconName} />\n {children || label}\n </button>\n </OverlayTrigger>\n );\n }\n}\n\nexport default MaterialsPopover;\n","import MaterialsPopover from './MaterialsPopover';\n\nexport default MaterialsPopover;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { useState } from 'react';\nimport { Container, Collapse, Icon } from 'edrolo-style-guide';\nimport style from './styles.scss';\nimport { useAnalytics } from 'edrolo/analytics';\n\nconst TeachingGuide = ({ chunk }) => {\n const [open, setOpen] = useState(false);\n const { track } = useAnalytics();\n\n function handleClick() {\n track(`${!open ? 'opened' : 'closed'} teaching guide`);\n setOpen(!open);\n }\n\n if (!chunk.get('teaching_guide')) {\n return null;\n }\n\n return (\n <section className={style.teachingGuide}>\n <Container>\n <Collapse isOpen={open}>\n <Collapse.Header onClick={() => handleClick()}>\n <header className={style.header}>\n <Icon\n name={open ? 'arrow-dropdown' : 'arrow-dropright'}\n size=\"large\"\n color=\"blue\"\n />\n Teaching Guide\n </header>\n </Collapse.Header>\n <Collapse.Body>\n <div\n id=\"teaching-guide\"\n className={style.body}\n dangerouslySetInnerHTML={{ __html: chunk.get('teaching_guide') }}\n data-test=\"teaching-guide-contents\"\n />\n </Collapse.Body>\n </Collapse>\n </Container>\n </section>\n );\n};\n\nexport default TeachingGuide;\n","import TeachingGuide from './TeachingGuide';\n\nexport default TeachingGuide;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport Immutable from 'immutable';\nimport IPT from 'react-immutable-proptypes';\nimport PT from 'prop-types';\nimport cx from 'classnames';\nimport ChunkBookmark from 'edrolo/domains/bookmarks/components/ChunkBookmark';\nimport ShareLink from 'edrolo/components/common/ShareLink';\nimport MaterialsPopover from '../MaterialsPopover';\nimport SpeedControlButton from 'edrolo/domains/video/components/SpeedControlButton';\nimport {\n useAttachments,\n ATTACHMENT_TYPE,\n attachmentPropTypes,\n} from 'edrolo/domains/attachments';\nimport { Icon } from 'edrolo-style-guide';\nimport s from './ToolbarSlideshow.scss';\n\n// Keep data hook provision separate to enable simplified stories\n// wrapper is returned as default export\nexport const ToolbarSlideshow = (props) => {\n const { data: attachments } = useAttachments(\n props.classId,\n ATTACHMENT_TYPE.LESSON,\n props.lessonId\n );\n\n return (\n <ToolbarSlideshowPresentational {...props} attachments={attachments} />\n );\n};\n\nexport const ToolbarSlideshowPresentational = ({\n chunkId,\n classId,\n attachments,\n playbackRate,\n onVideoSpeedChange,\n hasVideo,\n disableBookmarks = false,\n disableSharelinks = false,\n}) => {\n return (\n <div className={s.toolbar}>\n <div className={s.toolbarItem}>\n <MaterialsPopover\n disabled={attachments.isEmpty()}\n attachments={attachments.toList()}\n label=\"Download resources\"\n iconName=\"download\"\n />\n </div>\n\n {/* TODO: remove after rolling out new course UX */}\n {/* disable bookmarks for users of the new Course Portal, which doesn't support bookmarks */}\n {!disableBookmarks && (\n <div className={cx(s.toolbarItem)}>\n <ChunkBookmark\n chunkId={chunkId}\n fullButton\n disabled={disableBookmarks}\n />\n </div>\n )}\n\n <div className={s.toolbarItem}>\n <ShareLink\n title=\"To share this chunk, copy and paste this link:\"\n model=\"chunk\"\n objectId={chunkId}\n classId={classId}\n shareType=\"chunkview\"\n origin=\"chunkview_v2\"\n >\n <button\n className={s.button}\n data-test=\"shareLink\"\n disabled={disableSharelinks}\n >\n <Icon name=\"link\" />\n Link to chunk\n </button>\n </ShareLink>\n </div>\n\n {hasVideo && (\n <div className={s.toolbarItem}>\n <div className={s.speedControlButton}>\n <SpeedControlButton\n playbackRate={playbackRate}\n onChangeSpeed={onVideoSpeedChange}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n\nToolbarSlideshowPresentational.defaultProps = {\n attachments: Immutable.Map(),\n};\n\nToolbarSlideshow.propTypes = {\n chunkId: PT.number,\n classId: PT.string,\n lessonId: PT.number.isRequired,\n playbackRate: PT.number,\n attachments: IPT.mapOf(attachmentPropTypes, PT.string),\n disableBookmarks: PT.bool,\n disableSharelinks: PT.bool,\n};\n","import { ToolbarSlideshow } from './ToolbarSlideshow';\n\nexport default ToolbarSlideshow;\n","import ToolbarSlideshow from './ToolbarSlideshow';\nimport { LessonNav } from './LessonNav';\nimport TeachingGuide from './TeachingGuide';\n\nexport { ComingSoon } from './ComingSoon';\nexport { EmptyLesson } from './EmptyLesson';\nexport { ToolbarSlideshow, LessonNav, TeachingGuide };\n","export { usePlaybackRate } from './usePlaybackRate';\n","import { useEffect, useState } from 'react';\nimport PlaybackRateCookie from 'edrolo/utils/PlaybackRateCookie';\n\nexport const usePlaybackRate = () => {\n const [playbackRate, setPlaybackRate] = useState(\n PlaybackRateCookie.get() || 1\n );\n useEffect(() => {\n PlaybackRateCookie.set(playbackRate);\n }, [playbackRate]);\n\n return [playbackRate, setPlaybackRate];\n};\n","import Lesson from './Lesson';\n\nexport default Lesson;\n","import PT from 'prop-types';\nimport urlResolver from 'edrolo/utils/URLResolver';\nimport Lesson from '../Lesson';\nimport {\n useDemoActivity,\n useDemoActivityResponse,\n useDemoQuizAttempts,\n useDemoQuizStats,\n useDemoChunkVisits,\n useDemoSuccessMeasureResponses,\n useDemoClassmates,\n} from './hooks';\nimport { useLesson } from 'edrolo/domains/lessons/hooks';\nimport { IsDemo, InjectableDependencyOverrides } from 'core/context';\nimport AppContainer from 'edrolo/domains/app/components/AppContainer';\nimport Sidebar from '../Sidebar';\nimport style from './LessonDemo.scss';\nimport LoadingIndicator from 'edrolo/domains/app/components/LoadingIndicator';\nimport { useAnalytics } from 'edrolo/analytics';\n/* eslint-disable react/prop-types */ // TODO: add props\n\nconst buildChunkUrl = (lessonId, index) =>\n urlResolver.reverse('demo-chunkview-chunk', {\n lessonId,\n index,\n });\n\nexport const LessonDemoProvider = ({ children }) => {\n return (\n <IsDemo.Provider value={{ isDemo: true }}>\n <InjectableDependencyOverrides.Provider\n value={{\n useActivityInjectable: useDemoActivity,\n useActivityResponseInjectable: useDemoActivityResponse,\n useQuizAttemptsInjectable: useDemoQuizAttempts,\n useQuizStatsInjectable: useDemoQuizStats,\n useSuccessMeasureResponsesInjectable: useDemoSuccessMeasureResponses,\n useChunkVisitsInjectable: useDemoChunkVisits,\n useClassmatesInjectable: useDemoClassmates,\n }}\n >\n {children}\n </InjectableDependencyOverrides.Provider>\n </IsDemo.Provider>\n );\n};\n\nexport const LessonDemoInner = ({\n lessonId,\n activeChunkIndex,\n push,\n replace,\n}) => {\n const { data: lesson, isLoading } = useLesson(lessonId, !!'isDemo');\n const { data: chunkVisits, recordChunkVisit } = useDemoChunkVisits(lessonId);\n\n useAnalytics({ eventPrefix: 'demo ' });\n\n if (isLoading) {\n return <LoadingIndicator loadingText=\"Loading Lesson\" />;\n }\n\n // bodyClassName=\"chunkview\"\n return (\n <AppContainer.WithSidebar\n documentTitle={lesson ? `Demo - ${lesson.get('title')}` : 'Edrolo'}\n sidebarClassName={style.sidebar}\n renderSidebar={(closeSidebar) => (\n <Sidebar\n lesson={lesson}\n visitedChunkIds={chunkVisits.map((visit) => visit.get('chunk'))}\n activeIndex={activeChunkIndex}\n closeSidebar={closeSidebar}\n buildChunkUrl={(index) => buildChunkUrl(lesson.get('id'), index)}\n renderTopNav={() => (\n <a className={style.courseTitle} href=\"http://edrolo.com.au\">\n « Return to Edrolo\n </a>\n )}\n hideChunkNav={lesson.get('is_coming_soon')}\n />\n )}\n >\n <div className=\"chunkview\">\n <Lesson\n classId={null}\n activeChunkIndex={activeChunkIndex}\n lesson={lesson}\n chunkVisits={chunkVisits}\n recordChunkVisit={recordChunkVisit}\n coursePageUrl=\"/\"\n buildChunkUrl={(index) => buildChunkUrl(lessonId, index)}\n push={push}\n replace={replace}\n hasSuccessMeasure // usually conditional on assemblage data, always true for demo\n disableSharelinks\n disableBookmarks\n />\n </div>\n </AppContainer.WithSidebar>\n );\n};\n\nLessonDemoInner.propTypes = {\n lessonId: PT.string.isRequired,\n activeChunkIndex: PT.string,\n push: PT.func.isRequired,\n replace: PT.func.isRequired,\n};\n\nexport const LessonDemo = (props) => (\n <LessonDemoProvider>\n <LessonDemoInner {...props} />\n </LessonDemoProvider>\n);\n","export { useDemoChunkVisits } from './useDemoChunkVisits';\nexport { useDemoQuizStats } from './useDemoQuizStats';\nexport { useDemoActivity } from './useDemoActivity';\nexport { useDemoActivityResponse } from './useDemoActivityResponse';\nexport { useDemoQuizAttempts } from './useDemoQuizAttempts';\nexport { useDemoSuccessMeasureResponses } from './useDemoSuccessMeasureResponses';\nexport { useDemoClassmates } from './useDemoClassmates';\n","import useSWRImmutable from 'swr/immutable';\nimport urlResolver from 'admin/utils/URLResolver';\n\nexport const useDemoActivity = (activityId) => {\n const url = urlResolver.reverse('api:demo-activities:object', { activityId });\n const { data: activity, error } = useSWRImmutable(url);\n\n // hardcode enable_collaborators to false\n // we want this disabled for demo activities\n if (activity) {\n activity.enable_collaborators = false;\n }\n\n return {\n data: activity,\n error,\n loading: !error && !activity,\n };\n};\n","import { useState } from 'react';\nimport { SAVE_STATUS } from 'edrolo/constants/SaveStatus';\nimport { useLocalStorage } from 'core/hooks/useLocalStorage';\n\nexport const useDemoActivityResponse = (activityId) => {\n const [status] = useState(SAVE_STATUS.SAVED);\n\n const defaultActivityResponsePostData = {\n block_responses: {},\n collaborators: [],\n ready_for_review: false,\n };\n\n const [activityResponse, setActivityResponse] = useLocalStorage(\n `activityResponse-${activityId}`,\n defaultActivityResponsePostData\n );\n\n return {\n activityResponse,\n activityResponseError: null,\n status,\n activityResponseIsLoading: false,\n saveActivityResponse: setActivityResponse,\n responseSaveError: false,\n };\n};\n","import Immutable from 'immutable';\nimport { useCallback } from 'react';\nimport { useLocalStorage } from 'core/hooks/useLocalStorage';\n\nexport const useDemoChunkVisits = (lessonId) => {\n const [chunkVisits, setChunkVisits] = useLocalStorage(\n `lesson-demo-chunkviews-${lessonId}`,\n Immutable.List(),\n !!'isImmutable'\n );\n\n return {\n data: chunkVisits,\n isLoading: false,\n error: null,\n recordChunkVisit: useCallback(\n (_, chunkId) => {\n setChunkVisits((oldChunkVisits) => {\n const chunkVisitIndex = oldChunkVisits.findIndex(\n (chunkVisit) => chunkVisit.get('chunk') === chunkId\n );\n return chunkVisitIndex < 0\n ? oldChunkVisits.push(\n Immutable.Map({ chunk: chunkId, visitCount: 1 })\n )\n : oldChunkVisits.updateIn(\n [chunkVisitIndex, 'visitCount'],\n (count) => count + 1\n );\n });\n },\n [setChunkVisits]\n ),\n };\n};\n","export const useDemoClassmates = (classId = null) => {\n // classId required in original useClassmates hook\n return { data: [], isLoading: false, error: null };\n};\n","import { fromJS, List } from 'immutable';\nimport { useLocalStorage } from 'core/hooks';\n\nexport const useDemoQuizAttempts = (lessonId, questionId = null) => {\n const defaultQuizAttempts = List();\n\n const isImmutable = true;\n\n const [storedQuizAttempts, setStoredQuizAttempts] = useLocalStorage(\n questionId\n ? `quizAttempts_lessonId-${lessonId}_questionId-${questionId}`\n : `quizAttempts_lessonId-${lessonId}`,\n\n defaultQuizAttempts,\n isImmutable\n );\n\n const quizAttempts = fromJS(storedQuizAttempts);\n\n function save(lessonId, questionId, quizAttempt, callback) {\n // lessonId and questionId are not used in this demo\n // but they are used in the original useQuizAttempts hook\n const updatedQuizAttempts = quizAttempts.push(quizAttempt);\n\n setStoredQuizAttempts(updatedQuizAttempts);\n\n if (callback) {\n callback();\n }\n }\n\n return {\n data: quizAttempts,\n isLoading: false,\n error: false,\n save,\n };\n};\n","// the UI just handles stats being null and hiding it so just\n// using a stub in here to override.\nexport const useDemoQuizStats = (lessonId, questionId = null) => {\n return {\n data: null,\n isLoading: false,\n error: false,\n };\n};\n","import { List, Map } from 'immutable';\nimport { useLocalStorage } from 'core/hooks';\n\nexport const useDemoSuccessMeasureResponses = (successMeasureId, lessonId) => {\n const defaultSuccessMeasures = List();\n\n const isImmutable = true;\n\n const [storedSuccessMeasureResponses, setStoredSuccessMeasureResponse] =\n useLocalStorage(\n `successMeasureResponses_lessonId-${lessonId}_successMeasureId-${successMeasureId}`,\n defaultSuccessMeasures,\n isImmutable\n );\n\n function save(\n lessonId,\n profileId,\n successMeasureId,\n value,\n successNavigateUrl\n ) {\n // successNavigateUrl is used in the original useSuccessMeasure hook\n\n const newResponse = Map({\n id: lessonId,\n profile_id: profileId,\n success_measure_id: successMeasureId,\n value,\n });\n\n const index = storedSuccessMeasureResponses.findIndex(\n (res) =>\n res.get('success_measure_id') === successMeasureId &&\n res.get('profile_id') === profileId\n );\n\n const existingResponse = index > -1;\n\n const updatedSuccessMeasureResponses = existingResponse\n ? storedSuccessMeasureResponses.set(index, newResponse)\n : storedSuccessMeasureResponses.push(newResponse);\n\n setStoredSuccessMeasureResponse(updatedSuccessMeasureResponses);\n }\n\n return {\n data: storedSuccessMeasureResponses,\n loading: false,\n save,\n };\n};\n","export { LessonDemo } from './LessonDemo';\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { Component } from 'react';\nimport cx from 'classnames';\nimport _ from 'lodash';\nimport style from './Notes.scss';\n\nclass Notes extends Component {\n createMoreNotesMarkup = () => {\n return { __html: this.props.chunk.get('more_notes') };\n };\n\n createNotesMarkup = () => {\n return { __html: this.props.chunk.get('notes') };\n };\n\n render() {\n const hasMoreNotes = !_.isEmpty(this.props.chunk.get('more_notes'));\n\n const noteClasses = cx({\n left: hasMoreNotes,\n });\n\n return (\n <div\n className={cx('chunk-notes', {\n [style.slideshow]: this.props.isSlideshow,\n })}\n style={this.props.style}\n >\n <div\n className={cx('container clearfix', {\n [style.slideshow]: this.props.isSlideshow,\n })}\n >\n <div className={noteClasses}>\n <span dangerouslySetInnerHTML={this.createNotesMarkup()} />\n </div>\n {hasMoreNotes ? (\n <div className=\"right\">\n <span dangerouslySetInnerHTML={this.createMoreNotesMarkup()} />\n </div>\n ) : null}\n </div>\n </div>\n );\n }\n}\n\nexport default Notes;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { useState } from 'react';\nimport PT from 'prop-types';\nimport IPT from 'react-immutable-proptypes';\nimport { Map } from 'immutable';\nimport cx from 'classnames';\nimport { QUESTION_TYPES } from 'edrolo/constants/QuestionTypes';\nimport FreeTextQuestion from '../questionTypes/FreeTextQuestion';\nimport MultiAnswerMultiChoiceQuestion from '../questionTypes/MultiAnswerMultiChoiceQuestion';\nimport SingleAnswerMultiChoiceQuestion from '../questionTypes/SingleAnswerMultiChoiceQuestion';\nimport IntegerQuestion from '../questionTypes/IntegerQuestion';\nimport NoResponseQuestion from '../questionTypes/NoResponseQuestion';\nimport s from './Question.scss';\nimport { useQuizStats } from 'edrolo/domains/lessons/hooks';\nimport { questionComponentPropTypes } from '../questionTypes/helpers';\nimport { useInjectable } from 'core/hooks';\nimport { useAnalytics } from 'edrolo/analytics';\nimport {\n lessonPropType,\n quizAttemptPropType,\n quizQuestionPropType,\n} from '../../../lessons/propTypes';\n\nconst MULTI_CHOICE_SAVE_DELAY = 2500;\n\nexport const QuestionPres = ({\n question,\n quizAttempts,\n quizAttemptToReview,\n quizStats,\n response,\n isSaving,\n onResponseChange,\n onSaveClick,\n isSlideshow,\n style,\n}) => {\n const questionTypes = {\n [QUESTION_TYPES.TEXT_MATCH]: SingleAnswerMultiChoiceQuestion, // TODO: Add \"Text Match\" type\n [QUESTION_TYPES.FREE_TEXT]: FreeTextQuestion,\n [QUESTION_TYPES.MULTI_ANSWER_MULTI_CHOICE]: MultiAnswerMultiChoiceQuestion,\n [QUESTION_TYPES.SINGLE_ANSWER_MULTI_CHOICE]:\n SingleAnswerMultiChoiceQuestion,\n [QUESTION_TYPES.INTEGER]: IntegerQuestion,\n [QUESTION_TYPES.NO_RESPONSE]: NoResponseQuestion,\n };\n\n const QuestionType = questionTypes[question.get('answer_type')];\n\n const isMultichoice =\n QuestionType === SingleAnswerMultiChoiceQuestion ||\n QuestionType === MultiAnswerMultiChoiceQuestion;\n\n return (\n <div\n className={cx('chunk-question', { [s.slideshow]: isSlideshow })}\n style={style}\n >\n <div className={cx('container', { [s.slideshow]: isSlideshow })}>\n <QuestionType\n question={question}\n quizAttempts={quizAttempts}\n quizAttemptToReview={quizAttemptToReview}\n quizStats={quizStats}\n response={response}\n isSaving={isSaving}\n onResponseChange={(res) => onResponseChange(res)}\n onSaveClick={() => onSaveClick()}\n isSlideshow={isSlideshow && !isMultichoice}\n />\n </div>\n </div>\n );\n};\n\nQuestionPres.propTypes = {\n ...questionComponentPropTypes,\n style: PT.shape({\n minHeight: PT.number,\n }),\n};\n\nconst Question = ({\n question,\n lesson,\n onResponseSave,\n style,\n lessonQuizAttempts,\n saveQuizAttempt,\n}) => {\n const [isSaving, setIsSaving] = useState(false);\n const [response, setResponse] = useState();\n const { track } = useAnalytics();\n\n const useQuizStatsInjectable = useInjectable(\n 'useQuizStatsInjectable',\n useQuizStats\n );\n\n const {\n data: quizStats,\n loading: loadingQS,\n error: errorQS,\n } = useQuizStatsInjectable(lesson.get('id'), question.get('id'));\n\n const quizAttempts = lessonQuizAttempts?.filter(\n (qa) => qa.get('question') === question.get('id')\n );\n\n const quizAttemptToReview = lessonQuizAttempts?.filter(\n (qa) => qa.get('question') === question.get('question_to_review')\n );\n\n const isMultiChoice = [\n QUESTION_TYPES.MULTI_ANSWER_MULTI_CHOICE,\n QUESTION_TYPES.SINGLE_ANSWER_MULTI_CHOICE,\n ].includes(question.get('answer_type'));\n\n const saveDelay = isMultiChoice ? MULTI_CHOICE_SAVE_DELAY : 0;\n\n const handleSaveClick = () => {\n track('completed quiz', {\n quiz_question_id: question.get('id'),\n });\n setIsSaving(true);\n saveQuizAttempt(\n lesson.get('id'),\n question.get('id'),\n response,\n handleSaveComplete\n );\n };\n\n const handleSaveComplete = () => {\n setIsSaving(false);\n setTimeout(() => {\n onResponseSave();\n }, saveDelay);\n };\n\n const initResponse =\n !response?.get('answer') && quizAttempts?.size > 0\n ? quizAttempts.last()\n : Map({ question: question.get('id') });\n\n if (loadingQS) {\n return <div>Loading...</div>;\n }\n\n if (errorQS) {\n return <div>{errorQS}</div>;\n }\n\n return (\n <QuestionPres\n question={question}\n quizAttempts={quizAttempts}\n quizAttemptToReview={quizAttemptToReview?.last()}\n quizStats={quizStats}\n response={response || initResponse}\n isSaving={isSaving}\n onResponseChange={setResponse}\n onSaveClick={handleSaveClick}\n isSlideshow={lesson.get('lesson_type') === 'SLIDES'}\n style={style}\n />\n );\n};\n\nQuestion.propTypes = {\n question: quizQuestionPropType.isRequired,\n lesson: lessonPropType.isRequired,\n lessonQuizAttempts: IPT.listOf(quizAttemptPropType),\n onResponseSave: PT.func.isRequired,\n saveQuizAttempt: PT.func.isRequired,\n style: PT.shape({\n minHeight: PT.number,\n }),\n};\n\nexport default Question;\n","import Question from './Question';\n\nexport default Question;\n","/* eslint-disable react/prop-types */\nimport { Component } from 'react';\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group';\nimport { Button } from 'react-bootstrap';\n\nclass QuizIndicator extends Component {\n state = {\n dismissed: false,\n };\n\n componentDidMount() {\n setTimeout(() => {\n this.setState({\n dismissed: true,\n });\n }, 5000);\n }\n\n handleClick = () => {\n this.props.onClick();\n this.setState({\n dismissed: true,\n });\n };\n\n render() {\n return (\n <ReactCSSTransitionGroup\n transitionName=\"fade\"\n transitionAppear\n transitionAppearTimeout={100}\n transitionEnterTimeout={500}\n transitionLeaveTimeout={500}\n >\n {!this.state.dismissed ? (\n <Button\n className=\"quiz-indicator\"\n bsStyle=\"primary\"\n onClick={this.handleClick}\n >\n complete <b>activity</b> to continue\n <b className=\"arrow-down\">\n <i className=\"icon-ion-chevron-down\" />\n </b>\n </Button>\n ) : null}\n </ReactCSSTransitionGroup>\n );\n }\n}\n\nexport default QuizIndicator;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { Component } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport SelfAssessmentActions from 'edrolo/actions/SelfAssessmentActions';\nimport SelfRating from '../SelfRating';\nimport s from './styles.scss';\nimport { Icon, Pill, enums } from 'edrolo-ui';\nimport { NAV_DESTINATION } from '../../constants';\n\nclass SelfRateModal extends Component {\n state = {\n showModal: false,\n next: null,\n };\n\n close = () => {\n this.setState({\n showModal: false,\n });\n };\n\n setNext = (next) => {\n this.setState({\n next,\n });\n };\n\n handleClick = (next) => {\n this.props.hasSuccessMeasure ? this.props.onSave(next) : this.open(next);\n };\n\n handleRatingClick = (rating) => {\n SelfAssessmentActions.save(this.props.lesson.get('id'), rating).then(\n this.handleRatingCompleted\n );\n };\n\n handleRatingCompleted = () => {\n this.close();\n setTimeout(this.props.onSave(this.state.next), 300);\n };\n\n open = (next) => {\n this.setState({\n showModal: true,\n next,\n });\n };\n\n render() {\n return (\n <div className={s.selfRateModal}>\n <div className={s.nextButtons}>\n {this.props.hasQuestionSet && (\n <button\n onClick={() => this.handleClick(NAV_DESTINATION.QUESTION_SET)}\n disabled={this.props.disabled}\n >\n <Pill\n variant={enums.PillVariant.CIRCLE}\n color={enums.ColorHue.GREEN}\n >\n <Icon name={enums.Icons.QUESTION} />\n </Pill>\n <span>Practice questions</span>\n <Icon name={enums.Icons.CHEVRON_RIGHT} />\n </button>\n )}\n <button\n onClick={() => this.handleClick(NAV_DESTINATION.NEXT_LESSON)}\n disabled={this.props.disabled}\n >\n <Pill\n variant={enums.PillVariant.CIRCLE}\n color={enums.ColorHue.BLUE}\n >\n <Icon name={enums.Icons.LESSON} />\n </Pill>\n <span>Next lesson</span>\n <Icon name={enums.Icons.CHEVRON_RIGHT} />\n </button>\n </div>\n\n <Modal\n container={this.props.container}\n show={this.state.showModal}\n onHide={this.close}\n data-test=\"self-rate-modal\"\n >\n <div className={s.modalContent}>\n <h2>Rate your understanding of this lesson</h2>\n <SelfRating onClick={this.handleRatingClick} />\n {this.props.lesson.get('key_knowledge_text') ? (\n <p>\n <b>Key Knowledge:</b>{' '}\n {this.props.lesson.get('key_knowledge_text')}\n </p>\n ) : null}\n <p>\n <b>What’s this all about?</b>\n <br />\n This rating goes on your study planner which helps you know which\n lessons you have mastered or need to review.\n </p>\n </div>\n </Modal>\n </div>\n );\n }\n}\n\nexport default SelfRateModal;\n","import SelfRateModal from './SelfRateModal';\n\nexport default SelfRateModal;\n","/* eslint-disable react/jsx-no-bind */\n/* eslint-disable react/prop-types */ // TODO: add props\nimport { Component } from 'react';\nimport s from './styles.scss';\nimport { withAnalytics } from 'edrolo/analytics';\n\n@withAnalytics\nclass SelfRating extends Component {\n handleClick = (rating) => {\n const {\n onClick,\n analytics: { track },\n } = this.props;\n\n track('submitted lesson self rating');\n onClick(rating);\n };\n\n render() {\n const ratings = [1, 2, 3, 4, 5].map(function (rating) {\n return (\n <li key={rating}>\n <a\n id={`self-rating-link-${rating}`}\n onClick={() => this.handleClick(rating)}\n >\n <span>{rating}</span>\n </a>\n </li>\n );\n }, this);\n\n return (\n <ul className={s.selfRating} data-test=\"self-rating\">\n {ratings}\n </ul>\n );\n }\n}\n\nexport default SelfRating;\n","import SelfRating from './SelfRating';\n\nexport default SelfRating;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PT from 'prop-types';\nimport IPT from 'react-immutable-proptypes';\nimport Immutable from 'immutable';\nimport cx from 'classnames';\nimport { Link } from 'react-router-dom';\nimport style from './Sidebar.scss';\nimport chunkGroupClassNames from 'edrolo/utils/chunkGroupClassNames';\n\nconst IconActivity = () => (\n <svg\n width=\"11\"\n height=\"11\"\n viewBox=\"0 0 11 11\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M0.6 8.2C0.434315 8.42091 0.479086 8.73431 0.7 8.9C0.920914 9.06569 1.23431 9.02091 1.4 8.8L0.6 8.2ZM4 4.5L4.35355 4.14645C4.25106 4.04395 4.10914 3.99098 3.96456 4.00126C3.81997 4.01153 3.68697 4.08404 3.6 4.2L4 4.5ZM6.5 7L6.14645 7.35355C6.24786 7.45496 6.38793 7.50795 6.53107 7.49903C6.67421 7.49012 6.80663 7.42018 6.89468 7.30697L6.5 7ZM10.3947 2.80697C10.5642 2.589 10.5249 2.27486 10.307 2.10532C10.089 1.93579 9.77486 1.97506 9.60532 2.19303L10.3947 2.80697ZM1.4 8.8L4.4 4.8L3.6 4.2L0.6 8.2L1.4 8.8ZM3.64645 4.85355L6.14645 7.35355L6.85355 6.64645L4.35355 4.14645L3.64645 4.85355ZM6.89468 7.30697L10.3947 2.80697L9.60532 2.19303L6.10532 6.69303L6.89468 7.30697Z\" />\n </svg>\n);\n\nconst Chunk = ({\n chunk,\n visited,\n active,\n className,\n onClick,\n buildChunkUrl,\n}) => (\n <li\n className={cx(\n style.chunk,\n {\n [style.visitedChunk]: visited,\n [style.activeChunk]: active,\n [style.hasQuestion]: !!chunk.get('question'),\n [style.hasActivity]: !!chunk.get('activity'),\n 'data-test-active': active,\n },\n className\n )}\n key={chunk.get('id')}\n >\n <Link\n to={buildChunkUrl(chunk.get('index'))}\n className={style.chunkTitle}\n onClick={onClick}\n title={chunk.get('title')}\n >\n {!!chunk.get('activity') && <IconActivity />}\n {chunk.get('title')}\n </Link>\n </li>\n);\n\nconst Sidebar = ({\n lesson,\n activeIndex,\n visitedChunkIds,\n closeSidebar,\n hideChunkNav,\n buildChunkUrl,\n renderTopNav = () => null,\n}) => {\n const showChunkNav = !hideChunkNav;\n return (\n <div>\n {renderTopNav()}\n <h2 className={style.lessonTitle}>{lesson.get('title')}</h2>\n <ul className={style.sidebar} data-test=\"sidebar-chunk-list\">\n {showChunkNav &&\n lesson\n .get('chunks', Immutable.List())\n .map((chunk, i, chunks) => {\n const nextChunk = chunks.get(i + 1);\n const groupingClasses = chunkGroupClassNames(chunk, nextChunk);\n return (\n <Chunk\n key={chunk.get('id')}\n chunk={chunk}\n buildChunkUrl={buildChunkUrl}\n active={chunk.get('index') === Number(activeIndex)}\n visited={visitedChunkIds.includes(chunk.get('id'))}\n className={groupingClasses}\n onClick={closeSidebar}\n />\n );\n })\n .toJS()}\n </ul>\n </div>\n );\n};\n\nconst ChunkPropType = IPT.contains({\n id: PT.number.isRequired,\n title: PT.string.isRequired,\n index: PT.number.isRequired,\n question: PT.object,\n});\n\nconst LessonPropType = IPT.contains({\n id: PT.number,\n title: PT.string,\n chunks: IPT.listOf(ChunkPropType),\n});\n\nSidebar.propTypes = {\n lesson: LessonPropType,\n activeIndex: PT.string,\n visitedChunkIds: IPT.listOf(PT.number),\n hideChunkNav: PT.bool,\n closeSidebar: PT.func,\n buildChunkUrl: PT.func.isRequired,\n renderTopNav: PT.func,\n};\n\nSidebar.defaultProps = {\n visitedChunkIds: Immutable.List(),\n renderTopNav: () => null,\n};\n\nexport default Sidebar;\n","import Sidebar from './Sidebar';\n\nexport default Sidebar;\n","import styles from './SuccessMeasure.scss';\n\nconst DislikeThumbSvg = () => {\n return (\n <svg\n width=\"180\"\n height=\"179\"\n viewBox=\"0 0 180 179\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n className={styles.svg}\n >\n <rect width=\"180\" height=\"179\" fill=\"url(#dislikeThumb)\" />\n <defs>\n <pattern\n id=\"dislikeThumb\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use\n href=\"#image0_3877_2092\"\n transform=\"translate(0 -0.0027933) scale(0.0008 0.000804469)\"\n />\n </pattern>\n <image\n id=\"image0_3877_2092\"\n width=\"1250\"\n height=\"1250\"\n href=\"data:image/png;base64,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\"\n />\n </defs>\n </svg>\n );\n};\n\nexport default DislikeThumbSvg;\n","import styles from './SuccessMeasure.scss';\n\nconst LikeThumbSvg = () => {\n return (\n <svg\n width=\"180\"\n height=\"179\"\n viewBox=\"0 0 180 179\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n className={styles.svg}\n >\n <rect width=\"180\" height=\"179\" fill=\"url(#likeThumb)\" />\n <defs>\n <pattern\n id=\"likeThumb\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use\n href=\"#image0_3877_2106\"\n transform=\"translate(0 -0.0027933) scale(0.0008 0.000804469)\"\n />\n </pattern>\n <image\n id=\"image0_3877_2106\"\n width=\"1250\"\n height=\"1250\"\n href=\"data:image/png;base64,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\"\n />\n </defs>\n </svg>\n );\n};\n\nexport default LikeThumbSvg;\n","import styles from './SuccessMeasure.scss';\n\nconst PartlyThumbSvg = () => {\n return (\n <svg\n width=\"180\"\n height=\"179\"\n viewBox=\"0 0 180 179\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n className={styles.svg}\n >\n <rect width=\"180\" height=\"179\" fill=\"url(#partlyThumb)\" />\n <defs>\n <pattern\n id=\"partlyThumb\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use\n href=\"#image0_3877_2099\"\n transform=\"translate(0 -0.0027933) scale(0.0008 0.000804469)\"\n />\n </pattern>\n <image\n id=\"image0_3877_2099\"\n width=\"1250\"\n height=\"1250\"\n href=\"data:image/png;base64,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\"\n />\n </defs>\n </svg>\n );\n};\n\nexport default PartlyThumbSvg;\n","import { useState, useEffect } from 'react';\nimport PT from 'prop-types';\nimport IPT from 'react-immutable-proptypes';\nimport LoadingIndicator from 'edrolo/domains/app/components/LoadingIndicator';\nimport SuccessMeasureOption from './SuccessMeasureOption';\nimport { Button } from 'edrolo-style-guide';\nimport { SUCCESS_RESPONSES, ANALYTICS_CONSTANTS } from './constants';\nimport DislikeThumbSvg from './DislikeThumbSvg';\nimport PartlyThumbSvg from './PartlyThumbSvg';\nimport LikeThumbSvg from './LikeThumbSvg';\nimport { useProfile } from 'edrolo/domains/profile';\nimport styles from './SuccessMeasure.scss';\nimport { useSuccessMeasureResponses } from 'edrolo/domains/lessons-chunkview/hooks';\nimport { useInjectable } from 'core/hooks';\nimport { chunkPropType } from '../../../lessons/propTypes';\nimport { useAnalytics } from 'edrolo/analytics';\n\nconst SuccessMeasure = ({\n chunk,\n lessonId,\n nextChunkUrl,\n successMeasureChunks,\n}) => {\n const { profile } = useProfile(!!'immutable');\n const { track } = useAnalytics({\n eventAttributes: {\n page_name: ANALYTICS_CONSTANTS.PAGE_NAME, // TODO: this doesn't seem right but persisting..\n },\n });\n const profileId = profile.get('id') || 1; // TODO: profileId isn't needed for anything, no need for reducer to use it.\n const successMeasureId = chunk.getIn(['success_measure', 'id']);\n const useSuccessMeasureResponsesInjectable = useInjectable(\n 'useSuccessMeasureResponsesInjectable',\n useSuccessMeasureResponses\n );\n\n const {\n data: successMeasureResponses,\n loading,\n save: recordSuccessMeasureResponse,\n } = useSuccessMeasureResponsesInjectable(successMeasureId, lessonId);\n\n const existingResponse = successMeasureResponses\n .filter((res) => res.get('success_measure_id') === successMeasureId)\n .last();\n\n const [responseValue, setResponseValue] = useState(\n existingResponse?.get('value') || null\n );\n const [saved, setSaved] = useState(false);\n\n useEffect(() => {\n // resets selected responseValue when you navigate to the new\n // success measure chunk (aka when the succesMeasureID changes)\n const existingResponse = successMeasureResponses\n .filter((res) => res.get('success_measure_id') === successMeasureId)\n .last();\n setResponseValue(existingResponse?.get('value') || null);\n }, [\n existingResponse,\n successMeasureId,\n setResponseValue,\n successMeasureResponses,\n ]);\n\n const handleSave = () => {\n recordSuccessMeasureResponse(\n lessonId,\n profileId,\n successMeasureId,\n responseValue,\n nextChunkUrl\n );\n\n track('success measure saved', {\n rating: responseValue,\n });\n setSaved(true);\n };\n\n if (!lessonId) {\n return <LoadingIndicator loadingText=\"Loading Lesson\" />;\n }\n\n return (\n <SuccessMeasurePres\n chunk={chunk}\n successMeasureChunks={successMeasureChunks}\n response={{ responseValue, setResponseValue }}\n savedState={{ saved, setSaved }}\n handleSave={handleSave}\n disabled={loading}\n />\n );\n};\n\nexport const SuccessMeasurePres = ({\n chunk,\n response,\n handleSave,\n disabled,\n savedState,\n}) => {\n const { responseValue, setResponseValue } = response;\n const { saved, setSaved } = savedState;\n const description = chunk.getIn(['success_measure', 'description']);\n const colorCode = chunk.getIn(['success_measure', 'color_code']);\n\n return (\n <div className={styles.container}>\n <h3 style={{ color: `${colorCode}` }} data-test=\"success-measure-h3\">\n Success Measure\n </h3>\n <p>{description}</p>\n\n <div className={styles.options} data-test=\"success-measure-option\">\n <SuccessMeasureOption\n label={SUCCESS_RESPONSES.NOT_YET.label}\n IconComponent={DislikeThumbSvg}\n value={SUCCESS_RESPONSES.NOT_YET.value}\n selectedValue={responseValue}\n setValue={setResponseValue}\n setSaved={setSaved}\n />\n\n <SuccessMeasureOption\n label={SUCCESS_RESPONSES.PARTLY.label}\n IconComponent={PartlyThumbSvg}\n value={SUCCESS_RESPONSES.PARTLY.value}\n selectedValue={responseValue}\n setValue={setResponseValue}\n setSaved={setSaved}\n />\n\n <SuccessMeasureOption\n label={SUCCESS_RESPONSES.YES.label}\n IconComponent={LikeThumbSvg}\n value={SUCCESS_RESPONSES.YES.value}\n selectedValue={responseValue}\n setValue={setResponseValue}\n setSaved={setSaved}\n />\n </div>\n\n <div className={styles.saveButton} data-test=\"success-measure-link\">\n <Button\n small\n disabled={disabled || !responseValue}\n onClick={handleSave}\n >\n {saved ? 'Submitted!' : 'Submit response'}\n </Button>\n </div>\n </div>\n );\n};\n\nexport default SuccessMeasure;\n\nSuccessMeasure.propTypes = {\n chunk: chunkPropType,\n lessonId: PT.number,\n nextChunkUrl: PT.string,\n successMeasureChunks: IPT.listOf(chunkPropType),\n};\n\nSuccessMeasurePres.propTypes = {\n chunk: chunkPropType,\n response: PT.shape({\n responseValue: PT.string,\n setResponseValue: PT.func,\n }),\n savedState: PT.shape({\n saved: PT.bool,\n setSaved: PT.func,\n }),\n handleSave: PT.func,\n disabled: PT.bool,\n};\n","import cx from 'classnames';\nimport PT from 'prop-types';\nimport styles from './SuccessMeasure.scss';\n\nconst SuccessMeasureOption = ({\n label,\n IconComponent,\n value,\n setValue,\n selectedValue,\n setSaved,\n}) => {\n return (\n <button\n className={cx(styles['optionButton'], {\n [styles['notSelected']]: selectedValue && value !== selectedValue,\n })}\n onClick={() => {\n setValue(value), setSaved(false);\n }}\n type=\"button\"\n data-test=\"success-measure-option-wrap\"\n >\n <IconComponent />\n <span>{label}</span>\n </button>\n );\n};\n\nexport default SuccessMeasureOption;\n\nSuccessMeasureOption.propTypes = {\n IconComponent: PT.func,\n label: PT.string,\n value: PT.string,\n selectedValue: PT.string,\n setValue: PT.func,\n setSaved: PT.func,\n};\n","export const SUCCESS_RESPONSES = {\n NOT_YET: { label: 'Not yet', value: 'not_yet' },\n PARTLY: { label: 'Partly', value: 'partly' },\n YES: { label: 'Yes', value: 'yes' },\n};\n\nexport const ANALYTICS_CONSTANTS = {\n PAGE_NAME: 'Chunkview',\n};\n","import SuccessMeasure from './SuccessMeasure';\n\nexport default SuccessMeasure;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { Component } from 'react';\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group';\n\nimport Question from './Question';\nimport Notes from './Notes';\n\nclass SupplementaryContent extends Component {\n state = {\n shouldTransition: true,\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const shouldTransition =\n (nextProps.chunk.get('question') === null) !==\n (this.props.chunk.get('question') === null);\n\n this.setState({\n shouldTransition,\n });\n }\n\n hasNotes = () => {\n return this.props.chunk.get('notes') || this.props.chunk.get('more_notes');\n };\n\n render() {\n const chunk = this.props.chunk;\n\n if (!chunk.get('video') && !chunk.get('youtube_url')) {\n return null;\n }\n\n return (\n <div id=\"supplementary-content\">\n <ReactCSSTransitionGroup\n transitionName={this.state.shouldTransition ? 'slide' : ''}\n transitionAppear\n transitionAppearTimeout={200}\n transitionEnterTimeout={200}\n transitionLeaveTimeout={200}\n >\n {chunk.get('question') ? (\n <Question\n key={chunk.getIn(['question', 'id'])}\n lesson={this.props.lesson}\n question={chunk.get('question')}\n onResponseSave={this.props.onChunkComplete}\n analyticsPayload={this.props.analyticsPayload}\n lessonQuizAttempts={this.props.lessonQuizAttempts}\n saveQuizAttempt={this.props.saveQuizAttempt}\n />\n ) : null}\n {this.hasNotes() && !chunk.get('question') ? (\n <Notes chunk={chunk} />\n ) : null}\n </ReactCSSTransitionGroup>\n </div>\n );\n }\n}\n\nexport default SupplementaryContent;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport { Component } from 'react';\n\nclass YouTubeVideo extends Component {\n render() {\n return (\n <a\n href={this.props.url}\n id=\"youtube-chunk\"\n style={this.props.style}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <p>\n View on: <b>Youtube</b>\n </p>\n <p>{this.props.url}</p>\n <p className=\"instructions\">\n After you watch this video on Youtube return here and click through to\n the next Edrolo video.\n </p>\n </a>\n );\n }\n}\n\nexport default YouTubeVideo;\n","import { Component } from 'react';\nimport { Button, FormControl } from 'react-bootstrap';\nimport { createInstructionMarkup, questionComponentPropTypes } from './helpers';\nimport Immutable from 'immutable';\n\nclass FreeTextQuestion extends Component {\n handleResponseChange = (e) => {\n this.props.onResponseChange(\n this.props.response.set('answer', e.target.value)\n );\n };\n\n render = () => {\n const { question, response, onSaveClick, isSaving } = this.props;\n return (\n <div className=\"question text-question\">\n <span dangerouslySetInnerHTML={createInstructionMarkup(question)} />\n <FormControl\n componentClass=\"textarea\"\n rows={question.get('textarea_height')}\n placeholder=\"Write your answer\"\n value={response?.get('answer')}\n onChange={this.handleResponseChange}\n />\n <Button\n onClick={onSaveClick}\n disabled={!response?.get('answer') || isSaving}\n >\n Save & Continue\n </Button>\n </div>\n );\n };\n}\n\nFreeTextQuestion.propTypes = questionComponentPropTypes;\nFreeTextQuestion.defaultProps = {\n response: Immutable.Map(),\n};\n\nexport default FreeTextQuestion;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport SelfMarkQuestion from './SelfMarkQuestion';\nimport SampleMarkQuestion from './SampleMarkQuestion';\n\nconst IntegerQuestion = (props) => {\n if (props.question.get('question_to_review')) {\n return <SelfMarkQuestion {...props} />;\n }\n return <SampleMarkQuestion {...props} />;\n};\n\nexport default IntegerQuestion;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PropTypes from 'prop-types';\nimport { Component } from 'react';\nimport { FormControl } from 'react-bootstrap';\nimport pluralize from 'pluralize';\n\nclass MarkingResponse extends Component {\n static propTypes = {\n label: PropTypes.string,\n marksAvailable: PropTypes.number,\n response: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n const answer = props.response.get('answer');\n // Default to empty string, except if answer is zero\n const value = answer === 0 ? 0 : answer || '';\n this.state = { value };\n }\n\n handleChange = (e) => {\n const value = e.target.value === '' ? '' : parseInt(e.target.value, 10);\n if (\n value === '' ||\n (!isNaN(value) && value >= 0 && value <= this.props.marksAvailable)\n ) {\n this.setState({\n value: `${value}`,\n });\n this.props.onChange(e);\n }\n };\n\n render() {\n const { label, marksAvailable, onKeyUp } = this.props;\n return (\n <div className=\"response form-group\">\n {label ? <label>{label}</label> : null}\n <div className=\"input-group\">\n <FormControl\n type=\"text\"\n value={this.state.value}\n onChange={this.handleChange}\n onKeyUp={onKeyUp}\n />\n <div className=\"input-group-addon\">\n /{pluralize('mark', marksAvailable, true)}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default MarkingResponse;\n","import { Component } from 'react';\nimport { Button } from 'react-bootstrap';\nimport Immutable from 'immutable';\nimport cx from 'classnames';\nimport MultiChoiceResponse from './MultiChoiceResponse';\nimport style from './MultiAnswerMultiChoiceQuestion.scss';\nimport { createInstructionMarkup, questionComponentPropTypes } from './helpers';\n\nclass MultiAnswerMultiChoiceQuestion extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showResult: !this.submittedAnswers().isEmpty(),\n };\n }\n\n handleResponseChange = (e) => {\n this.setState({\n showResult: false,\n });\n const value = parseInt(e.target.value, 10);\n\n const submittedAnswers = this.submittedAnswers();\n\n const newAnswers = !submittedAnswers.contains(value)\n ? submittedAnswers.push(value)\n : submittedAnswers.remove(submittedAnswers.indexOf(value));\n\n this.props.onResponseChange(\n this.props.response.set('submitted_answers', newAnswers)\n );\n };\n\n handleSaveClick = () => {\n this.setState({\n showResult: true,\n });\n this.props.onSaveClick();\n };\n\n submittedAnswers = () => {\n return this.props.response.get('submitted_answers') || Immutable.List();\n };\n\n render = () => {\n return (\n <div\n className={cx('question multi-choice multi-answer', {\n [style.slideshow]: this.props.isSlideshow,\n })}\n >\n <span\n dangerouslySetInnerHTML={createInstructionMarkup(this.props.question)}\n />\n <MultiChoiceResponse\n allowMultiSelect\n showResult={this.state.showResult}\n answers={this.props.question.get('answers')}\n checked={this.submittedAnswers().toJS()}\n stats={this.props.quizStats}\n onChange={this.handleResponseChange}\n isSlideshow={this.props.isSlideshow}\n />\n <Button\n onClick={this.handleSaveClick}\n disabled={this.submittedAnswers().isEmpty() || this.props.isSaving}\n className={cx({\n [style.button]: this.props.isSlideshow,\n })}\n >\n Save & continue »\n </Button>\n </div>\n );\n };\n}\n\nMultiAnswerMultiChoiceQuestion.propTypes = questionComponentPropTypes;\nMultiAnswerMultiChoiceQuestion.defaultProps = {\n response: Immutable.Map(),\n};\n\nexport default MultiAnswerMultiChoiceQuestion;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport cx from 'classnames';\n\nconst createMarkup = (text) => ({ __html: text });\n\nconst MultiChoiceOption = ({\n allowMultiSelect,\n value,\n showResult,\n checked,\n isCorrect,\n onChange,\n label,\n}) => (\n <li className=\"radio\">\n <label>\n <div\n className={cx('input-wrapper', {\n 'is-correct': isCorrect,\n checked: checked,\n 'show-result': showResult,\n })}\n >\n <input\n type={!allowMultiSelect ? 'radio' : 'checkbox'}\n checked={checked}\n value={value}\n onChange={onChange}\n />\n <span dangerouslySetInnerHTML={createMarkup(label)} />\n </div>\n </label>\n </li>\n);\n\nexport default MultiChoiceOption;\n","/* eslint-disable react/prop-types */ // TODO: add props\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport cx from 'classnames';\n\nimport MultiChoiceOption from './MultiChoiceOption';\nimport PercentageIndicator from 'edrolo/components/common/PercentageIndicator';\n\nimport style from './MultiChoiceResponse.scss';\nimport { quizStatsPropType } from './helpers';\n\nconst QuizStats = ({ stats }) => {\n const percentCorrect = Math.round(stats.get('percent_correct'));\n const statText = `${percentCorrect}% of people answered this question correctly`;\n return (\n <span>\n <PercentageIndicator\n className=\"bg-light-green\"\n value={percentCorrect}\n showValue={false}\n orientation=\"horizontal\"\n />\n {statText}\n </span>\n );\n};\n\nconst MultiChoiceResponse = ({\n stats,\n answers,\n allowMultiSelect,\n showResult,\n checked,\n onChange,\n isSlideshow,\n}) => {\n return (\n <div\n className={cx('response multiple-choice clearfix', {\n [style.slideshow]: isSlideshow,\n })}\n >\n <ol className=\"left\">\n {answers.map((answer) => (\n <MultiChoiceOption\n allowMultiSelect={allowMultiSelect}\n key={answer.get('id')}\n label={answer.get('text')}\n value={answer.get('id')}\n showResult={showResult}\n checked={_.includes(checked, answer.get('id'))}\n isCorrect={answer.get('is_correct')}\n onChange={onChange}\n />\n ))}\n </ol>\n <div className=\"right\">{stats ? <QuizStats stats={stats} /> : null}</div>\n </div>\n );\n};\n\nQuizStats.propTypes = {\n stats: quizStatsPropType,\n};\n\nMultiChoiceResponse.propTypes = {\n checked: PropTypes.array,\n};\n\nMultiChoiceResponse.defaultProps = {\n checked: [],\n};\n\nexport default MultiChoiceResponse;\n","import { createInstructionMarkup, questionComponentPropTypes } from './helpers';\n\nconst NoResponseQuestion = ({ question }) => (\n <div className=\"question text-question\">\n <span dangerouslySetInnerHTML={createInstructionMarkup(question)} />\n </div>\n);\n\nNoResponseQuestion.propTypes = questionComponentPropTypes;\n\nexport default NoResponseQuestion;\n","import { Component } from 'react';\n\nimport {\n createInstructionMarkup,\n createMoreInstructionMarkup,\n questionComponentPropTypes,\n} from './helpers';\nimport Immutable from 'immutable';\nimport MarkingResponse from './MarkingResponse';\nimport { Button } from 'react-bootstrap';\n\nclass SampleMarkQuestion extends Component {\n handleResponseChange = (e) => {\n this.props.onResponseChange(\n this.props.response.set('answer', e.target.value)\n );\n };\n\n disabled = () => {\n return !this.props.response.get('answer') || this.props.isSaving;\n };\n\n handleKeyUp = (e) => {\n if (e.key === 'Enter' && !this.disabled()) {\n this.props.onSaveClick();\n }\n };\n\n render = () => {\n return (\n <div className=\"question integer-question\">\n <div className=\"left\">\n <span>\n <MarkingResponse\n response={this.props.response}\n label={this.props.question.get('marking_prompt')}\n marksAvailable={this.props.question.get(\n 'indicated_maximum_marks'\n )}\n onChange={this.handleResponseChange}\n onKeyUp={this.handleKeyUp}\n />\n <Button onClick={this.props.onSaveClick} disabled={this.disabled()}>\n Save & Continue\n </Button>\n </span>\n <span\n className=\"response-text\"\n dangerouslySetInnerHTML={createInstructionMarkup(\n this.props.question\n )}\n />\n </div>\n <div className=\"right\">\n <span\n className=\"rubric\"\n dangerouslySetInnerHTML={createMoreInstructionMarkup(\n this.props.question\n )}\n />\n </div>\n </div>\n );\n };\n}\n\nSampleMarkQuestion.propTypes = questionComponentPropTypes;\nSampleMarkQuestion.defaultProps = {\n response: Immutable.Map(),\n};\n\nexport default SampleMarkQuestion;\n","import { Component } from 'react';\nimport {\n createMoreInstructionMarkup,\n questionComponentPropTypes,\n} from './helpers';\nimport Immutable from 'immutable';\nimport MarkingResponse from './MarkingResponse';\nimport { Button } from 'react-bootstrap';\n\nclass SelfMarkQuestion extends Component {\n componentDidMount() {\n this.setResponseToReview();\n }\n\n // Set the response we want to mark\n setResponseToReview = () => {\n if (this.props.quizAttemptToReview) {\n // This is not reflected in the first render\n this.props.onResponseChange(\n this.props.response.set(\n 'reviewed_question_attempt',\n this.props.quizAttemptToReview.get('id')\n )\n );\n }\n };\n\n handleResponseChange = (e) => {\n this.props.onResponseChange(\n this.props.response.set('answer', e.target.value)\n );\n };\n\n disabled = () => {\n return !this.props.response.get('answer') || this.props.isSaving;\n };\n\n handleKeyUp = (e) => {\n if (e.key === 'Enter' && !this.disabled()) {\n this.props.onSaveClick();\n }\n };\n\n render = () => {\n const { quizAttemptToReview, question, response, onSaveClick } = this.props;\n\n return (\n <div className=\"question integer-question\">\n <div className=\"left\">\n <span>\n <MarkingResponse\n response={response}\n label={question.get('marking_prompt')}\n marksAvailable={question.get('indicated_maximum_marks')}\n onChange={this.handleResponseChange}\n onKeyUp={this.handleKeyUp}\n />\n <Button onClick={onSaveClick} disabled={this.disabled()}>\n Save & Continue\n </Button>\n </span>\n <p>\n <b>Your response</b>\n </p>\n <span className=\"response-text\">\n {quizAttemptToReview ? (\n <p>{quizAttemptToReview.get('answer')}</p>\n ) : (\n '-'\n )}\n </span>\n </div>\n <div className=\"right\">\n <span\n className=\"rubric\"\n dangerouslySetInnerHTML={createMoreInstructionMarkup(question)}\n />\n </div>\n </div>\n );\n };\n}\n\nSelfMarkQuestion.propTypes = questionComponentPropTypes;\nSelfMarkQuestion.defaultProps = {\n response: Immutable.Map(),\n};\n\nexport default SelfMarkQuestion;\n","import { Component } from 'react';\nimport { Button } from 'react-bootstrap';\nimport cx from 'classnames';\nimport MultiChoiceResponse from './MultiChoiceResponse';\nimport style from './SingleAnswerMultiChoiceQuestion.scss';\nimport { createInstructionMarkup, questionComponentPropTypes } from './helpers';\nimport Immutable from 'immutable';\n\nclass SingleAnswerMultiChoiceQuestion extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showResult: !!props.response.get('answer'),\n };\n }\n\n handleResponseChange = (e) => {\n this.setState({\n showResult: false,\n });\n this.props.onResponseChange(\n this.props.response.set('answer', parseInt(e.target.value, 10))\n );\n };\n\n handleSaveClick = () => {\n this.setState({\n showResult: true,\n });\n this.props.onSaveClick();\n };\n\n render() {\n return (\n <div\n className={cx('question multi-choice single-answer', {\n [style.slideshow]: this.props.isSlideshow,\n })}\n >\n <span\n dangerouslySetInnerHTML={createInstructionMarkup(this.props.question)}\n />\n <MultiChoiceResponse\n showResult={this.state.showResult}\n answers={this.props.question.get('answers')}\n checked={[this.props.response.get('answer')]}\n stats={this.props.quizStats}\n onChange={this.handleResponseChange}\n isSlideshow={this.props.isSlideshow}\n />\n <Button\n onClick={this.handleSaveClick}\n disabled={!this.props.response.get('answer') || this.props.isSaving}\n className={cx({\n [style.button]: this.props.isSlideshow,\n })}\n >\n Save & continue »\n </Button>\n </div>\n );\n }\n}\n\nSingleAnswerMultiChoiceQuestion.propTypes = questionComponentPropTypes;\nSingleAnswerMultiChoiceQuestion.defaultProps = {\n response: Immutable.Map(),\n};\n\nexport default SingleAnswerMultiChoiceQuestion;\n","import PT from 'prop-types';\nimport IPT from 'react-immutable-proptypes';\nimport {\n quizQuestionPropType,\n quizAttemptPropType,\n} from 'edrolo/domains/lessons/propTypes';\n\nexport const createInstructionMarkup = (question) => ({\n __html: question.get('instructions'),\n});\n\nexport const createMoreInstructionMarkup = (question) => ({\n __html: question.get('more_instructions'),\n});\n\nexport const quizStatsPropType = IPT.contains({\n question_id: PT.number,\n percent_correct: PT.number,\n lesson_id: PT.number,\n});\n\nexport const questionComponentPropTypes = {\n question: quizQuestionPropType.isRequired,\n quizAttempts: IPT.listOf(quizAttemptPropType),\n quizAttemptToReview: quizAttemptPropType,\n quizStats: quizStatsPropType,\n response: quizAttemptPropType,\n isSaving: PT.bool,\n onResponseChange: PT.func,\n onSaveClick: PT.func,\n isSlideshow: PT.bool,\n};\n","export const NAV_DESTINATION = {\n QUESTION_SET: 'question-set',\n NEXT_LESSON: 'next-lesson',\n};\n","export { useSuccessMeasureResponses } from './useSuccessMeasureResponses';\n","import { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport {\n recordSuccessMeasureResponse,\n getSuccessMeasureResponseRequestStatus,\n loadSuccessMeasureResponsesByLessonId,\n getSuccessMeasureResponsesByLessonId,\n STATUS,\n} from 'edrolo/domains/lessons';\n\nexport const useSuccessMeasureResponses = (successMeasureId, lessonId) => {\n const dispatch = useDispatch();\n\n const recordRequest = useSelector((state) => {\n return getSuccessMeasureResponseRequestStatus(state, successMeasureId);\n });\n\n const successMeasureResponses = useSelector((state) => {\n return getSuccessMeasureResponsesByLessonId(state, lessonId);\n });\n\n useEffect(() => {\n if (!recordRequest) {\n dispatch(loadSuccessMeasureResponsesByLessonId.signal(lessonId));\n }\n }, [dispatch, lessonId, recordRequest]);\n\n const save = (\n lessonId,\n profileId,\n successMeasureId,\n value,\n successNavigateUrl\n ) =>\n dispatch(\n recordSuccessMeasureResponse.signal(\n lessonId,\n profileId,\n successMeasureId,\n value,\n successNavigateUrl\n )\n );\n\n return {\n data: successMeasureResponses,\n loading: [STATUS.LOADING, STATUS.SUBMITTING].includes(recordRequest),\n save,\n };\n};\n","import PT from 'prop-types';\nimport IPT from 'react-immutable-proptypes';\nimport { QUESTION_TYPES } from 'edrolo/constants/QuestionTypes';\n\nexport const successMeasurePropType = IPT.contains({\n id: PT.number.isRequired,\n description: PT.string.isRequired,\n color_code: PT.string.isRequired,\n guiding_question_text: PT.string.isRequired,\n});\n\nexport const quizQuestionPropType = IPT.contains({\n id: PT.number.isRequired,\n text: PT.string.isRequired,\n answer_type: PT.string.isRequired,\n marks_available: PT.number,\n instructions: PT.string,\n more_instructions: PT.string,\n marking_prompt: PT.string,\n question_to_review: PT.number,\n indicated_maximum_marks: PT.number.isRequired,\n answers: IPT.listOf(\n IPT.contains({\n id: PT.number.isRequired,\n text: PT.string.isRequired,\n sort_order: PT.number.isRequired,\n is_correct: PT.bool.isRequired,\n })\n ),\n textarea_height: PT.number.isRequired,\n});\n\nexport const chunkVisitPropType = IPT.contains({\n chunk: PT.number.isRequired,\n visitCount: PT.number.isRequired,\n});\n\nexport const attachmentPropType = IPT.contains({\n id: PT.number.isRequired,\n attachment_type: PT.string.isRequired,\n title: PT.string.isRequired,\n url: PT.string,\n filename: PT.string,\n});\n\nexport const chunkPropType = IPT.contains({\n id: PT.number.isRequired,\n title: PT.string.isRequired,\n title_with_knowledge_unit_serial: PT.string.isRequired,\n slug: PT.string.isRequired,\n position: PT.number.isRequired,\n is_first_in_lesson: PT.bool.isRequired,\n index: PT.number.isRequired,\n group_with_last: PT.bool.isRequired,\n youtube_url: PT.string,\n url: PT.string.isRequired,\n share_url: PT.string.isRequired,\n video: PT.object,\n notes: PT.string,\n more_notes: PT.string,\n question: quizQuestionPropType,\n activity: PT.number,\n knowledge_units: IPT.listOf(PT.number).isRequired,\n knowledge_units_read_only: IPT.listOf(\n IPT.contains({\n id: PT.number.isRequired,\n title: PT.string.isRequired,\n full_serial: PT.string.isRequired,\n difficulty: PT.number.isRequired,\n })\n ).isRequired,\n teaching_guide: PT.string,\n success_measure: successMeasurePropType,\n});\n\nexport const lessonPropType = IPT.contains({\n id: PT.number.isRequired,\n lft: PT.number.isRequired,\n title: PT.string.isRequired,\n slug: PT.string.isRequired,\n url: PT.string.isRequired,\n share_url: PT.string.isRequired,\n course_page_url: PT.string.isRequired,\n description: PT.string.isRequired,\n key_knowledge_text: PT.string.isRequired,\n is_published: PT.bool.isRequired,\n is_coming_soon: PT.bool.isRequired,\n is_premium: PT.bool.isRequired,\n parent: PT.number.isRequired,\n course: PT.number.isRequired,\n course_title: PT.string.isRequired,\n course_layout: PT.string.isRequired,\n syllabus_id: PT.number.isRequired,\n group_title: PT.string.isRequired,\n group_with_previous: PT.bool.isRequired,\n wistia_section_title: PT.string.isRequired,\n wistia_course_project_hashed_id: PT.string.isRequired,\n intro_wistia_hash: PT.string.isRequired,\n attachments: IPT.listOf(attachmentPropType).isRequired,\n chunks: IPT.listOf(chunkPropType).isRequired,\n lesson_type: PT.string.isRequired,\n});\n\nexport const quizAttemptPropType = IPT.contains({\n id: PT.number,\n question: PT.number,\n reviewed_question_attempt: PT.number,\n is_correct: PT.bool,\n answer: PT.oneOfType([PT.number, PT.string]),\n answer_type: PT.oneOf(Object.values(QUESTION_TYPES)),\n submitted_answers: IPT.listOf(PT.number),\n user: PT.number,\n attempted_ts: PT.string,\n meta: PT.any,\n});\n","import { Link } from 'react-router-dom';\nimport { SafeHTML } from 'edrolo/domains/app';\nimport urlResolver from 'edrolo/utils/URLResolver';\nimport { ANALYTICS_CONSTANTS } from '../../constants';\nimport { useAnalytics } from 'edrolo/analytics';\n\nimport style from './NotebookItem.scss';\n\nconst NotebookItem = ({\n chunkTitle,\n chunkNote,\n classId,\n lessonId,\n chunkIndex,\n chunkId,\n}: NotebookItemProps): JSX.Element => {\n const viewLessonPageLinkUrl = urlResolver.reverse('chunkview-chunk', {\n classId,\n lessonId,\n index: chunkIndex,\n });\n\n const { track } = useAnalytics({});\n\n const handleViewLesson = () => {\n track('view lesson page clicked', {\n origin: ANALYTICS_CONSTANTS.ORIGIN,\n page_name: ANALYTICS_CONSTANTS.PAGE_NAME,\n class_id: classId,\n lesson_id: lessonId,\n chunk_id: chunkId,\n });\n };\n return (\n <div className={style.notebookItemContainer}>\n <h4 className={style.chunkTitle}>{chunkTitle}</h4>\n <div className={style.chunkNotesWrapper}>\n <div className={style.viewLessonPageThumbnailUrl}>\n <Link to={viewLessonPageLinkUrl} onClick={handleViewLesson}>\n View lesson page\n </Link>\n </div>\n <div className={style.chunkNotes}>\n <SafeHTML>{chunkNote}</SafeHTML>\n </div>\n </div>\n </div>\n );\n};\n\nexport default NotebookItem;\n\ninterface NotebookItemProps {\n chunkTitle: string;\n chunkNote: string;\n classId: ClassId;\n lessonId: string;\n chunkIndex: number;\n chunkId: number;\n}\n","import { useEffect } from 'react';\nimport { List } from 'immutable';\nimport { useStudentNotes } from '../../hooks';\nimport { GradientLoadingIndicator } from 'edrolo-style-guide';\nimport { STATUS as BY_SCHOOL_CLASS_STATUS } from 'edrolo/domains/bySchoolClass';\nimport { STATUS as LESSON_STATUS } from 'edrolo/domains/lessons';\nimport NotebookPageHeaderStudentView from './NotebookPageHeaderStudentView';\nimport NotebookItem from './NotebookItem';\nimport NotebookPageTopBar from './NotebookPageTopBar';\nimport AppContainer from 'edrolo/domains/app/components/AppContainer';\nimport urlResolver from 'edrolo/utils/URLResolver';\nimport NotebookPageHeaderTeacherView from './NotebookPageHeaderTeacherView';\nimport { Lesson } from '../../types/Lesson';\nimport { Chunk } from '../../types/Chunk';\nimport {\n PrevAndNextLessonIds,\n PrevAndNextProfileIds,\n StudentNote,\n} from '../../types/Notebook';\n\nconst NotebookPage = ({\n classId,\n lessonId,\n classCode,\n classDetailStatus,\n courseAssemblageStatus,\n lesson,\n lessonStatus,\n prevAndNextLessonIds,\n loadClassDetail,\n loadCourseAssemblage,\n loadLesson,\n isTeacherView,\n profileId,\n currentStudentName,\n prevAndNextStudentProfileIds,\n}: NotebookPageProps): JSX.Element | null => {\n const { studentNotesData, studentNotesIsLoading, studentNotesError } =\n useStudentNotes(classId, profileId);\n\n useEffect(() => {\n loadClassDetail(classId);\n loadCourseAssemblage(classId);\n loadLesson(lessonId);\n }, [classId, lessonId, loadClassDetail, loadCourseAssemblage, loadLesson]);\n\n if (studentNotesError) {\n return null;\n }\n\n const isLoading =\n studentNotesIsLoading ||\n lessonStatus === LESSON_STATUS.LOADING ||\n classDetailStatus === BY_SCHOOL_CLASS_STATUS.LOADING ||\n courseAssemblageStatus === BY_SCHOOL_CLASS_STATUS.LOADING;\n\n if (isLoading) {\n return <GradientLoadingIndicator />;\n }\n\n const previousLessonId = prevAndNextLessonIds.get('prevLessonId');\n const nextLessonId = prevAndNextLessonIds.get('nextLessonId');\n const previousLessonLink = previousLessonId\n ? urlResolver.reverse('student-notes-notebook', {\n classId,\n lessonId: previousLessonId,\n profileId,\n })\n : '';\n const nextLessonLink = nextLessonId\n ? urlResolver.reverse('student-notes-notebook', {\n classId,\n lessonId: nextLessonId,\n profileId,\n })\n : '';\n\n const previousStudentProfileId = prevAndNextStudentProfileIds.get(\n 'prevStudentProfileId'\n );\n const nextStudentProfileId = prevAndNextStudentProfileIds.get(\n 'nextStudentProfileId'\n );\n const previousStudentLink = previousStudentProfileId\n ? urlResolver.reverse('student-notes-notebook', {\n classId,\n lessonId,\n profileId: previousStudentProfileId,\n })\n : '';\n const nextStudentLink = nextStudentProfileId\n ? urlResolver.reverse('student-notes-notebook', {\n classId,\n lessonId,\n profileId: nextStudentProfileId,\n })\n : '';\n\n return (\n <AppContainer\n renderTopBar={() => (\n <NotebookPageTopBar\n classId={classId}\n lesson={lesson}\n isTeacherView={isTeacherView}\n />\n )}\n >\n {isTeacherView ? (\n <NotebookPageHeaderTeacherView\n lessonTitle={lesson.get('title') as unknown as string}\n classCode={classCode}\n previousLessonLink={previousLessonLink}\n nextLessonLink={nextLessonLink}\n previousStudentLink={previousStudentLink}\n nextStudentLink={nextStudentLink}\n currentStudentName={currentStudentName}\n />\n ) : (\n <NotebookPageHeaderStudentView\n lessonTitle={lesson.get('title') as unknown as string}\n classCode={classCode}\n previousLessonLink={previousLessonLink}\n nextLessonLink={nextLessonLink}\n />\n )}\n {(lesson.get('chunks') as unknown as List<Chunk>)?.map(\n // immutablejs 3.x types are broken and make all args optional\n // instead of unioning different function sigs\n (chunk: Chunk | undefined) => {\n if (!chunk) {\n return null;\n }\n\n const chunkNote = studentNotesData?.find(\n (note: StudentNote) =>\n note['chunk_id'] === (chunk.get('id') as unknown as number)\n );\n\n return (\n <NotebookItem\n key={chunk.get('id') as unknown as number}\n chunkTitle={chunk.get('title') as unknown as string}\n chunkNote={(chunkNote && chunkNote['note_rendered']) || ''}\n classId={classId}\n lessonId={lessonId}\n chunkIndex={chunk.get('index') as unknown as number}\n chunkId={chunk.get('id') as unknown as number}\n />\n );\n }\n )}\n </AppContainer>\n );\n};\n\nexport default NotebookPage;\n\nexport interface NotebookPageProps {\n classId: ClassId;\n lessonId: string;\n classCode: string;\n classDetailStatus: string;\n courseAssemblageStatus: string;\n lesson: Lesson;\n lessonStatus: string;\n prevAndNextLessonIds: PrevAndNextLessonIds;\n loadClassDetail: (classId: ClassId) => void;\n loadCourseAssemblage: (classId: ClassId) => void;\n loadLesson: (lessonId: string) => void;\n isTeacherView: boolean;\n profileId: string;\n currentStudentName: string;\n prevAndNextStudentProfileIds: PrevAndNextProfileIds;\n}\n","import { Link } from 'react-router-dom';\n\nimport style from './NotebookPageHeaderStudentView.scss';\n\nconst NotebookPageHeaderStudentView = ({\n lessonTitle,\n classCode,\n previousLessonLink,\n nextLessonLink,\n}: NotebookPageHeaderStudentViewProps): JSX.Element => {\n const previousLessonLinkText = '<< Previous lesson';\n const nextLessonLinkText = 'Next lesson >>';\n\n return (\n <>\n <div className={style.headerContainer}>\n <div>\n <h1 className={style.lessonTitle}>{lessonTitle}</h1>\n <span className={style.classCode}>{classCode}</span>\n </div>\n <div>\n {previousLessonLink ? (\n <Link to={previousLessonLink} className={style.previousLessonLink}>\n {previousLessonLinkText}\n </Link>\n ) : (\n <span className={style.disabledLink}>{previousLessonLinkText}</span>\n )}\n <span className={style.spacer}>|</span>\n {nextLessonLink ? (\n <Link to={nextLessonLink} className={style.nextLessonLink}>\n {nextLessonLinkText}\n </Link>\n ) : (\n <span className={style.disabledLink}>{nextLessonLinkText}</span>\n )}\n </div>\n </div>\n <div className={style.divider} />\n </>\n );\n};\n\nexport default NotebookPageHeaderStudentView;\n\ninterface NotebookPageHeaderStudentViewProps {\n lessonTitle: string;\n classCode: string;\n previousLessonLink: string;\n nextLessonLink: string;\n}\n","import { Link } from 'react-router-dom';\n\nimport style from './NotebookPageHeaderTeacherView.scss';\n\nconst NotebookPageHeaderTeacherView = ({\n lessonTitle,\n classCode,\n previousLessonLink,\n nextLessonLink,\n currentStudentName,\n previousStudentLink,\n nextStudentLink,\n}: NotebookPageHeaderTeacherViewProps): JSX.Element => {\n const previousLessonLinkText = '<< Previous lesson';\n const nextLessonLinkText = 'Next lesson >>';\n const previousStudentLinkText = '<< Previous student';\n const nextStudentLinkText = 'Next student >>';\n\n return (\n <>\n <div className={style.headerContainer}>\n <div className={style.wrapper}>\n <h1 className={style.lessonTitle}>{lessonTitle}</h1>\n <div className={style.lessonLinks}>\n {previousLessonLink ? (\n <Link\n to={previousLessonLink}\n className={style.previousLessonLink}\n >\n {previousLessonLinkText}\n </Link>\n ) : (\n <span className={style.disabledLink}>\n {previousLessonLinkText}\n </span>\n )}\n <span className={style.spacer}>|</span>\n {nextLessonLink ? (\n <Link to={nextLessonLink} className={style.nextLessonLink}>\n {nextLessonLinkText}\n </Link>\n ) : (\n <span className={style.disabledLink}>{nextLessonLinkText}</span>\n )}\n </div>\n </div>\n\n <div className={style.wrapper}>\n <div>\n <span className={style.classCode}>{classCode}</span>\n </div>\n <div>\n {previousStudentLink ? (\n <Link\n to={previousStudentLink}\n className={style.previousStudentLink}\n >\n {previousStudentLinkText}\n </Link>\n ) : (\n <span className={style.disabledLink}>\n {previousStudentLinkText}\n </span>\n )}\n\n <span className={style.spacer}>|</span>\n <span>{currentStudentName}</span>\n <span className={style.spacer}>|</span>\n\n {nextStudentLink ? (\n <Link to={nextStudentLink} className={style.nextStudentLink}>\n {nextStudentLinkText}\n </Link>\n ) : (\n <span className={style.disabledLink}>{nextStudentLinkText}</span>\n )}\n </div>\n </div>\n </div>\n <div className={style.divider} />\n </>\n );\n};\n\nexport default NotebookPageHeaderTeacherView;\n\ninterface NotebookPageHeaderTeacherViewProps {\n lessonTitle: string;\n classCode: string;\n previousLessonLink: string;\n nextLessonLink: string;\n currentStudentName: string;\n previousStudentLink: string;\n nextStudentLink: string;\n}\n","import urlResolver from 'edrolo/utils/URLResolver';\nimport AppContainer from 'edrolo/domains/app/components/AppContainer';\nimport { Lesson } from '../../types/Lesson';\n\nconst NotebookPageBreadcrumbs = ({\n classId,\n lesson,\n isTeacherView,\n}: NotebookPageTopBarProps) => {\n const rootCrumb = isTeacherView ? (\n <AppContainer.Crumb url={urlResolver.reverse('classes')} anchor>\n My classes\n </AppContainer.Crumb>\n ) : (\n <AppContainer.Crumb url={urlResolver.reverse('courses-page')} anchor>\n My subjects\n </AppContainer.Crumb>\n );\n\n if (!lesson) {\n return <AppContainer.Breadcrumbs>{rootCrumb}</AppContainer.Breadcrumbs>;\n } // lesson is not loaded\n\n const lessonLinkUrl = urlResolver.reverse('chunkview-chunk', {\n classId,\n lessonId: lesson.get('id'),\n index: 1,\n });\n\n return (\n <AppContainer.Breadcrumbs>\n {rootCrumb}\n\n <AppContainer.Crumb\n url={urlResolver.reverse('course-page', {\n classId,\n })}\n >\n {lesson.get('course_title')}\n </AppContainer.Crumb>\n\n <AppContainer.Crumb url={lessonLinkUrl}>\n {lesson.get('title')}\n </AppContainer.Crumb>\n </AppContainer.Breadcrumbs>\n );\n};\n\nconst NotebookPageTopBar = ({\n classId,\n lesson,\n isTeacherView,\n}: NotebookPageTopBarProps): JSX.Element => (\n <AppContainer.TopBar>\n <AppContainer.EdroloLogo />\n <NotebookPageBreadcrumbs\n isTeacherView={isTeacherView}\n classId={classId}\n lesson={lesson}\n />\n <AppContainer.ProfileNav />\n </AppContainer.TopBar>\n);\n\nexport default NotebookPageTopBar;\n\ninterface NotebookPageTopBarProps {\n classId: ClassId;\n lesson: Lesson;\n isTeacherView: boolean;\n}\n","import { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport NotebookPage from './NotebookPage';\nimport {\n loadClassDetail,\n loadCourseAssemblage,\n getClassDetailStatus,\n getCourseAssemblageStatus,\n getPrevAndNextLessonIds,\n getStudentName,\n getPrevAndNextStudentProfileIds,\n} from 'edrolo/domains/bySchoolClass';\n\nimport {\n getLessonByLessonId,\n getLessonStatusByLessonId,\n loadLessonByLessonId,\n} from 'edrolo/domains/lessons';\nimport { useProfile, profileUtils } from 'edrolo/domains/profile';\nimport { NotebookIndex } from '../../types/Notebook';\n\nexport default ({\n classId,\n lessonId,\n profileId,\n children,\n ...restProps\n}: NotebookIndex) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const classCode = useSelector((state: any) =>\n state.bySchoolClass.getIn(['classDetail', `${classId}`, 'data', 'title'])\n );\n const classDetailStatus = useSelector((state) =>\n getClassDetailStatus(state, classId)\n );\n const courseAssemblageStatus = useSelector((state) =>\n getCourseAssemblageStatus(state, classId)\n );\n const lesson = useSelector((state) => getLessonByLessonId(state, lessonId));\n const lessonStatus = useSelector((state) =>\n getLessonStatusByLessonId(state, lessonId)\n );\n\n const prevAndNextLessonIds = useSelector((state) =>\n getPrevAndNextLessonIds(state, classId, lessonId)\n );\n\n const { profile } = useProfile(!!'immutable');\n const isTeacherView = profileUtils.isOverseerOfClass(profile, classId);\n\n const currentStudentName = useSelector((state) =>\n getStudentName(state, classId, profileId)\n );\n\n const prevAndNextStudentProfileIds = useSelector((state) =>\n getPrevAndNextStudentProfileIds(state, classId, profileId)\n );\n\n const dispatch = useDispatch();\n\n const loadClassDetailCallback = useCallback(\n (classId: ClassId) => dispatch(loadClassDetail.signal(classId)),\n [dispatch]\n );\n const loadCourseAssemblageCallback = useCallback(\n (classId: ClassId) => dispatch(loadCourseAssemblage.signal(classId)),\n [dispatch]\n );\n const loadLessonCallback = useCallback(\n (lessonId: string) => dispatch(loadLessonByLessonId.signal(lessonId)),\n [dispatch]\n );\n\n return (\n <NotebookPage\n classId={classId}\n lessonId={lessonId}\n profileId={profileId}\n classCode={classCode}\n classDetailStatus={classDetailStatus}\n courseAssemblageStatus={courseAssemblageStatus}\n lesson={lesson}\n lessonStatus={lessonStatus}\n prevAndNextLessonIds={prevAndNextLessonIds}\n loadClassDetail={loadClassDetailCallback}\n loadCourseAssemblage={loadCourseAssemblageCallback}\n loadLesson={loadLessonCallback}\n isTeacherView={isTeacherView}\n currentStudentName={currentStudentName}\n prevAndNextStudentProfileIds={prevAndNextStudentProfileIds}\n {...restProps}\n />\n );\n};\n","import { useState, SyntheticEvent } from 'react';\nimport RichTextEditor from 'react-rte';\nimport { richTextConfig } from '../../constants';\nimport styles from './RichText.scss';\nimport * as DOMPurify from 'dompurify';\n\nconst RichText = ({\n studentNoteMarkdown,\n onChange,\n}: RichTextProps): JSX.Element => {\n const [value, setValue] = useState(\n studentNoteMarkdown\n ? RichTextEditor.createValueFromString(studentNoteMarkdown, 'markdown')\n : RichTextEditor.createEmptyValue()\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleChange = (newValue: any) => {\n setValue(newValue);\n onChange({\n studentNoteMarkdown: DOMPurify.sanitize(newValue.toString('markdown')),\n });\n };\n\n // The following handler is required to prevent the RichText events from bubbling up to the parent component\n // and causing any unintended side effects on the Wistia player.\n // The Wistia embed puts a keyup handler on the document object to handle keyboard shortcuts for fullscreen etc.\n // It does a pretty naive test to see if the user is currently focused on a form element by using `element.tagName`\n // and matching on 'select', 'textarea' or 'input' and ignores the keypress in that instance, otherwise executing\n // the shortcut by toggling full screen, pausing, etc.\n // react-rte uses a `div[contenteditable=true]`, so this escape hatch isn't activated and full screen toggle still occurs.\n\n const handleEvent = (event: SyntheticEvent) => {\n event.stopPropagation();\n };\n\n return (\n <section className={styles.richText} onKeyUp={handleEvent}>\n <RichTextEditor\n className={styles.config}\n toolbarClassName={styles.toolbar}\n value={value}\n onChange={handleChange}\n toolbarConfig={richTextConfig}\n autoFocus={false}\n />\n </section>\n );\n};\n\nexport default RichText;\n\ninterface Note {\n studentNoteMarkdown: string;\n}\n\ninterface RichTextProps extends Note {\n onChange: (note: Note) => void;\n}\n","import { debounce } from 'lodash';\nimport { useMemo, useCallback } from 'react';\nimport { Link } from 'react-router-dom';\nimport RichText from '../RichText/RichText';\nimport { useStudentChunkNote } from '../../hooks';\nimport { Button, SaveStatus } from 'edrolo-style-guide';\nimport { ANALYTICS_CONSTANTS } from '../../constants';\nimport { ChunkNote } from '../../types/Hooks';\nimport { useAnalytics } from 'edrolo/analytics';\nimport styles from './StudentNote.scss';\n\nconst StudentNote = ({\n chunkId,\n notebookUrl,\n disableNotebook,\n}: StudentNoteProps): JSX.Element => {\n const { data, loading, error, status, updateStudentChunkNote } =\n useStudentChunkNote(chunkId);\n\n const { track } = useAnalytics({ throttle: 60000 });\n\n const debouncedUpdateStudentChunkNote = useMemo(\n () =>\n debounce(updateStudentChunkNote, 1000, { leading: true, trailing: true }),\n [updateStudentChunkNote]\n );\n\n const handleRichTextChange = useCallback(\n (updatedNote: ChunkNote) => {\n track('student note saved', {\n origin: ANALYTICS_CONSTANTS.ORIGIN,\n });\n\n debouncedUpdateStudentChunkNote(updatedNote);\n },\n [debouncedUpdateStudentChunkNote, track]\n );\n\n const handleOpenNotebook = () => {\n track('open notebook clicked', {\n origin: ANALYTICS_CONSTANTS.ORIGIN,\n });\n };\n\n if (error) {\n return <p>Error...</p>;\n }\n\n if (loading) {\n return <p>Loading...</p>;\n }\n\n return (\n <div className={styles.container}>\n <div className={styles.content}>\n <h5>Enter your notes here: </h5>\n <RichText\n key={chunkId}\n studentNoteMarkdown={data?.note || null}\n onChange={handleRichTextChange}\n />\n {status && (\n <div className={styles.saveStatus}>\n <SaveStatus status={status} />\n </div>\n )}\n <div className={styles.button}>\n <Link to={!disableNotebook ? notebookUrl : ''}>\n <Button\n outline\n small\n onClick={handleOpenNotebook}\n disabled={disableNotebook}\n >\n Open notebook\n </Button>\n </Link>\n </div>\n </div>\n </div>\n );\n};\n\nexport default StudentNote;\n\ninterface StudentNoteProps {\n chunkId: number;\n notebookUrl: string;\n disableNotebook?: boolean;\n}\n","import StudentNote from './StudentNote';\n\nexport default StudentNote;\n","import { GroupName } from './types/RichText';\n\n// analytics\nexport const ANALYTICS_CONSTANTS = {\n PAGE_NAME: 'Student Notes Notebook',\n ORIGIN: 'student notes',\n};\n\nexport const richTextConfig = {\n display: [\n 'INLINE_STYLE_BUTTONS',\n 'BLOCK_TYPE_BUTTONS',\n 'BLOCK_TYPE_DROPDOWN',\n ] as GroupName[],\n\n INLINE_STYLE_BUTTONS: [\n { label: 'Bold', style: 'BOLD', className: 'custom-css-class' },\n { label: 'Italic', style: 'ITALIC' },\n { label: 'Underline', style: 'UNDERLINE' },\n ],\n\n BLOCK_TYPE_DROPDOWN: [\n { label: 'Normal', style: 'unstyled' },\n { label: 'Heading Large', style: 'header-one' },\n { label: 'Heading Medium', style: 'header-two' },\n { label: 'Heading Small', style: 'header-three' },\n ],\n\n BLOCK_TYPE_BUTTONS: [\n { label: 'UL', style: 'unordered-list-item' },\n { label: 'OL', style: 'ordered-list-item' },\n ],\n\n BLOCK_ALIGNMENT_BUTTONS: [],\n};\n","export { useStudentNotes } from './useStudentNotes';\nexport { useStudentChunkNote } from './useStudentChunkNote';\n","import useSWR from 'swr';\nimport { useCallback, useState } from 'react';\nimport urlResolver from 'edrolo/utils/URLResolver';\nimport { SAVE_STATUS } from 'edrolo/constants/SaveStatus';\nimport { fetcher, post } from './utils';\nimport { ChunkNote } from '../types/Hooks';\n\ntype StatusKeys = keyof typeof SAVE_STATUS;\ntype StatusValues = typeof SAVE_STATUS[StatusKeys];\n\nexport const useStudentChunkNote = (chunkId: number) => {\n const [status, setStatus] = useState<StatusValues | null>(null);\n\n const studentNoteUrl = urlResolver.reverse('api:student-chunk-note', {\n chunkId,\n });\n\n const { data, error, mutate } = useSWR(studentNoteUrl, fetcher, {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n });\n\n const updateStudentChunkNote = useCallback(\n async ({ studentNoteMarkdown: note }: ChunkNote) => {\n setStatus(SAVE_STATUS.SAVING);\n\n const options = {\n optimisticData: { ...data, note },\n rollbackOnError: true,\n revalidate: false,\n };\n\n try {\n await mutate(post(studentNoteUrl, { note }), options);\n } catch (error) {\n setStatus(SAVE_STATUS.ERROR);\n console.error(error);\n }\n\n setStatus(SAVE_STATUS.SAVED);\n },\n [data, mutate, studentNoteUrl]\n );\n\n return {\n data,\n loading: !data && !error,\n error,\n status,\n updateStudentChunkNote,\n mutate,\n };\n};\n","import useSWR from 'swr';\nimport urlResolver from 'admin/utils/URLResolver';\nimport { fetcher } from './utils';\n\nexport const useStudentNotes = (classId: ClassId, profileId: string) => {\n const { data: studentNotesData, error: studentNotesError } = useSWR(\n urlResolver.reverse('api:student-notes', { classId, profileId }),\n fetcher\n );\n\n const studentNotesIsLoading = !studentNotesError && !studentNotesData;\n\n return {\n studentNotesData,\n studentNotesError,\n studentNotesIsLoading,\n };\n};\n","import Request from 'core/api/Request';\n\nexport const fetcher = async (url: string) => {\n const response = await Request.get(url);\n return response.body;\n};\n\nexport const post = async (url: string, data = {}) => {\n try {\n const response = await Request.post(url).send(data);\n return response.body;\n } catch (error) {\n console.error(error);\n }\n};\n","import StudentNote from './components/StudentNote';\nimport NotebookPage from './components/Notebook';\n\nexport { ANALYTICS_CONSTANTS } from './constants';\n\nexport { StudentNote, NotebookPage };\n","const LessonUtils = {\n // TODO @danny #domainlogic\n groupChunks(chunks) {\n const groups = [];\n let group = [];\n chunks.forEach((chunk, i) => {\n group.push(chunk);\n const next = chunks.get(i + 1);\n if (!next || !next.get('group_with_last')) {\n groups.push(group);\n group = [];\n }\n });\n return groups;\n },\n};\n\nexport default LessonUtils;\n","import _ from 'lodash';\nimport Cookies from 'js-cookie';\n\nexport default {\n set(rate) {\n Cookies.set('preferred_playback_rate', rate, { expires: 30, path: '/' });\n },\n\n get() {\n let rate = parseFloat(Cookies.get('preferred_playback_rate'));\n if (_.isNaN(rate)) {\n rate = 1;\n this.set(rate);\n }\n return rate;\n },\n};\n","export default function () {\n window.scrollTo(0, 0);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"activityTab\":\"styles__activityTab___zqWSm\",\"collaborators\":\"styles__collaborators___soUa2\",\"footer\":\"styles__footer___l6_Wz\"};","// extracted by mini-css-extract-plugin\nexport default {\"collabStory\":\"styles__collabStory___t3ccN\",\"modalHeader\":\"styles__modalHeader___llnfh\",\"modalBody\":\"styles__modalBody___c5Tfl\",\"modalFooter\":\"styles__modalFooter___J3v_w\",\"menuList\":\"styles__menuList___XwO5K\",\"option\":\"styles__option___kdGNM\",\"link\":\"styles__link___KLsjn\"};","// extracted by mini-css-extract-plugin\nexport default {\"studentResponses\":\"styles__studentResponses___lN_37\",\"hasResponses\":\"styles__hasResponses___f1sX3\",\"progress\":\"styles__progress___siD5k\",\"viewClassProgress\":\"styles__viewClassProgress___sBMQP\",\"header\":\"styles__header___YJqdU\",\"body\":\"styles__body___LzbC9\",\"link\":\"styles__link___Ny5Sa\",\"answeredSection\":\"styles__answeredSection___ByyQe\",\"notAnsweredStudentNames\":\"styles__notAnsweredStudentNames___WmQab fonts__whitney-book___cSNvy\",\"groupResponsesText\":\"styles__groupResponsesText___TdSTo fonts__whitney-semibold___M7vMo\",\"sectionLabel\":\"styles__sectionLabel___gzMr7 fonts__whitney-semibold___M7vMo\",\"primaryResponderName\":\"styles__primaryResponderName___eO5v_ fonts__whitney-semibold___M7vMo\"};","// extracted by mini-css-extract-plugin\nexport default {\"activityContainer\":\"styles__activityContainer___F6GtS\",\"header\":\"styles__header___cTGOf\",\"nav\":\"styles__nav___QLSHl\",\"errorAlert\":\"styles__errorAlert___t5EWU\",\"saveStatus\":\"styles__saveStatus___ZMkcA\"};","// extracted by mini-css-extract-plugin\nexport default {\"chunkBookmark\":\"ChunkBookmark__chunkBookmark___bNlQo\"};","// extracted by mini-css-extract-plugin\nexport default {\"legacyColor-lightGrey\":\"#cfcfcf\",\"legacyColor-orange\":\"#ee7860\",\"knowledgeUnits\":\"ChunkCarousel__knowledgeUnits___DLZ1h\",\"title\":\"ChunkCarousel__title____ev09\",\"brain\":\"ChunkCarousel__brain___f5GFD\",\"activeBrain\":\"ChunkCarousel__activeBrain___XVwWQ\",\"button\":\"ChunkCarousel__button___jseIM\"};","// extracted by mini-css-extract-plugin\nexport default {\"shareLink\":\"Lesson__shareLink___ClMWd\"};","// extracted by mini-css-extract-plugin\nexport default {\"medium\":\"(max-width: 1024px)\",\"tiny\":\"(max-width: 667px)\",\"extraTiny\":\"(max-width: 414px)\",\"lessonNav\":\"styles__lessonNav___D2xQL\",\"hasChunkVisit\":\"styles__hasChunkVisit___Lif6F\",\"active\":\"styles__active___kbc9q\",\"grouped\":\"styles__grouped___ERBZM\"};","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"styles__button___SDbGN\"};","// extracted by mini-css-extract-plugin\nexport default {\"teachingGuide\":\"styles__teachingGuide___cpBMY\",\"header\":\"styles__header___ZVYvE\",\"body\":\"styles__body___QDMZ0\"};","// extracted by mini-css-extract-plugin\nexport default {\"toolbar\":\"ToolbarSlideshow__toolbar___PdM4E\",\"toolbarItem\":\"ToolbarSlideshow__toolbarItem___E3W6d\",\"disabled\":\"ToolbarSlideshow__disabled___T95gD\",\"button\":\"ToolbarSlideshow__button___yf4RQ\",\"speedControlButton\":\"ToolbarSlideshow__speedControlButton___tQGjO\"};","// extracted by mini-css-extract-plugin\nexport default {\"sidebar\":\"LessonDemo__sidebar___y149q\",\"courseTitle\":\"LessonDemo__courseTitle___qoSch\"};","// extracted by mini-css-extract-plugin\nexport default {\"slideshow\":\"Notes__slideshow___SqNqi\"};","// extracted by mini-css-extract-plugin\nexport default {\"slideshow\":\"Question__slideshow___WcswR\"};","// extracted by mini-css-extract-plugin\nexport default {\"selfRateModal\":\"styles__selfRateModal___e2_qF\",\"modalContent\":\"styles__modalContent___R6c1R\",\"nextButtons\":\"styles__nextButtons___w0QOs\"};","// extracted by mini-css-extract-plugin\nexport default {\"selfRating\":\"styles__selfRating___X3681\"};","// extracted by mini-css-extract-plugin\nexport default {\"colors\":\"\\\"~edrolo-style-guide/styles/colors.scss\\\"\",\"legacyColor-lightGreen\":\"#c6f179\",\"legacyColor-blueLightened\":\"#5197CC\",\"legacyColor-darkGrey\":\"#949494\",\"legacyColor-greyText\":\"#929394\",\"legacyColor-orange\":\"#ee7860\",\"legacyColor-offWhite\":\"#f6f6f8\",\"sidebar\":\"Sidebar__sidebar___O79zH\",\"lessonTitle\":\"Sidebar__lessonTitle___Ks5M2 fonts__whitney-semibold___M7vMo\",\"courseTitle\":\"Sidebar__courseTitle___vf00V fonts__gotham-book___R27lW\",\"chunk\":\"Sidebar__chunk___PnyKX\",\"activeChunk\":\"Sidebar__activeChunk___j4JTx\",\"visitedChunk\":\"Sidebar__visitedChunk___PfgY2\",\"hasQuestion\":\"Sidebar__hasQuestion___JR5Cz\",\"hasActivity\":\"Sidebar__hasActivity___YZgZl\",\"chunkTitle\":\"Sidebar__chunkTitle___yCG4c\",\"grouped\":\"Sidebar__grouped___WzYdI\",\"last\":\"Sidebar__last___wsL1s\",\"comingSoonChunkTitle\":\"Sidebar__comingSoonChunkTitle___LshBE\"};","// extracted by mini-css-extract-plugin\nexport default {\"heavy\":\"700\",\"standard\":\"600\",\"light\":\"400\",\"whitney-book\":\"SuccessMeasure__whitney-book___VgbCW\",\"whitney-bold\":\"SuccessMeasure__whitney-bold___bBJwL\",\"gotham-book\":\"SuccessMeasure__gotham-book___IGAQo\",\"gotham-bold\":\"SuccessMeasure__gotham-bold___LNvtR\",\"whitney-semibold\":\"SuccessMeasure__whitney-semibold___xGyLD\",\"hideText\":\"SuccessMeasure__hideText___zJ7XS\",\"focus-visible\":\"SuccessMeasure__focus-visible___u7C2k\",\"container\":\"SuccessMeasure__container___ZmImI\",\"options\":\"SuccessMeasure__options___wnEIU\",\"optionButton\":\"SuccessMeasure__optionButton___nhWXq\",\"notSelected\":\"SuccessMeasure__notSelected___xDA5M\",\"svg\":\"SuccessMeasure__svg___Q55XZ\",\"error\":\"SuccessMeasure__error____PQxc\",\"button\":\"SuccessMeasure__button___oalng\",\"buttonSelected\":\"SuccessMeasure__buttonSelected___IRi4S\",\"saveButton\":\"SuccessMeasure__saveButton___dmXIA\"};","// extracted by mini-css-extract-plugin\nexport default {\"slideshow\":\"MultiAnswerMultiChoiceQuestion__slideshow___PS0p8\",\"button\":\"MultiAnswerMultiChoiceQuestion__button___OJB3a\"};","// extracted by mini-css-extract-plugin\nexport default {\"slideshow\":\"MultiChoiceResponse__slideshow___YSSR7\"};","// extracted by mini-css-extract-plugin\nexport default {\"slideshow\":\"SingleAnswerMultiChoiceQuestion__slideshow___vCJL9\",\"button\":\"SingleAnswerMultiChoiceQuestion__button___yWjAW\"};","// extracted by mini-css-extract-plugin\nexport default {\"notebookItemContainer\":\"NotebookItem__notebookItemContainer___FZo9w\",\"chunkTitle\":\"NotebookItem__chunkTitle___I1zcX\",\"chunkNotesWrapper\":\"NotebookItem__chunkNotesWrapper___b3dl9\",\"viewLessonPageThumbnailUrl\":\"NotebookItem__viewLessonPageThumbnailUrl___Dk4rS\",\"chunkNotes\":\"NotebookItem__chunkNotes___o2k6w\"};","// extracted by mini-css-extract-plugin\nexport default {\"headerContainer\":\"NotebookPageHeaderStudentView__headerContainer___kjJW2\",\"lessonTitle\":\"NotebookPageHeaderStudentView__lessonTitle___yPR33\",\"classCode\":\"NotebookPageHeaderStudentView__classCode___QXgMl fonts__whitney-book___cSNvy\",\"previousLessonLink\":\"NotebookPageHeaderStudentView__previousLessonLink___kiaQh\",\"nextLessonLink\":\"NotebookPageHeaderStudentView__nextLessonLink___BxIiZ\",\"disabledLink\":\"NotebookPageHeaderStudentView__disabledLink___bTYVQ\",\"spacer\":\"NotebookPageHeaderStudentView__spacer___b7kwx\",\"divider\":\"NotebookPageHeaderStudentView__divider___fOV5u\"};","// extracted by mini-css-extract-plugin\nexport default {\"headerContainer\":\"NotebookPageHeaderTeacherView__headerContainer___UApxs\",\"wrapper\":\"NotebookPageHeaderTeacherView__wrapper___hI450\",\"lessonTitle\":\"NotebookPageHeaderTeacherView__lessonTitle___lHTf7\",\"lessonLinks\":\"NotebookPageHeaderTeacherView__lessonLinks___UQqJR\",\"classCode\":\"NotebookPageHeaderTeacherView__classCode___0kFJf fonts__whitney-book___cSNvy\",\"previousLessonLink\":\"NotebookPageHeaderTeacherView__previousLessonLink___jkM_s\",\"nextLessonLink\":\"NotebookPageHeaderTeacherView__nextLessonLink___tWzw_\",\"previousStudentLink\":\"NotebookPageHeaderTeacherView__previousStudentLink___ojyLw\",\"nextStudentLink\":\"NotebookPageHeaderTeacherView__nextStudentLink___lyMyi\",\"disabledLink\":\"NotebookPageHeaderTeacherView__disabledLink___lt02J\",\"spacer\":\"NotebookPageHeaderTeacherView__spacer___AFUFE\",\"divider\":\"NotebookPageHeaderTeacherView__divider___Mns8t\"};","// extracted by mini-css-extract-plugin\nexport default {\"richText\":\"RichText__richText___DB5Ld\",\"config\":\"RichText__config___s3IcV\",\"toolbar\":\"RichText__toolbar___j08lu\"};","// extracted by mini-css-extract-plugin\nexport default {\"heavy\":\"700\",\"standard\":\"600\",\"light\":\"400\",\"whitney-book\":\"StudentNote__whitney-book___tq2LJ\",\"whitney-bold\":\"StudentNote__whitney-bold___LGccX\",\"gotham-book\":\"StudentNote__gotham-book___xrZB8\",\"gotham-bold\":\"StudentNote__gotham-bold___iDxun\",\"whitney-semibold\":\"StudentNote__whitney-semibold___ZaToq\",\"hideText\":\"StudentNote__hideText___BiNjS\",\"focus-visible\":\"StudentNote__focus-visible___Rwqkz\",\"container\":\"StudentNote__container___z7iTi\",\"content\":\"StudentNote__content___S_gCT\",\"saveStatus\":\"StudentNote__saveStatus___W_KUd\",\"button\":\"StudentNote__button___ZgKgi\"};"],"names":["SelfAssessmentActions","Reflux","createActions","save","asyncResult","listen","branchId","rating","SelfAssessmentAPI","then","result","this","completed","body","bind","url","urlResolver","getPath","data","branch_id","Request","post","set","send","end","PercentageIndicator","props","value","Math","round","style","orientation","width","percentage","height","className","classNames","showValue","Component","defaultProps","WrappedLink","handleClick","e","disabled","preventDefault","classes","Link","id","to","onMouseEnter","onClick","activityId","nextUrl","isTeacherView","classId","chunkId","lessonId","recordChunkVisit","track","useAnalytics","eventAttributes","activity_id","throttle","useActivityInjectable","useInjectable","useActivity","useActivityResponseInjectable","useActivityResponse","useClassmatesInjectable","useClassmates","activity","activityError","error","activityIsLoading","loading","activityResponse","status","activityResponseIsLoading","activityResponseError","saveActivityResponse","responseSaveError","useState","tabId","setTabId","setError","classmates","tabItems","label","ready_for_review","push","useEffect","debouncedSaveActivityResponse","useMemo","debounce","leading","trailing","handleActivityResponseChange","useCallback","updatedActivityResponse","loadingText","styles","activityContainer","Container","ErrorAlert","statusCode","collabModalOptions","student","profile_id","display_name","header","nav","TabNav","items","selectedItemId","onChange","saveStatus","SaveStatus","errorAlert","Activity","showExample","readOnly","StudentResponses","students","ActivityTab","onActivityResponseChange","reviewMode","analyticsPayload","isOpen","setIsOpen","enable_collaborators","collaborators","s","activityTab","Button","small","outline","length","c","i","has_collaborated_on_the_activity","onClose","studentOptions","selectedStudentIds","onSubmit","updatedCollaborators","updatedCollaboratorIds","analytics","number_of_collaborators","onBlockResponseChange","blockId","blockResponseData","block_responses","footer","CollabModal","selectedStudents","setSelectedStudents","Modal","show","onHide","Body","modalHeader","modalBody","closeMenuOnSelect","defaultValue","options","isMulti","isSearchable","placeholder","Icon","name","components","Option","innerRef","innerProps","option","ref","MenuList","children","menuList","modalFooter","studentNames","expanded","setExpanded","studentNamesToShow","remainingCount","notAnsweredStudentNames","join","link","otherNamesLink","updateCollaborators","modalOpen","setModalOpen","collaboratorNames","profileId","targetStudents","Collapse","Header","primaryResponderName","useClassActivityResponses","STUDENT_RESPONSES_REFRESH_INTERVAL","activity_responses","responded_profile_ids","not_responded_profile_ids","total","cx","studentResponses","hasResponses","sectionLabel","answeredSection","AnnotatedProgressBar","progress","notAnsweredSection","target","groupResponsesText","primaryStudents","profile","StudentResponse","userId","dispatch","type","bookmarkConstants","BOOKMARKS_FETCH_REQUEST","BookmarksAPI","loadBookmarks","response","ok","userBookmarks","normalize","bookmarks","schema","Array","schemas","userBookmark","BOOKMARKS_FETCH_SUCCESS","entities","BOOKMARKS_FETCH_ERROR","errors","failureReason","bookmarkData","BOOKMARK_SAVE_REQUEST","trackAnalytics","chunk_id","saveBookmark","BOOKMARK_SAVE_SUCCESS","bookmark","BOOKMARK_SAVE_ERROR","BOOKMARK_REMOVE_REQUEST","BOOKMARK_REMOVE_SUCCESS","BOOKMARK_REMOVE_ERROR","reverse","get","transformBody","toJS","deleteBookmark","updateData","chunk_pk","object_id","reason","action","transformRequest","request","BookmarkFormContent","state","comment","onRemove","onSave","handleRemove","handleSubmit","renderRemove","renderSave","FormGroup","controlId","FormControl","componentClass","setState","rows","onCancel","ChunkBookmark","enabled","fullButton","text","inner","chunkBookmark","placement","narrowPlacement","connect","ownProps","bookmarkSelectors","makeGetChunkBookmark","getChunkBookmark","ChunkBookmarkPopoverTrigger","$","window","UniqueOverlayTrigger","trigger","rootClose","uniqueOverlayId","renderOverlay","overlayControl","Popover","removeBookmark","hide","bookmarkActions","toString","getChunkId","getBookmarks","createSelector","Chunk","handleVideoEnd","closeFullScreenFn","chunk","isLastChunk","onVideoEnd","onChunkComplete","handleWindowResize","onChunkSizeKnown","ReactDOM","findDOMNode","onresize","_","viewChunk","prevProps","lesson","showVideo","showYoutube","showQuestion","hasNotes","isEmpty","minHeight","transitionName","transitionAppear","transitionAppearTimeout","transitionEnterTimeout","transitionLeaveTimeout","WistiaPlayer","videoHash","getIn","thumbnailUrl","WistiaUtils","getThumbnail","autoPlay","playButton","isMobile","any","playbackRate","onEnd","origin","appLabel","model","objectId","introWistiaHash","question","onResponseSave","lessonQuizAttempts","saveQuizAttempt","showNotes","isSlideshow","nextChunkUrl","successMeasureChunks","DifficultyIndicator","level","max","apply","brain","index","activeBrain","KnowledgeUnits","knowledgeUnits","ku","full_serial","title","difficulty","ChunkCarousel","handleChunkComplete","nextChunk","buildChunkUrl","browserHistory","handleChunkSizeKnown","chunkHeight","handleNextMouseEnter","shouldShowQuizIndicator","showQuizIndicator","supplementaryContentRef","scrollToSupplementaryContent","scrollToComponent","duration","align","nextProps","activeChunkIndex","nextState","skipUntil","rest","first","takeUntil","last","activeChunk","quizAttempts","qa","QUESTION_TYPES","NO_RESPONSE","size","hasAttemptedQuestion","shouldAttemptQuiz","hasSuccessMeasure","u","relative","prevChunk","container","onLessonComplete","hasQuestionSet","WistiaPreloader","video","Lesson","replace","chunkVisits","coursePageUrl","showStudentNotes","studentNotebookUrl","isStaff","nextLessonId","disableSharelinks","disableBookmarks","disableNotebook","usePlaybackRate","setPlaybackRate","Number","class_id","lesson_id","useQuizAttempts","useQuizAttemptsInjectable","loadingQA","errorQA","firstChunk","EmptyLesson","ComingSoon","mySubjectsUrl","some","shareType","shareLink","LessonNav","chunks","ActivityContainer","parseInt","ToolbarSlideshow","onVideoSpeedChange","speed","hasVideo","StudentNote","notebookUrl","TeachingGuide","src","cameraHead","href","groups","LessonUtils","groupChunks","lessonNav","links","hasChunkVisit","chunkVisit","grouped","seconds","string","minutes","remaining","tooltip","Tooltip","uniqueId","floor","OverlayTrigger","overlay","NavLink","activeClassName","active","IconQuestion","IconActivity","viewBox","xmlns","d","fill","cy","r","fillRule","clipRule","attachment","rel","Materials","withAnalytics","attachments","inline","toList","Immutable","List","MaterialsPopover","iconName","popover","button","open","setOpen","teachingGuide","color","dangerouslySetInnerHTML","__html","useAttachments","ATTACHMENT_TYPE","LESSON","ToolbarSlideshowPresentational","toolbar","toolbarItem","speedControlButton","onChangeSpeed","Map","PlaybackRateCookie","LessonDemoProvider","IsDemo","Provider","isDemo","InjectableDependencyOverrides","useDemoActivity","useDemoActivityResponse","useDemoQuizAttempts","useQuizStatsInjectable","useDemoQuizStats","useSuccessMeasureResponsesInjectable","useDemoSuccessMeasureResponses","useChunkVisitsInjectable","useDemoChunkVisits","useDemoClassmates","LessonDemoInner","useLesson","isLoading","eventPrefix","WithSidebar","documentTitle","sidebarClassName","sidebar","renderSidebar","closeSidebar","visitedChunkIds","visit","activeIndex","renderTopNav","courseTitle","hideChunkNav","useSWRImmutable","SAVE_STATUS","SAVED","useLocalStorage","setChunkVisits","oldChunkVisits","chunkVisitIndex","visitCount","updateIn","count","questionId","defaultQuizAttempts","isImmutable","storedQuizAttempts","setStoredQuizAttempts","fromJS","quizAttempt","callback","updatedQuizAttempts","successMeasureId","defaultSuccessMeasures","storedSuccessMeasureResponses","setStoredSuccessMeasureResponse","successNavigateUrl","newResponse","success_measure_id","res","updatedSuccessMeasureResponses","Notes","createMoreNotesMarkup","createNotesMarkup","hasMoreNotes","noteClasses","left","slideshow","QuestionPres","quizAttemptToReview","quizStats","isSaving","onResponseChange","onSaveClick","QuestionType","TEXT_MATCH","SingleAnswerMultiChoiceQuestion","FREE_TEXT","FreeTextQuestion","MULTI_ANSWER_MULTI_CHOICE","MultiAnswerMultiChoiceQuestion","SINGLE_ANSWER_MULTI_CHOICE","INTEGER","IntegerQuestion","NoResponseQuestion","isMultichoice","setIsSaving","setResponse","useQuizStats","loadingQS","errorQS","saveDelay","handleSaveComplete","setTimeout","initResponse","quiz_question_id","Question","QuizIndicator","dismissed","bsStyle","SelfRateModal","showModal","next","close","setNext","handleRatingClick","handleRatingCompleted","selfRateModal","nextButtons","NAV_DESTINATION","QUESTION_SET","Pill","variant","enums","PillVariant","CIRCLE","ColorHue","GREEN","Icons","QUESTION","CHEVRON_RIGHT","NEXT_LESSON","BLUE","modalContent","SelfRating","ratings","selfRating","visited","visitedChunk","hasQuestion","hasActivity","chunkTitle","Sidebar","showChunkNav","lessonTitle","groupingClasses","chunkGroupClassNames","xmlnsXlink","svg","patternContentUnits","transform","SuccessMeasurePres","handleSave","savedState","responseValue","setResponseValue","saved","setSaved","description","colorCode","SUCCESS_RESPONSES","NOT_YET","IconComponent","DislikeThumbSvg","selectedValue","setValue","PARTLY","PartlyThumbSvg","YES","LikeThumbSvg","saveButton","useProfile","page_name","ANALYTICS_CONSTANTS","PAGE_NAME","useSuccessMeasureResponses","successMeasureResponses","recordSuccessMeasureResponse","existingResponse","SuccessMeasure","SupplementaryContent","shouldTransition","YouTubeVideo","handleResponseChange","render","createInstructionMarkup","MarkingResponse","handleChange","isNaN","marksAvailable","answer","onKeyUp","pluralize","showResult","submittedAnswers","newAnswers","contains","remove","indexOf","handleSaveClick","allowMultiSelect","answers","checked","stats","isCorrect","QuizStats","percentCorrect","statText","MultiChoiceResponse","SampleMarkQuestion","handleKeyUp","key","createMoreInstructionMarkup","SelfMarkQuestion","setResponseToReview","quizStatsPropType","IPT","question_id","PT","number","percent_correct","questionComponentPropTypes","quizQuestionPropType","isRequired","listOf","quizAttemptPropType","bool","func","useDispatch","recordRequest","useSelector","getSuccessMeasureResponseRequestStatus","getSuccessMeasureResponsesByLessonId","loadSuccessMeasureResponsesByLessonId","signal","STATUS","LOADING","SUBMITTING","successMeasurePropType","color_code","guiding_question_text","answer_type","marks_available","instructions","more_instructions","marking_prompt","question_to_review","indicated_maximum_marks","sort_order","is_correct","textarea_height","chunkVisitPropType","attachmentPropType","attachment_type","filename","chunkPropType","title_with_knowledge_unit_serial","slug","position","is_first_in_lesson","group_with_last","youtube_url","share_url","object","notes","more_notes","knowledge_units","knowledge_units_read_only","teaching_guide","success_measure","lessonPropType","lft","course_page_url","key_knowledge_text","is_published","is_coming_soon","is_premium","parent","course","course_title","course_layout","syllabus_id","group_title","group_with_previous","wistia_section_title","wistia_course_project_hashed_id","intro_wistia_hash","lesson_type","reviewed_question_attempt","oneOfType","oneOf","submitted_answers","user","attempted_ts","meta","chunkNote","chunkIndex","viewLessonPageLinkUrl","notebookItemContainer","chunkNotesWrapper","viewLessonPageThumbnailUrl","ORIGIN","chunkNotes","SafeHTML","classCode","classDetailStatus","courseAssemblageStatus","lessonStatus","prevAndNextLessonIds","loadClassDetail","loadCourseAssemblage","loadLesson","currentStudentName","prevAndNextStudentProfileIds","useStudentNotes","studentNotesData","studentNotesIsLoading","studentNotesError","LESSON_STATUS","BY_SCHOOL_CLASS_STATUS","GradientLoadingIndicator","previousLessonId","previousLessonLink","nextLessonLink","previousStudentProfileId","nextStudentProfileId","previousStudentLink","nextStudentLink","renderTopBar","note","previousLessonLinkText","nextLessonLinkText","headerContainer","disabledLink","spacer","divider","previousStudentLinkText","nextStudentLinkText","wrapper","lessonLinks","NotebookPageBreadcrumbs","rootCrumb","Crumb","anchor","Breadcrumbs","lessonLinkUrl","TopBar","EdroloLogo","ProfileNav","restProps","bySchoolClass","getClassDetailStatus","getCourseAssemblageStatus","getLessonByLessonId","getLessonStatusByLessonId","getPrevAndNextLessonIds","profileUtils","isOverseerOfClass","getStudentName","getPrevAndNextStudentProfileIds","loadClassDetailCallback","loadCourseAssemblageCallback","loadLessonCallback","loadLessonByLessonId","studentNoteMarkdown","RichTextEditor","createValueFromString","createEmptyValue","richText","event","stopPropagation","config","toolbarClassName","newValue","DOMPurify","sanitize","toolbarConfig","richTextConfig","autoFocus","useStudentChunkNote","updateStudentChunkNote","debouncedUpdateStudentChunkNote","handleRichTextChange","updatedNote","content","display","INLINE_STYLE_BUTTONS","BLOCK_TYPE_DROPDOWN","BLOCK_TYPE_BUTTONS","BLOCK_ALIGNMENT_BUTTONS","setStatus","studentNoteUrl","useSWR","fetcher","revalidateIfStale","revalidateOnFocus","revalidateOnReconnect","mutate","SAVING","optimisticData","rollbackOnError","revalidate","ERROR","console","group","forEach","rate","Cookies","expires","path","parseFloat","scrollTo"],"sourceRoot":""}