{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/react/courses/course/components/IconLabel.js","webpack:///./app/react/courses/course/components/CourseHeader.js","webpack:///./app/react/courses/course/components/CourseOverview.js","webpack:///./app/react/courses/course/components/CourseFocus.js","webpack:///./app/react/courses/course/components/MaterialsRow.js","webpack:///./app/react/courses/course/components/CourseMaterials.js","webpack:///./app/react/courses/course/components/CourseNotes.js","webpack:///./app/react/courses/course/Course.js","webpack:///./app/react/courses/course/App.js","webpack:///./app/react/jsPacks/course.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","e","Promise","resolve","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","IconLabel","icon","copy","props","display","alignItems","pr","defaultProps","propTypes","PropTypes","string","isRequired","MAX_IMAGE_WIDTH","Label","children","bg","px","py","borderRadius","fontSize","lineHeight","height","width","CourseHeader","audiences","bannerBackground","headerImageUrl","levels","onAddCourseToClass","onSaveCourseToFolder","subtitle","title","courseType","description","displaySelfStudyLabel","selfStudyLevelsList","userLoggedIn","pb","flex","flexDirection","mt","my","textAlign","alt","src","fontWeight","COURSE_TYPE_ICONS","COURSE_TYPE_LABELS","Root","delayDuration","Trigger","asChild","ml","activeColor","level","outline","mx","as","Content","Arrow","maxWidth","mb","measure","mr","onClick","reverse","small","adaptive","size","justifyContent","maxHeight","node","func","bool","arrayOf","CourseOverview","content","StyledHtmlContent","dangerouslySetInnerHTML","__html","renderInlineMarkdown","CourseFocus","words","flexWrap","split","map","word","ContentBox","styled","Link","attrs","theme","colors","blue500","radii","rounded","shadows","Text","blue700","materialLabel","course_content_type","CONTENT_LABELS","type","MaterialsRow","href","path","position","reset","thumbnail_url","image","color","CourseMaterials","contents","alignSelf","CourseNotes","Course","slug","useParams","useGetCourse","isLoading","courseData","useState","isSubscribeDialogOpen","setIsSubscribeDialogOpen","moveItemModalOpen","setMoveItemModalOpen","useUserAccess","userHasAccess","dialogOpen","setDialogOpen","getInitialState","levelPreference","elliiPlusAccess","handleAddToClass","tabs","to","label","notes","useEffect","analyticsTrack","hexColor","banner","getLevelsByType","elliiPlusAvailable","AdaptiveTabs","focus","overview","AddToClassDialog","open","onOpenChange","onCancel","contentType","CONTENT_TYPES","course","id","SubscribeNowDialog","isOpen","item","fileable","onClose","reload","location","shape","number","queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","refetchOnMount","refetchOnReconnect","retry","staleTime","TWENTY_FOUR_HOURS_IN_MS","App","WebFont","load","google","families","basename","routes","basePath","QueryClientProvider","client","fallback","ElliiThemeProvider","exact","pathname","replace","document","addEventListener","mountPoint","getElementById","ReactDOM","render"],"mappings":"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","file":"course.a435c76e8564a44e87aa.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"course\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// The chunk loading function for additional chunks\n \t// Since all referenced chunks are already included\n \t// in this file, this function is empty here.\n \t__webpack_require__.e = function requireEnsure() {\n \t\treturn Promise.resolve();\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//d3uk5h2fsqai9v.cloudfront.net/js-packs/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1539,\"vendor\",\"package-common\",\"ellii\",\"react\",\"package-flashcards\",\"package-folders\",\"course~flashcardSets~folders~media~teacher/planner~video\",\"course~flashcardSets~folders~media~siteFolderModal~video\",1,\"course~courses\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import PropTypes from 'prop-types'\nimport { Box, Icon, Text } from '@redriverpress/system'\n\nexport default function IconLabel({ icon, copy, ...props }) {\n return (\n \n \n {copy}\n \n )\n}\n\nIconLabel.defaultProps = {\n copy: null,\n}\n\nIconLabel.propTypes = {\n icon: PropTypes.string.isRequired,\n copy: PropTypes.string,\n}\n","import PropTypes from 'prop-types'\n\nimport {\n Box,\n Container,\n Icon,\n Heading,\n MonoButton,\n Text,\n Image,\n Tooltip,\n LevelBars,\n TransparentButton,\n} from '@redriverpress/system'\n\nimport {\n COURSE_TYPE_ICONS,\n COURSE_TYPE_LABELS,\n} from 'Common/constants/contentTypes'\nimport IconLabel from './IconLabel'\n\nconst MAX_IMAGE_WIDTH = ['168px', null, '192px', '343px']\n\nconst Label = ({ children, ...props }) => (\n \n {children}\n \n)\n\nLabel.propTypes = {\n children: PropTypes.node.isRequired,\n}\n\nexport default function CourseHeader({\n audiences,\n bannerBackground,\n headerImageUrl,\n levels,\n onAddCourseToClass,\n onSaveCourseToFolder,\n subtitle,\n title,\n courseType,\n description,\n displaySelfStudyLabel,\n selfStudyLevelsList,\n userLoggedIn,\n}) {\n return (\n \n \n \n {/* Info Block */}\n \n {/* HEADER IMAGE - only for $default and $sm */}\n \n \n \n\n \n \n\n {displaySelfStudyLabel && (\n \n \n \n \n \n \n \n \n \n \n Your students can choose and complete Courses and Study\n Packs on their own time in the Self-Study{' '}\n area of their account.\n \n \n \n )}\n \n {/* Title / sub-title */}\n \n {title}\n \n \n {subtitle}\n \n\n {/* Description */}\n {description && (\n \n {description}\n \n )}\n\n {/* Audience */}\n \n \n \n \n\n \n \n \n Add to class\n \n\n {/* Save to folder Button */}\n {userLoggedIn && (\n \n \n \n )}\n \n \n \n\n {/* RIGHT SIDE - HEADER IMAGE */}\n \n \n \n \n \n )\n}\n\nCourseHeader.defaultProps = {\n audiences: null,\n levels: null,\n subtitle: null,\n}\n\nCourseHeader.propTypes = {\n audiences: PropTypes.string,\n bannerBackground: PropTypes.string.isRequired,\n headerImageUrl: PropTypes.string.isRequired,\n levels: PropTypes.string,\n onAddCourseToClass: PropTypes.func.isRequired,\n onSaveCourseToFolder: PropTypes.func.isRequired,\n subtitle: PropTypes.string,\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n courseType: PropTypes.string.isRequired,\n displaySelfStudyLabel: PropTypes.bool.isRequired,\n selfStudyLevelsList: PropTypes.arrayOf(PropTypes.string).isRequired,\n userLoggedIn: PropTypes.bool.isRequired,\n}\n","import PropTypes from 'prop-types'\n\nimport { Container, Heading, Text } from '@redriverpress/system'\nimport { renderInlineMarkdown } from 'Common/utils/markdown'\nimport StyledHtmlContent from './StyledHtmlContent'\n\nexport default function CourseOverview({ content }) {\n return (\n \n \n Overview\n \n\n \n \n \n \n )\n}\n\nCourseOverview.propTypes = {\n content: PropTypes.string.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { Box, Container, Text, Heading } from '@redriverpress/system'\n\nexport default function CourseFocus({ words }) {\n return (\n \n \n \n Focus\n \n \n {words.split(',').map(word => (\n \n \n {word}\n \n \n ))}\n \n \n \n )\n}\n\nCourseFocus.propTypes = {\n words: PropTypes.string.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { Box, CoverImage, Text, Link } from '@redriverpress/system'\n\nimport styled from 'styled-components'\nimport { CONTENT_LABELS } from 'Common/constants/contentTypes'\n\nconst ContentBox = styled(Link).attrs({\n bg: 'white',\n display: 'flex',\n alignItems: ['flex-start', null, 'center'],\n borderRadius: 'medium',\n p: 3,\n mb: 2,\n})`\n width: 100%;\n cursor: pointer;\n &:focus {\n outline: none;\n }\n\n &:focus,\n &:focus-visible {\n box-shadow: 0 0 0 2px ${props => props.theme.colors.blue500};\n }\n\n &:after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: ${props => props.theme.radii.rounded};\n box-shadow: ${props => props.theme.shadows[3]};\n opacity: 0;\n transition: 0.15s ease-in;\n }\n\n &:hover:after,\n &:focus:after {\n opacity: 1;\n }\n`\n\nconst Label = styled(Text)`\n text-decoration: underline;\n text-decoration-color: ${props => props.theme.colors.blue700};\n text-underline-position: under;\n width: fit-content;\n`\n\nconst coverImageSize = '3rem'\n\nconst materialLabel = content => {\n return content.course_content_type === 'assessment'\n ? `Assessment`\n : CONTENT_LABELS[content.content.type]\n}\n\nexport default function MaterialsRow({ content }) {\n return (\n \n \n \n {content.position}.\n \n \n \n \n \n {materialLabel(content)}\n \n \n \n \n )\n}\n\nMaterialsRow.propTypes = {\n content: PropTypes.shape({\n id: PropTypes.number.isRequired,\n type: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n image: PropTypes.string,\n thumbnail_url: PropTypes.string,\n }).isRequired,\n}\n","import PropTypes from 'prop-types'\n\nimport { Box, Button, Container, Icon } from '@redriverpress/system'\n\nimport MaterialsRow from './MaterialsRow'\n\nexport default function CourseMaterials({ contents, onAddCourseToClass }) {\n return (\n \n \n {contents.map(content => (\n \n ))}\n\n \n \n Add to class\n \n \n \n )\n}\n\nCourseMaterials.propTypes = {\n contents: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n type: PropTypes.string.isRequired,\n position: PropTypes.number.isRequired,\n content: PropTypes.shape({\n id: PropTypes.number.isRequired,\n type: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n image: PropTypes.string,\n thumbnail_url: PropTypes.string,\n }),\n })\n ).isRequired,\n onAddCourseToClass: PropTypes.func.isRequired,\n}\n","import PropTypes from 'prop-types'\n\nimport { Container, Text } from '@redriverpress/system'\nimport { renderInlineMarkdown } from 'Common/utils/markdown'\nimport StyledHtmlContent from './StyledHtmlContent'\n\nexport default function CourseNotes({ content }) {\n return (\n \n \n \n \n \n )\n}\n\nCourseNotes.propTypes = {\n content: PropTypes.string.isRequired,\n}\n","import { useState, useEffect } from 'react'\nimport { Route, Switch, useParams } from 'react-router-dom'\n\nimport { Box } from '@redriverpress/system'\n\nimport { MoveItemModal } from 'Packages/folders'\nimport AddToClassDialog from 'Common/components/dialogs/AddToClassDialog'\nimport SubscribeNowDialog from 'Common/components/dialogs/SubscribeNowDialog'\nimport useUserAccess from 'Common/hooks/useUserAccess'\nimport {\n CONTENT_TYPES,\n COURSE_TYPE_LABELS,\n} from 'Common/constants/contentTypes'\nimport AdaptiveTabs from 'Common/components/AdaptiveTabs'\nimport analyticsTrack from 'Common/utils/analytics'\n\nimport getInitialState from 'Common/utils/getInitialState'\nimport getLevelsByType from 'Common/utils/getLevelsByType'\nimport { useGetCourse } from '../hooks/useGetCourses'\nimport CourseHeader from './components/CourseHeader'\nimport CourseOverview from './components/CourseOverview'\nimport CourseFocus from './components/CourseFocus'\nimport CourseMaterials from './components/CourseMaterials'\nimport CourseNotes from './components/CourseNotes'\n\nexport default function Course() {\n const { slug } = useParams()\n const { isLoading, courseData } = useGetCourse({ slug })\n const [isSubscribeDialogOpen, setIsSubscribeDialogOpen] = useState(false)\n const [moveItemModalOpen, setMoveItemModalOpen] = useState(false)\n const { userLoggedIn, userHasAccess } = useUserAccess()\n\n const [dialogOpen, setDialogOpen] = useState(false)\n\n const { levelPreference, elliiPlusAccess } = getInitialState()\n\n const handleAddToClass = () => {\n userLoggedIn && userHasAccess\n ? setDialogOpen(true)\n : setIsSubscribeDialogOpen(true)\n }\n\n const tabs = [\n { to: `/${courseData?.slug}/materials`, label: 'Materials' },\n { to: `/${courseData?.slug}/overview`, label: 'Overview' },\n ]\n if (courseData?.notes)\n tabs.push({\n to: `/${courseData.slug}/notes`,\n label: 'Teachers’ Notes',\n })\n\n useEffect(() => {\n !isLoading &&\n analyticsTrack('Opened Course', {\n slug: courseData.slug,\n courseType: courseData.courseType,\n })\n }, [])\n\n return (\n !isLoading && (\n \n setMoveItemModalOpen(true)}\n subtitle={courseData.subtitle}\n title={courseData.title}\n courseType={courseData.courseType}\n description={courseData.description}\n displaySelfStudyLabel={\n elliiPlusAccess && courseData.elliiPlusAvailable\n }\n selfStudyLevelsList={courseData.selfStudyLevelsList}\n userLoggedIn={userLoggedIn}\n />\n\n \n \n \n\n \n \n \n \n \n {courseData.focus && }\n {courseData.overview && (\n \n )}\n \n \n {courseData.notes && }\n \n \n\n setDialogOpen(false)}\n onCancel={() => setDialogOpen(false)}\n contentType={CONTENT_TYPES.course}\n courseType={courseData.courseType}\n content={{ id: courseData.id, title: courseData.title }}\n />\n\n setIsSubscribeDialogOpen(isOpen)}\n />\n\n {!isLoading && !!courseData && (\n {\n setMoveItemModalOpen(false)\n reload && window.location.reload()\n }}\n />\n )}\n \n )\n )\n}\n","import { Loading, Toaster } from '@redriverpress/system'\n\nimport WebFont from 'webfontloader'\nimport { BrowserRouter as Router, Route, Redirect } from 'react-router-dom'\nimport { QueryClient, QueryClientProvider } from 'react-query'\nimport ElliiThemeProvider from 'Common/components/ElliiThemeProvider'\nimport { TWENTY_FOUR_HOURS_IN_MS } from 'Common/utils/datetime'\nimport { AsyncModalFoldersProvider } from 'Packages/folders'\n\nimport Course from './Course'\nimport { routes } from '../common/constants'\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n retry: false,\n staleTime: TWENTY_FOUR_HOURS_IN_MS,\n },\n },\n})\n\nexport default function App() {\n WebFont.load({\n google: {\n families: ['Open Sans:400,400italic,600,700,800', 'Quicksand:700'],\n },\n })\n\n return (\n \n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import ReactDOM from 'react-dom'\n\nimport App from '../courses/course/App'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const mountPoint = document.getElementById('root')\n\n ReactDOM.render(, mountPoint)\n})\n"],"sourceRoot":""}