{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/components/Spinner.jsx","webpack:///./js/components/ProductName.jsx","webpack:///./js/store/actions/user.js","webpack:///./js/common-proptypes.js","webpack:///./js/utils.ts","webpack:///./js/components/CourseList/CourseList.jsx","webpack:///./js/containers/pages/MyCourses.jsx","webpack:///./js/containers/App.jsx","webpack:///./js/containers/LocaleLoader.jsx","webpack:///./locale/allLocales.js","webpack:///./js/store/createStore.js","webpack:///./js/store/reducers/index.js","webpack:///./js/store/reducers/user.js","webpack:///./js/store/reducers/locale.js","webpack:///./js/store/reducers/courses.js","webpack:///./js/store/reducers/course.js","webpack:///./js/routing/RouteUtils.jsx","webpack:///./js/containers/CoursesLoader.jsx","webpack:///./js/components/CourseList/index.js","webpack:///./js/components/CourseList/CourseListRenderer.jsx","webpack:///./js/components/CourseList/CourseRenderer.jsx","webpack:///./js/components/CourseList/Empty.jsx","webpack:///./js/components/CourseList/img/empty-shelf.jpg","webpack:///./js/components/CourseDetails/CourseDetailsRoute.jsx","webpack:///./js/containers/CourseLoader.jsx","webpack:///./js/components/CourseDetails/CourseDetails.jsx","webpack:///./js/components/CourseDetails/CourseDetailsRenderer.jsx","webpack:///./js/components/CourseDetails/CourseSection.jsx","webpack:///./js/components/CourseDetails/CourseLesson.jsx","webpack:///./js/store/actions/courses.ts","webpack:///./js/curriculum.js","webpack:///./locale lazy ./node_modules/@lingui/loader ^\\.\\/.*\\/messages\\.json$ namespace object","webpack:///./node_modules/moment/locale sync en","webpack:///./js/components/CatastrophicErrorDisplay.module.scss","webpack:///./js/components/Spinner.module.scss","webpack:///./js/components/CourseList/CourseRenderer.module.scss","webpack:///./js/components/CourseList/Empty.module.scss","webpack:///./js/components/CourseList/CourseList.module.scss","webpack:///./js/components/CourseDetails/CourseLesson.module.scss","webpack:///./js/components/CourseDetails/CourseSection.module.scss","webpack:///./js/components/CourseDetails/CourseDetails.module.scss","webpack:///./js/components/CatastrophicErrorDisplay.jsx","webpack:///./js/store/actions/locale.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","head","document","getElementsByTagName","script","createElement","charset","timeout","nc","setAttribute","src","p","2","jsonpScriptSrc","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","error","Error","request","undefined","setTimeout","appendChild","all","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","Spinner","_this$props","this","props","className","passedProps","_objectWithoutProperties","React","_extends","cx","styles","root","PureComponent","size","PropTypes","oneOf","ProductName","block","classes","match","courseNameLegacyTagRE","exec","string","isRequired","bool","types","GET_PROFILE","SERVICE_ENDPOINT","prefixUrl","getProfile","payload","axios","then","response","Success","profile","mutateKeys_lowercaseFirstLetter","Payload","Profile","learningStats","HomepageStats","CURRENCIES","CurrencyType","PriceShape","currency","number","PriceType","shape","AttributeShape","id","AttributeType","courseStatus","COMPLETE","INCOMPLETE","COMING_DUE","PAST_DUE","OPTIONAL","COURSE_STATUSES","entries","map","_ref","_ref2","_slicedToArray","CourseStatusType","courseViewMode","NORMAL","SEQUENTIAL","COURSE_VIEW_MODES","_ref3","_ref4","CourseViewModeType","CourseShape","curriculumId","description","shortDescription","dueDate","instanceOf","Date","expiresOn","courseId","requirementsRegistered","forceLinearCompletion","sections","any","status","viewMode","containsILT","platform","CourseType","LessonShape","complete","curriculumSectionItemId","framework","iltCourse","isILT","node","objectHash","objectId","objectName","objectTypeId","required","subGroup","LessonType","SectionShape","curriculumSectionId","items","arrayOf","minReq","optional","userCurriculumAssignmentId","SectionType","ProductShape","keywords","thumbnailImage","bannerImage","categories","curriculaIds","dateCreated","dateModified","price","purchase","orderId","purchaseDate","ProductType","InstructorLeadProductShape","_objectSpread","date","duration","location","seats","total","remaining","InstructorLeadProductType","FILTER_TYPES","CourseFilterShape","getValue","func","test","format","CourseFilterType","ActiveFilterShape","filterId","activeValue","ActiveFilterType","CartItemShape","quantity","dateAdded","productId","CartItemType","PaymentInfoShape","cardNumber","csc","nameOnCard","expiry","address","city","state","zip","PaymentInfoType","dateIsoUtcRE","dateSqlUtcRE","dateReviver","k","v","obj","keys","reduce","acc","nextKey","split","toLowerCase","join","url","process","exc","RegExp","some","replace","concat","sortByArrayIndex","orderArray","a","b","ia","indexOf","ib","va","mapStateToProps","allCourses","courses","toList","toJS","loading","errors","toArray","connect","_temp","_class","_React$PureComponent","CourseList","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","arguments","_inherits","_createClass","_CourseListRenderer_jsx__WEBPACK_IMPORTED_MODULE_2__","__reactstandin__regenerateByEval","code","eval","_defineProperty","__webpack_exports__","hot","containers_App__WEBPACK_IMPORTED_MODULE_3__","containers_CoursesLoader__WEBPACK_IMPORTED_MODULE_5__","blocking","react_router_dom__WEBPACK_IMPORTED_MODULE_0__","basename","react_router_dom__WEBPACK_IMPORTED_MODULE_1__","path","exact","component","routing_RouteUtils__WEBPACK_IMPORTED_MODULE_4__","CourseDetailsRoute","createStore","store","App","_getPrototypeOf2","_this","_len","args","Array","_key","_assertThisInitialized","_info","setState","react__WEBPACK_IMPORTED_MODULE_0___default","components_CatastrophicErrorDisplay__WEBPACK_IMPORTED_MODULE_4__","title","Fragment","style","fontSize","lineHeight","role","aria-label","children","react_redux__WEBPACK_IMPORTED_MODULE_1__","containers_LocaleLoader__WEBPACK_IMPORTED_MODULE_3__","locale","_React$Component","LocaleLoader","catalogs","_asyncToGenerator","regeneratorRuntime","mark","_callee","catalog","wrap","_context","prev","next","sent","stop","_x","loadCatalog","nextProps","nextState","nextLocale","_lingui_react__WEBPACK_IMPORTED_MODULE_2__","language","Component","allLocales","langs","history","createHistory","composeEnhancers","composeWithDevTools","enhancer","applyMiddleware","promiseMiddleware","reduxCreateStore","rootReducer","initialState","action","localeReducer","user","userReducer","coursesReducer","course","courseReducer","Immutable","Map","pending","dateLoaded","List","isSignedIn","OrderedMap","ret","set","update","clear","_err","unshift","message","fromJS","has","isEmpty","availableLocales","filtersReducer","SET","includes","LocaleCurrency","getCurrency","GET_COURSES","coursesByUserCurriculumId","GET_DETAILS","errorObj","responseCode","ScrollToTop","withRouter","ScrollToTopInner","prevProps","scrollTo","ScrollToTopOnMount","_React$Component2","ScrollToTopOnMountInner","idleProps","ms","events","CoursesLoader","withIdle","CoursesLoaderInner","idle","dispatchFetch","dispatch","getMyCourses","fetchProducts","_this$props2","minHeight","components_Spinner__WEBPACK_IMPORTED_MODULE_4__","components_CatastrophicErrorDisplay__WEBPACK_IMPORTED_MODULE_8__","oneOfType","withCourses","C","wrappedComponentRef","remainingProps","ref","displayName","WrappedComponent","hoistStatics","_CourseList_jsx__WEBPACK_IMPORTED_MODULE_0__","CourseListRenderer","$courses","_CourseRenderer_jsx__WEBPACK_IMPORTED_MODULE_1__","even","odd","container","courseList","_Empty_jsx__WEBPACK_IMPORTED_MODULE_2__","empty","CourseRenderer","body","to","components_ProductName__WEBPACK_IMPORTED_MODULE_2__","dangerouslySetInnerHTML","__html","Empty","bookshelfImgSrc","bookshelf","alt","content","containers_CourseLoader__WEBPACK_IMPORTED_MODULE_0__","_CourseDetails_jsx__WEBPACK_IMPORTED_MODULE_1__","params","CourseLoader","CourseLoaderInner","getCourseDetails","fetch","render","withCourse","createEnhancer","CourseDetails","components_Spinner__WEBPACK_IMPORTED_MODULE_2__","components_CatastrophicErrorDisplay__WEBPACK_IMPORTED_MODULE_3__","resolution","_CourseDetailsRenderer_jsx__WEBPACK_IMPORTED_MODULE_4__","CourseDetailsRenderer","$sections","section","lockReason","previousSection","i18nMark","getSectionLockedReason","_CourseSection_jsx__WEBPACK_IMPORTED_MODULE_5__","locked","$expires","expires","_lingui_react__WEBPACK_IMPORTED_MODULE_0__","values","expiresFromNow","moment","fromNow","courseName","components_ProductName__WEBPACK_IMPORTED_MODULE_4__","getCourseHeaderMessage","CourseSection","lessonProps","$items","item","_CourseLesson_jsx__WEBPACK_IMPORTED_MODULE_2__","lesson","previousLesson","getLessonLockedReason","data-section-name","components","withI18n","CourseLesson","tipRef","destroy","renderLessonStatusIcon","renderLessonStatusText","getLessonStatus","curriculumPathStr","launchHref","lessonStatus","$lessonStatusIcon","$lessonStatusText","react__WEBPACK_IMPORTED_MODULE_4___default","inner","header","statusIcon","aria-disabled","button","href","statusText","_tippy_js_react__WEBPACK_IMPORTED_MODULE_5__","delay","arrow","disabledOverlay","i18n","_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_1__","icon","faLock","_","dateCompleted","translation","faCheck","formats","date0","month","day","0","METADATA_SERVICE_ENDPOINT","requestHeaders","x-lms-json-serialize","method","headers","checkForDisappointment","coursesByStatus","JSON","parse","stringify","checkSerialization","_response$data","success","resp","isArray","Name","react_dom__WEBPACK_IMPORTED_MODULE_0__","react_dom__WEBPACK_IMPORTED_MODULE_0___default","containers_pages_MyCourses_jsx__WEBPACK_IMPORTED_MODULE_1__","ReactDOM","getElementById","./en-us/messages.json","webpackAsyncContext","req","ids","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","webpackContext","webpackContextResolve","errorContainer","spinner-rotate","card","CatastrophicErrorDisplay","generatedLocaleList","setLocale"],"mappings":"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","file":"curriculum.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(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 \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\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"2\":\"i18n-0\"}[chunkId]||chunkId) + \".js\"\n \t}\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// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\thead.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\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 = \"/Custom/Resources/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\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([255,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import styles from './Spinner.module.scss'\r\n\r\nexport default class Spinner extends React.PureComponent {\r\n static propTypes = {\r\n size: PropTypes.oneOf(['small', 'normal']),\r\n }\r\n\r\n render() {\r\n const {\r\n className,\r\n ...passedProps\r\n } = this.props\r\n return (\r\n
\r\n )\r\n }\r\n}\r\n","import { courseNameLegacyTagRE } from 'utils'\r\n\r\nexport default class ProductName extends React.PureComponent {\r\n static propTypes = {\r\n name: PropTypes.string.isRequired,\r\n block: PropTypes.bool,\r\n }\r\n\r\n render() {\r\n const {\r\n name,\r\n block,\r\n className,\r\n } = this.props\r\n const classes = cx(className, 'course-title', { block })\r\n const match = courseNameLegacyTagRE.exec(name)\r\n if(!match) {\r\n return {name}\r\n }\r\n return (\r\n \r\n {match[1]}\r\n {match[2]}\r\n \r\n )\r\n }\r\n}\r\n","/* eslint-disable no-use-before-define */\r\nimport axios from 'axios'\r\nimport { prefixUrl, mutateKeys_lowercaseFirstLetter } from 'utils'\r\n\r\nexport const types = {\r\n GET_PROFILE: 'user.GET_PROFILE',\r\n}\r\n\r\nconst SERVICE_ENDPOINT = prefixUrl('/Services/Profile.ashx')\r\n\r\nexport const getProfile = () => {\r\n return {\r\n type: types.GET_PROFILE,\r\n payload: axios.get(SERVICE_ENDPOINT)\r\n .then(response => {\r\n const { Success } = response.data\r\n if(typeof Success !== 'undefined' && !Success) {\r\n return undefined\r\n }\r\n return {\r\n profile: mutateKeys_lowercaseFirstLetter(response.data.Payload.Profile),\r\n learningStats: mutateKeys_lowercaseFirstLetter(response.data.Payload.HomepageStats),\r\n }\r\n })\r\n }\r\n}\r\n","export const CURRENCIES = ['USD', 'EUR', 'CAD', 'MXN', 'GBP']\r\nexport const CurrencyType = PropTypes.oneOf(CURRENCIES)\r\n\r\nexport const PriceShape = {\r\n currency: CurrencyType.isRequired,\r\n value: PropTypes.number.isRequired,\r\n}\r\nexport const PriceType = PropTypes.shape(PriceShape)\r\n\r\nexport const AttributeShape = {\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n}\r\nexport const AttributeType = PropTypes.shape(AttributeShape)\r\n\r\n/**\r\n * COURSES\r\n */\r\n\r\nexport const courseStatus = {\r\n COMPLETE: 'complete',\r\n INCOMPLETE: 'incomplete',\r\n COMING_DUE: 'comingDue',\r\n PAST_DUE: 'pastDue',\r\n OPTIONAL: 'optional',\r\n}\r\nexport const COURSE_STATUSES = Object.entries(courseStatus).map(([_k, v]) => v)\r\nexport const CourseStatusType = PropTypes.oneOf(COURSE_STATUSES)\r\n\r\nexport const courseViewMode = {\r\n NORMAL: 1,\r\n SEQUENTIAL: 2,\r\n}\r\nexport const COURSE_VIEW_MODES = Object.entries(courseViewMode).map(([_k, v]) => v)\r\nexport const CourseViewModeType = PropTypes.oneOf(COURSE_VIEW_MODES)\r\n\r\nexport const CourseShape = {\r\n curriculumId: PropTypes.number.isRequired,\r\n description: PropTypes.string,\r\n shortDescription: PropTypes.string,\r\n dueDate: PropTypes.instanceOf(Date),\r\n expiresOn: PropTypes.instanceOf(Date),\r\n courseId: PropTypes.number,\r\n name: PropTypes.string.isRequired,\r\n requirementsRegistered: PropTypes.bool,\r\n forceLinearCompletion: PropTypes.bool,\r\n sections: PropTypes.any,\r\n status: CourseStatusType,\r\n viewMode: CourseViewModeType,\r\n containsILT: PropTypes.bool,\r\n platform: PropTypes.string, //?\r\n length: PropTypes.string, //?\r\n}\r\nexport const CourseType = PropTypes.shape(CourseShape)\r\n\r\nexport const LessonShape = {\r\n complete: PropTypes.bool,\r\n curriculumSectionItemId: PropTypes.number,\r\n description: PropTypes.string,\r\n framework: PropTypes.oneOf(['scormv12']),\r\n id: PropTypes.number,\r\n iltCourse: PropTypes.string,\r\n isILT: PropTypes.bool,\r\n name: PropTypes.node,\r\n objectHash: PropTypes.string,\r\n objectId: PropTypes.number,\r\n objectName: PropTypes.oneOf(['Assessment', 'Lesson', 'Classroom']),\r\n objectTypeId: PropTypes.number,\r\n required: PropTypes.bool,\r\n subGroup: PropTypes.number,\r\n}\r\nexport const LessonType = PropTypes.shape(LessonShape)\r\n\r\nexport const SectionShape = {\r\n complete: PropTypes.bool,\r\n curriculumSectionId: PropTypes.number,\r\n description: PropTypes.string,\r\n items: PropTypes.arrayOf(LessonType),\r\n minReq: PropTypes.number,\r\n name: PropTypes.node,\r\n optional: PropTypes.bool,\r\n userCurriculumAssignmentId: PropTypes.number,\r\n}\r\nexport const SectionType = PropTypes.shape(SectionShape)\r\n\r\n/**\r\n * PRODUCTS\r\n */\r\n\r\nexport const ProductShape = {\r\n sections: PropTypes.any,\r\n keywords: PropTypes.arrayOf(PropTypes.string),\r\n thumbnailImage: PropTypes.string,\r\n bannerImage: PropTypes.string,\r\n categories: PropTypes.arrayOf(AttributeType),\r\n platform: AttributeType,\r\n curriculaIds: PropTypes.arrayOf(PropTypes.number),\r\n dateCreated: PropTypes.instanceOf(Date),\r\n dateModified: PropTypes.instanceOf(Date),\r\n price: PriceType.isRequired,\r\n purchase: PropTypes.shape({\r\n orderId: PropTypes.number,\r\n purchaseDate: PropTypes.instanceOf(Date),\r\n }),\r\n}\r\nexport const ProductType = PropTypes.shape(ProductShape)\r\n\r\nexport const InstructorLeadProductShape = {\r\n ...ProductShape,\r\n date: PropTypes.instanceOf(Date),\r\n duration: PropTypes.number,\r\n location: AttributeType,\r\n seats: PropTypes.shape({\r\n total: PropTypes.number,\r\n remaining: PropTypes.number,\r\n }),\r\n}\r\nexport const InstructorLeadProductType = PropTypes.shape(InstructorLeadProductShape)\r\n\r\n\r\n/**\r\n * Filters\r\n */\r\n\r\nexport const FILTER_TYPES = ['text', 'select', 'multi', 'date-range']\r\n\r\nexport const CourseFilterShape = {\r\n id: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n type: PropTypes.oneOf(FILTER_TYPES),\r\n key: PropTypes.string,\r\n getValue: PropTypes.func,\r\n test: PropTypes.func,\r\n format: PropTypes.func,\r\n}\r\nexport const CourseFilterType = PropTypes.shape(CourseFilterShape)\r\n\r\nexport const ActiveFilterShape = {\r\n filterId: PropTypes.string.isRequired,\r\n activeValue: PropTypes.any,\r\n}\r\nexport const ActiveFilterType = PropTypes.shape(ActiveFilterShape)\r\n\r\n/**\r\n * Cart\r\n */\r\nexport const CartItemShape = {\r\n quantity: PropTypes.number.isRequired,\r\n dateAdded: PropTypes.instanceOf(Date).isRequired,\r\n productId: PropTypes.number,\r\n}\r\nexport const CartItemType = PropTypes.shape(CartItemShape)\r\n\r\n/**\r\n * Payment\r\n */\r\n\r\nexport const PaymentInfoShape = {\r\n cardNumber: PropTypes.string.isRequired,\r\n csc: PropTypes.string.isRequired,\r\n nameOnCard: PropTypes.string.isRequired,\r\n expiry: PropTypes.string.isRequired,\r\n address: PropTypes.string.isRequired,\r\n city: PropTypes.string.isRequired,\r\n state: PropTypes.string.isRequired,\r\n zip: PropTypes.string.isRequired,\r\n}\r\nexport const PaymentInfoType = PropTypes.shape(PaymentInfoShape)\r\n","export const courseNameLegacyTagRE = /(.*) \\| ([A-Z]{2,3}\\.\\d{3}\\.\\d\\.LMS)$/\r\n\r\nexport const dateIsoUtcRE = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])[T\\ ](2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\.[0-9]+)?Z?$/i\r\nexport const dateSqlUtcRE = /^(\\d{1,2}\\/?){2}\\d{2,4}(\\ \\d{1,2}:(\\d{2}:?){2} [AP]M)?$/\r\n\r\nexport function dateReviver(k: string, v: any): any {\r\n if(typeof v === 'string') {\r\n const matches = dateIsoUtcRE.exec(v)\r\n || dateSqlUtcRE.exec(v)\r\n if(matches) {\r\n return new Date(v)\r\n }\r\n }\r\n return v\r\n}\r\n\r\nexport const mutateKeys_lowercaseFirstLetter = obj => {\r\n return Object.keys(obj).reduce((acc, k) => {\r\n const nextKey = k.split('')\r\n nextKey[0] = nextKey[0].toLowerCase()\r\n acc[nextKey.join('')] = obj[k]\r\n return acc\r\n }, {})\r\n}\r\n\r\ndeclare var process : {\r\n env: {\r\n LMS_ROOT: string\r\n LMS_ROOT_PREFIXEXCEPTION: string\r\n }\r\n}\r\n\r\nexport function prefixUrl(url: string): string {\r\n const exceptions = process.env.LMS_ROOT_PREFIXEXCEPTION.split(',').map(exc => new RegExp(exc, 'i'))\r\n if(exceptions.some(exc => exc.test(url))) {\r\n return url\r\n }\r\n const root = process.env.LMS_ROOT\r\n .replace(/\\\\$/, '')\r\n return `${root}${url}`\r\n}\r\n\r\n\r\nexport function sortByArrayIndex(orderArray: Array): (a: any, b: any) => number {\r\n return (a, b) => {\r\n const ia = orderArray.indexOf(a)\r\n const ib = orderArray.indexOf(b)\r\n if(ia === -1 && ib === -1) return 0\r\n if(ia === -1 && ib > -1) return 1\r\n if(ia > -1 && ib === -1) return -1\r\n const va = orderArray.length - ia\r\n const vb = orderArray.length - ib\r\n return vb - va\r\n }\r\n}\r\n","import { connect } from 'react-redux'\r\nimport { CourseType } from 'common-proptypes'\r\nimport CourseListRenderer from './CourseListRenderer.jsx'\r\n\r\nconst mapStateToProps = state => {\r\n const allCourses = state.courses.get('allCourses')\r\n const courses = allCourses ? allCourses.toList().toJS() : []\r\n return {\r\n loading: state.courses.get('pending'),\r\n errors: state.courses.get('errors').toList().toArray(),\r\n courses,\r\n }\r\n}\r\nexport default connect(mapStateToProps)(class CourseList extends React.PureComponent {\r\n static propTypes = {\r\n courses: PropTypes.arrayOf(CourseType),\r\n }\r\n\r\n render() {\r\n const {\r\n courses,\r\n } = this.props\r\n if(!courses) {\r\n return (\r\n There are no curricula at this time.\r\n )\r\n }\r\n return (\r\n \r\n )\r\n }\r\n})\r\n","import { BrowserRouter as Router, Route } from 'react-router-dom'\r\nimport { hot } from 'react-hot-loader'\r\n\r\nimport App from 'containers/App'\r\nimport { ScrollToTop } from 'routing/RouteUtils'\r\nimport CoursesLoader from 'containers/CoursesLoader'\r\nimport CourseList from 'components/CourseList'\r\nimport CourseDetailsRoute from 'components/CourseDetails/CourseDetailsRoute'\r\nimport { prefixUrl } from 'utils'\r\n\r\nexport default hot(module)(() => (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n))\r\n","import React from 'react'\r\nimport { Provider } from 'react-redux'\r\nimport { hot } from 'react-hot-loader'\r\nimport LocaleLoader from 'containers/LocaleLoader'\r\nimport CatastrophicErrorDisplay from 'components/CatastrophicErrorDisplay'\r\n\r\nimport createStore from 'store/createStore.js'\r\n\r\nconst { store } = createStore()\r\n\r\nexport class App extends React.PureComponent {\r\n state = {\r\n error: undefined,\r\n }\r\n\r\n componentDidCatch(error, _info) {\r\n this.setState({ error })\r\n }\r\n\r\n render() {\r\n const {\r\n error,\r\n } = this.state\r\n if(error) {\r\n return (\r\n \r\n
🤕
\r\n
Error
\r\n \r\n )}\r\n description=\"An error ocurred.\"\r\n errors={process.env.NODE_ENV === 'development' ? [error] : null}\r\n />\r\n\r\n )\r\n }\r\n const { children } = this.props\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default hot(module)(App)\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { I18nProvider } from '@lingui/react'\r\nimport { allLocales } from 'store/actions/locale'\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n locale: state.locale.get('active'),\r\n }\r\n}\r\nexport default connect(mapStateToProps)(class LocaleLoader extends React.Component {\r\n static propTypes = {\r\n locale: PropTypes.oneOf(allLocales),\r\n }\r\n\r\n static defaultProps = {\r\n locale: 'en-us',\r\n }\r\n\r\n state = {\r\n catalogs: {},\r\n }\r\n\r\n componentDidMount() {\r\n const { locale } = this.props\r\n this.loadCatalog(locale)\r\n }\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n const { locale: nextLocale } = nextProps\r\n const { catalogs } = nextState\r\n const { locale } = this.props\r\n\r\n if(nextLocale !== locale && !catalogs[nextLocale]) {\r\n this.loadCatalog(nextLocale)\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n loadCatalog = async (locale) => {\r\n // eslint-disable-next-line function-paren-newline\r\n const catalog = await import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"i18n-[index]\" */\r\n `@lingui/loader!locale/${locale}/messages.json`\r\n )\r\n\r\n this.setState(state => ({\r\n catalogs: {\r\n ...state.catalogs,\r\n [locale]: catalog\r\n }\r\n }))\r\n }\r\n\r\n render() {\r\n const { children, locale } = this.props\r\n const { catalogs } = this.state\r\n\r\n // Skip rendering when catalog isn't loaded.\r\n if(!catalogs[locale]) return null\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n }\r\n})\r\n","/* eslint-disable quotes */\n\n/***\n * THIS FILE IS AUTOGENERATED\n * To make persistent changes to it, edit the script in:\n * scripts\\write-locales.js\n */\n\nconst langs = [\n \"en-us\"\n]\nexport default langs\n","import {\r\n createStore as reduxCreateStore,\r\n applyMiddleware,\r\n} from 'redux'\r\nimport { composeWithDevTools } from 'redux-devtools-extension'\r\nimport createHistory from 'history/createBrowserHistory'\r\nimport promiseMiddleware from 'redux-promise-middleware'\r\n\r\nimport rootReducer from './reducers'\r\n\r\nconst history = createHistory()\r\n\r\nconst composeEnhancers = composeWithDevTools({\r\n})\r\n\r\nconst enhancer = composeEnhancers(applyMiddleware(promiseMiddleware()))\r\n\r\nconst createStore = () => {\r\n const store = reduxCreateStore(\r\n rootReducer,\r\n enhancer\r\n )\r\n if(module.hot) {\r\n // Enable Webpack hot module replacement for reducers\r\n module.hot.accept('./reducers', () => {\r\n //eslint-disable-next-line global-require\r\n const nextRootReducer = require('./reducers/index').default\r\n store.replaceReducer(nextRootReducer)\r\n })\r\n }\r\n return {\r\n store,\r\n history,\r\n }\r\n}\r\n\r\nexport default createStore\r\n","import userReducer from './user.js'\r\nimport localeReducer from './locale.js'\r\nimport coursesReducer from './courses.js'\r\nimport courseReducer from './course.js'\r\n\r\nconst initialState = {}\r\n\r\nexport default function rootReducer(state = initialState, action) {\r\n const ret = {\r\n ...initialState,\r\n locale: localeReducer(state.locale, action),\r\n user: userReducer(state.user, action),\r\n courses: coursesReducer(state.courses, action),\r\n course: courseReducer(state.course, action),\r\n }\r\n return ret\r\n}\r\n","import Immutable from 'immutable'\r\nimport { types } from 'store/actions/user'\r\n\r\nconst initialState = new Immutable.Map({\r\n pending: false,\r\n dateLoaded: undefined,\r\n errors: new Immutable.List(),\r\n isSignedIn: undefined,\r\n profile: new Immutable.OrderedMap(),\r\n learningStats: new Immutable.OrderedMap(),\r\n})\r\n\r\nexport default function userReducer(state = initialState, action) {\r\n const { type, payload } = action\r\n let ret = state\r\n switch(type) {\r\n /***\r\n * PENDING\r\n */\r\n case `${types.GET_PROFILE}_PENDING`: {\r\n ret = ret.set('pending', true)\r\n .update('errors', errors => errors.clear())\r\n break\r\n }\r\n\r\n /***\r\n * REJECTED\r\n */\r\n case `${types.GET_PROFILE}_REJECTED`: {\r\n try {\r\n if(payload.response.status === 403) {\r\n window.location = '/learning/pages/auth.aspx'\r\n }\r\n } catch(_err) {\r\n //pass\r\n }\r\n ret = ret.set('pending', false)\r\n .set('dateLoaded', undefined)\r\n .update('errors', errors => errors.unshift(new Immutable.Map({\r\n message: payload.message,\r\n date: new Date(),\r\n })))\r\n break\r\n }\r\n\r\n /***\r\n * FULFILLED\r\n */\r\n case `${types.GET_PROFILE}_FULFILLED`: {\r\n ret = ret.set('pending', false)\r\n .set('dateLoaded', new Date())\r\n .update('errors', errors => errors.clear())\r\n\r\n if(payload && payload.profile) {\r\n ret = ret.set('profile', Immutable.fromJS(payload.profile))\r\n .set('learningStats', Immutable.fromJS(payload.learningStats))\r\n }\r\n\r\n break\r\n }\r\n // no default\r\n }\r\n\r\n ret = ret.set('isSignedIn', (ret.has('dateLoaded') && ret.has('profile') && !ret.get('profile').isEmpty()))\r\n\r\n return ret\r\n}\r\n","import Immutable from 'immutable'\r\nimport { types, allLocales } from 'store/actions/locale'\r\nimport LocaleCurrency from 'locale-currency'\r\n\r\nconst initialState = Immutable.fromJS({\r\n currency: 'USD',\r\n locale: 'en-us',\r\n availableLocales: allLocales,\r\n})\r\n\r\nexport default function filtersReducer(state = initialState, action) {\r\n let ret = state\r\n switch(action.type) {\r\n case types.SET: {\r\n const locale = action.payload\r\n if(!ret.get('availableLocales').includes(locale)) {\r\n throw new Error('Unsupported locale')\r\n }\r\n ret = ret.set('active', locale)\r\n .set('currency', LocaleCurrency.getCurrency(locale))\r\n break\r\n }\r\n // no default\r\n }\r\n return ret\r\n}\r\n","import Immutable from 'immutable'\r\nimport { types } from 'store/actions/courses'\r\n\r\nconst initialState = Immutable.fromJS({\r\n pending: false,\r\n dateLoaded: undefined,\r\n errors: new Immutable.List(),\r\n // allCourses: undefined,\r\n})\r\n\r\nexport default function coursesReducer(state = initialState, action) {\r\n let ret = state\r\n const { type, payload } = action\r\n switch(type) {\r\n case `${types.GET_COURSES}_PENDING`: {\r\n ret = ret.set('pending', true)\r\n break\r\n }\r\n case `${types.GET_COURSES}_REJECTED`:\r\n ret = ret.set('pending', false)\r\n .set('dateLoaded', new Date())\r\n .update('errors', errors => errors.unshift({\r\n message: payload.message,\r\n date: new Date(),\r\n }))\r\n break\r\n case `${types.GET_COURSES}_FULFILLED`: {\r\n try {\r\n const coursesByUserCurriculumId = Immutable.fromJS(Object.entries(payload).reduce((acc, [_status, courses]) => {\r\n return acc.concat(courses)\r\n }, []))\r\n .reduce((acc, course) => {\r\n return acc.set(course.get('id'), course)\r\n }, new Immutable.Map())\r\n ret = ret.set('pending', false)\r\n .set('dateLoaded', new Date())\r\n .update('errors', errors => errors.clear())\r\n .set('allCourses', coursesByUserCurriculumId)\r\n } catch(err) {\r\n console.error(err)\r\n ret = ret.set('pending', false)\r\n .set('dateLoaded', new Date())\r\n .update('errors', errors => errors.unshift({\r\n message: err.message,\r\n date: new Date(),\r\n }))\r\n }\r\n break\r\n }\r\n default:\r\n // no default\r\n }\r\n return ret\r\n}\r\n","import Immutable from 'immutable'\r\nimport { types } from 'store/actions/courses'\r\n\r\nconst initialState = Immutable.fromJS({\r\n pending: false,\r\n dateLoaded: undefined,\r\n errors: new Immutable.List(),\r\n})\r\n\r\nexport default function courseReducer(state = initialState, action) {\r\n let ret = state\r\n const { type, payload } = action\r\n switch(type) {\r\n case `${types.GET_DETAILS}_PENDING`: {\r\n ret = ret.set('pending', true)\r\n break\r\n }\r\n case `${types.GET_DETAILS}_REJECTED`: {\r\n const errorObj = {\r\n message: payload.message,\r\n date: new Date(),\r\n }\r\n try {\r\n errorObj.responseCode = payload.response.status\r\n } catch(_err) {\r\n //pass\r\n }\r\n ret = ret.set('pending', false)\r\n .set('dateLoaded', new Date())\r\n .update('errors', errors => errors.unshift(errorObj))\r\n break\r\n }\r\n case `${types.GET_DETAILS}_FULFILLED`: {\r\n ret = ret.set('pending', false)\r\n .set('dateLoaded', new Date())\r\n .update('errors', errors => errors.clear())\r\n break\r\n }\r\n default:\r\n // no default\r\n }\r\n return ret\r\n}\r\n","import React from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\n\r\nexport const ScrollToTop = withRouter(class ScrollToTopInner extends React.Component {\r\n static propTypes = {\r\n location: PropTypes.object,\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { location } = this.props\r\n if(location !== prevProps.location) {\r\n window.scrollTo(0, 0)\r\n }\r\n }\r\n\r\n render() {\r\n const { children } = this.props\r\n return children\r\n }\r\n})\r\n\r\n\r\nexport const ScrollToTopOnMount = withRouter(class ScrollToTopOnMountInner extends React.Component {\r\n componentDidMount() {\r\n window.scrollTo(0, 0)\r\n }\r\n\r\n render() {\r\n return null\r\n }\r\n})\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport Immutable from 'immutable'\r\nimport hoistStatics from 'hoist-non-react-statics'\r\nimport Spinner from 'components/Spinner'\r\nimport { getMyCourses } from 'store/actions/courses'\r\nimport { CourseType } from 'common-proptypes'\r\nimport { withIdle } from 'libreact/lib/IdleSensor'\r\nimport CatastrophicErrorDisplay from 'components/CatastrophicErrorDisplay'\r\n\r\nconst idleProps = {\r\n ms: 5 * 60 * 1000,\r\n events: ['mousemove', 'mousedown', 'resize', 'keydown', 'touchstart', 'wheel', 'visibilitychange'],\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n pending: state.courses.get('pending'),\r\n dateLoaded: state.courses.get('dateLoaded'),\r\n errors: state.courses.get('errors').toJS(),\r\n courses: state.courses.get('allCourses', new Immutable.Map()).toList().toJS(),\r\n }\r\n}\r\nconst CoursesLoader = withIdle(connect(mapStateToProps)(class CoursesLoaderInner extends React.PureComponent {\r\n static propTypes = {\r\n blocking: PropTypes.bool,\r\n // hoc-mapped\r\n idle: PropTypes.bool,\r\n // state-mapped\r\n dispatch: PropTypes.func.isRequired,\r\n courses: PropTypes.arrayOf(CourseType),\r\n pending: PropTypes.bool,\r\n dateLoaded: PropTypes.instanceOf(Date),\r\n errors: PropTypes.arrayOf(PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.shape({\r\n message: PropTypes.string,\r\n date: PropTypes.instanceOf(Date),\r\n }),\r\n ])),\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchProducts()\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n this.fetchProducts(prevProps)\r\n }\r\n\r\n fetchProducts = (prevProps) => {\r\n const {\r\n pending,\r\n dateLoaded,\r\n idle,\r\n } = this.props\r\n return new Promise(resolve => {\r\n if(pending) {\r\n return resolve()\r\n }\r\n if(!dateLoaded) {\r\n return resolve(this.dispatchFetch())\r\n }\r\n if(!idle && prevProps.idle) {\r\n return resolve(this.dispatchFetch())\r\n }\r\n return resolve()\r\n })\r\n }\r\n\r\n dispatchFetch = () => {\r\n const {\r\n dispatch,\r\n } = this.props\r\n return dispatch(getMyCourses())\r\n }\r\n\r\n render() {\r\n const {\r\n blocking,\r\n children,\r\n pending,\r\n dateLoaded,\r\n errors,\r\n } = this.props\r\n\r\n if(blocking) {\r\n if(pending && !dateLoaded) {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n if(!(errors && errors.length) && !pending && !dateLoaded) {\r\n return ...\r\n }\r\n if(errors && errors.length) {\r\n return (\r\n \r\n
🐞
\r\n
Something went wrong
\r\n \r\n )}\r\n description=\"An error ocurred while trying to load course info.\"\r\n errors={errors}\r\n />\r\n )\r\n }\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n }\r\n}), '', idleProps)\r\n\r\nexport default CoursesLoader\r\n\r\n\r\nexport function withCourses(Component) {\r\n const C = props => {\r\n const { wrappedComponentRef, ...remainingProps } = props //eslint-disable-line react/prop-types\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n C.displayName = `withCourses(${Component.displayName || Component.name})`\r\n C.WrappedComponent = Component\r\n\r\n return hoistStatics(C, Component)\r\n}\r\n","export { default } from './CourseList.jsx'\r\n","import { CourseType } from 'common-proptypes'\r\nimport CourseRenderer from './CourseRenderer.jsx'\r\nimport Empty from './Empty.jsx'\r\n\r\nimport styles from './CourseList.module.scss'\r\n\r\nexport default class CourseListRenderer extends React.PureComponent {\r\n static propTypes = {\r\n courses: PropTypes.arrayOf(CourseType).isRequired,\r\n }\r\n\r\n render() {\r\n const {\r\n courses,\r\n } = this.props\r\n const $courses = courses.map((course, i) => (\r\n \r\n ))\r\n return (\r\n
\r\n
\r\n

