{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./Static/javascript/modules/constants.ts","webpack:///./Static/javascript/modules/read-more-less-trim.ts","webpack:///./Static/javascript/modules/recommended-courses.ts"],"names":[],"mappings":"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","file":"recommended-courses-bundle.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\"recommended-courses\": 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\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 = \"\";\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([48,\"common\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","/**\r\n These are global constants that you can import on to partials\r\n*/\r\n\r\nexport const CHARACTER_LIMIT_DESKTOP: number = 300;\r\nexport const CHARACTER_LIMIT_TABLET: number = 150;\r\nexport const CHARACTER_LIMIT_MOBILE: number = 100;","import { CHARACTER_LIMIT_DESKTOP, CHARACTER_LIMIT_TABLET, CHARACTER_LIMIT_MOBILE } from './constants';\r\n\r\nexport default (function () {\r\n\r\n let elementsToTrim = document.querySelectorAll('.trim > p');\r\n if (elementsToTrim) {\r\n Array.prototype.slice.call(elementsToTrim).forEach((textElementToTrim, i) => {\r\n inlineTrim(textElementToTrim, i);\r\n });\r\n }\r\n})();\r\n\r\nfunction inlineTrim(el: HTMLElement, id: number) {\r\n let fullString: string = el.innerHTML,\r\n split = [],\r\n marker: number,\r\n checkboxId: string,\r\n characterLimit = getCharacterLimit(),\r\n buffer = getBuffer()\r\n\r\n if (fullString.length > (characterLimit + buffer)) {\r\n marker = Math.min(characterLimit, fullString.substr(0, characterLimit).lastIndexOf(\" \"));\r\n split = [fullString.substr(0, marker), fullString.substr(marker)];\r\n checkboxId = \"readMore\" + id;\r\n el.innerHTML = `${split[0]}\r\n \r\n \r\n ${split[1]}\r\n `;\r\n }\r\n else {\r\n el.innerHTML = fullString;\r\n }\r\n}\r\n\r\nfunction getCharacterLimit() { \r\n if (window.innerWidth > 1024) {\r\n return CHARACTER_LIMIT_DESKTOP;\r\n }\r\n if (window.innerWidth < 1024 && window.innerWidth > 400) {\r\n return CHARACTER_LIMIT_TABLET;\r\n }\r\n if (window.innerWidth < 400) {\r\n return CHARACTER_LIMIT_MOBILE;\r\n }\r\n}\r\n\r\nfunction getBuffer() {\r\n if (window.innerWidth > 1024) {\r\n return 50;\r\n }\r\n if (window.innerWidth < 1024 && window.innerWidth > 400) {\r\n return 25;\r\n }\r\n if (window.innerWidth < 400) {\r\n return 10;\r\n }\r\n}","import { nodeListToArray } from '../helpers/nodeListToArray';\r\nimport inlineTrim from '../modules/read-more-less-trim';\r\nimport moment from 'moment';\r\n\r\nexport interface ICarousel {\r\n width?: number;\r\n containerClass: string;\r\n slidesPerView?: number;\r\n centeredSlides?: boolean;\r\n breakpoints?: any;\r\n spaceBetween?: number;\r\n navigation?: any;\r\n autoHeight?: boolean;\r\n height?: number;\r\n loop?: boolean;\r\n autoplayVideo?: boolean;\r\n pageNumberPreposition?: string;\r\n watchSlidesVisibility?: boolean;\r\n}\r\ninterface IPersonalizedProductData {\r\n authors: IAuthor[];\r\n itemNumber: string;\r\n itemName: string;\r\n newUntilDate: string;\r\n itemPublicationDate: string;\r\n startDate: string;\r\n endDate: string;\r\n bestseller: boolean;\r\n itemMemberPrice: number;\r\n itemRetailPrice: number;\r\n pricesLoading: boolean;\r\n isMemberBenefit: boolean;\r\n format: string;\r\n url: string;\r\n productImage: string;\r\n fullLocation: string;\r\n state: string;\r\n tags: string[];\r\n showAvailabilityDates: boolean;\r\n showPublicationDate: boolean;\r\n shortDescription: string;\r\n externalRegistrationUrl: string;\r\n category: string;\r\n isQuantityDiscount: boolean;\r\n healthyChildrenProduct: boolean;\r\n relevance: number;\r\n isMember: boolean;\r\n customFilterValues: string[];\r\n topics: string[];\r\n productType: ProductType;\r\n data: any;\r\n itemDisplayDate: string;\r\n}\r\n\r\ninterface IAuthor {\r\n authorName: string;\r\n authorBio: string;\r\n authorOfRole: string;\r\n authorOfDescription: string;\r\n}\r\n\r\ninterface IPersonalizedProducts {\r\n alias: string;\r\n position: string;\r\n recs: IPersonalizedProduct[];\r\n widget: string;\r\n}\r\n\r\ninterface IPersonalizedProduct {\r\n id: number;\r\n img: string;\r\n refCode: string;\r\n title: string;\r\n url: URL;\r\n prices: IPriceType[];\r\n}\r\n\r\ninterface IPriceType {\r\n USD: IPrice;\r\n}\r\n\r\ninterface IPrice {\r\n salePrice: number;\r\n unitPrice: number;\r\n}\r\n\r\nenum ProductType {\r\n BOOK,\r\n EBOOK,\r\n JOURNAL,\r\n LIVE_ACTIVITY,\r\n COURSE,\r\n BROCHURE,\r\n POINT_OF_CARE,\r\n DEFAULT\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n InitPeeriusRecommendationsForRecommendedCoursesBlock: (data: any) => void\r\n }\r\n}\r\nwindow.InitPeeriusRecommendationsForRecommendedCoursesBlock = function (data) {\r\n const recClass = 'peerius-reccomended-courses';\r\n const courseRecs = nodeListToArray(document.querySelectorAll('[data-recommended-courses-campaign]'));\r\n\r\n if (courseRecs.length > 0) {\r\n courseRecs.forEach((course, index) => {\r\n course.classList.add(`${recClass}-${index}`);\r\n renderRecs(data[0], `${recClass}-${index}`, course)\r\n });\r\n }\r\n\r\n}\r\n\r\nexport function renderRecs(peeriusData: any, recClass, courseWrapper) {\r\n var count = 0;\r\n var promiseCount = 0;\r\n if (peeriusData == undefined || peeriusData.recs == undefined) {\r\n return;\r\n }\r\n let firstRecs = peeriusData.recs.slice(0, 4);\r\n // get the first four reccommendations and append them to the block\r\n firstRecs.forEach(rec => {\r\n getProductData(rec.refCode, count, courseWrapper).then(res => {\r\n promiseCount++;\r\n if (promiseCount === firstRecs.length) {\r\n //post render effects if any\r\n inlineTrim;\r\n }\r\n });\r\n count++;\r\n });\r\n}\r\n//takes a single peerius recommended content item and gets the corresponding item from the search api\r\nfunction getProductData(refCode: string, index: number, courseWrapper: Element) {\r\n const init: RequestInit = {\r\n method: 'GET',\r\n credentials: 'same-origin'\r\n };\r\n\r\n return window.fetch(`/api/v1/search/getProduct?refCode=${refCode}`, init)\r\n .then(res => {\r\n if (res.status !== 200) {\r\n throw new Error(res.statusText);\r\n }\r\n return res.text().then(data => {\r\n renderCourseItem(data as any, index, courseWrapper);\r\n });\r\n });\r\n}\r\nfunction renderCourseItem(productData: any, index: number, courseWrapper: Element) {\r\n var parsedData = JSON.parse(productData) as IPersonalizedProductData;\r\n var ctaText = (window as any).recommendedCoursesBlockBootstrap.ctaText;\r\n\r\n var courseItem = document.createElement('div');\r\n courseItem.setAttribute('class', 'rec-course-item');\r\n courseItem.setAttribute('data-course-item', index.toString());\r\n if (parsedData != null && parsedData.data != null && parsedData !== undefined && parsedData.data !== undefined) {\r\n let displayDate = parsedData.data.itemDisplayDate;\r\n \r\n\r\n courseItem.innerHTML = `\r\n
${parsedData.data.searchSummaryText}