{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./src/assets/src/common/js/utilities.js","webpack:///./src/assets/src/frontend/js/course-dashboard.js","webpack:///./src/assets/src/frontend/js/lazy-course-navigation.js","webpack:///./node_modules/css-element-queries/src/ElementQueries.js","webpack:///./node_modules/css-element-queries/src/ResizeSensor.js","webpack:///./src/assets/src/frontend/js/course-timer.js","webpack:///./src/assets/src/frontend/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","jQuery","restCall","endPoint","data","onSuccess","onFail","validEndpoints","includes","$","ajax","method","url","UncannyToolkitPro","restURL","param","doing_rest","beforeSend","xhr","setRequestHeader","nonce","success","response","isDefined","statusCode","403","location","reload","fail","console","error","variable","isEmpty","isArray","length","isObject","keys","ElementQueries","require","CourseDashboard","this","hasDashboard","init","getElements","defineSettings","createCourses","slideAll","filters","$elements","form","selects","settings","slideToggleDuration","$courses","each","index","$element","Course","on","expandAll","collapseAll","courses","container","toggle","lessons","topics","quizzes","elementType","$containers","find","trigger","$container","dashboardSettings","defineCssClasses","getCourseData","toggleCourseContent","createLessons","createQuizzes","courseData","courseId","status","hasLessons","parseInt","hasQuizzes","hasCertificate","cssClasses","collapsed","collapsing","expanding","expanded","allToggle","map","item","join","toggleBtn","content","isCollapsed","setToggleClass","hide","slideDown","show","slideUp","$lessons","Lesson","$quizzesContainers","Quizzes","removeClass","addClass","hasClass","getLessonData","toggleLessonContent","createTopics","lessonData","course","lessonId","availableOn","isCompleted","isAvailable","hasTopics","$topics","Topic","getTopicData","toggleTopicContent","topicData","lesson","topicId","log","toggleQuizzesContent","createIndividualQuizzes","individual","$quizzes","Quiz","getQuizData","openStatistics","quizData","quizId","passed","statistics","btn","event","preventDefault","LazyCourseNavigation","isLazyCourseNavigation","getCourseNavigation","courseNavigation","setCourseNavigation","callback","course_id","UncannyToolkitProLazyCourseNavigation","lesson_id","topic_id","html","window","ResizeSensor","cssStyleElement","allQueries","idToSelectorMapping","getEmSize","element","document","documentElement","fontSize","getComputedStyle","parseFloat","convertToPx","numbers","split","units","clientWidth","clientHeight","vw","vh","chooser","Math","SetupInformation","id","option","elementSize","actualValue","attrValues","attrValue","attrName","attributes","getBoundingClientRect","width","offsetWidth","height","offsetHeight","rect","round","getElementSize","indexOf","k","setAttribute","substr","removeAttribute","setupElement","elementQueriesSetupInformation","elementQueriesSensor","queueQuery","selector","innerHTML","push","getQuery","query","querySelectorAll","$$","attachResponsiveImage","children","rules","sources","defaultImageId","lastActiveImage","loadedImages","tagName","toLowerCase","minWidth","getAttribute","src","rule","style","display","check","imageToDisplay","image","Image","onload","resizeSensorInstance","regex","attrRegex","extractQuery","css","match","smatch","attrs","attrMatch","replace","exec","readRules","j","type","selectorText","cssText","cssRules","styleSheet","defaultCssInjected","animationStart","body","addEventListener","e","target","styles","animationName","getPropertyValue","resizeSensor","createElement","getElementsByTagName","appendChild","styleSheets","href","warn","elements","findResponsiveImages","findElementQueriesElements","update","instance","detach","listen","test","navigator","userAgent","DOMLoadTimer","setInterval","readyState","clearInterval","domLoaded","globalWindow","self","Function","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","fn","setTimeout","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","timer","clearTimeout","forEachElement","elementsType","toString","isCollectionTyped","Elements","setStyle","forEach","lastAnimationFrameForInvisibleCheck","EventQueue","q","add","ev","sizeInfo","remove","newQueue","attachResizeEvent","resized","resizedAttached","dir","className","pointerEvents","position","left","top","right","bottom","overflow","zIndex","visibility","maxWidth","styleChild","transition","expand","expandChild","shrink","shrinkChild","computedStyle","dirty","rafId","size","lastWidth","lastHeight","initialHiddenCheck","reset","scrollLeft","scrollTop","resetSensor","onResized","onScroll","addEvent","el","cb","attachEvent","elem","contains","removeChild","MutationObserver","observer","mutations","items","addedNodes","observe","childList","subtree","CourseTimer","isCourseTimerEnabled","isLearnDashPost","setSettings","listenActivityInsideIframePageLoad","listenNewIframes","iframes","events","eventSettings","bubbles","cancelable","detail","iframe","listenActivityInIframe","eventName","contentWindow","triggerEvent","mutation","node","nodeName","attributeFilter","createEvent","initCustomEvent","dispatchEvent","uoTimer","querySelector"],"mappings":"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","file":"frontend/bundle.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = jQuery;","import $ from 'jquery';\n\n/**\n * Performs a REST Call\n * \n * @param {string} endPoint - Endpoint of the REST call\n * @param {object} data - Data to be sent in the call\n * @param {callback} [onSuccess] - Function to be invoked if the call is successful\n * @param {callback} [onFail] - Function to be invoked if the call fails\n * \n * @return null\n */\n\nexport function restCall( endPoint = null, data = null, onSuccess = null, onFail = null ){\n // Define the valid endpoints\n let validEndpoints = [ 'course_navigation', 'update_drip_date', 'try-automator-visibility' ];\n\n // Check if the endPoint parameter is a valid endpoint\n if ( validEndpoints.includes( endPoint ) ){\n // Do AJAX\n $.ajax({\n method: 'POST',\n url: UncannyToolkitPro.restURL + endPoint + '/',\n data: $.param( data ) + '&' + $.param({ doing_rest: 1 }),\n\n // Attach Nonce the the header of the request\n beforeSend: function( xhr ){\n xhr.setRequestHeader( 'X-WP-Nonce', UncannyToolkitPro.nonce );\n },\n\n success: function( response ){\n // Check if onSuccess\n if ( isDefined( onSuccess ) ){\n // Invoke callback\n onSuccess( response );\n }\n },\n\n statusCode: {\n 403: function(){\n location.reload();\n }\n },\n\n fail: function ( response ){\n if ( isDefined( onFail ) ){\n onFail( response );\n }\n },\n });\n }\n else {\n console.error( `The ${ endPoint } endPoint does not exists` );\n }\n}\n\n/**\n * Determine if a variable is set and is not NULL\n *\n * @param {mixed} variable - The variable being evaluated\n * @return {boolean} TRUE if the variable is defined\n */\n\nexport const isDefined = ( variable ) => {\n\t// Returns true if the variable is undefined\n return typeof variable !== 'undefined' && variable !== null;\n}\n\n/**\n * Determine whether a variable is empty\n *\n * @param {mixed} variable - The variable being evaluated\n * @return {boolean} TRUE if the variable is empty\n */\n\nexport const isEmpty = ( variable ) => {\n let response = true;\n\n // Check if the variable is defined, otherwise is empty\n if ( isDefined( variable ) ){\n // Check if it's array\n if ( variable.isArray ){\n response = variable.length == 0;\n }\n else if ( isObject( variable ) ){\n response = Object.keys( variable ).length;\n }\n else {\n response = variable == '';\n }\n }\n\n return response;\n}\n\n/**\n * Determine whether a variable is an object\n *\n * @param {mixed} variable - The variable being evaluated\n * @return {boolean} TRUE if the variable is an object\n */\n\nexport const isObject = ( variable ) => {\n return typeof variable === 'object' && variable !== null;\n}","const ElementQueries = require( 'css-element-queries/src/ElementQueries' );\n\nimport {\n\tisDefined,\n\tisEmpty\n} from '../../common/js/utilities.js';\n\nclass CourseDashboard {\n\tconstructor(){\n\t\t// Check if the required container is defined\n\t\tif ( this.hasDashboard() ){\n\t\t\t// Init ResizeSensor\n\t\t\tElementQueries.init();\n\n\t\t\t// Get elements\n\t\t\tthis.getElements();\n\n\t\t\t// Define global settings\n\t\t\tthis.defineSettings();\n\t\t\t\n\t\t\t// Create courses using the DOM elements\n\t\t\tthis.createCourses();\n\n\t\t\t// Add function to expand and collapse all containers\n\t\t\tthis.slideAll();\n\n\t\t\t// Listen filters\n\t\t\tthis.filters();\n\t\t}\n\t}\n\n\tgetElements(){\n\t\tthis.$elements = {\n\t\t\tfilters: {\n\t\t\t\tform: $( '#ultp-dashboard-filters-form' ),\n\t\t\t\tselects: $( '#ultp-dashboard-filters-form select' )\n\t\t\t}\n\t\t}\n\t}\n\n\tdefineSettings(){\n\t\t// Create settings\n\t\tthis.settings = {\n\t\t\tslideToggleDuration: 300\n\t\t}\n\t}\n\n\tcreateCourses(){\n\t\t// Get all courses\n\t\tconst $courses = $( '.ultp-dashboard-course' );\n\n\t\t// Create Courses\n\t\t$.each( $courses, ( index, $element ) => {\n\t\t\t// Create instance of Course\n\t\t\tnew Course( $( $element ), this.settings );\n\t\t});\n\t}\n\n\thasDashboard(){\n\t\treturn $( '.ultp-dashboard-courses' ).length > 0;\n\t}\n\n\tslideAll(){\n\t\t// Listen to the clicks on the buttons\n\t\t$( '.ultp-dashboard .ultp-dashboard-btn--expand-all' ).on( 'click', () => {\n\t\t\texpandAll();\n\t\t});\n\n\t\t$( '.ultp-dashboard .ultp-dashboard-btn--collapse-all' ).on( 'click', () => {\n\t\t\tcollapseAll();\n\t\t});\n\n\t\tconst expandAll = () => {\n\t\t\t// Get all the collapsed containers\n\t\t\tconst collapsedContainers = {\n\t\t\t\tcourses: {\n\t\t\t\t\tcontainer: '.ultp-dashboard-course--collapsed',\n\t\t\t\t\ttoggle: '.ultp-dashboard-course__toggle-btn'\n\t\t\t\t},\n\t\t\t\tlessons: {\n\t\t\t\t\tcontainer: '.ultp-dashboard-lesson--collapsed',\n\t\t\t\t\ttoggle: '.ultp-dashboard-lesson__toggle-btn'\n\t\t\t\t},\n\t\t\t\ttopics: {\n\t\t\t\t\tcontainer: '.ultp-dashboard-topic--collapsed',\n\t\t\t\t\ttoggle: '.ultp-dashboard-topic__toggle-btn'\n\t\t\t\t},\n\t\t\t\tquizzes: {\n\t\t\t\t\tcontainer: '.ultp-dashboard-quizzes--collapsed',\n\t\t\t\t\ttoggle: '.ultp-dashboard-quizzes__header-toggle-btn'\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.each( collapsedContainers, ( index, elementType ) => {\n\t\t\t\t// Get containers\n\t\t\t\tconst $containers = $( elementType.container );\n\n\t\t\t\t// Iterate each container\n\t\t\t\t$.each( $containers, ( index, container ) => {\n\t\t\t\t\t// Get container element\n\t\t\t\t\tconst $container = $( container );\n\n\t\t\t\t\t// Get toggle button\n\t\t\t\t\tconst $toggleButton = $container.find( elementType.toggle );\n\n\t\t\t\t\t// Trigger click\n\t\t\t\t\t$toggleButton.trigger( 'click' );\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tconst collapseAll = () => {\n\t\t\t// Get all the expanded containers\n\t\t\tconst expandedContainers = {\n\t\t\t\tcourses: {\n\t\t\t\t\tcontainer: '.ultp-dashboard-course--expanded',\n\t\t\t\t\ttoggle: '.ultp-dashboard-course__toggle-btn'\n\t\t\t\t},\n\t\t\t\tlessons: {\n\t\t\t\t\tcontainer: '.ultp-dashboard-lesson--expanded',\n\t\t\t\t\ttoggle: '.ultp-dashboard-lesson__toggle-btn'\n\t\t\t\t},\n\t\t\t\tquizzes: {\n\t\t\t\t\tcontainer: '.ultp-dashboard-quizzes--expanded',\n\t\t\t\t\ttoggle: '.ultp-dashboard-quizzes__header-toggle-btn'\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.each( expandedContainers, ( index, elementType ) => {\n\t\t\t\t// Get containers\n\t\t\t\tconst $containers = $( elementType.container );\n\n\t\t\t\t// Iterate each container\n\t\t\t\t$.each( $containers, ( index, container ) => {\n\t\t\t\t\t// Get container element\n\t\t\t\t\tconst $container = $( container );\n\n\t\t\t\t\t// Get toggle button\n\t\t\t\t\tconst $toggleButton = $container.find( elementType.toggle );\n\n\t\t\t\t\t// Trigger click\n\t\t\t\t\t$toggleButton.trigger( 'click' );\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tfilters(){\n\t\t// Listen to changes\n\t\tthis.$elements.filters.selects.on( 'change', () => {\n\t\t\t// Submit form\n\t\t\tthis.$elements.filters.form.trigger( 'submit' );\n\t\t});\n\t}\n}\n\nclass Course {\n\tconstructor( $container, settings ){\n\t\t// Save settings in the object's instance\n\t\tthis.dashboardSettings = settings;\n\n\t\t// Define the important CSS classes\n\t\tthis.defineCssClasses();\n\n\t\t// Get important elements from the container\n\t\tthis.getElements( $container );\n\n\t\t// Get course data\n\t\tthis.getCourseData();\n\n\t\t// Add toggle functionality\n\t\tthis.toggleCourseContent();\n\n\t\t// Create lessons using the DOM elements\n\t\tthis.createLessons();\n\n\t\t// Create quizzes using the DOM elements\n\t\tthis.createQuizzes();\n\t}\n\n\tgetCourseData(){\n\t\tthis.courseData = {\n\t\t\tcourseId: this.$elements.container.data( 'course-id' ),\n\t\t\tstatus: this.$elements.container.data( 'status' ),\n\t\t\thasLessons: !! parseInt( this.$elements.container.data( 'has-lessons' ) ),\n\t\t\thasQuizzes: !! parseInt( this.$elements.container.data( 'has-quizzes' ) ),\n\t\t\thasCertificate: !! parseInt( this.$elements.container.data( 'has-certificate' ) ),\n\t\t}\n\t}\n\n\tdefineCssClasses(){\n\t\tthis.cssClasses = {\n\t\t\ttoggle: {\n\t\t\t\tcollapsed: 'ultp-dashboard-course--collapsed',\n\t\t\t\tcollapsing: 'ultp-dashboard-course--collapsing',\n\t\t\t\texpanding: 'ultp-dashboard-course--expanding',\n\t\t\t\texpanded: 'ultp-dashboard-course--expanded',\n\t\t\t}\n\t\t}\n\n\t\tthis.cssClasses.allToggle = Object.keys( this.cssClasses.toggle ).map( item => this.cssClasses.toggle[ item ] ).join( ' ' );\n\t}\n\n\tgetElements( $container ){\n\t\tthis.$elements = {\n\t\t\tcontainer: $container,\n\t\t\ttoggleBtn: $container.find( '.ultp-dashboard-course__toggle-btn' ),\n\t\t\tcontent: $container.find( '.ultp-dashboard-course__content' )\n\t\t}\n\t}\n\n\ttoggleCourseContent(){\n\t\t// Check if the course has lessons or quizzes\n\t\tif ( this.courseData.hasLessons || this.courseData.hasQuizzes ){\n\t\t\t// Listen to clicks on the toggle button\n\t\t\tthis.$elements.toggleBtn.on( 'click', () => {\n\t\t\t\t// Check if we have to close it or open it\n\t\t\t\tif ( this.isCollapsed() ){\n\t\t\t\t\t// As it's collapsed, we have to expand it\n\n\t\t\t\t\t// Set status\n\t\t\t\t\tthis.setToggleClass( 'expanding' );\n\n\t\t\t\t\t// Do the slideDown\n\t\t\t\t\tthis.$elements.content.hide().slideDown( this.dashboardSettings.slideToggleDuration, () => {\n\t\t\t\t\t\t// Set status\n\t\t\t\t\t\tthis.setToggleClass( 'expanded' );\n\t\t\t\t\t});\n\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// As it's expanded, we have to collapse it\n\n\t\t\t\t\t// Set status\n\t\t\t\t\tthis.setToggleClass( 'collapsing' );\n\n\t\t\t\t\t// Do the slideDown\n\t\t\t\t\tthis.$elements.content.show().slideUp( this.dashboardSettings.slideToggleDuration, () => {\n\t\t\t\t\t\t// Set status\n\t\t\t\t\t\tthis.setToggleClass( 'collapsed' );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tcreateLessons(){\n\t\t// Get all lessons\n\t\tconst $lessons = this.$elements.container.find( '.ultp-dashboard-lesson' );\n\n\t\t// Create Courses\n\t\t$.each( $lessons, ( index, $element ) => {\n\t\t\t// Create instance of Course\n\t\t\tnew Lesson( $( $element ), this.dashboardSettings, this.courseData );\n\t\t});\n\t}\n\n\tcreateQuizzes(){\n\t\t// Get all quizzes containers\n\t\tconst $quizzesContainers = this.$elements.container.find( '.ultp-dashboard-course__quizzes .ultp-dashboard-quizzes' );\n\n\t\t// Create Quizzes\n\t\t$.each( $quizzesContainers, ( index, $element ) => {\n\t\t\t// Create instance of Course\n\t\t\tnew Quizzes( $( $element ), this.dashboardSettings, this.courseData );\n\t\t});\n\t}\n\n\tsetToggleClass( status ){\n\t\t// First remove all the classes\n\t\tthis.$elements.container.removeClass( this.cssClasses.allToggle );\n\n\t\t// Then add the correct class\n\t\tthis.$elements.container.addClass( this.cssClasses.toggle[ status ] );\n\t}\n\n\tisCollapsed(){\n\t\t// Check if the container has the collapsed class\n\t\treturn this.$elements.container.hasClass( this.cssClasses.toggle.collapsed );\n\t}\n}\n\nclass Lesson {\n\tconstructor( $container, settings, courseData ){\n\t\t// Save settings in the object's instance\n\t\tthis.dashboardSettings = settings;\n\t\t// Save courseData\n\t\tthis.courseData = courseData;\n\n\t\t// Define the important CSS classes\n\t\tthis.defineCssClasses();\n\n\t\t// Get important elements from the container\n\t\tthis.getElements( $container );\n\n\t\t// Get lesson data\n\t\tthis.getLessonData();\n\n\t\t// Add toggle functionality\n\t\tthis.toggleLessonContent();\n\n\t\t// Create topics using the DOM elements\n\t\tthis.createTopics();\n\n\t\t// Create quizzes using the DOM elements\n\t\tthis.createQuizzes();\n\t}\n\n\tgetLessonData(){\n\t\tthis.lessonData = {\n\t\t\tcourse: this.courseData,\n\t\t\tlessonId: this.$elements.container.data( 'lesson-id' ),\n\t\t\tavailableOn: ! isEmpty( this.$elements.container.data( 'available-on' ) ) ? parseInt( this.$elements.container.data( 'available-on' ) ) : null,\n\t\t\tisCompleted: !! parseInt( this.$elements.container.data( 'is-completed' ) ),\n\t\t\tisAvailable: !! parseInt( this.$elements.container.data( 'is-available' ) ),\n\t\t\thasTopics: !! parseInt( this.$elements.container.data( 'has-topics' ) ),\n\t\t\thasQuizzes: !! parseInt( this.$elements.container.data( 'has-quizzes' ) ),\n\t\t}\n\t}\n\n\tdefineCssClasses(){\n\t\tthis.cssClasses = {\n\t\t\ttoggle: {\n\t\t\t\tcollapsed: 'ultp-dashboard-lesson--collapsed',\n\t\t\t\tcollapsing: 'ultp-dashboard-lesson--collapsing',\n\t\t\t\texpanding: 'ultp-dashboard-lesson--expanding',\n\t\t\t\texpanded: 'ultp-dashboard-lesson--expanded',\n\t\t\t}\n\t\t}\n\n\t\tthis.cssClasses.allToggle = Object.keys( this.cssClasses.toggle ).map( item => this.cssClasses.toggle[ item ] ).join( ' ' );\n\t}\n\n\tgetElements( $container ){\n\t\tthis.$elements = {\n\t\t\tcontainer: $container,\n\t\t\ttoggleBtn: $container.find( '.ultp-dashboard-lesson__toggle-btn' ),\n\t\t\tcontent: $container.find( '.ultp-dashboard-lesson__content' )\n\t\t}\n\t}\n\n\ttoggleLessonContent(){\n\t\t// Check if the lesson has topics or quizzes\n\t\tif ( this.lessonData.hasTopics || this.lessonData.hasQuizzes ){\n\t\t\t// Listen to clicks on the toggle button\n\t\t\tthis.$elements.toggleBtn.on( 'click', () => {\n\t\t\t\t// Check if we have to close it or open it\n\t\t\t\tif ( this.isCollapsed() ){\n\t\t\t\t\t// As it's collapsed, we have to expand it\n\n\t\t\t\t\t// Set status\n\t\t\t\t\tthis.setToggleClass( 'expanding' );\n\n\t\t\t\t\t// Do the slideDown\n\t\t\t\t\tthis.$elements.content.hide().slideDown( this.dashboardSettings.slideToggleDuration, () => {\n\t\t\t\t\t\t// Set status\n\t\t\t\t\t\tthis.setToggleClass( 'expanded' );\n\t\t\t\t\t});\n\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// As it's expanded, we have to collapse it\n\n\t\t\t\t\t// Set status\n\t\t\t\t\tthis.setToggleClass( 'collapsing' );\n\n\t\t\t\t\t// Do the slideDown\n\t\t\t\t\tthis.$elements.content.show().slideUp( this.dashboardSettings.slideToggleDuration, () => {\n\t\t\t\t\t\t// Set status\n\t\t\t\t\t\tthis.setToggleClass( 'collapsed' );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tcreateTopics(){\n\t\t// Get all topics\n\t\tconst $topics = this.$elements.container.find( '.ultp-dashboard-topic' );\n\n\t\t// Create Courses\n\t\t$.each( $topics, ( index, $element ) => {\n\t\t\t// Create instance of Course\n\t\t\tnew Topic( $( $element ), this.dashboardSettings, this.courseData, this.lessonData );\n\t\t});\n\t}\n\n\tcreateQuizzes(){\n\t\t// Get all quizzes containers\n\t\tconst $quizzesContainers = this.$elements.container.find( '.ultp-dashboard-lesson__quizzes .ultp-dashboard-quizzes' );\n\n\t\t// Create Quizzes\n\t\t$.each( $quizzesContainers, ( index, $element ) => {\n\t\t\t// Create instance of Course\n\t\t\tnew Quizzes( $( $element ), this.dashboardSettings, this.courseData, this.lessonData );\n\t\t});\n\t}\n\n\tsetToggleClass( status ){\n\t\t// First remove all the classes\n\t\tthis.$elements.container.removeClass( this.cssClasses.allToggle );\n\n\t\t// Then add the correct class\n\t\tthis.$elements.container.addClass( this.cssClasses.toggle[ status ] );\n\t}\n\n\tisCollapsed(){\n\t\t// Check if the container has the collapsed class\n\t\treturn this.$elements.container.hasClass( this.cssClasses.toggle.collapsed );\n\t}\n}\n\nclass Topic {\n\tconstructor( $container, settings, courseData, lessonData ){\n\t\t// Save settings in the object's instance\n\t\tthis.dashboardSettings = settings;\n\t\t// Save course data\n\t\tthis.courseData = courseData;\n\t\t// Save lesson data\n\t\tthis.lessonData = lessonData;\n\n\t\t// Get elements\n\t\tthis.getElements( $container );\n\n\t\t// Define the important CSS classes\n\t\tthis.defineCssClasses();\n\n\t\t// Get lesson data\n\t\tthis.getTopicData();\n\n\t\t// Add toggle functionality\n\t\tthis.toggleTopicContent();\n\t}\n\n\tgetElements( $container ){\n\t\tthis.$elements = {\n\t\t\tcontainer: $container,\n\t\t\ttoggleBtn: $container.find( '.ultp-dashboard-topic__toggle-btn' ),\n\t\t\tcontent: $container.find( '.ultp-dashboard-topic__content' )\n\t\t}\n\t}\n\n\tgetTopicData(){\n\t\tthis.topicData = {\n\t\t\tcourse: this.courseData,\n\t\t\tlesson: this.lessonData,\n\t\t\ttopicId: this.$elements.container.data( 'topic-id' ),\n\t\t\tisCompleted: !! parseInt( this.$elements.container.data( 'is-completed' ) ),\n\t\t\thasQuizzes: !! parseInt( this.$elements.container.data( 'has-quizzes' ) )\n\t\t}\n\n\t\tdelete this.topicData.lesson.course;\n\t}\n\n\tdefineCssClasses(){\n\t\tthis.cssClasses = {\n\t\t\ttoggle: {\n\t\t\t\tcollapsed: 'ultp-dashboard-topic--collapsed',\n\t\t\t\tcollapsing: 'ultp-dashboard-topic--collapsing',\n\t\t\t\texpanding: 'ultp-dashboard-topic--expanding',\n\t\t\t\texpanded: 'ultp-dashboard-topic--expanded',\n\t\t\t}\n\t\t}\n\n\t\tthis.cssClasses.allToggle = Object.keys( this.cssClasses.toggle ).map( item => this.cssClasses.toggle[ item ] ).join( ' ' );\n\t}\n\n\tsetToggleClass( status ){\n\t\t// First remove all the classes\n\t\tthis.$elements.container.removeClass( this.cssClasses.allToggle );\n\n\t\t// Then add the correct class\n\t\tthis.$elements.container.addClass( this.cssClasses.toggle[ status ] );\n\t}\n\n\ttoggleTopicContent(){\n\t\tconsole.log( this.topicData.hasQuizzes );\n\n\t\t// Check if the topic has topics or quizzes\n\t\tif ( this.topicData.hasQuizzes ){\n\n\t\t\tconsole.log( this.$elements.toggleBtn );\n\n\t\t\t// Listen to clicks on the toggle button\n\t\t\tthis.$elements.toggleBtn.on( 'click', () => {\n\t\t\t\t// Check if we have to close it or open it\n\t\t\t\tif ( this.isCollapsed() ){\n\t\t\t\t\t// As it's collapsed, we have to expand it\n\n\t\t\t\t\t// Set status\n\t\t\t\t\tthis.setToggleClass( 'expanding' );\n\n\t\t\t\t\t// Do the slideDown\n\t\t\t\t\tthis.$elements.content.hide().slideDown( this.dashboardSettings.slideToggleDuration, () => {\n\t\t\t\t\t\t// Set status\n\t\t\t\t\t\tthis.setToggleClass( 'expanded' );\n\t\t\t\t\t});\n\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// As it's expanded, we have to collapse it\n\n\t\t\t\t\t// Set status\n\t\t\t\t\tthis.setToggleClass( 'collapsing' );\n\n\t\t\t\t\t// Do the slideDown\n\t\t\t\t\tthis.$elements.content.show().slideUp( this.dashboardSettings.slideToggleDuration, () => {\n\t\t\t\t\t\t// Set status\n\t\t\t\t\t\tthis.setToggleClass( 'collapsed' );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tisCollapsed(){\n\t\t// Check if the container has the collapsed class\n\t\treturn this.$elements.container.hasClass( this.cssClasses.toggle.collapsed );\n\t}\n}\n\nclass Quizzes {\n\tconstructor( $container, settings, courseData, lessonData = false ){\n\t\t// Save settings in the object's instance\n\t\tthis.dashboardSettings = settings;\n\t\t// Save course data\n\t\tthis.courseData = courseData;\n\t\t// Save lesson data\n\t\tthis.lessonData = lessonData;\n\n\t\t// Define the important CSS classes\n\t\tthis.defineCssClasses();\n\n\t\t// Get important elements from the container\n\t\tthis.getElements( $container );\n\n\t\t// Add toggle functionality\n\t\tthis.toggleQuizzesContent();\n\n\t\t// Create Quiz instances\n\t\tthis.createIndividualQuizzes();\n\t}\n\n\tdefineCssClasses(){\n\t\tthis.cssClasses = {\n\t\t\tindividual: 'ultp-dashboard-quiz',\n\t\t\ttoggle: {\n\t\t\t\tcollapsed: 'ultp-dashboard-quizzes--collapsed',\n\t\t\t\tcollapsing: 'ultp-dashboard-quizzes--collapsing',\n\t\t\t\texpanding: 'ultp-dashboard-quizzes--expanding',\n\t\t\t\texpanded: 'ultp-dashboard-quizzes--expanded',\n\t\t\t}\n\t\t}\n\n\t\tthis.cssClasses.allToggle = Object.keys( this.cssClasses.toggle ).map( item => this.cssClasses.toggle[ item ] ).join( ' ' );\n\t}\n\n\tgetElements( $container ){\n\t\tthis.$elements = {\n\t\t\tcontainer: $container,\n\t\t\ttoggleBtn: $container.find( '.ultp-dashboard-quizzes__header-toggle-btn' ),\n\t\t\tcontent: $container.find( '.ultp-dashboard-quizzes__list' )\n\t\t}\n\t}\n\n\ttoggleQuizzesContent(){\n\t\t// Listen to clicks on the toggle button\n\t\tthis.$elements.toggleBtn.on( 'click', () => {\n\t\t\t// Check if we have to close it or open it\n\t\t\tif ( this.isCollapsed() ){\n\t\t\t\t// As it's collapsed, we have to expand it\n\n\t\t\t\t// Set status\n\t\t\t\tthis.setToggleClass( 'expanding' );\n\n\t\t\t\t// Do the slideDown\n\t\t\t\tthis.$elements.content.hide().slideDown( this.dashboardSettings.slideToggleDuration, () => {\n\t\t\t\t\t// Set status\n\t\t\t\t\tthis.setToggleClass( 'expanded' );\n\t\t\t\t});\n\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// As it's expanded, we have to collapse it\n\n\t\t\t\t// Set status\n\t\t\t\tthis.setToggleClass( 'collapsing' );\n\n\t\t\t\t// Do the slideDown\n\t\t\t\tthis.$elements.content.show().slideUp( this.dashboardSettings.slideToggleDuration, () => {\n\t\t\t\t\t// Set status\n\t\t\t\t\tthis.setToggleClass( 'collapsed' );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tsetToggleClass( status ){\n\t\t// First remove all the classes\n\t\tthis.$elements.container.removeClass( this.cssClasses.allToggle );\n\n\t\t// Then add the correct class\n\t\tthis.$elements.container.addClass( this.cssClasses.toggle[ status ] );\n\t}\n\n\tisCollapsed(){\n\t\t// Check if the container has the collapsed class\n\t\treturn this.$elements.container.hasClass( this.cssClasses.toggle.collapsed );\n\t}\n\n\tcreateIndividualQuizzes(){\n\t\t// Find quizzes\n\t\tconst $quizzes = this.$elements.container.find( `.${ this.cssClasses.individual }` );\n\n\t\t// Iterate each quiz\n\t\t$.each( $quizzes, ( index, $element ) => {\n\t\t\t// Create instance of Course\n\t\t\tnew Quiz( $( $element ), this.dashboardSettings, this.courseData, this.lessonData );\n\t\t});\n\t}\n}\n\nclass Quiz {\n\tconstructor( $container, settings, courseData, lessonData = false ){\n\t\t// Save settings in the object's instance\n\t\tthis.dashboardSettings = settings;\n\t\t// Save course data\n\t\tthis.courseData = courseData;\n\t\t// Save lesson data. This will be false\n\t\t// if the quiz is not inside a lesson\n\t\tthis.lessonData = lessonData;\n\n\t\t// Define the important CSS classes\n\t\tthis.defineCssClasses();\n\n\t\t// Get important elements from the container\n\t\tthis.getElements( $container );\n\n\t\t// Get quiz data\n\t\tthis.getQuizData();\n\n\t\t// Add toggle functionality\n\t\tthis.openStatistics();\n\t}\n\n\tgetQuizData(){\n\t\tthis.quizData = {\n\t\t\tcourse: this.courseData,\n\t\t\tquizId: this.$elements.container.data( 'quiz-id' ),\n\t\t\tisCompleted: !! parseInt( this.$elements.container.data( 'is-completed' ) ),\n\t\t\tpassed: !! parseInt( this.$elements.container.data( 'passed' ) ),\n\t\t}\n\n\t\tif ( isDefined( this.$elements.container.data( 'lesson-id' ) ) ){\n\t\t\tthis.quizData.lesson = this.lessonData;\n\t\t\tdelete this.quizData.lesson.course;\n\t\t}\n\t}\n\n\tdefineCssClasses(){\n\t\tthis.cssClasses = {\n\t\t\tstatistics: {\n\t\t\t\tbtn: 'ultp-dashboard-btn--statistics',\n\t\t\t\tcontent: '',\n\t\t\t}\n\t\t}\n\t}\n\n\tgetElements( $container ){\n\t\tthis.$elements = {\n\t\t\tcontainer: $container,\n\t\t\tstatistics: {\n\t\t\t\tbtn: $container.find( `.${ this.cssClasses.statistics.btn }` ),\n\t\t\t\t// content: $container.find( `.${ this.cssClasses.statistics.content }` )\n\t\t\t}\n\t\t}\n\t}\n\n\topenStatistics(){\n\t\t// Listen clicks on the statistics button\n\t\tthis.$elements.statistics.btn.on( 'click', ( event ) => {\n\t\t\t// Prevent default\n\t\t\tevent.preventDefault();\n\n\t\t\t// Open statistics\n\t\t\tconsole.log( this.quizData );\n\t\t});\n\t}\n}\n\nexport default CourseDashboard;","import {\n\trestCall,\n\tisDefined\n} from '../../common/js/utilities.js';\n\nclass LazyCourseNavigation {\n\tconstructor(){\n\t\t// Get elements\n\t\tthis.getElements();\n\n\t\t// Check if we have to execute the code\n\t\tif ( this.isLazyCourseNavigation() ){\n\t\t\t// Get course navigation\n\t\t\tthis.getCourseNavigation(( courseNavigation ) => {\n\t\t\t\t// Set course navigation\n\t\t\t\tthis.setCourseNavigation( courseNavigation );\n\t\t\t});\n\t\t}\n\t}\n\n\tgetElements(){\n\t\t// Create elements property\n\t\tthis.$elements = {\n\t\t\tcontainer: $( '.ultp-lazy-course-navigation' )\n\t\t}\n\t}\n\n\tgetCourseNavigation( callback ){\n\t\t// Do AJAX request\n\t\trestCall( 'course_navigation', {\n\t\t\tcourse_id: UncannyToolkitProLazyCourseNavigation.course_id,\n lesson_id: UncannyToolkitProLazyCourseNavigation.lesson_id,\n topic_id: UncannyToolkitProLazyCourseNavigation.topic_id,\n nonce: UncannyToolkitProLazyCourseNavigation.nonce\n\t\t}, ( response ) => {\n\t\t\t// On success\n\t\t\tcallback( response );\n\t\t}, () => {\n\t\t\t// On fail\n\t\t\tconsole.error( `We couldn't load the course navigation content.` );\n\t\t});\n\t}\n\n\tsetCourseNavigation( courseNavigation ){\n\t\t// Remove loading class\n\t\tthis.$elements.container.removeClass( 'ultp-lazy-course-navigation--loading' );\n\n\t\t// Set the content in each container\n\t\t$.each( this.$elements.container, ( index, container ) => {\n\t\t\t// Get jQuery DOM element\n\t\t\tconst $container = $( container );\n\n\t\t\t// Set the content\n\t\t\t$container.html( courseNavigation.html );\n\t\t});\n\t}\n\n\tisLazyCourseNavigation(){\n\t\treturn this.$elements.container.length > 0 && isDefined( UncannyToolkitProLazyCourseNavigation );\n\t}\n}\n\nexport default LazyCourseNavigation;","'use strict';\n\n/**\n * Copyright Marc J. Schmidt. See the LICENSE file at the top-level\n * directory of this distribution and at\n * https://github.com/marcj/css-element-queries/blob/master/LICENSE.\n */\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['./ResizeSensor.js'], factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory(require('./ResizeSensor.js'));\n } else {\n root.ElementQueries = factory(root.ResizeSensor);\n root.ElementQueries.listen();\n }\n}(typeof window !== 'undefined' ? window : this, function (ResizeSensor) {\n\n /**\n *\n * @type {Function}\n * @constructor\n */\n var ElementQueries = function () {\n //