Assigned Courses

\r\n
\r\n
\r\n {$courses.length > 0 ? $courses : (\r\n \r\n )}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import { CourseType } from 'common-proptypes'\r\nimport { Link } from 'react-router-dom'\r\nimport ProductName from 'components/ProductName'\r\n\r\nimport styles from './CourseRenderer.module.scss'\r\n\r\nexport default class CourseRenderer extends React.PureComponent {\r\n static propTypes = {\r\n course: CourseType.isRequired,\r\n }\r\n\r\n render() {\r\n const {\r\n className,\r\n course,\r\n ...passedProps\r\n } = this.props\r\n const {\r\n name,\r\n description,\r\n id,\r\n } = course\r\n /* eslint-disable react/no-danger */\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n {description && (\r\n

\r\n )}\r\n

\r\n
\r\n Details\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import styles from './Empty.module.scss'\r\n\r\nimport bookshelfImgSrc from './img/empty-shelf.jpg'\r\n\r\nexport default class Empty extends React.PureComponent {\r\n render() {\r\n const {\r\n className,\r\n ...passedProps\r\n } = this.props\r\n return (\r\n
\r\n \"empty\r\n
\r\n

You have no courses

\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","module.exports = \"data:image/jpeg;base64,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\"","import CourseLoader from 'containers/CourseLoader'\r\nimport CourseDetails from './CourseDetails.jsx'\r\n\r\nexport default class CourseDetailsRoute extends React.PureComponent {\r\n static propTypes = {\r\n match: PropTypes.shape({\r\n params: PropTypes.shape({\r\n id: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n }\r\n\r\n render() {\r\n const { match } = this.props\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { render, createEnhancer } from 'react-universal-interface'\r\nimport { getCourseDetails } from 'store/actions/courses'\r\nimport { withIdle } from 'libreact/lib/IdleSensor'\r\n\r\nconst idleProps = {\r\n ms: 3 * 1000,\r\n events: ['visibilitychange'],\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n pending: state.course.get('pending'),\r\n dateLoaded: state.course.get('dateLoaded'),\r\n errors: state.course.get('errors').toJS(),\r\n }\r\n}\r\nconst CourseLoader = withIdle(connect(mapStateToProps)(class CourseLoaderInner extends React.PureComponent {\r\n static propTypes = {\r\n // Router-provided\r\n match: PropTypes.shape({\r\n params: PropTypes.shape({\r\n id: PropTypes.string,\r\n }),\r\n }),\r\n // hoc-mapped\r\n idle: PropTypes.bool,\r\n // state-mapped\r\n dispatch: PropTypes.func.isRequired,\r\n pending: PropTypes.bool,\r\n dateLoaded: PropTypes.instanceOf(Date),\r\n errors: PropTypes.arrayOf(PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.shape({\r\n message: PropTypes.string,\r\n date: PropTypes.instanceOf(Date),\r\n }),\r\n ])),\r\n }\r\n\r\n state = {\r\n course: undefined,\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.fetch()\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n this.fetch(prevProps)\r\n }\r\n\r\n fetch = (prevProps) => {\r\n const {\r\n match,\r\n pending,\r\n dateLoaded,\r\n errors,\r\n idle,\r\n } = this.props\r\n return new Promise((resolve, reject) => {\r\n if(!match) {\r\n return reject(new Error('No course provided and not rendered as a Route.'))\r\n }\r\n if(pending || (errors && errors.length)) {\r\n return resolve()\r\n }\r\n if(\r\n !dateLoaded\r\n || (!idle && (prevProps && prevProps.idle))\r\n ) {\r\n return resolve(this.dispatchFetch())\r\n }\r\n return setTimeout(() => {\r\n const {\r\n course\r\n } = this.state\r\n if(!course) {\r\n resolve(this.dispatchFetch())\r\n }\r\n }, 10)\r\n })\r\n }\r\n\r\n dispatchFetch = () => {\r\n const {\r\n dispatch,\r\n match: {\r\n params: {\r\n courseId,\r\n }\r\n },\r\n } = this.props\r\n return dispatch(getCourseDetails(courseId))\r\n .then(action => action.value)\r\n .then(course => {\r\n this.setState({ course })\r\n })\r\n }\r\n\r\n render() {\r\n const {\r\n course,\r\n } = this.state\r\n if(!course) {\r\n return
...
\r\n }\r\n return render(this.props, this.state)\r\n }\r\n}), '', idleProps)\r\n\r\nexport default CourseLoader\r\n\r\nexport const withCourse = createEnhancer(CourseLoader, 'course')\r\n","import { CourseType } from 'common-proptypes'\r\nimport { connect } from 'react-redux'\r\nimport Spinner from 'components/Spinner'\r\nimport CatastrophicErrorDisplay from 'components/CatastrophicErrorDisplay'\r\nimport CourseDetailsRenderer from './CourseDetailsRenderer.jsx'\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n loading: state.course.get('pending'),\r\n errors: state.course.get('errors').toList().toArray(),\r\n }\r\n}\r\nexport default connect(mapStateToProps)(class CourseDetails extends React.PureComponent {\r\n static propTypes = {\r\n loading: PropTypes.bool,\r\n errors: PropTypes.arrayOf(PropTypes.shape({\r\n message: PropTypes.node,\r\n date: Date,\r\n })),\r\n course: CourseType,\r\n }\r\n\r\n render() {\r\n const {\r\n loading,\r\n errors,\r\n course,\r\n } = this.props\r\n if(loading && !course) {\r\n return \r\n }\r\n if(errors && errors.length) {\r\n if(errors.length === 1 && errors[0].responseCode === 404) {\r\n return (\r\n \r\n
🔍🤔
\r\n
This course could not be found
\r\n \r\n )}\r\n description=\"The requested course could not be found.\"\r\n resolution={null}\r\n />\r\n )\r\n }\r\n return (\r\n \r\n
🐞
\r\n
Something went wrong
\r\n \r\n )}\r\n description=\"An error ocurred while trying to load course info.\"\r\n errors={errors}\r\n />\r\n )\r\n }\r\n\r\n if(course) {\r\n return \r\n }\r\n return null\r\n }\r\n})\r\n","import { Trans, i18nMark } from '@lingui/react'\r\nimport { Link } from 'react-router-dom'\r\nimport moment from 'moment'\r\nimport { CourseType, courseViewMode } from 'common-proptypes'\r\nimport ProductName from 'components/ProductName'\r\nimport CourseSection from './CourseSection.jsx'\r\n\r\nimport styles from './CourseDetails.module.scss'\r\n\r\n/* eslint-disable react/no-danger */\r\n\r\nexport default class CourseDetailsRenderer extends React.PureComponent {\r\n static propTypes = {\r\n course: CourseType.isRequired,\r\n }\r\n\r\n render() {\r\n const { course } = this.props\r\n const {\r\n name,\r\n description,\r\n sections,\r\n } = course\r\n\r\n function getSectionLockedReason(section) {\r\n if(course.viewMode !== courseViewMode.SEQUENTIAL) {\r\n return null\r\n }\r\n if(section.complete) {\r\n return null\r\n }\r\n const previousSection = sections[sections.indexOf(section) - 1]\r\n if(!previousSection) {\r\n return null\r\n }\r\n if(!previousSection.complete) {\r\n return i18nMark('This section will be available when you complete the previous section')\r\n }\r\n return null\r\n }\r\n\r\n const $sections = sections.map(section => {\r\n const lockReason = getSectionLockedReason(section)\r\n return (\r\n \r\n )\r\n })\r\n const $expires = course.expiresOn && (\r\n
\r\n \r\n
\r\n )\r\n return (\r\n
\r\n
\r\n
\r\n

Assigned Courses

\r\n \r\n View All Online Courses\r\n \r\n
\r\n

\r\n {description && (\r\n
\r\n )}\r\n {$expires}\r\n

{window.getCourseHeaderMessage()}

\r\n
\r\n {/*\r\n

\r\n \r\n \r\n \r\n

\r\n */}\r\n
\r\n {$sections}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import { Trans, i18nMark } from '@lingui/react'\r\nimport { SectionType } from 'common-proptypes'\r\nimport CourseLesson from './CourseLesson.jsx'\r\n\r\nimport styles from './CourseSection.module.scss'\r\n\r\nexport default class CourseSection extends React.PureComponent {\r\n static propTypes = {\r\n section: SectionType.isRequired,\r\n lockReason: PropTypes.string,\r\n lessonProps: PropTypes.object,\r\n }\r\n\r\n render() {\r\n const {\r\n section,\r\n lockReason,\r\n lessonProps,\r\n } = this.props\r\n const {\r\n name,\r\n complete,\r\n items,\r\n userCurriculumAssignmentId,\r\n curriculumSectionId,\r\n forceLinearCompletion,\r\n } = section\r\n\r\n function getLessonLockedReason(lesson) {\r\n if(lockReason) {\r\n return lockReason\r\n }\r\n if(!forceLinearCompletion) {\r\n return null\r\n }\r\n if(lesson.complete) {\r\n return null\r\n }\r\n const previousLesson = items[items.indexOf(lesson) - 1]\r\n if(!previousLesson) {\r\n return null\r\n }\r\n if(!previousLesson.complete) {\r\n return i18nMark('This lesson will unlock when the previous lesson is completed.')\r\n }\r\n return null\r\n }\r\n\r\n const $items = items.map(item => (\r\n \r\n ))\r\n return (\r\n
\r\n {$items.length === 0 && (\r\n \r\n )}\r\n {$items}\r\n
\r\n )\r\n }\r\n}\r\n","import 'tippy.js/dist/tippy.css'\r\n\r\nimport { DateFormat, t } from '@lingui/macro'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { Trans, withI18n } from '@lingui/react'\r\nimport { faCheck, faLock } from '@fortawesome/free-solid-svg-icons'\r\nimport React from 'react'\r\nimport Tippy from '@tippy.js/react'\r\nimport cx from 'classnames'\r\n\r\nimport { LessonType } from 'common-proptypes'\r\nimport { prefixUrl } from 'utils'\r\n\r\nimport styles from './CourseLesson.module.scss'\r\n\r\n/* eslint-disable react/no-danger */\r\n\r\nexport default withI18n()(class CourseLesson extends React.PureComponent {\r\n static propTypes = {\r\n // data\r\n userCurriculumAssignmentId: PropTypes.number.isRequired,\r\n curriculumSectionId: PropTypes.number.isRequired,\r\n lesson: LessonType.isRequired,\r\n lockReason: PropTypes.string,\r\n // HOC-mapped\r\n i18n: PropTypes.object,\r\n // render props\r\n renderLessonStatusText: PropTypes.func,\r\n renderLessonStatusIcon: PropTypes.func,\r\n getLessonStatus: PropTypes.func,\r\n }\r\n\r\n static defaultProps = {\r\n getLessonStatus: (props) => {\r\n const {\r\n lesson: {\r\n complete,\r\n },\r\n lockReason,\r\n } = props\r\n if(lockReason) return 'locked'\r\n if(complete) return 'complete'\r\n return 'new'\r\n },\r\n\r\n renderLessonStatusIcon: (props) => {\r\n const {\r\n getLessonStatus,\r\n lockReason,\r\n i18n,\r\n } = props\r\n const lessonStatus = getLessonStatus(props)\r\n switch(lessonStatus) {\r\n case 'locked':\r\n return \r\n case 'complete': {\r\n const dateCompleted = new Date()\r\n return (\r\n (\r\n \r\n )}\r\n >\r\n You completed this lesson on \r\n \r\n )\r\n }\r\n default:\r\n return null\r\n }\r\n },\r\n\r\n renderLessonStatusText: (props) => {\r\n const {\r\n getLessonStatus,\r\n lockReason,\r\n } = props\r\n const lessonStatus = getLessonStatus(props)\r\n switch(lessonStatus) {\r\n case 'locked':\r\n return \r\n case 'complete':\r\n return (\r\n \r\n 🏆\r\n  \r\n \r\n You completed this lesson on \r\n \r\n \r\n )\r\n default:\r\n return null\r\n }\r\n },\r\n }\r\n\r\n componentWillUnmount() {\r\n if(this.tipRef) {\r\n this.tipRef.destroy()\r\n }\r\n }\r\n\r\n tipRef = undefined\r\n\r\n render() {\r\n const {\r\n userCurriculumAssignmentId,\r\n curriculumSectionId,\r\n lesson,\r\n lockReason,\r\n renderLessonStatusIcon,\r\n renderLessonStatusText,\r\n getLessonStatus,\r\n } = this.props\r\n const {\r\n name,\r\n objectName,\r\n objectId,\r\n objectHash,\r\n curriculumSectionItemId,\r\n // description,\r\n } = lesson\r\n const curriculumPath = [userCurriculumAssignmentId, curriculumSectionId, curriculumSectionItemId]\r\n const curriculumPathStr = curriculumPath.join('%2c')\r\n const launchHref = objectName === 'Lesson'\r\n ? prefixUrl(`/Module/security.ashx?curriculum=${curriculumPathStr}&id=${objectId}&hash=${objectHash}`)\r\n : prefixUrl(`/TestingEngine/Testing/BeginTest.aspx?curriculum=${curriculumPathStr}&TestID=${objectId}`)\r\n\r\n const lessonStatus = getLessonStatus(this.props)\r\n const $lessonStatusIcon = renderLessonStatusIcon(this.props)\r\n const $lessonStatusText = renderLessonStatusText(this.props)\r\n\r\n const locked = lessonStatus === 'locked'\r\n\r\n /* eslint-disable react/jsx-no-target-blank, jsx-a11y/anchor-is-valid */\r\n return (\r\n \r\n
\r\n
\r\n \r\n {$lessonStatusIcon}\r\n \r\n
{name}
\r\n {locked ? (\r\n \r\n \r\n Locked\r\n \r\n \r\n ) : (\r\n \r\n \r\n Launch\r\n \r\n \r\n )}\r\n
\r\n
\r\n {/* lesson.description && (\r\n
\r\n ) */}\r\n {$lessonStatusText && (\r\n
{$lessonStatusText}
\r\n )}\r\n
\r\n
\r\n {locked && (\r\n \r\n
\r\n \r\n )}\r\n \r\n )\r\n }\r\n})\r\n","import axios from 'axios'\r\nimport camelCase from 'lodash.camelcase'\r\nimport { prefixUrl, dateReviver } from 'utils'\r\n\r\nexport enum types {\r\n GET_COURSES = 'courses.GET_COURSES',\r\n GET_DETAILS = 'courses.GET_DETAILS',\r\n}\r\nconst SERVICE_ENDPOINT = '/Curriculum/ClientService.ashx'\r\nconst METADATA_SERVICE_ENDPOINT = prefixUrl('/Services/Commerce/items.ashx')\r\n\r\nconst requestHeaders = { 'x-lms-json-serialize': 'camel,indent,nonull' }\r\n\r\nexport function getMyCourses() {\r\n return {\r\n type: types.GET_COURSES,\r\n payload: axios({\r\n method: 'get',\r\n url: SERVICE_ENDPOINT,\r\n headers: requestHeaders,\r\n })\r\n .then(checkForDisappointment)\r\n .then(response => {\r\n const coursesByStatus = response.data.items\r\n const allCourses = Object.entries(coursesByStatus).reduce((acc, [_k, v]) => {\r\n acc = acc.concat(v)\r\n return acc\r\n }, [])\r\n return allCourses\r\n })\r\n .then(allCourses => {\r\n return allCourses.map(course => {\r\n return JSON.parse(JSON.stringify(course), dateReviver)\r\n })\r\n })\r\n .then(checkSerialization)\r\n }\r\n}\r\n\r\nexport function getCourseDetails(userCurriculumAssignmentId) {\r\n return {\r\n type: types.GET_DETAILS,\r\n payload: axios({\r\n method: 'get',\r\n url: `${SERVICE_ENDPOINT}/${userCurriculumAssignmentId}`,\r\n headers: requestHeaders,\r\n })\r\n .then(response => response.data.items)\r\n .then(items => items[0])\r\n .then(item => {\r\n return JSON.parse(JSON.stringify(item), dateReviver)\r\n })\r\n .then(checkSerialization)\r\n }\r\n}\r\n\r\nfunction checkForDisappointment(response) {\r\n const { success, error } = response.data\r\n // ಠ_ಠ\r\n if(typeof success !== 'undefined' && !success) {\r\n if(error) {\r\n throw new Error(error)\r\n }\r\n throw new Error('An unspecified error occurred on the server.')\r\n }\r\n return response\r\n}\r\n\r\nfunction checkSerialization(resp: object): object;\r\nfunction checkSerialization(resp: object[]): object[];\r\nfunction checkSerialization(resp): any {\r\n const obj = Array.isArray(resp) ? resp[0] : resp\r\n if(!obj) {\r\n return resp\r\n }\r\n if(obj.name) {\r\n return resp\r\n }\r\n if(obj.Name) {\r\n throw new Error('Improperly serialized course JSON received.')\r\n }\r\n return resp\r\n}\r\n","import ReactDOM from 'react-dom'\r\nimport Page from 'containers/pages/MyCourses.jsx'\r\nimport 'styles/main.scss'\r\nimport 'styles/global.scss'\r\n\r\nReactDOM.render(, document.getElementById('private_body'))\r\n","var map = {\n\t\"./en-us/messages.json\": [\n\t\t84,\n\t\t2\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\tvar id = ids[0];\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 493;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./en-au\": 215,\n\t\"./en-au.js\": 215,\n\t\"./en-ca\": 216,\n\t\"./en-ca.js\": 216,\n\t\"./en-gb\": 217,\n\t\"./en-gb.js\": 217,\n\t\"./en-ie\": 218,\n\t\"./en-ie.js\": 218,\n\t\"./en-il\": 219,\n\t\"./en-il.js\": 219,\n\t\"./en-nz\": 220,\n\t\"./en-nz.js\": 220\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 529;","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"js-components-CatastrophicErrorDisplay-module__root--UwjHo\",\"errorContainer\":\"js-components-CatastrophicErrorDisplay-module__errorContainer--s8c6a\"};","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"js-components-Spinner-module__root--3k9sb\",\"spinner-rotate\":\"js-components-Spinner-module__spinner-rotate--x1YZP\"};","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"js-components-CourseList-CourseRenderer-module__root--3lPnQ\",\"body\":\"js-components-CourseList-CourseRenderer-module__body--23KRv\"};","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"js-components-CourseList-Empty-module__root--o1xdt\",\"content\":\"js-components-CourseList-Empty-module__content--3fH2r\",\"card\":\"js-components-CourseList-Empty-module__card--3jV2q\",\"bookshelf\":\"js-components-CourseList-Empty-module__bookshelf--2dboK\"};","// removed by extract-text-webpack-plugin\nmodule.exports = {\"container\":\"js-components-CourseList-CourseList-module__container--2XTxl\",\"courseList\":\"js-components-CourseList-CourseList-module__courseList--101OR\"};","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"js-components-CourseDetails-CourseLesson-module__root--18eAe\",\"inner\":\"js-components-CourseDetails-CourseLesson-module__inner--1o4RZ\",\"header\":\"js-components-CourseDetails-CourseLesson-module__header--3eyYH\",\"title\":\"js-components-CourseDetails-CourseLesson-module__title--1frBA\",\"button\":\"js-components-CourseDetails-CourseLesson-module__button--9bnhW\",\"body\":\"js-components-CourseDetails-CourseLesson-module__body--284WP\",\"locked\":\"js-components-CourseDetails-CourseLesson-module__locked--26cl4\",\"disabledOverlay\":\"js-components-CourseDetails-CourseLesson-module__disabledOverlay--3BmOz\",\"complete\":\"js-components-CourseDetails-CourseLesson-module__complete--1BDKb\",\"statusIcon\":\"js-components-CourseDetails-CourseLesson-module__statusIcon--2M_NS\"};","// removed by extract-text-webpack-plugin\nmodule.exports = {\"container\":\"js-components-CourseDetails-CourseSection-module__container--3DPJm\",\"empty\":\"js-components-CourseDetails-CourseSection-module__empty--CAVhE\"};","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"js-components-CourseDetails-CourseDetails-module__root--3y2cJ\",\"expires\":\"js-components-CourseDetails-CourseDetails-module__expires--bxziN\"};","import { Trans } from '@lingui/react'\r\nimport styles from './CatastrophicErrorDisplay.module.scss'\r\n\r\nexport default class CatastrophicErrorDisplay extends React.PureComponent {\r\n static propTypes = {\r\n title: PropTypes.node,\r\n description: PropTypes.node,\r\n resolution: PropTypes.node,\r\n errors: PropTypes.arrayOf(PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.shape({\r\n message: PropTypes.string,\r\n date: PropTypes.instanceOf(Date),\r\n }),\r\n ])),\r\n }\r\n\r\n static defaultProps = {\r\n title: 'Something went wrong',\r\n resolution: You can try reloading this page. If the problem persists, contact support.,\r\n }\r\n\r\n render() {\r\n const {\r\n title,\r\n description,\r\n resolution,\r\n errors,\r\n } = this.props\r\n return (\r\n
\r\n

{title}

\r\n {description && (

{description}

)}\r\n {(errors && errors.length) && (\r\n
\r\n
\r\n {errors.length === 1 ? errors[0].message : (\r\n
    \r\n {errors.map(({ message }) => (\r\n
  • {message}
  • \r\n ))}\r\n
\r\n )}\r\n
\r\n
\r\n )}\r\n {resolution && (

{resolution}

)}\r\n
\r\n )\r\n }\r\n}\r\n","import generatedLocaleList from 'locale/allLocales'\r\n\r\nexport const types = {\r\n SET: 'locale.SET',\r\n}\r\nexport const allLocales = generatedLocaleList\r\n\r\nexport function setLocale(locale) {\r\n return {\r\n type: types.SET,\r\n payload: locale,\r\n }\r\n}\r\n"],"sourceRoot":""}