PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.10
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.10
4.4.10 4.4.9.1 4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 All 142 releases
← All changes | assets/js/dist/frontend/single-curriculum.js +769 -616 4.1.7.3 → 4.4.10 View file →
@@ -1,33 +1,86 @@
1 -/******/ (function() { // webpackBootstrap
1 +/******/ (() => { // webpackBootstrap
2 2 /******/ var __webpack_modules__ = ({
3 3
4 -/***/ "./assets/src/apps/js/frontend/show-lp-overlay-complete-item.js":
4 +/***/ "./assets/src/apps/js/frontend/material.js"
5 +/*!*************************************************!*\
6 + !*** ./assets/src/apps/js/frontend/material.js ***!
7 + \*************************************************/
8 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9 +
10 +"use strict";
11 +__webpack_require__.r(__webpack_exports__);
12 +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13 +/* harmony export */ "default": () => (/* binding */ lpMaterialsLoad)
14 +/* harmony export */ });
15 +/* harmony import */ var _js_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../js/utils.js */ "./assets/src/js/utils.js");
16 +
17 +function lpMaterialsLoad() {
18 + document.addEventListener('click', function (e) {
19 + const target = e.target;
20 + if (target.classList.contains('lp-loadmore-material')) {
21 + const loadMoreButton = target;
22 + const lpTarget = target.closest('.lp-target');
23 + const dataSend = window.lpAJAXG.getDataSetCurrent(lpTarget);
24 + dataSend.args.paged++;
25 + _js_utils_js__WEBPACK_IMPORTED_MODULE_0__.lpSetLoadingEl(loadMoreButton, 1);
26 + const callBack = {
27 + success: response => {
28 + const {
29 + status,
30 + message,
31 + data
32 + } = response;
33 + if (status === 'success') {
34 + const tableBody = lpTarget.querySelector('table.course-material-table tbody');
35 + tableBody.insertAdjacentHTML('beforeend', data.content);
36 + if (data.paged === data.total_pages) {
37 + loadMoreButton.remove();
38 + }
39 + window.lpAJAXG.setDataSetCurrent(lpTarget, dataSend);
40 + } else {
41 + console.error(message);
42 + }
43 + },
44 + error: error => {
45 + console.error(error);
46 + },
47 + completed: () => {
48 + _js_utils_js__WEBPACK_IMPORTED_MODULE_0__.lpSetLoadingEl(loadMoreButton, 0);
49 + }
50 + };
51 + window.lpAJAXG.fetchAJAX(dataSend, callBack);
52 + }
53 + });
54 +}
55 +
56 +/***/ },
57 +
58 +/***/ "./assets/src/apps/js/frontend/show-lp-overlay-complete-item.js"
5 59 /*!**********************************************************************!*\
6 60 !*** ./assets/src/apps/js/frontend/show-lp-overlay-complete-item.js ***!
7 61 \**********************************************************************/
8 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
62 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9 63
10 64 "use strict";
11 65 __webpack_require__.r(__webpack_exports__);
66 +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
67 +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
68 +/* harmony export */ });
12 69 /* harmony import */ var _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/lp-modal-overlay */ "./assets/src/apps/js/utils/lp-modal-overlay.js");
13 70
14 71 const lpModalOverlayCompleteItem = {
15 72 elBtnFinishCourse: null,
16 73 elBtnCompleteItem: null,
17 -
18 74 init() {
19 75 if (!_utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].init()) {
20 76 return;
21 77 }
22 -
23 78 if (undefined === lpGlobalSettings || 'yes' !== lpGlobalSettings.option_enable_popup_confirm_finish) {
24 79 return;
25 80 }
26 -
27 81 this.elBtnFinishCourse = document.querySelectorAll('.lp-btn-finish-course');
28 82 this.elBtnCompleteItem = document.querySelector('.lp-btn-complete-item');
29 -
30 83 if (this.elBtnCompleteItem) {
31 84 this.elBtnCompleteItem.addEventListener('click', e => {
32 85 e.preventDefault();
33 86 const form = e.target.closest('form');
@@ -32,16 +85,19 @@
32 85 e.preventDefault();
33 86 const form = e.target.closest('form');
34 87 _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].elLPOverlay.show();
35 88 _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].setTitleModal(form.dataset.title);
36 - _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].setContentModal('<div class="pd-2em">' + form.dataset.confirm + '</div>');
37 -
89 + // ESC html
90 + const div = document.createElement('div');
91 + div.appendChild(document.createTextNode(form.dataset.confirm));
92 + const contentModal = div.innerHTML;
93 + // End ESC html
94 + _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].setContentModal('<div class="pd-2em">' + contentModal + '</div>');
38 95 _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].callBackYes = () => {
39 96 form.submit();
40 97 };
41 98 });
42 99 }
43 -
44 100 if (this.elBtnFinishCourse) {
45 101 this.elBtnFinishCourse.forEach(element => element.addEventListener('click', e => {
46 102 e.preventDefault();
47 103 const form = e.target.closest('form');
@@ -47,9 +103,8 @@
47 103 const form = e.target.closest('form');
48 104 _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].elLPOverlay.show();
49 105 _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].setTitleModal(form.dataset.title);
50 106 _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].setContentModal('<div class="pd-2em">' + form.dataset.confirm + '</div>');
51 -
52 107 _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__["default"].callBackYes = () => {
53 108 form.submit();
54 109 };
55 110 }));
@@ -54,24 +109,23 @@
54 109 };
55 110 }));
56 111 }
57 112 }
58 -
59 113 };
60 -/* harmony default export */ __webpack_exports__["default"] = (lpModalOverlayCompleteItem);
114 +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (lpModalOverlayCompleteItem);
61 115
62 -/***/ }),
116 +/***/ },
63 117
64 -/***/ "./assets/src/apps/js/frontend/single-curriculum/components/comment.js":
118 +/***/ "./assets/src/apps/js/frontend/single-curriculum/components/comment.js"
65 119 /*!*****************************************************************************!*\
66 120 !*** ./assets/src/apps/js/frontend/single-curriculum/components/comment.js ***!
67 121 \*****************************************************************************/
68 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
122 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
69 123
70 124 "use strict";
71 125 __webpack_require__.r(__webpack_exports__);
72 126 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
73 -/* harmony export */ "commentForm": function() { return /* binding */ commentForm; }
127 +/* harmony export */ commentForm: () => (/* binding */ commentForm)
74 128 /* harmony export */ });
75 129 /**
76 130 * Toogle form Comment for Lesson.
77 131 *
@@ -76,23 +130,20 @@
76 130 * Toogle form Comment for Lesson.
77 131 *
78 132 * @author Nhamdv.
79 133 */
134 +
80 135 const commentForm = () => {
81 136 const btn = document.querySelector('.lp-lesson-comment-btn');
82 -
83 137 if (!btn) {
84 138 return;
85 139 }
86 -
87 140 const btnOpen = btn.textContent;
88 141 const btnClose = btn.dataset.close;
89 142 const hashComment = window.location.hash;
90 -
91 143 if (hashComment.includes('comment')) {
92 144 btn.parentNode.classList.add('open-comments');
93 145 }
94 -
95 146 const toogleText = (btn, btnParent) => {
96 147 if (btnParent.classList.contains('open-comments')) {
97 148 btn.textContent = btnClose;
98 149 } else {
@@ -98,34 +149,38 @@
98 149 } else {
99 150 btn.textContent = btnOpen;
100 151 }
101 152 };
102 -
103 153 toogleText(btn, btn.parentNode);
104 154 btn.addEventListener('click', e => {
105 155 e.preventDefault();
106 156 btn.parentNode.classList.toggle('open-comments');
107 157 toogleText(btn, btn.parentNode);
108 - }); // Use for Rest API.
158 + });
159 +
160 + // Use for Rest API.
109 161 // const toogle = $( '#learn-press-item-comments-toggle' );
162 +
110 163 // toogle.on( 'change', async function() {
111 164 // if ( ! toogle[ 0 ].checked ) {
112 165 // return;
113 166 // }
167 +
114 168 // const response = await wp.apiFetch( {
115 169 // path: 'lp/v1/courses/339/item-comments/50',
116 170 // } );
171 +
117 172 // $( '.learn-press-comments' ).html( response.comments );
118 173 // } );
119 174 };
120 175
121 -/***/ }),
176 +/***/ },
122 177
123 -/***/ "./assets/src/apps/js/frontend/single-curriculum/components/compatible.js":
178 +/***/ "./assets/src/apps/js/frontend/single-curriculum/components/compatible.js"
124 179 /*!********************************************************************************!*\
125 180 !*** ./assets/src/apps/js/frontend/single-curriculum/components/compatible.js ***!
126 181 \********************************************************************************/
127 -/***/ (function() {
182 +() {
128 183
129 184 /**
130 185 * Compatible with Page Builder.
131 186 *
@@ -130,45 +185,40 @@
130 185 * Compatible with Page Builder.
131 186 *
132 187 * @author nhamdv
133 188 */
189 +
134 190 LP.Hook.addAction('lp-compatible-builder', () => {
135 191 LP.Hook.removeAction('lp-compatible-builder');
136 -
137 192 if (typeof elementorFrontend !== 'undefined') {
138 193 [...document.querySelectorAll('#popup-content')][0].addEventListener('scroll', () => {
139 - Waypoint.refreshAll();
194 + //Waypoint.refreshAll();
140 195 window.dispatchEvent(new Event('resize'));
141 196 });
142 197 }
143 198
144 - if (typeof vc_js !== 'undefined' && typeof VcWaypoint !== 'undefined') {
145 - [...document.querySelectorAll('#popup-content')][0].addEventListener('scroll', () => {
146 - VcWaypoint.refreshAll();
147 - });
148 - }
199 + /*if ( typeof vc_js !== 'undefined' && typeof VcWaypoint !== 'undefined' ) {
200 + [ ...document.querySelectorAll( '#popup-content' ) ][ 0 ].addEventListener( 'scroll', () => {
201 + VcWaypoint.refreshAll();
202 + } );
203 + }*/
149 204 });
150 205 LP.Hook.addAction('lp-quiz-compatible-builder', () => {
151 206 LP.Hook.removeAction('lp-quiz-compatible-builder');
152 207 LP.Hook.doAction('lp-compatible-builder');
153 -
154 208 if (typeof elementorFrontend !== 'undefined') {
155 209 return window.elementorFrontend.init();
156 210 }
157 -
158 211 if (typeof vc_js !== 'undefined') {
159 212 if (typeof vc_round_charts !== 'undefined') {
160 213 vc_round_charts();
161 214 }
162 -
163 215 if (typeof vc_pieChart !== 'undefined') {
164 216 vc_pieChart();
165 217 }
166 -
167 218 if (typeof vc_line_charts !== 'undefined') {
168 219 vc_line_charts();
169 220 }
170 -
171 221 return window.vc_js();
172 222 }
173 223 });
174 224 LP.Hook.addAction('lp-question-compatible-builder', () => {
@@ -174,43 +224,38 @@
174 224 LP.Hook.addAction('lp-question-compatible-builder', () => {
175 225 LP.Hook.removeAction('lp-question-compatible-builder');
176 226 LP.Hook.removeAction('lp-quiz-compatible-builder');
177 227 LP.Hook.doAction('lp-compatible-builder');
178 -
179 228 if (typeof elementorFrontend !== 'undefined') {
180 229 return window.elementorFrontend.init();
181 230 }
182 -
183 231 if (typeof vc_js !== 'undefined') {
184 232 if (typeof vc_round_charts !== 'undefined') {
185 233 vc_round_charts();
186 234 }
187 -
188 235 if (typeof vc_pieChart !== 'undefined') {
189 236 vc_pieChart();
190 237 }
191 -
192 238 if (typeof vc_line_charts !== 'undefined') {
193 239 vc_line_charts();
194 240 }
195 -
196 241 return window.vc_js();
197 242 }
198 243 });
199 244
200 -/***/ }),
245 +/***/ },
201 246
202 -/***/ "./assets/src/apps/js/frontend/single-curriculum/components/items-progress.js":
247 +/***/ "./assets/src/apps/js/frontend/single-curriculum/components/items-progress.js"
203 248 /*!************************************************************************************!*\
204 249 !*** ./assets/src/apps/js/frontend/single-curriculum/components/items-progress.js ***!
205 250 \************************************************************************************/
206 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
251 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
207 252
208 253 "use strict";
209 254 __webpack_require__.r(__webpack_exports__);
210 255 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
211 -/* harmony export */ "getResponse": function() { return /* binding */ getResponse; },
212 -/* harmony export */ "itemsProgress": function() { return /* binding */ itemsProgress; }
256 +/* harmony export */ getResponse: () => (/* binding */ getResponse),
257 +/* harmony export */ itemsProgress: () => (/* binding */ itemsProgress)
213 258 /* harmony export */ });
214 259 /* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
215 260 /* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_url__WEBPACK_IMPORTED_MODULE_0__);
216 261 /* harmony import */ var _show_lp_overlay_complete_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../show-lp-overlay-complete-item */ "./assets/src/apps/js/frontend/show-lp-overlay-complete-item.js");
@@ -218,21 +263,21 @@
218 263
219 264
220 265 const itemsProgress = () => {
221 266 const elements = document.querySelectorAll('.popup-header__inner');
222 -
223 267 if (!elements.length) {
224 268 return;
225 269 }
226 -
227 270 if (document.querySelector('#learn-press-quiz-app div.quiz-result') !== null) {
228 271 return;
229 272 }
230 -
231 273 if (elements[0].querySelectorAll('form.form-button-finish-course').length !== 0) {
232 274 return;
233 275 }
234 -
276 + const user_id = lpGlobalSettings.user_id || 0;
277 + if (user_id === 0) {
278 + return;
279 + }
235 280 if ('IntersectionObserver' in window) {
236 281 const eleObserver = new IntersectionObserver((entries, observer) => {
237 282 entries.forEach(entry => {
238 283 if (entry.isIntersecting) {
@@ -256,23 +301,24 @@
256 301 const {
257 302 data
258 303 } = response;
259 304 ele.innerHTML += data;
305 + ele.classList.add('can-finish-course');
260 306 _show_lp_overlay_complete_item__WEBPACK_IMPORTED_MODULE_1__["default"].init();
261 307 };
262 308
263 -/***/ }),
309 +/***/ },
264 310
265 -/***/ "./assets/src/apps/js/frontend/single-curriculum/components/progress.js":
311 +/***/ "./assets/src/apps/js/frontend/single-curriculum/components/progress.js"
266 312 /*!******************************************************************************!*\
267 313 !*** ./assets/src/apps/js/frontend/single-curriculum/components/progress.js ***!
268 314 \******************************************************************************/
269 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
315 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
270 316
271 317 "use strict";
272 318 __webpack_require__.r(__webpack_exports__);
273 319 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
274 -/* harmony export */ "progressBar": function() { return /* binding */ progressBar; }
320 +/* harmony export */ progressBar: () => (/* binding */ progressBar)
275 321 /* harmony export */ });
276 322 const $ = jQuery;
277 323 const progressBar = () => {
278 324 $('.learn-press-progress').each(function () {
@@ -278,43 +324,38 @@
278 324 $('.learn-press-progress').each(function () {
279 325 const $progress = $(this);
280 326 const $active = $progress.find('.learn-press-progress__active');
281 327 const value = $active.data('value');
282 -
283 328 if (value === undefined) {
284 329 return;
285 330 }
286 -
287 331 $active.css('left', -(100 - parseInt(value)) + '%');
288 332 });
289 333 };
290 334
291 -/***/ }),
335 +/***/ },
292 336
293 -/***/ "./assets/src/apps/js/frontend/single-curriculum/components/search.js":
337 +/***/ "./assets/src/apps/js/frontend/single-curriculum/components/search.js"
294 338 /*!****************************************************************************!*\
295 339 !*** ./assets/src/apps/js/frontend/single-curriculum/components/search.js ***!
296 340 \****************************************************************************/
297 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
341 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
298 342
299 343 "use strict";
300 344 __webpack_require__.r(__webpack_exports__);
301 345 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
302 -/* harmony export */ "searchCourseContent": function() { return /* binding */ searchCourseContent; }
346 +/* harmony export */ searchCourseContent: () => (/* binding */ searchCourseContent)
303 347 /* harmony export */ });
304 348 const searchCourseContent = () => {
305 349 const popup = document.querySelector('#popup-course');
306 350 const list = document.querySelector('#learn-press-course-curriculum');
307 -
308 351 if (popup && list) {
309 352 const items = list.querySelector('.curriculum-sections');
310 353 const form = popup.querySelector('.search-course');
311 354 const search = popup.querySelector('.search-course input[type="text"]');
312 -
313 355 if (!search || !items || !form) {
314 356 return;
315 357 }
316 -
317 358 const sections = items.querySelectorAll('li.section');
318 359 const dataItems = items.querySelectorAll('li.course-item');
319 360 const dataSearch = [];
320 361 dataItems.forEach(item => {
@@ -324,18 +365,15 @@
324 365 id: itemID,
325 366 name: name ? name.textContent.toLowerCase() : ''
326 367 });
327 368 });
328 -
329 369 const submit = event => {
330 370 event.preventDefault();
331 371 const inputVal = search.value;
332 372 form.classList.add('searching');
333 -
334 373 if (!inputVal) {
335 374 form.classList.remove('searching');
336 375 }
337 -
338 376 const outputs = [];
339 377 dataSearch.forEach(i => {
340 378 if (!inputVal || i.name.match(inputVal.toLowerCase())) {
341 379 outputs.push(i.id);
@@ -355,9 +393,8 @@
355 393 if (outputs.includes(a.dataset.id)) {
356 394 isTrue.push(a.dataset.id);
357 395 }
358 396 });
359 -
360 397 if (isTrue.length === 0) {
361 398 section.classList.add('hide-if-js');
362 399 } else {
363 400 section.classList.remove('hide-if-js');
@@ -363,11 +400,9 @@
363 400 section.classList.remove('hide-if-js');
364 401 }
365 402 });
366 403 };
367 -
368 404 const clear = form.querySelector('.clear');
369 -
370 405 if (clear) {
371 406 clear.addEventListener('click', e => {
372 407 e.preventDefault();
373 408 search.value = '';
@@ -373,26 +408,25 @@
373 408 search.value = '';
374 409 submit(e);
375 410 });
376 411 }
377 -
378 412 form.addEventListener('submit', submit);
379 413 search.addEventListener('keyup', submit);
380 414 }
381 415 };
382 416
383 -/***/ }),
417 +/***/ },
384 418
385 -/***/ "./assets/src/apps/js/frontend/single-curriculum/components/sidebar.js":
419 +/***/ "./assets/src/apps/js/frontend/single-curriculum/components/sidebar.js"
386 420 /*!*****************************************************************************!*\
387 421 !*** ./assets/src/apps/js/frontend/single-curriculum/components/sidebar.js ***!
388 422 \*****************************************************************************/
389 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
423 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
390 424
391 425 "use strict";
392 426 __webpack_require__.r(__webpack_exports__);
393 427 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
394 -/* harmony export */ "Sidebar": function() { return /* binding */ Sidebar; }
428 +/* harmony export */ Sidebar: () => (/* binding */ Sidebar)
395 429 /* harmony export */ });
396 430 const $ = jQuery;
397 431 const {
398 432 throttle
@@ -398,22 +432,22 @@
398 432 throttle
399 433 } = lodash;
400 434 const Sidebar = () => {
401 435 // Tungnx - Show/hide sidebar curriculumn
402 - const elSidebarToggle = document.querySelector('#sidebar-toggle'); // For style of theme
436 + const elSidebarToggle = document.querySelector('#sidebar-toggle');
403 437
438 + // For style of theme
404 439 const toggleSidebar = toggle => {
405 440 $('body').removeClass('lp-sidebar-toggle__open');
406 441 $('body').removeClass('lp-sidebar-toggle__close');
407 -
408 442 if (toggle) {
409 443 $('body').addClass('lp-sidebar-toggle__close');
410 444 } else {
411 445 $('body').addClass('lp-sidebar-toggle__open');
412 446 }
413 - }; // For lp and theme
447 + };
414 448
415 -
449 + // For lp and theme
416 450 if (elSidebarToggle) {
417 451 if ($(window).innerWidth() <= 768) {
418 452 elSidebarToggle.setAttribute('checked', 'checked');
419 453 } else if (LP.Cookies.get('sidebar-toggle')) {
@@ -420,67 +454,73 @@
420 454 elSidebarToggle.setAttribute('checked', 'checked');
421 455 } else {
422 456 elSidebarToggle.removeAttribute('checked');
423 457 }
458 + }
459 + // End editor by tungnx
424 460
425 - document.querySelector('#popup-course').addEventListener('click', e => {
426 - if (e.target.id === 'sidebar-toggle') {
427 - LP.Cookies.set('sidebar-toggle', e.target.checked ? true : false);
428 - toggleSidebar(LP.Cookies.get('sidebar-toggle'));
429 - }
430 - });
431 - } // End editor by tungnx
461 + // Code for old curriculum
462 + /*const $curriculum = $( '#learn-press-course-curriculum' );
463 + $curriculum.find( '.section-desc' ).each( ( i, el ) => {
464 + const a = $( '<span class="show-desc"></span>' ).on( 'click', () => {
465 + b.toggleClass( 'c' );
466 + } );
467 + const b = $( el ).siblings( '.section-title' ).append( a );
468 + } );*/
432 469
470 + // Code for old curriculum
471 + /*$( '.section' ).each( function() {
472 + const $section = $( this ),
473 + $toggle = $section.find( '.section-left' );
474 + $toggle.on( 'click', function() {
475 + const isClose = $section.toggleClass( 'closed' ).hasClass( 'closed' );
476 + const sections = LP.Cookies.get( 'closed-section-' + lpGlobalSettings.post_id ) || [];
477 + const sectionId = parseInt( $section.data( 'section-id' ) );
478 + const at = sections.findIndex( ( id ) => {
479 + return id == sectionId;
480 + } );
481 + if ( isClose ) {
482 + sections.push( parseInt( $section.data( 'section-id' ) ) );
483 + } else {
484 + sections.splice( at, 1 );
485 + }
486 + LP.Cookies.remove( 'closed-section-(.*)' );
487 + LP.Cookies.set( 'closed-section-' + lpGlobalSettings.post_id, [ ...new Set( sections ) ] );
488 + } );
489 + } );*/
433 490
434 - const $curriculum = $('#learn-press-course-curriculum');
435 - $curriculum.find('.section-desc').each((i, el) => {
436 - const a = $('<span class="show-desc"></span>').on('click', () => {
437 - b.toggleClass('c');
438 - });
439 - const b = $(el).siblings('.section-title').append(a);
491 + document.addEventListener('click', e => {
492 + if (e.target.id === 'sidebar-toggle') {
493 + LP.Cookies.set('sidebar-toggle', e.target.checked ? true : false);
494 + toggleSidebar(LP.Cookies.get('sidebar-toggle'));
495 + }
440 496 });
441 - $('.section').each(function () {
442 - const $section = $(this),
443 - $toggle = $section.find('.section-left');
444 - $toggle.on('click', function () {
445 - const isClose = $section.toggleClass('closed').hasClass('closed');
446 - const sections = LP.Cookies.get('closed-section-' + lpGlobalSettings.post_id) || [];
447 - const sectionId = parseInt($section.data('section-id'));
448 - const at = sections.findIndex(id => {
449 - return id == sectionId;
450 - });
451 -
452 - if (isClose) {
453 - sections.push(parseInt($section.data('section-id')));
454 - } else {
455 - sections.splice(at, 1);
456 - }
457 -
458 - LP.Cookies.remove('closed-section-(.*)');
459 - LP.Cookies.set('closed-section-' + lpGlobalSettings.post_id, [...new Set(sections)]);
460 - });
461 - });
462 497 };
463 498
464 -/***/ }),
499 +/***/ },
465 500
466 -/***/ "./assets/src/apps/js/frontend/single-curriculum/index.js":
501 +/***/ "./assets/src/apps/js/frontend/single-curriculum/index.js"
467 502 /*!****************************************************************!*\
468 503 !*** ./assets/src/apps/js/frontend/single-curriculum/index.js ***!
469 504 \****************************************************************/
470 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
505 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
471 506
472 507 "use strict";
473 508 __webpack_require__.r(__webpack_exports__);
474 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
475 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
476 -/* harmony import */ var _components_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/search */ "./assets/src/apps/js/frontend/single-curriculum/components/search.js");
477 -/* harmony import */ var _components_sidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/sidebar */ "./assets/src/apps/js/frontend/single-curriculum/components/sidebar.js");
478 -/* harmony import */ var _components_progress__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/progress */ "./assets/src/apps/js/frontend/single-curriculum/components/progress.js");
479 -/* harmony import */ var _components_comment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/comment */ "./assets/src/apps/js/frontend/single-curriculum/components/comment.js");
480 -/* harmony import */ var _components_items_progress__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/items-progress */ "./assets/src/apps/js/frontend/single-curriculum/components/items-progress.js");
481 -/* harmony import */ var _components_compatible__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/compatible */ "./assets/src/apps/js/frontend/single-curriculum/components/compatible.js");
482 -/* harmony import */ var _components_compatible__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_components_compatible__WEBPACK_IMPORTED_MODULE_6__);
509 +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
510 +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
511 +/* harmony export */ });
512 +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
513 +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
514 +/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
515 +/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
516 +/* harmony import */ var _components_search__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/search */ "./assets/src/apps/js/frontend/single-curriculum/components/search.js");
517 +/* harmony import */ var _components_sidebar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/sidebar */ "./assets/src/apps/js/frontend/single-curriculum/components/sidebar.js");
518 +/* harmony import */ var _components_progress__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/progress */ "./assets/src/apps/js/frontend/single-curriculum/components/progress.js");
519 +/* harmony import */ var _components_comment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/comment */ "./assets/src/apps/js/frontend/single-curriculum/components/comment.js");
520 +/* harmony import */ var _components_items_progress__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/items-progress */ "./assets/src/apps/js/frontend/single-curriculum/components/items-progress.js");
521 +/* harmony import */ var _components_compatible__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/compatible */ "./assets/src/apps/js/frontend/single-curriculum/components/compatible.js");
522 +/* harmony import */ var _components_compatible__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_components_compatible__WEBPACK_IMPORTED_MODULE_7__);
483 523
484 524 const $ = jQuery;
485 525
486 526
@@ -488,13 +528,11 @@
488 528
489 529
490 530
491 531
492 -
493 -class SingleCurriculums extends _wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Component {
532 +class SingleCurriculums extends _wordpress_element__WEBPACK_IMPORTED_MODULE_1__.Component {
494 533 checkCourseDurationExpire() {
495 534 const elCourseItemIsBlockeds = document.getElementsByName('lp-course-timestamp-remaining');
496 -
497 535 if (elCourseItemIsBlockeds.length) {
498 536 const elCourseItemIsBlocked = elCourseItemIsBlockeds[0];
499 537 const timeDuration = elCourseItemIsBlocked.value; // value is second
500 538
@@ -505,556 +543,642 @@
505 543 }, timeDuration * 1000);
506 544 }
507 545 }
508 546 }
509 -
510 547 render() {
511 - return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null);
548 + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null);
512 549 }
513 -
514 550 }
515 -
516 -/* harmony default export */ __webpack_exports__["default"] = (SingleCurriculums);
551 +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SingleCurriculums);
517 552 document.addEventListener('DOMContentLoaded', () => {
518 553 LP.Hook.doAction('lp-compatible-builder');
519 - (0,_components_search__WEBPACK_IMPORTED_MODULE_1__.searchCourseContent)();
520 - (0,_components_sidebar__WEBPACK_IMPORTED_MODULE_2__.Sidebar)();
521 - (0,_components_progress__WEBPACK_IMPORTED_MODULE_3__.progressBar)(); //commentForm();
554 + (0,_components_search__WEBPACK_IMPORTED_MODULE_2__.searchCourseContent)();
555 + (0,_components_sidebar__WEBPACK_IMPORTED_MODULE_3__.Sidebar)();
556 + (0,_components_progress__WEBPACK_IMPORTED_MODULE_4__.progressBar)();
557 + //commentForm();
558 + (0,_components_items_progress__WEBPACK_IMPORTED_MODULE_6__.itemsProgress)();
522 559
523 - (0,_components_items_progress__WEBPACK_IMPORTED_MODULE_5__.itemsProgress)(); // Check duration expire of course
524 -
560 + // Check duration expire of course
525 561 const singleCurriculums = new SingleCurriculums();
526 562 singleCurriculums.checkCourseDurationExpire();
527 563 });
528 564
529 -/***/ }),
565 +/***/ },
530 566
531 -/***/ "./assets/src/apps/js/frontend/single-curriculum/scrolltoitem.js":
532 -/*!***********************************************************************!*\
533 - !*** ./assets/src/apps/js/frontend/single-curriculum/scrolltoitem.js ***!
534 - \***********************************************************************/
535 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
567 +/***/ "./assets/src/apps/js/utils/lp-modal-overlay.js"
568 +/*!******************************************************!*\
569 + !*** ./assets/src/apps/js/utils/lp-modal-overlay.js ***!
570 + \******************************************************/
571 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
536 572
537 573 "use strict";
538 574 __webpack_require__.r(__webpack_exports__);
539 -/* harmony import */ var _utils_lp_modal_overlay__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/lp-modal-overlay */ "./assets/src/apps/js/utils/lp-modal-overlay.js");
540 -
575 +/* harmony export */ __webpack_require__.d(__webpack_exports__, {
576 +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
577 +/* harmony export */ });
541 578 const $ = jQuery;
542 -const scrollToItemCurrent = {
579 +let elLPOverlay = null;
580 +const lpModalOverlay = {
581 + elLPOverlay: null,
582 + elMainContent: null,
583 + elTitle: null,
584 + elBtnYes: null,
585 + elBtnNo: null,
586 + elFooter: null,
587 + elCalledModal: null,
588 + callBackYes: null,
589 + instance: null,
543 590 init() {
544 - this.scrollToItemViewing = function () {
545 - const elItemViewing = $('.viewing-course-item');
546 -
547 - if (elItemViewing.length) {
548 - const elCourseCurriculumn = $('#learn-press-course-curriculum');
549 - const heightCourseItemContentHeader = $('#popup-sidebar').outerHeight();
550 - const heightSectionTitle = $('.section-title').outerHeight();
551 - const heightSectionHeader = $('.section-header').outerHeight();
552 - const regex = new RegExp('^viewing-course-item-([0-9].*)');
553 - const classList = elItemViewing.attr('class');
554 - const classArr = classList.split(/\s+/);
555 - let idItem = 0;
556 - $.each(classArr, function (i, className) {
557 - const compare = regex.exec(className);
558 -
559 - if (compare) {
560 - idItem = compare[1];
561 - return false;
562 - }
563 - });
564 -
565 - if (0 === idItem) {
566 - return;
567 - }
568 -
569 - const elItemCurrent = $('.course-item-' + idItem);
570 - const offSetTop = elItemCurrent.offset().top;
571 - const offset = elItemCurrent.offset().top - elCourseCurriculumn.offset().top + elCourseCurriculumn.scrollTop();
572 - elCourseCurriculumn.animate({
573 - scrollTop: LP.Hook.applyFilters('scroll-item-current', offset - heightSectionHeader)
574 - }, 800);
591 + if (this.instance) {
592 + return true;
593 + }
594 + this.elLPOverlay = $('.lp-overlay');
595 + if (!this.elLPOverlay.length) {
596 + return false;
597 + }
598 + elLPOverlay = this.elLPOverlay;
599 + this.elMainContent = elLPOverlay.find('.main-content');
600 + this.elTitle = elLPOverlay.find('.modal-title');
601 + this.elBtnYes = elLPOverlay.find('.btn-yes');
602 + this.elBtnNo = elLPOverlay.find('.btn-no');
603 + this.elFooter = elLPOverlay.find('.lp-modal-footer');
604 + $(document).on('click', '.close, .btn-no', function () {
605 + elLPOverlay.hide();
606 + });
607 + $(document).on('click', '.btn-yes', function (e) {
608 + e.preventDefault();
609 + e.stopPropagation();
610 + if ('function' === typeof lpModalOverlay.callBackYes) {
611 + lpModalOverlay.callBackYes(e);
575 612 }
576 - };
577 -
578 - this.scrollToItemViewing();
613 + });
614 + this.instance = this;
615 + return true;
616 + },
617 + setElCalledModal(elCalledModal) {
618 + this.elCalledModal = elCalledModal;
619 + },
620 + setContentModal(content, event) {
621 + this.elMainContent.html(content);
622 + if ('function' === typeof event) {
623 + event();
624 + }
625 + },
626 + setTitleModal(content) {
627 + this.elTitle.html(content);
579 628 }
580 -
581 629 };
582 -/* harmony default export */ __webpack_exports__["default"] = (scrollToItemCurrent);
630 +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (lpModalOverlay);
583 631
584 -/***/ }),
632 +/***/ },
585 633
586 -/***/ "./assets/src/apps/js/frontend/single-curriculum/skeleton.js":
587 -/*!*******************************************************************!*\
588 - !*** ./assets/src/apps/js/frontend/single-curriculum/skeleton.js ***!
589 - \*******************************************************************/
590 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
634 +/***/ "./assets/src/js/utils.js"
635 +/*!********************************!*\
636 + !*** ./assets/src/js/utils.js ***!
637 + \********************************/
638 +(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
591 639
592 640 "use strict";
593 641 __webpack_require__.r(__webpack_exports__);
594 642 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
595 -/* harmony export */ "default": function() { return /* binding */ courseCurriculumSkeleton; }
643 +/* harmony export */ debounce: () => (/* binding */ debounce),
644 +/* harmony export */ eventHandlers: () => (/* binding */ eventHandlers),
645 +/* harmony export */ fullScreenView: () => (/* binding */ fullScreenView),
646 +/* harmony export */ getDataOfForm: () => (/* binding */ getDataOfForm),
647 +/* harmony export */ getFieldKeysOfForm: () => (/* binding */ getFieldKeysOfForm),
648 +/* harmony export */ listenElementCreated: () => (/* binding */ listenElementCreated),
649 +/* harmony export */ listenElementViewed: () => (/* binding */ listenElementViewed),
650 +/* harmony export */ lpAddQueryArgs: () => (/* binding */ lpAddQueryArgs),
651 +/* harmony export */ lpAjaxParseJsonOld: () => (/* binding */ lpAjaxParseJsonOld),
652 +/* harmony export */ lpClassName: () => (/* binding */ lpClassName),
653 +/* harmony export */ lpFetchAPI: () => (/* binding */ lpFetchAPI),
654 +/* harmony export */ lpGetCurrentURLNoParam: () => (/* binding */ lpGetCurrentURLNoParam),
655 +/* harmony export */ lpOnElementReady: () => (/* binding */ lpOnElementReady),
656 +/* harmony export */ lpSetLoadingEl: () => (/* binding */ lpSetLoadingEl),
657 +/* harmony export */ lpShowHideEl: () => (/* binding */ lpShowHideEl),
658 +/* harmony export */ mergeDataWithDatForm: () => (/* binding */ mergeDataWithDatForm),
659 +/* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse),
660 +/* harmony export */ toggleEnable: () => (/* binding */ toggleEnable)
596 661 /* harmony export */ });
597 -/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
598 -/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_url__WEBPACK_IMPORTED_MODULE_0__);
599 -/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
600 -/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1__);
601 -/* harmony import */ var _scrolltoitem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scrolltoitem */ "./assets/src/apps/js/frontend/single-curriculum/scrolltoitem.js");
602 -/* harmony import */ var _components_search__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/search */ "./assets/src/apps/js/frontend/single-curriculum/components/search.js");
603 -// Rest API load content in Tab Curriculum - Nhamdv.
604 -
605 -
606 -
607 -
608 -function courseCurriculumSkeleton() {
609 - let courseID = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
610 -
611 - const Sekeleton = () => {
612 - const elementCurriculum = document.querySelector('.learnpress-course-curriculum');
613 -
614 - if (!elementCurriculum) {
615 - return;
662 +/**
663 + * Utils functions
664 + *
665 + * @param url
666 + * @param data
667 + * @param functions
668 + * @since 4.2.5.1
669 + * @version 1.0.7
670 + */
671 +const lpClassName = {
672 + hidden: 'lp-hidden',
673 + loading: 'loading',
674 + elCollapse: 'lp-collapse',
675 + elSectionToggle: '.lp-section-toggle',
676 + elTriggerToggle: '.lp-trigger-toggle',
677 + elBtnFullScreen: '.lp-btn-full-screen-view',
678 + elFullScreen: 'lp-full-screen-view',
679 + elBtnFullScreenClose: 'lp-full-screen-view__close'
680 +};
681 +const lpFetchAPI = (url, data = {}, functions = {}) => {
682 + if ('function' === typeof functions.before) {
683 + functions.before();
684 + }
685 + fetch(url, {
686 + method: 'GET',
687 + ...data
688 + }).then(response => response.json()).then(response => {
689 + if ('function' === typeof functions.success) {
690 + functions.success(response);
616 691 }
692 + }).catch(err => {
693 + if ('function' === typeof functions.error) {
694 + functions.error(err);
695 + }
696 + }).finally(() => {
697 + if ('function' === typeof functions.completed) {
698 + functions.completed();
699 + }
700 + });
701 +};
617 702
618 - getResponse(elementCurriculum);
619 - };
703 +/**
704 + * Get current URL without params.
705 + *
706 + * @since 4.2.5.1
707 + */
708 +const lpGetCurrentURLNoParam = () => {
709 + let currentUrl = window.location.href;
710 + const hasParams = currentUrl.includes('?');
711 + if (hasParams) {
712 + currentUrl = currentUrl.split('?')[0];
713 + }
714 + return currentUrl;
715 +};
716 +const lpAddQueryArgs = (endpoint, args) => {
717 + const url = new URL(endpoint);
718 + Object.keys(args).forEach(arg => {
719 + url.searchParams.set(arg, args[arg]);
720 + });
721 + return url;
722 +};
620 723
621 - const getResponse = async ele => {
622 - const skeleton = ele.querySelector('.lp-skeleton-animation');
623 - const itemID = ele.dataset.id;
624 - const sectionID = ele.dataset.section;
625 -
626 - try {
627 - const page = 1;
628 - const response = await _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1___default()({
629 - path: (0,_wordpress_url__WEBPACK_IMPORTED_MODULE_0__.addQueryArgs)('lp/v1/lazy-load/course-curriculum', {
630 - courseId: courseID || lpGlobalSettings.post_id || '',
631 - page,
632 - sectionID: sectionID || ''
633 - }),
634 - method: 'GET'
635 - });
636 - const {
637 - data,
638 - status,
639 - message
640 - } = response;
641 - let section_ids = data.section_ids;
642 -
643 - if (status === 'error') {
644 - throw new Error(message || 'Error');
724 +/**
725 + * Listen element viewed.
726 + *
727 + * @param el
728 + * @param callback
729 + * @since 4.2.5.8
730 + */
731 +const listenElementViewed = (el, callback) => {
732 + const observerSeeItem = new IntersectionObserver(function (entries) {
733 + for (const entry of entries) {
734 + if (entry.isIntersecting) {
735 + callback(entry);
645 736 }
737 + }
738 + });
739 + observerSeeItem.observe(el);
740 +};
646 741
647 - let returnData = data.content;
648 -
649 - if (undefined === returnData) {
650 - // For old Eduma <= 4.6.0
651 - returnData = data;
652 - section_ids = response.section_ids;
742 +/**
743 + * Listen element created.
744 + *
745 + * @param callback
746 + * @since 4.2.5.8
747 + */
748 +const listenElementCreated = callback => {
749 + const observerCreateItem = new MutationObserver(function (mutations) {
750 + mutations.forEach(function (mutation) {
751 + if (mutation.addedNodes) {
752 + mutation.addedNodes.forEach(function (node) {
753 + if (node.nodeType === 1) {
754 + callback(node);
755 + }
756 + });
653 757 }
758 + });
759 + });
760 + observerCreateItem.observe(document, {
761 + childList: true,
762 + subtree: true
763 + });
764 + // End.
765 +};
654 766
655 - if (sectionID) {
656 - if (section_ids && !section_ids.includes(sectionID)) {
657 - const response2 = await getResponsive('', page + 1, sectionID);
658 -
659 - if (response2) {
660 - const {
661 - data2,
662 - pages2,
663 - page2
664 - } = response2;
665 - await parseContentItems({
666 - ele,
667 - returnData,
668 - sectionID,
669 - itemID,
670 - data2,
671 - pages2,
672 - page2
673 - });
674 - }
675 - } else {
676 - await parseContentItems({
677 - ele,
678 - returnData,
679 - sectionID,
680 - itemID
681 - });
682 - }
683 - } else {
684 - returnData && ele.insertAdjacentHTML('beforeend', returnData);
685 - }
686 - } catch (error) {
687 - ele.insertAdjacentHTML('beforeend', `<div class="lp-ajax-message error" style="display:block">${error.message || 'Error: Query lp/v1/lazy-load/course-curriculum'}</div>`);
767 +/**
768 + * Listen element created.
769 + *
770 + * @param selector
771 + * @param callback
772 + * @since 4.2.7.1
773 + */
774 +const lpOnElementReady = (selector, callback) => {
775 + const element = document.querySelector(selector);
776 + if (element) {
777 + callback(element);
778 + return;
779 + }
780 + const observer = new MutationObserver((mutations, obs) => {
781 + const element = document.querySelector(selector);
782 + if (element) {
783 + obs.disconnect();
784 + callback(element);
688 785 }
786 + });
787 + observer.observe(document.documentElement, {
788 + childList: true,
789 + subtree: true
790 + });
791 +};
689 792
690 - skeleton && skeleton.remove();
691 - (0,_components_search__WEBPACK_IMPORTED_MODULE_3__.searchCourseContent)();
692 - };
693 -
694 - const parseContentItems = async _ref => {
695 - let {
696 - ele,
697 - returnData,
698 - sectionID,
699 - itemID,
700 - data2,
701 - pages2,
702 - page2
703 - } = _ref;
704 - const parser = new DOMParser();
705 - const doc = parser.parseFromString(returnData, 'text/html');
706 -
707 - if (data2) {
708 - const sections = doc.querySelector('.curriculum-sections');
709 - const loadMoreBtn = doc.querySelector('.curriculum-more__button');
710 -
711 - if (loadMoreBtn) {
712 - if (pages2 <= page2) {
713 - loadMoreBtn.remove();
714 - } else {
715 - loadMoreBtn.dataset.page = page2;
716 - }
717 - }
718 -
719 - sections.insertAdjacentHTML('beforeend', data2);
793 +// Parse JSON from string with content include LP_AJAX_START.
794 +const lpAjaxParseJsonOld = data => {
795 + if (typeof data !== 'string') {
796 + return data;
797 + }
798 + const m = String.raw({
799 + raw: data
800 + }).match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/s);
801 + try {
802 + if (m) {
803 + data = JSON.parse(m[1].replace(/(?:\r\n|\r|\n)/g, ''));
804 + } else {
805 + data = JSON.parse(data);
720 806 }
807 + } catch (e) {
808 + data = {};
809 + }
810 + return data;
811 +};
721 812
722 - const section = doc.querySelector(`[data-section-id="${sectionID}"]`);
813 +// status 0: hide, 1: show
814 +const lpShowHideEl = (el, status = 0) => {
815 + if (!el) {
816 + return;
817 + }
818 + if (!status) {
819 + el.classList.add(lpClassName.hidden);
820 + } else {
821 + el.classList.remove(lpClassName.hidden);
822 + }
823 +};
723 824
724 - if (section) {
725 - const items = section.querySelectorAll('.course-item');
726 - const item_ids = [...items].map(item => item.dataset.id);
727 - const sectionContent = section.querySelector('.section-content');
728 - const itemLoadMore = section.querySelector('.section-item__loadmore');
825 +// status 0: hide, 1: show
826 +const lpSetLoadingEl = (el, status) => {
827 + if (!el) {
828 + return;
829 + }
830 + if (!status) {
831 + el.classList.remove(lpClassName.loading);
832 + } else {
833 + el.classList.add(lpClassName.loading);
834 + }
835 +};
729 836
730 - if (itemID && !item_ids.includes(itemID)) {
731 - const responseItem = await getResponsiveItem('', 2, sectionID, itemID);
732 - const {
733 - data3,
734 - pages3,
735 - paged3,
736 - page
737 - } = responseItem;
837 +// Toggle collapse section
838 +const toggleCollapse = (e, target, elTriggerClassName = '', elsExclude = [], callback) => {
839 + if (!elTriggerClassName) {
840 + elTriggerClassName = lpClassName.elTriggerToggle;
841 + }
738 842
739 - if (pages3 <= paged3 || pages3 <= page) {
740 - itemLoadMore.remove();
741 - } else {
742 - itemLoadMore.dataset.page = page;
743 - }
744 -
745 - if (data3 && sectionContent) {
746 - sectionContent.insertAdjacentHTML('beforeend', data3);
747 - }
843 + // Exclude elements, which should not trigger the collapse toggle
844 + if (elsExclude && elsExclude.length > 0) {
845 + for (const elExclude of elsExclude) {
846 + if (target.closest(elExclude)) {
847 + return;
748 848 }
749 849 }
850 + }
851 + const elTrigger = target.closest(elTriggerClassName);
852 + if (!elTrigger) {
853 + return;
854 + }
750 855
751 - ele.insertAdjacentHTML('beforeend', doc.body.innerHTML);
752 - _scrolltoitem__WEBPACK_IMPORTED_MODULE_2__["default"].init();
753 - };
856 + //console.log( 'elTrigger', elTrigger );
754 857
755 - const getResponsiveItem = async (returnData, paged, sectionID, itemID) => {
756 - const response = await _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1___default()({
757 - path: (0,_wordpress_url__WEBPACK_IMPORTED_MODULE_0__.addQueryArgs)('lp/v1/lazy-load/course-curriculum-items', {
758 - sectionId: sectionID || '',
759 - page: paged
760 - }),
761 - method: 'GET'
762 - });
763 - const {
764 - data,
765 - status,
766 - pages,
767 - message
768 - } = response;
769 - const {
770 - page
771 - } = data;
772 - let item_ids;
858 + const elSectionToggle = elTrigger.closest(`${lpClassName.elSectionToggle}`);
859 + if (!elSectionToggle) {
860 + return;
861 + }
862 + elSectionToggle.classList.toggle(`${lpClassName.elCollapse}`);
863 + if ('function' === typeof callback) {
864 + callback(elSectionToggle);
865 + }
866 +};
773 867
774 - if (status === 'success') {
775 - let dataTmp = data.content;
776 - item_ids = data.item_ids;
777 -
778 - if (undefined === dataTmp) {
779 - // For old Eduma <= 4.6.0
780 - dataTmp = data;
781 - item_ids = response.item_ids;
782 - }
783 -
784 - returnData += dataTmp;
785 -
786 - if (sectionID && item_ids && itemID && !item_ids.includes(itemID)) {
787 - return getResponsiveItem(returnData, paged + 1, sectionID, itemID);
788 - }
868 +// Get data of form
869 +const getDataOfForm = form => {
870 + const dataSend = {};
871 + const formData = new FormData(form);
872 + for (const pair of formData.entries()) {
873 + const key = pair[0];
874 + const value = formData.getAll(key);
875 + if (!dataSend.hasOwnProperty(key)) {
876 + // Convert value array to string.
877 + dataSend[key] = value.join(',');
789 878 }
879 + }
880 + return dataSend;
881 +};
790 882
791 - return {
792 - data3: returnData,
793 - pages3: pages || data.pages,
794 - status3: status,
795 - message3: message,
796 - page: page || 0
797 - };
798 - };
799 -
800 - const getResponsive = async (returnData, page, sectionID) => {
801 - const response = await _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1___default()({
802 - path: (0,_wordpress_url__WEBPACK_IMPORTED_MODULE_0__.addQueryArgs)('lp/v1/lazy-load/course-curriculum', {
803 - courseId: courseID || lpGlobalSettings.post_id || '',
804 - page,
805 - sectionID: sectionID || '',
806 - loadMore: true
807 - }),
808 - method: 'GET'
809 - });
810 - const {
811 - data,
812 - status,
813 - message
814 - } = response;
815 - let returnDataTmp = data.content;
816 - let section_ids = data.section_ids;
817 - let pages = data.pages;
818 -
819 - if (undefined === returnDataTmp) {
820 - // For old Eduma <= 4.6.0
821 - returnDataTmp = data;
822 - section_ids = response.section_ids;
823 - pages = response.pages;
883 +// Get field keys of form
884 +const getFieldKeysOfForm = form => {
885 + const keys = [];
886 + const elements = form.elements;
887 + for (let i = 0; i < elements.length; i++) {
888 + const name = elements[i].name;
889 + if (name && !keys.includes(name)) {
890 + keys.push(name);
824 891 }
892 + }
893 + return keys;
894 +};
825 895
826 - if (status === 'success') {
827 - returnData += returnDataTmp;
828 -
829 - if (sectionID && section_ids && section_ids.length > 0 && !section_ids.includes(sectionID)) {
830 - return getResponsive(returnData, page + 1, sectionID);
831 - }
896 +// Merge data handle with data form.
897 +const mergeDataWithDatForm = (elForm, dataHandle) => {
898 + const dataForm = getDataOfForm(elForm);
899 + const keys = getFieldKeysOfForm(elForm);
900 + keys.forEach(key => {
901 + if (!dataForm.hasOwnProperty(key)) {
902 + delete dataHandle[key];
903 + } else if (dataForm[key][0] === '') {
904 + delete dataForm[key];
905 + delete dataHandle[key];
832 906 }
907 + });
908 + dataHandle = {
909 + ...dataHandle,
910 + ...dataForm
911 + };
912 + return dataHandle;
913 +};
833 914
834 - return {
835 - data2: returnData,
836 - pages2: pages || data.pages,
837 - page2: page,
838 - status2: status,
839 - message2: message
915 +/**
916 + * Event trigger
917 + * For each list of event handlers, listen event on document.
918 + *
919 + * eventName: 'click', 'change', ...
920 + * eventHandlers = [ { selector: '.lp-button', callBack: function(){}, class: object } ]
921 + *
922 + * @param eventName
923 + * @param eventHandlers
924 + */
925 +const eventHandlers = (eventName, eventHandlers) => {
926 + document.addEventListener(eventName, e => {
927 + const target = e.target;
928 + let args = {
929 + e,
930 + target
840 931 };
841 - };
932 + eventHandlers.forEach(eventHandler => {
933 + args = {
934 + ...args,
935 + ...eventHandler
936 + };
842 937
843 - Sekeleton();
844 - document.addEventListener('click', e => {
845 - const sectionBtns = document.querySelectorAll('.section-item__loadmore');
846 - [...sectionBtns].map(async sectionBtn => {
847 - if (sectionBtn.contains(e.target)) {
848 - const sectionItem = sectionBtn.parentNode;
849 - const sectionId = sectionItem.getAttribute('data-section-id');
850 - const sectionContent = sectionItem.querySelector('.section-content');
851 - const paged = parseInt(sectionBtn.dataset.page);
852 - sectionBtn.classList.add('loading');
938 + //console.log( args );
853 939
854 - try {
855 - const response = await getResponsiveItem('', paged + 1, sectionId, '');
856 - const {
857 - data3,
858 - pages3,
859 - status3,
860 - message3
861 - } = response;
862 -
863 - if (status3 === 'error') {
864 - throw new Error(message3 || 'Error');
865 - }
866 -
867 - if (pages3 <= paged + 1) {
868 - sectionBtn.remove();
869 - } else {
870 - sectionBtn.dataset.page = paged + 1;
871 - }
872 -
873 - sectionContent.insertAdjacentHTML('beforeend', data3);
874 - } catch (e) {
875 - sectionContent.insertAdjacentHTML('beforeend', `<div class="lp-ajax-message error" style="display:block">${e.message || 'Error: Query lp/v1/lazy-load/course-curriculum'}</div>`);
940 + // Check condition before call back
941 + if (eventHandler.conditionBeforeCallBack) {
942 + if (eventHandler.conditionBeforeCallBack(args) !== true) {
943 + return;
876 944 }
877 -
878 - sectionBtn.classList.remove('loading');
879 - (0,_components_search__WEBPACK_IMPORTED_MODULE_3__.searchCourseContent)();
880 945 }
881 - }); // Load more Sections
882 946
883 - const moreSections = document.querySelectorAll('.curriculum-more__button');
884 - [...moreSections].map(async moreSection => {
885 - if (moreSection.contains(e.target)) {
886 - const paged = parseInt(moreSection.dataset.page);
887 - const sections = moreSection.parentNode.parentNode.querySelector('.curriculum-sections');
888 -
889 - if (paged && sections) {
890 - moreSection.classList.add('loading');
891 -
892 - try {
893 - const response2 = await getResponsive('', paged + 1, '');
894 - const {
895 - data2,
896 - pages2,
897 - status2,
898 - message2
899 - } = response2;
900 -
901 - if (status2 === 'error') {
902 - throw new Error(message2 || 'Error');
903 - }
904 -
905 - if (pages2 <= paged + 1) {
906 - moreSection.remove();
907 - } else {
908 - moreSection.dataset.page = paged + 1;
909 - }
910 -
911 - sections.insertAdjacentHTML('beforeend', data2);
912 - } catch (e) {
913 - sections.insertAdjacentHTML('beforeend', `<div class="lp-ajax-message error" style="display:block">${e.message || 'Error: Query lp/v1/lazy-load/course-curriculum'}</div>`);
914 - }
915 -
916 - moreSection.classList.remove('loading');
917 - (0,_components_search__WEBPACK_IMPORTED_MODULE_3__.searchCourseContent)();
947 + // Special check for keydown event with checkIsEventEnter = true
948 + if (eventName === 'keydown' && eventHandler.checkIsEventEnter) {
949 + if (e.key !== 'Enter') {
950 + return;
918 951 }
919 952 }
920 - }); // Show/Hide accordion
921 -
922 - if (document.querySelector('.learnpress-course-curriculum')) {
923 - const sections = document.querySelectorAll('.section');
924 - [...sections].map(section => {
925 - if (section.contains(e.target)) {
926 - const toggle = section.querySelector('.section-left');
927 - toggle.contains(e.target) && section.classList.toggle('closed');
953 + if (target.closest(eventHandler.selector)) {
954 + if (eventHandler.class) {
955 + // Call method of class, function callBack will understand exactly {this} is class object.
956 + eventHandler.class[eventHandler.callBack](args);
957 + } else {
958 + // For send args is objected, {this} is eventHandler object, not class object.
959 + eventHandler.callBack(args);
928 960 }
929 - });
930 - }
961 + }
962 + });
931 963 });
932 -}
964 +};
933 965
934 -/***/ }),
966 +/**
967 + * Debounce - delays function execution until after `wait` ms of inactivity.
968 + *
969 + * Each call resets the timer. Only the last call in a burst executes.
970 + *
971 + * USE CASES:
972 + * - Search inputs, form validation, window resize
973 + * - Multiple elements need independent timers
974 + * - When you need to call with different arguments
975 + *
976 + * EXAMPLES:
977 + * const debouncedSearch = debounce( (query) => fetchResults(query), 300 );
978 + * searchInput.addEventListener('input', (e) => debouncedSearch(e.target.value));
979 + *
980 + * const debouncedResize = debounce( recalculateLayout, 250 );
981 + * window.addEventListener('resize', debouncedResize);
982 + *
983 + * ⚠️ Create ONCE outside event handlers, not inside.
984 + *
985 + * @param {Function} func - Function to debounce (can be anonymous)
986 + * @param {number} wait - Milliseconds to wait (default: 500)
987 + * @return {Function} Debounced wrapper function
988 + * @since 4.3.7
989 + * @version 1.0.0
990 + */
991 +const debounce = (func, wait = 500) => {
992 + let timer;
993 + return args => {
994 + clearTimeout(timer);
995 + timer = setTimeout(() => func(args), wait);
996 + };
997 +};
935 998
936 -/***/ "./assets/src/apps/js/utils/lp-modal-overlay.js":
937 -/*!******************************************************!*\
938 - !*** ./assets/src/apps/js/utils/lp-modal-overlay.js ***!
939 - \******************************************************/
940 -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
999 +/**
1000 + * Initialize lp-toggle-enable components.
1001 + *
1002 + * Finds all `.lp-toggle-enable` elements and wires up toggle behavior.
1003 + * Reads initial state from `data-enabled` attribute ("true"/"false").
1004 + * Calls `data-on-toggle` callback (if provided via options) on state change.
1005 + *
1006 + * HTML structure:
1007 + * <label class="lp-toggle-enable" data-enabled="true">
1008 + * <input type="checkbox" class="lp-toggle-enable__input" />
1009 + * <span class="lp-toggle-enable__track"></span>
1010 + * </label>
1011 + *
1012 + * @param {string} selector CSS selector for toggle elements (default: '.lp-toggle-enable')
1013 + * @param {Function} onToggle Optional callback( el, isEnabled ) called on state change
1014 + * @since 4.4.5
1015 + * @version 1.0.0
1016 + */
1017 +window.lpToggleEnableInit = 0;
1018 +const toggleEnable = (onToggle = null) => {
1019 + if (window.lpToggleEnableInit) {
1020 + return;
1021 + }
1022 + window.lpToggleEnableInit = 1;
1023 + const selector = '.lp-toggle-enable';
1024 + const updateUI = (toggle, isEnabled) => {
1025 + toggle.classList.toggle('is-enabled', isEnabled);
1026 + const input = toggle.querySelector('.lp-toggle-enable__input');
1027 + if (input) {
1028 + input.checked = isEnabled;
1029 + input.value = isEnabled ? '1' : '0';
1030 + }
1031 + };
941 1032
942 -"use strict";
943 -__webpack_require__.r(__webpack_exports__);
944 -const $ = jQuery;
945 -let elLPOverlay = null;
946 -const lpModalOverlay = {
947 - elLPOverlay: null,
948 - elMainContent: null,
949 - elTitle: null,
950 - elBtnYes: null,
951 - elBtnNo: null,
952 - elFooter: null,
953 - elCalledModal: null,
954 - callBackYes: null,
955 - instance: null,
1033 + // Delegate click handling via eventHandlers.
1034 + eventHandlers('click', [{
1035 + selector,
1036 + callBack: args => {
1037 + const {
1038 + e,
1039 + target
1040 + } = args;
1041 + const toggle = target.closest(selector);
1042 + if (!toggle || toggle.classList.contains('is-disabled')) {
1043 + return;
1044 + }
1045 + e.preventDefault();
1046 + const isEnabled = !toggle.classList.contains('is-enabled');
1047 + updateUI(toggle, isEnabled);
1048 + if ('function' === typeof onToggle) {
1049 + onToggle(toggle, isEnabled);
1050 + }
1051 + }
1052 + }]);
1053 +};
956 1054
957 - init() {
958 - if (this.instance) {
959 - return true;
1055 +/**
1056 + * Initialize custom fullscreen view buttons.
1057 + *
1058 + * Delegates clicks on `.lp-btn-full-screen-view` buttons to
1059 + * `lpToggleFullscreenView`. Reads the `data-target` attribute to find the
1060 + * target element. Falls back to the button's parent element when
1061 + * `data-target` is not provided.
1062 + *
1063 + * @since 4.4.5
1064 + * @version 1.0.0
1065 + */
1066 +window.lpFullScreenViewInit = 0;
1067 +const fullScreenView = () => {
1068 + if (window.lpFullScreenViewInit) {
1069 + return;
1070 + }
1071 + window.lpFullScreenViewInit = 1;
1072 + let lastScrollY = 0;
1073 + const lpToggleFullscreenView = (elTarget, elBtnFullScreen = null) => {
1074 + const isFullscreen = elTarget.classList.contains(lpClassName.elFullScreen);
1075 + if (isFullscreen) {
1076 + elTarget.classList.remove(lpClassName.elFullScreen);
1077 + document.documentElement.classList.remove('lp-full-screen-active');
1078 + window.scrollTo(0, lastScrollY);
1079 + } else {
1080 + lastScrollY = window.scrollY;
1081 + elTarget.classList.add(lpClassName.elFullScreen);
1082 + document.documentElement.classList.add('lp-full-screen-active');
960 1083 }
961 -
962 - this.elLPOverlay = $('.lp-overlay');
963 -
964 - if (!this.elLPOverlay.length) {
965 - return false;
1084 + if (!isFullscreen) {
1085 + if (!elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`)) {
1086 + const closeButton = document.createElement('button');
1087 + closeButton.type = 'button';
1088 + closeButton.className = lpClassName.elBtnFullScreenClose;
1089 + closeButton.setAttribute('aria-label', 'Close');
1090 + closeButton.innerHTML = lpData.i18n.closeButtonFullScreen || 'Close &times;';
1091 + closeButton.addEventListener('click', e => {
1092 + e.preventDefault();
1093 + lpToggleFullscreenView(elTarget);
1094 + });
1095 + elTarget.appendChild(closeButton);
1096 + }
1097 + } else {
1098 + const closeButton = elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`);
1099 + if (closeButton) {
1100 + closeButton.remove();
1101 + }
966 1102 }
967 -
968 - elLPOverlay = this.elLPOverlay;
969 - this.elMainContent = elLPOverlay.find('.main-content');
970 - this.elTitle = elLPOverlay.find('.modal-title');
971 - this.elBtnYes = elLPOverlay.find('.btn-yes');
972 - this.elBtnNo = elLPOverlay.find('.btn-no');
973 - this.elFooter = elLPOverlay.find('.lp-modal-footer');
974 - $(document).on('click', '.close, .btn-no', function () {
975 - elLPOverlay.hide();
976 - });
977 - $(document).on('click', '.btn-yes', function (e) {
1103 + };
1104 + eventHandlers('click', [{
1105 + selector: lpClassName.elBtnFullScreen,
1106 + callBack: args => {
1107 + const {
1108 + e,
1109 + target
1110 + } = args;
1111 + const elBtnFullScreen = target.closest(lpClassName.elBtnFullScreen);
1112 + if (!elBtnFullScreen) {
1113 + console.log('No full screen button found');
1114 + return;
1115 + }
978 1116 e.preventDefault();
979 - e.stopPropagation();
980 -
981 - if ('function' === typeof lpModalOverlay.callBackYes) {
982 - lpModalOverlay.callBackYes();
1117 + let elTarget = null;
1118 + const targetSelector = elBtnFullScreen.dataset.targetFullscreen;
1119 + console.log(targetSelector);
1120 + if (targetSelector) {
1121 + elTarget = document.querySelector(targetSelector);
983 1122 }
984 - });
985 - this.instance = this;
986 - return true;
987 - },
988 -
989 - setElCalledModal(elCalledModal) {
990 - this.elCalledModal = elCalledModal;
991 - },
992 -
993 - setContentModal(content, event) {
994 - this.elMainContent.html(content);
995 -
996 - if ('function' === typeof event) {
997 - event();
1123 + if (!elTarget) {
1124 + console.log('No target element found');
1125 + return;
1126 + }
1127 + lpToggleFullscreenView(elTarget, elBtnFullScreen);
998 1128 }
999 - },
1000 -
1001 - setTitleModal(content) {
1002 - this.elTitle.html(content);
1003 - }
1004 -
1129 + }]);
1005 1130 };
1006 -/* harmony default export */ __webpack_exports__["default"] = (lpModalOverlay);
1007 1131
1008 -/***/ }),
1132 +/***/ },
1009 1133
1010 -/***/ "@wordpress/api-fetch":
1011 -/*!**********************************!*\
1012 - !*** external ["wp","apiFetch"] ***!
1013 - \**********************************/
1014 -/***/ (function(module) {
1134 +/***/ "react"
1135 +/*!************************!*\
1136 + !*** external "React" ***!
1137 + \************************/
1138 +(module) {
1015 1139
1016 1140 "use strict";
1017 -module.exports = window["wp"]["apiFetch"];
1141 +module.exports = window["React"];
1018 1142
1019 -/***/ }),
1143 +/***/ },
1020 1144
1021 -/***/ "@wordpress/element":
1145 +/***/ "@wordpress/element"
1022 1146 /*!*********************************!*\
1023 1147 !*** external ["wp","element"] ***!
1024 1148 \*********************************/
1025 -/***/ (function(module) {
1149 +(module) {
1026 1150
1027 1151 "use strict";
1028 1152 module.exports = window["wp"]["element"];
1029 1153
1030 -/***/ }),
1154 +/***/ },
1031 1155
1032 -/***/ "@wordpress/url":
1156 +/***/ "@wordpress/url"
1033 1157 /*!*****************************!*\
1034 1158 !*** external ["wp","url"] ***!
1035 1159 \*****************************/
1036 -/***/ (function(module) {
1160 +(module) {
1037 1161
1038 1162 "use strict";
1039 1163 module.exports = window["wp"]["url"];
1040 1164
1041 -/***/ })
1165 +/***/ }
1042 1166
1043 1167 /******/ });
1044 1168 /************************************************************************/
1045 1169 /******/ // The module cache
1046 -/******/ var __webpack_module_cache__ = {};
1170 +/******/ const __webpack_module_cache__ = {};
1047 1171 /******/
1048 1172 /******/ // The require function
1049 1173 /******/ function __webpack_require__(moduleId) {
1050 1174 /******/ // Check if module is in cache
1051 -/******/ var cachedModule = __webpack_module_cache__[moduleId];
1175 +/******/ const cachedModule = __webpack_module_cache__[moduleId];
1052 1176 /******/ if (cachedModule !== undefined) {
1053 1177 /******/ return cachedModule.exports;
1054 1178 /******/ }
1055 1179 /******/ // Create a new module (and put it into the cache)
1056 -/******/ var module = __webpack_module_cache__[moduleId] = {
1180 +/******/ const module = __webpack_module_cache__[moduleId] = {
1057 1181 /******/ // no module.id needed
1058 1182 /******/ // no module.loaded needed
1059 1183 /******/ exports: {}
1060 1184 /******/ };
@@ -1059,8 +1183,14 @@
1059 1183 /******/ exports: {}
1060 1184 /******/ };
1061 1185 /******/
1062 1186 /******/ // Execute the module function
1187 +/******/ if (!(moduleId in __webpack_modules__)) {
1188 +/******/ delete __webpack_module_cache__[moduleId];
1189 +/******/ const e = new Error("Cannot find module '" + moduleId + "'");
1190 +/******/ e.code = 'MODULE_NOT_FOUND';
1191 +/******/ throw e;
1192 +/******/ }
1063 1193 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1064 1194 /******/
1065 1195 /******/ // Return the exports of the module
1066 1196 /******/ return module.exports;
@@ -1067,51 +1197,66 @@
1067 1197 /******/ }
1068 1198 /******/
1069 1199 /************************************************************************/
1070 1200 /******/ /* webpack/runtime/compat get default export */
1071 -/******/ !function() {
1201 +/******/ (() => {
1072 1202 /******/ // getDefaultExport function for compatibility with non-harmony modules
1073 -/******/ __webpack_require__.n = function(module) {
1074 -/******/ var getter = module && module.__esModule ?
1075 -/******/ function() { return module['default']; } :
1076 -/******/ function() { return module; };
1203 +/******/ __webpack_require__.n = (module) => {
1204 +/******/ const getter = module && module.__esModule ?
1205 +/******/ () => (module['default']) :
1206 +/******/ () => (module);
1077 1207 /******/ __webpack_require__.d(getter, { a: getter });
1078 1208 /******/ return getter;
1079 1209 /******/ };
1080 -/******/ }();
1210 +/******/ })();
1081 1211 /******/
1082 1212 /******/ /* webpack/runtime/define property getters */
1083 -/******/ !function() {
1084 -/******/ // define getter functions for harmony exports
1085 -/******/ __webpack_require__.d = function(exports, definition) {
1086 -/******/ for(var key in definition) {
1087 -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1088 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1213 +/******/ (() => {
1214 +/******/ // define getter/value functions for harmony exports
1215 +/******/ __webpack_require__.d = (exports, definition) => {
1216 +/******/ if(Array.isArray(definition)) {
1217 +/******/ var i = 0;
1218 +/******/ while(i < definition.length) {
1219 +/******/ var key = definition[i++];
1220 +/******/ var binding = definition[i++];
1221 +/******/ if(!__webpack_require__.o(exports, key)) {
1222 +/******/ if(binding === 0) {
1223 +/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
1224 +/******/ } else {
1225 +/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
1226 +/******/ }
1227 +/******/ } else if(binding === 0) { i++; }
1089 1228 /******/ }
1229 +/******/ } else {
1230 +/******/ for(var key in definition) {
1231 +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1232 +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1233 +/******/ }
1234 +/******/ }
1090 1235 /******/ }
1091 1236 /******/ };
1092 -/******/ }();
1237 +/******/ })();
1093 1238 /******/
1094 1239 /******/ /* webpack/runtime/hasOwnProperty shorthand */
1095 -/******/ !function() {
1096 -/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
1097 -/******/ }();
1240 +/******/ (() => {
1241 +/******/ __webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop))
1242 +/******/ })();
1098 1243 /******/
1099 1244 /******/ /* webpack/runtime/make namespace object */
1100 -/******/ !function() {
1245 +/******/ (() => {
1101 1246 /******/ // define __esModule on exports
1102 -/******/ __webpack_require__.r = function(exports) {
1103 -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1247 +/******/ __webpack_require__.r = (exports) => {
1248 +/******/ if(Symbol.toStringTag) {
1104 1249 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1105 1250 /******/ }
1106 1251 /******/ Object.defineProperty(exports, '__esModule', { value: true });
1107 1252 /******/ };
1108 -/******/ }();
1253 +/******/ })();
1109 1254 /******/
1110 1255 /************************************************************************/
1111 -var __webpack_exports__ = {};
1112 -// This entry need to be wrapped in an IIFE because it need to be in strict mode.
1113 -!function() {
1256 +let __webpack_exports__ = {};
1257 +// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
1258 +(() => {
1114 1259 "use strict";
1115 1260 /*!**********************************************************!*\
1116 1261 !*** ./assets/src/apps/js/frontend/single-curriculum.js ***!
1117 1262 \**********************************************************/
@@ -1116,36 +1261,44 @@
1116 1261 !*** ./assets/src/apps/js/frontend/single-curriculum.js ***!
1117 1262 \**********************************************************/
1118 1263 __webpack_require__.r(__webpack_exports__);
1119 1264 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1120 -/* harmony export */ "init": function() { return /* binding */ init; }
1265 +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1121 1266 /* harmony export */ });
1122 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
1123 -/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
1124 -/* harmony import */ var _single_curriculum_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./single-curriculum/index */ "./assets/src/apps/js/frontend/single-curriculum/index.js");
1125 -/* harmony import */ var _show_lp_overlay_complete_item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./show-lp-overlay-complete-item */ "./assets/src/apps/js/frontend/show-lp-overlay-complete-item.js");
1126 -/* harmony import */ var _single_curriculum_skeleton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./single-curriculum/skeleton */ "./assets/src/apps/js/frontend/single-curriculum/skeleton.js");
1267 +/* harmony import */ var _single_curriculum_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./single-curriculum/index */ "./assets/src/apps/js/frontend/single-curriculum/index.js");
1268 +/* harmony import */ var _show_lp_overlay_complete_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./show-lp-overlay-complete-item */ "./assets/src/apps/js/frontend/show-lp-overlay-complete-item.js");
1269 +/* harmony import */ var _material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./material */ "./assets/src/apps/js/frontend/material.js");
1127 1270
1128 1271
1272 +//import courseCurriculumSkeleton from './single-curriculum/skeleton';
1129 1273
1274 +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_single_curriculum_index__WEBPACK_IMPORTED_MODULE_0__["default"]);
1130 1275
1131 -/* harmony default export */ __webpack_exports__["default"] = (_single_curriculum_index__WEBPACK_IMPORTED_MODULE_1__["default"]);
1132 -const init = () => {
1133 - wp.element.render((0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_single_curriculum_index__WEBPACK_IMPORTED_MODULE_1__["default"], null), document.getElementById('learn-press-course-curriculum'));
1134 -};
1276 +// Comment code use for old curriculum
1277 +/*export const init = () => {
1278 + wp.element.render(
1279 + <SingleCurriculums />,
1280 + document.getElementById( 'learn-press-course-curriculum' )
1281 + );
1282 +};*/
1283 +
1135 1284 document.addEventListener('DOMContentLoaded', function (event) {
1136 - LP.Hook.doAction('course-ready');
1137 - _show_lp_overlay_complete_item__WEBPACK_IMPORTED_MODULE_2__["default"].init(); //courseCurriculumSkeleton();
1285 + //LP.Hook.doAction( 'course-ready' );
1286 + _show_lp_overlay_complete_item__WEBPACK_IMPORTED_MODULE_1__["default"].init();
1287 + (0,_material__WEBPACK_IMPORTED_MODULE_2__["default"])();
1288 + //courseCurriculumSkeleton();
1138 1289 //init();
1139 1290 });
1140 -const detectedElCurriculum = setInterval(function () {
1141 - const elementCurriculum = document.querySelector('.learnpress-course-curriculum');
1142 1291
1143 - if (elementCurriculum) {
1144 - (0,_single_curriculum_skeleton__WEBPACK_IMPORTED_MODULE_3__["default"])();
1145 - clearInterval(detectedElCurriculum);
1146 - }
1147 -}, 1);
1148 -}();
1292 +// Comment code use for old curriculum
1293 +/*const detectedElCurriculum = setInterval( function() {
1294 + const elementCurriculum = document.querySelector( '.learnpress-course-curriculum' );
1295 + if ( elementCurriculum ) {
1296 + courseCurriculumSkeleton();
1297 + clearInterval( detectedElCurriculum );
1298 + }
1299 +}, 1 );*/
1300 +})();
1301 +
1149 1302 /******/ })()
1150 1303 ;
1151 1304 //# sourceMappingURL=single-curriculum.js.map