PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.8
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.8
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 4.1.7.3.1 4.1.7.3.2 4.2.0 All 139 releases
learnpress / assets / js / dist / elementor / courses.js

courses.js in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.4.8, at assets/js/dist/elementor/courses.js

742 lines 23.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /******/ (() => { // webpackBootstrap
2 /******/ "use strict";
3 /******/ var __webpack_modules__ = ({
4
5 /***/ "./assets/src/apps/js/utils/utils.js"
6 /*!*******************************************!*\
7 !*** ./assets/src/apps/js/utils/utils.js ***!
8 \*******************************************/
9 (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10
11 __webpack_require__.r(__webpack_exports__);
12 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13 /* harmony export */ listenElementCreated: () => (/* binding */ listenElementCreated),
14 /* harmony export */ listenElementViewed: () => (/* binding */ listenElementViewed),
15 /* harmony export */ lpAddQueryArgs: () => (/* binding */ lpAddQueryArgs),
16 /* harmony export */ lpAjaxParseJsonOld: () => (/* binding */ lpAjaxParseJsonOld),
17 /* harmony export */ lpClassName: () => (/* binding */ lpClassName),
18 /* harmony export */ lpFetchAPI: () => (/* binding */ lpFetchAPI),
19 /* harmony export */ lpGetCurrentURLNoParam: () => (/* binding */ lpGetCurrentURLNoParam),
20 /* harmony export */ lpOnElementReady: () => (/* binding */ lpOnElementReady),
21 /* harmony export */ lpSetLoadingEl: () => (/* binding */ lpSetLoadingEl),
22 /* harmony export */ lpShowHideEl: () => (/* binding */ lpShowHideEl),
23 /* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse)
24 /* harmony export */ });
25 /**
26 * Utils functions
27 *
28 * @param url
29 * @param data
30 * @param functions
31 * @since 4.2.5.1
32 * @version 1.0.3
33 */
34 const lpClassName = {
35 hidden: 'lp-hidden',
36 loading: 'loading',
37 elCollapse: 'lp-collapse',
38 elSectionToggle: '.lp-section-toggle',
39 elTriggerToggle: '.lp-trigger-toggle'
40 };
41 const lpFetchAPI = (url, data = {}, functions = {}) => {
42 if ('function' === typeof functions.before) {
43 functions.before();
44 }
45 fetch(url, {
46 method: 'GET',
47 ...data
48 }).then(response => response.json()).then(response => {
49 if ('function' === typeof functions.success) {
50 functions.success(response);
51 }
52 }).catch(err => {
53 if ('function' === typeof functions.error) {
54 functions.error(err);
55 }
56 }).finally(() => {
57 if ('function' === typeof functions.completed) {
58 functions.completed();
59 }
60 });
61 };
62
63 /**
64 * Get current URL without params.
65 *
66 * @since 4.2.5.1
67 */
68 const lpGetCurrentURLNoParam = () => {
69 let currentUrl = window.location.href;
70 const hasParams = currentUrl.includes('?');
71 if (hasParams) {
72 currentUrl = currentUrl.split('?')[0];
73 }
74 return currentUrl;
75 };
76 const lpAddQueryArgs = (endpoint, args) => {
77 const url = new URL(endpoint);
78 Object.keys(args).forEach(arg => {
79 url.searchParams.set(arg, args[arg]);
80 });
81 return url;
82 };
83
84 /**
85 * Listen element viewed.
86 *
87 * @param el
88 * @param callback
89 * @since 4.2.5.8
90 */
91 const listenElementViewed = (el, callback) => {
92 const observerSeeItem = new IntersectionObserver(function (entries) {
93 for (const entry of entries) {
94 if (entry.isIntersecting) {
95 callback(entry);
96 }
97 }
98 });
99 observerSeeItem.observe(el);
100 };
101
102 /**
103 * Listen element created.
104 *
105 * @param callback
106 * @since 4.2.5.8
107 */
108 const listenElementCreated = callback => {
109 const observerCreateItem = new MutationObserver(function (mutations) {
110 mutations.forEach(function (mutation) {
111 if (mutation.addedNodes) {
112 mutation.addedNodes.forEach(function (node) {
113 if (node.nodeType === 1) {
114 callback(node);
115 }
116 });
117 }
118 });
119 });
120 observerCreateItem.observe(document, {
121 childList: true,
122 subtree: true
123 });
124 // End.
125 };
126
127 /**
128 * Listen element created.
129 *
130 * @param selector
131 * @param callback
132 * @since 4.2.7.1
133 */
134 const lpOnElementReady = (selector, callback) => {
135 const element = document.querySelector(selector);
136 if (element) {
137 callback(element);
138 return;
139 }
140 const observer = new MutationObserver((mutations, obs) => {
141 const element = document.querySelector(selector);
142 if (element) {
143 obs.disconnect();
144 callback(element);
145 }
146 });
147 observer.observe(document.documentElement, {
148 childList: true,
149 subtree: true
150 });
151 };
152
153 // Parse JSON from string with content include LP_AJAX_START.
154 const lpAjaxParseJsonOld = data => {
155 if (typeof data !== 'string') {
156 return data;
157 }
158 const m = String.raw({
159 raw: data
160 }).match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/s);
161 try {
162 if (m) {
163 data = JSON.parse(m[1].replace(/(?:\r\n|\r|\n)/g, ''));
164 } else {
165 data = JSON.parse(data);
166 }
167 } catch (e) {
168 data = {};
169 }
170 return data;
171 };
172
173 // status 0: hide, 1: show
174 const lpShowHideEl = (el, status = 0) => {
175 if (!el) {
176 return;
177 }
178 if (!status) {
179 el.classList.add(lpClassName.hidden);
180 } else {
181 el.classList.remove(lpClassName.hidden);
182 }
183 };
184
185 // status 0: hide, 1: show
186 const lpSetLoadingEl = (el, status) => {
187 if (!el) {
188 return;
189 }
190 if (!status) {
191 el.classList.remove(lpClassName.loading);
192 } else {
193 el.classList.add(lpClassName.loading);
194 }
195 };
196
197 // Toggle collapse section
198 const toggleCollapse = (e, target, elTriggerClassName = '', elsExclude = [], callback) => {
199 if (!elTriggerClassName) {
200 elTriggerClassName = lpClassName.elTriggerToggle;
201 }
202
203 // Exclude elements, which should not trigger the collapse toggle
204 if (elsExclude && elsExclude.length > 0) {
205 for (const elExclude of elsExclude) {
206 if (target.closest(elExclude)) {
207 return;
208 }
209 }
210 }
211 const elTrigger = target.closest(elTriggerClassName);
212 if (!elTrigger) {
213 return;
214 }
215 const elSectionToggle = elTrigger.closest(`${lpClassName.elSectionToggle}`);
216 if (!elSectionToggle) {
217 return;
218 }
219 elSectionToggle.classList.toggle(`${lpClassName.elCollapse}`);
220 if ('function' === typeof callback) {
221 callback(elSectionToggle);
222 }
223 };
224
225
226 /***/ },
227
228 /***/ "./assets/src/js/utils/cookie.js"
229 /*!***************************************!*\
230 !*** ./assets/src/js/utils/cookie.js ***!
231 \***************************************/
232 (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
233
234 __webpack_require__.r(__webpack_exports__);
235 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
236 /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
237 /* harmony export */ });
238 /**
239 * Cookie
240 *
241 * @since 4.2.3.4
242 * @version 1.0.0
243 */
244 const Cookie = {
245 set: (cname, cvalue, exdays) => {
246 const d = new Date();
247 d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
248 const expires = 'expires=' + d.toUTCString();
249 document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';
250 },
251 get: cname => {
252 const name = cname + '=';
253 const decodedCookie = decodeURIComponent(document.cookie);
254 const ca = decodedCookie.split(';');
255 for (let i = 0; i < ca.length; i++) {
256 let c = ca[i];
257 while (c.charAt(0) === ' ') {
258 c = c.substring(1);
259 }
260 if (c.indexOf(name) === 0) {
261 return c.substring(name.length, c.length);
262 }
263 }
264 return '';
265 }
266 };
267 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Cookie);
268
269 /***/ }
270
271 /******/ });
272 /************************************************************************/
273 /******/ // The module cache
274 /******/ const __webpack_module_cache__ = {};
275 /******/
276 /******/ // The require function
277 /******/ function __webpack_require__(moduleId) {
278 /******/ // Check if module is in cache
279 /******/ const cachedModule = __webpack_module_cache__[moduleId];
280 /******/ if (cachedModule !== undefined) {
281 /******/ return cachedModule.exports;
282 /******/ }
283 /******/ // Create a new module (and put it into the cache)
284 /******/ const module = __webpack_module_cache__[moduleId] = {
285 /******/ // no module.id needed
286 /******/ // no module.loaded needed
287 /******/ exports: {}
288 /******/ };
289 /******/
290 /******/ // Execute the module function
291 /******/ if (!(moduleId in __webpack_modules__)) {
292 /******/ delete __webpack_module_cache__[moduleId];
293 /******/ const e = new Error("Cannot find module '" + moduleId + "'");
294 /******/ e.code = 'MODULE_NOT_FOUND';
295 /******/ throw e;
296 /******/ }
297 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
298 /******/
299 /******/ // Return the exports of the module
300 /******/ return module.exports;
301 /******/ }
302 /******/
303 /************************************************************************/
304 /******/ /* webpack/runtime/define property getters */
305 /******/ (() => {
306 /******/ // define getter/value functions for harmony exports
307 /******/ __webpack_require__.d = (exports, definition) => {
308 /******/ if(Array.isArray(definition)) {
309 /******/ var i = 0;
310 /******/ while(i < definition.length) {
311 /******/ var key = definition[i++];
312 /******/ var binding = definition[i++];
313 /******/ if(!__webpack_require__.o(exports, key)) {
314 /******/ if(binding === 0) {
315 /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
316 /******/ } else {
317 /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
318 /******/ }
319 /******/ } else if(binding === 0) { i++; }
320 /******/ }
321 /******/ } else {
322 /******/ for(var key in definition) {
323 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
324 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
325 /******/ }
326 /******/ }
327 /******/ }
328 /******/ };
329 /******/ })();
330 /******/
331 /******/ /* webpack/runtime/hasOwnProperty shorthand */
332 /******/ (() => {
333 /******/ __webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop))
334 /******/ })();
335 /******/
336 /******/ /* webpack/runtime/make namespace object */
337 /******/ (() => {
338 /******/ // define __esModule on exports
339 /******/ __webpack_require__.r = (exports) => {
340 /******/ if(Symbol.toStringTag) {
341 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
342 /******/ }
343 /******/ Object.defineProperty(exports, '__esModule', { value: true });
344 /******/ };
345 /******/ })();
346 /******/
347 /************************************************************************/
348 let __webpack_exports__ = {};
349 // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
350 (() => {
351 /*!********************************************!*\
352 !*** ./assets/src/js/elementor/courses.js ***!
353 \********************************************/
354 __webpack_require__.r(__webpack_exports__);
355 /* harmony import */ var _apps_js_utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../apps/js/utils/utils */ "./assets/src/apps/js/utils/utils.js");
356 /* harmony import */ var _utils_cookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/cookie */ "./assets/src/js/utils/cookie.js");
357
358
359 window.lpElWidgetCoursesByPage = (() => {
360 const classCoursesWrapper = 'list-courses-elm-wrapper';
361 const classListCourse = 'list-courses-elm';
362 const classPaginationCourse = 'learn-press-pagination';
363 const classCoursesPageResult = 'courses-page-result';
364 const classSkeleton = 'lp-skeleton-animation';
365 let filterCourses = {};
366 const currentUrl = (0,_apps_js_utils_utils__WEBPACK_IMPORTED_MODULE_0__.lpGetCurrentURLNoParam)();
367 let urlAPI;
368 let typePagination = 'number';
369 let firstLoad = true;
370 let timeOutSearch;
371 let isLoadingInfinite = false;
372 const isLoadRest = false;
373 const fetchAPI = (args, callBack = {}) => {
374 //console.log( 'Fetch API Courses' );
375 const paramsFetch = {
376 method: 'POST',
377 body: JSON.stringify(args),
378 headers: {
379 'Content-Type': 'application/json' // Set the content type to JSON
380 }
381 };
382 if ('undefined' !== typeof args.nonce) {
383 paramsFetch.headers['X-WP-Nonce'] = args.nonce;
384 }
385 ;(0,_apps_js_utils_utils__WEBPACK_IMPORTED_MODULE_0__.lpFetchAPI)(urlAPI + 'lp/v1/courses/courses-widget-by-page', paramsFetch, callBack);
386 };
387 const callBackFilter = elCoursesWrapper => {
388 if (!elCoursesWrapper) {
389 return;
390 }
391 const skeleton = elCoursesWrapper.querySelector(`.${classSkeleton}`);
392 const elListCourse = elCoursesWrapper.querySelector(`.${classListCourse}`);
393 const elPagination = elCoursesWrapper.querySelector(`.${classPaginationCourse}`);
394 const elCoursesPageResult = elCoursesWrapper.querySelector(`.${classCoursesPageResult}`);
395 return {
396 before: () => {},
397 success: res => {
398 const divTmp = document.createElement('div');
399 divTmp.innerHTML = res.data.content || '';
400 const elListCourseTmp = divTmp.querySelector(`.${classListCourse}`);
401 const elPaginationTmp = divTmp.querySelector(`.${classPaginationCourse}`);
402 const elCoursesPageResultTmp = divTmp.querySelector(`.${classCoursesPageResult}`);
403 if (elListCourse) {
404 elListCourse.innerHTML = elListCourseTmp.innerHTML;
405 if (elPagination) {
406 elPagination.innerHTML = elPaginationTmp.innerHTML;
407 }
408 if (elCoursesPageResult) {
409 elCoursesPageResult.innerHTML = elCoursesPageResultTmp.innerHTML;
410 }
411
412 // Scroll to el
413 const optionScroll = {
414 behavior: 'smooth'
415 };
416 elListCourse.scrollIntoView(optionScroll);
417 } else {
418 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.content || '');
419 }
420 if (res.data.pagination) {
421 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.pagination || '');
422 }
423 },
424 error: error => {},
425 completed: () => {
426 if (skeleton) {
427 skeleton.style.display = 'none';
428 }
429 }
430 };
431 };
432 const callBackPaginationTypeLoadMore = elCoursesWrapper => {
433 const btnLoadMore = elCoursesWrapper.querySelector('.courses-btn-load-more');
434 let elLoading;
435 if (btnLoadMore) {
436 elLoading = btnLoadMore.querySelector('.lp-loading-circle');
437 }
438 const skeleton = elCoursesWrapper.querySelector(`.${classSkeleton}`);
439 const elListCourse = elCoursesWrapper.querySelector(`.${classListCourse}`);
440 return {
441 before: () => {
442 if (btnLoadMore) {
443 elLoading.classList.remove('hide');
444 btnLoadMore.setAttribute('disabled', 'disabled');
445 }
446 },
447 success: res => {
448 const divTmp = document.createElement('div');
449 divTmp.innerHTML = res.data.content || '';
450 const elListCourseTmp = divTmp.querySelector(`.${classListCourse}`);
451 const elPaginationTmp = divTmp.querySelector(`.${classPaginationCourse}`);
452 if (elListCourse) {
453 elListCourse.insertAdjacentHTML('beforeend', elListCourseTmp.innerHTML);
454 if (!elPaginationTmp) {
455 btnLoadMore.remove();
456 }
457 } else {
458 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.content || '');
459 }
460 if (res.data.pagination) {
461 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.pagination || '');
462 }
463 },
464 error: error => {},
465 completed: () => {
466 if (skeleton) {
467 skeleton.style.display = 'none';
468 }
469 if (btnLoadMore) {
470 elLoading.classList.add('hide');
471 btnLoadMore.removeAttribute('disabled');
472 }
473 }
474 };
475 };
476 const callBackPaginationTypeInfinite = elCoursesWrapper => {
477 const skeleton = elCoursesWrapper.querySelector(`.${classSkeleton}`);
478 const elInfinite = elCoursesWrapper.querySelector('.courses-load-infinite');
479 let loading;
480 if (elInfinite) {
481 loading = elInfinite.querySelector('.lp-loading-circle');
482 }
483 const elListCourse = elCoursesWrapper.querySelector(`.${classListCourse}`);
484 return {
485 before: () => {
486 isLoadingInfinite = true;
487 if (loading) {
488 loading.classList.remove('hide');
489 }
490 },
491 success: res => {
492 const divTmp = document.createElement('div');
493 divTmp.innerHTML = res.data.content || '';
494 const elListCourseTmp = divTmp.querySelector(`.${classListCourse}`);
495 const elPaginationTmp = divTmp.querySelector(`.${classPaginationCourse}`);
496 if (elListCourse) {
497 elListCourse.insertAdjacentHTML('beforeend', elListCourseTmp.innerHTML);
498 if (!elPaginationTmp) {
499 elInfinite.remove();
500 }
501 } else {
502 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.content || '');
503 }
504 if (res.data.pagination) {
505 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.pagination || '');
506 }
507 },
508 error: error => {},
509 completed: () => {
510 isLoadingInfinite = false;
511 if (skeleton) {
512 skeleton.style.display = 'none';
513 }
514 if (elInfinite) {
515 loading.classList.add('hide');
516 }
517 }
518 };
519 };
520 const callApiCoursesOfWidget = (elCoursesWrapper, args = {}) => {
521 var _settingsWidget$lp_re, _settingsWidget$cours;
522 console.log('/*** loadApiCoursesOfWidget ***/');
523 const idWidget = elCoursesWrapper.dataset.widgetId;
524 let settingsWidget = window[`lpWidget_${idWidget}`];
525 if (!settingsWidget) {
526 return;
527 }
528 if ('yes' !== settingsWidget.courses_rest) {
529 return;
530 }
531 if ('yes' === settingsWidget.courses_rest_no_load_page && firstLoad) {
532 firstLoad = false;
533 return;
534 }
535 settingsWidget = {
536 ...settingsWidget,
537 ...args
538 };
539 urlAPI = (_settingsWidget$lp_re = settingsWidget.lp_rest_url) !== null && _settingsWidget$lp_re !== void 0 ? _settingsWidget$lp_re : '';
540 typePagination = (_settingsWidget$cours = settingsWidget.courses_rest_pagination_type) !== null && _settingsWidget$cours !== void 0 ? _settingsWidget$cours : 'number';
541 let callBack;
542 switch (typePagination) {
543 case 'load-more':
544 callBack = callBackPaginationTypeLoadMore(elCoursesWrapper);
545 break;
546 case 'infinite':
547 callBack = callBackPaginationTypeInfinite(elCoursesWrapper);
548 break;
549 default:
550 // number
551 callBack = callBackFilter(elCoursesWrapper);
552 break;
553 }
554 if (!callBack) {
555 return;
556 }
557 fetchAPI(settingsWidget, callBack);
558 };
559 const findAllWidgetCoursesByPage = () => {
560 const elCoursesWrappers = document.querySelectorAll(`.${classCoursesWrapper}`);
561 if (!elCoursesWrappers) {
562 return;
563 }
564 elCoursesWrappers.forEach(el => {
565 callApiCoursesOfWidget(el);
566 });
567 };
568 const onChangeSortBy = (e, target) => {
569 if (!target.classList.contains('courses-order-by')) {
570 return;
571 }
572 const elCoursesWrapper = target.closest(`.${classCoursesWrapper}`);
573 if (!elCoursesWrapper) {
574 return;
575 }
576 e.preventDefault();
577 const idWidget = elCoursesWrapper.dataset.widgetId;
578 const settingsWidget = window[`lpWidget_${idWidget}`];
579 filterCourses.order_by = target.value;
580 filterCourses.paged = 1;
581 if ('yes' !== settingsWidget.courses_rest) {
582 window.location.href = (0,_apps_js_utils_utils__WEBPACK_IMPORTED_MODULE_0__.lpAddQueryArgs)(currentUrl, filterCourses);
583 } else {
584 callApiCoursesOfWidget(elCoursesWrapper, filterCourses);
585 }
586 };
587 const onChangeLayout = (e, target) => {
588 if (!target.classList.contains('courses-layout')) {
589 if (!target.closest('.courses-layout')) {
590 return;
591 }
592 target = target.closest('.courses-layout');
593 }
594 const elCoursesWrapper = target.closest(`.${classCoursesWrapper}`);
595 if (!elCoursesWrapper) {
596 return;
597 }
598 e.preventDefault();
599 const elListCourse = elCoursesWrapper.querySelector(`.${classListCourse}`);
600 const elUlLayouts = target.closest('.courses-layouts-display-list');
601 const widgetId = elCoursesWrapper.dataset.widgetId;
602 const elLayouts = elUlLayouts.querySelectorAll('li');
603 elLayouts.forEach(el => {
604 el.classList.remove('active');
605 });
606 const layout = target.dataset.layout;
607 target.classList.add('active');
608 elListCourse.classList.remove('grid', 'list');
609 elListCourse.classList.add(layout);
610 _utils_cookie__WEBPACK_IMPORTED_MODULE_1__["default"].set(`layout_widget_${widgetId}`, layout, 7);
611 };
612 const events = () => {
613 document.addEventListener('change', function (e) {
614 const target = e.target;
615 onChangeSortBy(e, target);
616 });
617 document.addEventListener('click', function (e) {
618 const target = e.target;
619 clickLoadMore(e, target);
620 clickNumberPage(e, target);
621 onChangeLayout(e, target);
622 });
623 document.addEventListener('scroll', function (e) {
624 const target = e.target;
625 scrollInfinite(e, target);
626 });
627 document.addEventListener('keyup', function (e) {
628 const target = e.target;
629
630 //window.lpCourseList.searchCourse( e, target );
631 });
632 document.addEventListener('submit', function (e) {
633 const target = e.target;
634
635 //window.lpCourseList.searchCourse( e, target );
636 });
637 };
638 const clickNumberPage = (e, target) => {
639 if (!target.classList.contains('page-numbers')) {
640 if (!target.closest('.page-numbers')) {
641 return;
642 }
643 target = target.closest('.page-numbers');
644 }
645 const elCoursesWrapper = target.closest(`.${classCoursesWrapper}`);
646 if (!elCoursesWrapper) {
647 return;
648 }
649 const idWidget = elCoursesWrapper.dataset.widgetId;
650 const settingsWidget = window[`lpWidget_${idWidget}`];
651 if (!settingsWidget || 'yes' !== settingsWidget.courses_rest) {
652 return;
653 }
654 e.preventDefault();
655 const pageCurrent = filterCourses.paged;
656 if (target.classList.contains('prev')) {
657 filterCourses.paged = pageCurrent - 1;
658 } else if (target.classList.contains('next')) {
659 filterCourses.paged = pageCurrent + 1;
660 } else {
661 filterCourses.paged = parseInt(target.textContent);
662 }
663 callApiCoursesOfWidget(elCoursesWrapper, filterCourses);
664 };
665 const clickLoadMore = (e, target) => {
666 if (!target.classList.contains('courses-btn-load-more')) {
667 if (!target.closest('.courses-btn-load-more')) {
668 return;
669 }
670 target = target.closest('.courses-btn-load-more');
671 }
672 const elCoursesWrapper = target.closest(`.${classCoursesWrapper}`);
673 if (!elCoursesWrapper) {
674 return;
675 }
676 const idWidget = elCoursesWrapper.dataset.widgetId;
677 const settingsWidget = window[`lpWidget_${idWidget}`];
678 if (!settingsWidget || 'yes' !== settingsWidget.courses_rest) {
679 return;
680 }
681 e.preventDefault();
682 ++filterCourses.paged;
683 callApiCoursesOfWidget(elCoursesWrapper, filterCourses);
684 };
685 const scrollInfinite = (e, target) => {
686 const elCoursesWrapper = document.querySelector(`.${classCoursesWrapper}`);
687 if (!elCoursesWrapper) {
688 return;
689 }
690 const elInfinite = elCoursesWrapper.querySelector('.courses-load-infinite');
691 if (!elInfinite) {
692 return;
693 }
694 const idWidget = elCoursesWrapper.dataset.widgetId;
695 const settingsWidget = window[`lpWidget_${idWidget}`];
696 if (!settingsWidget || 'yes' !== settingsWidget.courses_rest) {
697 return;
698 }
699
700 // Create an IntersectionObserver object.
701 const observer = new IntersectionObserver(function (entries) {
702 for (const entry of entries) {
703 // If the entry is intersecting, load the image.
704 if (entry.isIntersecting) {
705 if (isLoadingInfinite) {
706 return;
707 }
708 ++filterCourses.paged;
709 callApiCoursesOfWidget(elCoursesWrapper, filterCourses);
710 observer.unobserve(entry.target);
711 }
712 }
713 });
714 observer.observe(elInfinite);
715 };
716 return {
717 init: () => {
718 const urlParams = {};
719 const urlQueryString = window.location.search;
720 const urlSearchParams = new URLSearchParams(urlQueryString);
721 for (const [key, val] of urlSearchParams.entries()) {
722 urlParams[key] = val;
723 }
724
725 //filterCourses = { ...lpArchiveSkeletonParam, ...urlParams };
726 filterCourses = {
727 ...urlParams
728 };
729 filterCourses.paged = parseInt(filterCourses.paged || 1);
730 findAllWidgetCoursesByPage();
731 events();
732 }
733 };
734 })();
735 document.addEventListener('DOMContentLoaded', function () {
736 window.lpElWidgetCoursesByPage.init();
737 });
738 })();
739
740 /******/ })()
741 ;
742 //# sourceMappingURL=courses.js.map