PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.3.7
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.3.7
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.3.7, at assets/js/dist/elementor/courses.js

727 lines 23.2 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 /******/ var __webpack_module_cache__ = {};
275 /******/
276 /******/ // The require function
277 /******/ function __webpack_require__(moduleId) {
278 /******/ // Check if module is in cache
279 /******/ var 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 /******/ var 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 /******/ var 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 functions for harmony exports
307 /******/ __webpack_require__.d = (exports, definition) => {
308 /******/ for(var key in definition) {
309 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
310 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
311 /******/ }
312 /******/ }
313 /******/ };
314 /******/ })();
315 /******/
316 /******/ /* webpack/runtime/hasOwnProperty shorthand */
317 /******/ (() => {
318 /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
319 /******/ })();
320 /******/
321 /******/ /* webpack/runtime/make namespace object */
322 /******/ (() => {
323 /******/ // define __esModule on exports
324 /******/ __webpack_require__.r = (exports) => {
325 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
326 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
327 /******/ }
328 /******/ Object.defineProperty(exports, '__esModule', { value: true });
329 /******/ };
330 /******/ })();
331 /******/
332 /************************************************************************/
333 var __webpack_exports__ = {};
334 // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
335 (() => {
336 /*!********************************************!*\
337 !*** ./assets/src/js/elementor/courses.js ***!
338 \********************************************/
339 __webpack_require__.r(__webpack_exports__);
340 /* harmony import */ var _apps_js_utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../apps/js/utils/utils */ "./assets/src/apps/js/utils/utils.js");
341 /* harmony import */ var _utils_cookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/cookie */ "./assets/src/js/utils/cookie.js");
342
343
344 window.lpElWidgetCoursesByPage = (() => {
345 const classCoursesWrapper = 'list-courses-elm-wrapper';
346 const classListCourse = 'list-courses-elm';
347 const classPaginationCourse = 'learn-press-pagination';
348 const classCoursesPageResult = 'courses-page-result';
349 const classSkeleton = 'lp-skeleton-animation';
350 let filterCourses = {};
351 const currentUrl = (0,_apps_js_utils_utils__WEBPACK_IMPORTED_MODULE_0__.lpGetCurrentURLNoParam)();
352 let urlAPI;
353 let typePagination = 'number';
354 let firstLoad = true;
355 let timeOutSearch;
356 let isLoadingInfinite = false;
357 const isLoadRest = false;
358 const fetchAPI = (args, callBack = {}) => {
359 //console.log( 'Fetch API Courses' );
360 const paramsFetch = {
361 method: 'POST',
362 body: JSON.stringify(args),
363 headers: {
364 'Content-Type': 'application/json' // Set the content type to JSON
365 }
366 };
367 if ('undefined' !== typeof args.nonce) {
368 paramsFetch.headers['X-WP-Nonce'] = args.nonce;
369 }
370 (0,_apps_js_utils_utils__WEBPACK_IMPORTED_MODULE_0__.lpFetchAPI)(urlAPI + 'lp/v1/courses/courses-widget-by-page', paramsFetch, callBack);
371 };
372 const callBackFilter = elCoursesWrapper => {
373 if (!elCoursesWrapper) {
374 return;
375 }
376 const skeleton = elCoursesWrapper.querySelector(`.${classSkeleton}`);
377 const elListCourse = elCoursesWrapper.querySelector(`.${classListCourse}`);
378 const elPagination = elCoursesWrapper.querySelector(`.${classPaginationCourse}`);
379 const elCoursesPageResult = elCoursesWrapper.querySelector(`.${classCoursesPageResult}`);
380 return {
381 before: () => {},
382 success: res => {
383 const divTmp = document.createElement('div');
384 divTmp.innerHTML = res.data.content || '';
385 const elListCourseTmp = divTmp.querySelector(`.${classListCourse}`);
386 const elPaginationTmp = divTmp.querySelector(`.${classPaginationCourse}`);
387 const elCoursesPageResultTmp = divTmp.querySelector(`.${classCoursesPageResult}`);
388 if (elListCourse) {
389 elListCourse.innerHTML = elListCourseTmp.innerHTML;
390 if (elPagination) {
391 elPagination.innerHTML = elPaginationTmp.innerHTML;
392 }
393 if (elCoursesPageResult) {
394 elCoursesPageResult.innerHTML = elCoursesPageResultTmp.innerHTML;
395 }
396
397 // Scroll to el
398 const optionScroll = {
399 behavior: 'smooth'
400 };
401 elListCourse.scrollIntoView(optionScroll);
402 } else {
403 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.content || '');
404 }
405 if (res.data.pagination) {
406 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.pagination || '');
407 }
408 },
409 error: error => {},
410 completed: () => {
411 if (skeleton) {
412 skeleton.style.display = 'none';
413 }
414 }
415 };
416 };
417 const callBackPaginationTypeLoadMore = elCoursesWrapper => {
418 const btnLoadMore = elCoursesWrapper.querySelector('.courses-btn-load-more');
419 let elLoading;
420 if (btnLoadMore) {
421 elLoading = btnLoadMore.querySelector('.lp-loading-circle');
422 }
423 const skeleton = elCoursesWrapper.querySelector(`.${classSkeleton}`);
424 const elListCourse = elCoursesWrapper.querySelector(`.${classListCourse}`);
425 return {
426 before: () => {
427 if (btnLoadMore) {
428 elLoading.classList.remove('hide');
429 btnLoadMore.setAttribute('disabled', 'disabled');
430 }
431 },
432 success: res => {
433 const divTmp = document.createElement('div');
434 divTmp.innerHTML = res.data.content || '';
435 const elListCourseTmp = divTmp.querySelector(`.${classListCourse}`);
436 const elPaginationTmp = divTmp.querySelector(`.${classPaginationCourse}`);
437 if (elListCourse) {
438 elListCourse.insertAdjacentHTML('beforeend', elListCourseTmp.innerHTML);
439 if (!elPaginationTmp) {
440 btnLoadMore.remove();
441 }
442 } else {
443 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.content || '');
444 }
445 if (res.data.pagination) {
446 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.pagination || '');
447 }
448 },
449 error: error => {},
450 completed: () => {
451 if (skeleton) {
452 skeleton.style.display = 'none';
453 }
454 if (btnLoadMore) {
455 elLoading.classList.add('hide');
456 btnLoadMore.removeAttribute('disabled');
457 }
458 }
459 };
460 };
461 const callBackPaginationTypeInfinite = elCoursesWrapper => {
462 const skeleton = elCoursesWrapper.querySelector(`.${classSkeleton}`);
463 const elInfinite = elCoursesWrapper.querySelector('.courses-load-infinite');
464 let loading;
465 if (elInfinite) {
466 loading = elInfinite.querySelector('.lp-loading-circle');
467 }
468 const elListCourse = elCoursesWrapper.querySelector(`.${classListCourse}`);
469 return {
470 before: () => {
471 isLoadingInfinite = true;
472 if (loading) {
473 loading.classList.remove('hide');
474 }
475 },
476 success: res => {
477 const divTmp = document.createElement('div');
478 divTmp.innerHTML = res.data.content || '';
479 const elListCourseTmp = divTmp.querySelector(`.${classListCourse}`);
480 const elPaginationTmp = divTmp.querySelector(`.${classPaginationCourse}`);
481 if (elListCourse) {
482 elListCourse.insertAdjacentHTML('beforeend', elListCourseTmp.innerHTML);
483 if (!elPaginationTmp) {
484 elInfinite.remove();
485 }
486 } else {
487 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.content || '');
488 }
489 if (res.data.pagination) {
490 elCoursesWrapper.insertAdjacentHTML('beforeend', res.data.pagination || '');
491 }
492 },
493 error: error => {},
494 completed: () => {
495 isLoadingInfinite = false;
496 if (skeleton) {
497 skeleton.style.display = 'none';
498 }
499 if (elInfinite) {
500 loading.classList.add('hide');
501 }
502 }
503 };
504 };
505 const callApiCoursesOfWidget = (elCoursesWrapper, args = {}) => {
506 var _settingsWidget$lp_re, _settingsWidget$cours;
507 console.log('/*** loadApiCoursesOfWidget ***/');
508 const idWidget = elCoursesWrapper.dataset.widgetId;
509 let settingsWidget = window[`lpWidget_${idWidget}`];
510 if (!settingsWidget) {
511 return;
512 }
513 if ('yes' !== settingsWidget.courses_rest) {
514 return;
515 }
516 if ('yes' === settingsWidget.courses_rest_no_load_page && firstLoad) {
517 firstLoad = false;
518 return;
519 }
520 settingsWidget = {
521 ...settingsWidget,
522 ...args
523 };
524 urlAPI = (_settingsWidget$lp_re = settingsWidget.lp_rest_url) !== null && _settingsWidget$lp_re !== void 0 ? _settingsWidget$lp_re : '';
525 typePagination = (_settingsWidget$cours = settingsWidget.courses_rest_pagination_type) !== null && _settingsWidget$cours !== void 0 ? _settingsWidget$cours : 'number';
526 let callBack;
527 switch (typePagination) {
528 case 'load-more':
529 callBack = callBackPaginationTypeLoadMore(elCoursesWrapper);
530 break;
531 case 'infinite':
532 callBack = callBackPaginationTypeInfinite(elCoursesWrapper);
533 break;
534 default:
535 // number
536 callBack = callBackFilter(elCoursesWrapper);
537 break;
538 }
539 if (!callBack) {
540 return;
541 }
542 fetchAPI(settingsWidget, callBack);
543 };
544 const findAllWidgetCoursesByPage = () => {
545 const elCoursesWrappers = document.querySelectorAll(`.${classCoursesWrapper}`);
546 if (!elCoursesWrappers) {
547 return;
548 }
549 elCoursesWrappers.forEach(el => {
550 callApiCoursesOfWidget(el);
551 });
552 };
553 const onChangeSortBy = (e, target) => {
554 if (!target.classList.contains('courses-order-by')) {
555 return;
556 }
557 const elCoursesWrapper = target.closest(`.${classCoursesWrapper}`);
558 if (!elCoursesWrapper) {
559 return;
560 }
561 e.preventDefault();
562 const idWidget = elCoursesWrapper.dataset.widgetId;
563 const settingsWidget = window[`lpWidget_${idWidget}`];
564 filterCourses.order_by = target.value;
565 filterCourses.paged = 1;
566 if ('yes' !== settingsWidget.courses_rest) {
567 window.location.href = (0,_apps_js_utils_utils__WEBPACK_IMPORTED_MODULE_0__.lpAddQueryArgs)(currentUrl, filterCourses);
568 } else {
569 callApiCoursesOfWidget(elCoursesWrapper, filterCourses);
570 }
571 };
572 const onChangeLayout = (e, target) => {
573 if (!target.classList.contains('courses-layout')) {
574 if (!target.closest('.courses-layout')) {
575 return;
576 }
577 target = target.closest('.courses-layout');
578 }
579 const elCoursesWrapper = target.closest(`.${classCoursesWrapper}`);
580 if (!elCoursesWrapper) {
581 return;
582 }
583 e.preventDefault();
584 const elListCourse = elCoursesWrapper.querySelector(`.${classListCourse}`);
585 const elUlLayouts = target.closest('.courses-layouts-display-list');
586 const widgetId = elCoursesWrapper.dataset.widgetId;
587 const elLayouts = elUlLayouts.querySelectorAll('li');
588 elLayouts.forEach(el => {
589 el.classList.remove('active');
590 });
591 const layout = target.dataset.layout;
592 target.classList.add('active');
593 elListCourse.classList.remove('grid', 'list');
594 elListCourse.classList.add(layout);
595 _utils_cookie__WEBPACK_IMPORTED_MODULE_1__["default"].set(`layout_widget_${widgetId}`, layout, 7);
596 };
597 const events = () => {
598 document.addEventListener('change', function (e) {
599 const target = e.target;
600 onChangeSortBy(e, target);
601 });
602 document.addEventListener('click', function (e) {
603 const target = e.target;
604 clickLoadMore(e, target);
605 clickNumberPage(e, target);
606 onChangeLayout(e, target);
607 });
608 document.addEventListener('scroll', function (e) {
609 const target = e.target;
610 scrollInfinite(e, target);
611 });
612 document.addEventListener('keyup', function (e) {
613 const target = e.target;
614
615 //window.lpCourseList.searchCourse( e, target );
616 });
617 document.addEventListener('submit', function (e) {
618 const target = e.target;
619
620 //window.lpCourseList.searchCourse( e, target );
621 });
622 };
623 const clickNumberPage = (e, target) => {
624 if (!target.classList.contains('page-numbers')) {
625 if (!target.closest('.page-numbers')) {
626 return;
627 }
628 target = target.closest('.page-numbers');
629 }
630 const elCoursesWrapper = target.closest(`.${classCoursesWrapper}`);
631 if (!elCoursesWrapper) {
632 return;
633 }
634 const idWidget = elCoursesWrapper.dataset.widgetId;
635 const settingsWidget = window[`lpWidget_${idWidget}`];
636 if (!settingsWidget || 'yes' !== settingsWidget.courses_rest) {
637 return;
638 }
639 e.preventDefault();
640 const pageCurrent = filterCourses.paged;
641 if (target.classList.contains('prev')) {
642 filterCourses.paged = pageCurrent - 1;
643 } else if (target.classList.contains('next')) {
644 filterCourses.paged = pageCurrent + 1;
645 } else {
646 filterCourses.paged = parseInt(target.textContent);
647 }
648 callApiCoursesOfWidget(elCoursesWrapper, filterCourses);
649 };
650 const clickLoadMore = (e, target) => {
651 if (!target.classList.contains('courses-btn-load-more')) {
652 if (!target.closest('.courses-btn-load-more')) {
653 return;
654 }
655 target = target.closest('.courses-btn-load-more');
656 }
657 const elCoursesWrapper = target.closest(`.${classCoursesWrapper}`);
658 if (!elCoursesWrapper) {
659 return;
660 }
661 const idWidget = elCoursesWrapper.dataset.widgetId;
662 const settingsWidget = window[`lpWidget_${idWidget}`];
663 if (!settingsWidget || 'yes' !== settingsWidget.courses_rest) {
664 return;
665 }
666 e.preventDefault();
667 ++filterCourses.paged;
668 callApiCoursesOfWidget(elCoursesWrapper, filterCourses);
669 };
670 const scrollInfinite = (e, target) => {
671 const elCoursesWrapper = document.querySelector(`.${classCoursesWrapper}`);
672 if (!elCoursesWrapper) {
673 return;
674 }
675 const elInfinite = elCoursesWrapper.querySelector('.courses-load-infinite');
676 if (!elInfinite) {
677 return;
678 }
679 const idWidget = elCoursesWrapper.dataset.widgetId;
680 const settingsWidget = window[`lpWidget_${idWidget}`];
681 if (!settingsWidget || 'yes' !== settingsWidget.courses_rest) {
682 return;
683 }
684
685 // Create an IntersectionObserver object.
686 const observer = new IntersectionObserver(function (entries) {
687 for (const entry of entries) {
688 // If the entry is intersecting, load the image.
689 if (entry.isIntersecting) {
690 if (isLoadingInfinite) {
691 return;
692 }
693 ++filterCourses.paged;
694 callApiCoursesOfWidget(elCoursesWrapper, filterCourses);
695 observer.unobserve(entry.target);
696 }
697 }
698 });
699 observer.observe(elInfinite);
700 };
701 return {
702 init: () => {
703 const urlParams = {};
704 const urlQueryString = window.location.search;
705 const urlSearchParams = new URLSearchParams(urlQueryString);
706 for (const [key, val] of urlSearchParams.entries()) {
707 urlParams[key] = val;
708 }
709
710 //filterCourses = { ...lpArchiveSkeletonParam, ...urlParams };
711 filterCourses = {
712 ...urlParams
713 };
714 filterCourses.paged = parseInt(filterCourses.paged || 1);
715 findAllWidgetCoursesByPage();
716 events();
717 }
718 };
719 })();
720 document.addEventListener('DOMContentLoaded', function () {
721 window.lpElWidgetCoursesByPage.init();
722 });
723 })();
724
725 /******/ })()
726 ;
727 //# sourceMappingURL=courses.js.map