PATH:
home
/
lab2454c
/
fcxpro.com
/
wp-content
/
plugins
/
elementor-pro
/
assets
/
js
/*! elementor-pro - v3.7.2 - 15-06-2022 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["load-more"],{ /***/ "../modules/posts/assets/js/frontend/handlers/load-more.js": /*!*****************************************************************!*\ !*** ../modules/posts/assets/js/frontend/handlers/load-more.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class LoadMore extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { postsContainer: '.elementor-posts-container', loadMoreButton: '.elementor-button', loadMoreSpinnerWrapper: '.e-load-more-spinner', loadMoreSpinner: '.e-load-more-spinner i, .e-load-more-spinner svg', loadMoreAnchor: '.e-load-more-anchor' }, classes: { loadMoreSpin: 'eicon-animation-spin', loadMoreIsLoading: 'e-load-more-pagination-loading', loadMorePaginationEnd: 'e-load-more-pagination-end', loadMoreNoSpinner: 'e-load-more-no-spinner' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { postsWidgetWrapper: this.$element[0], postsContainer: this.$element[0].querySelector(selectors.postsContainer), loadMoreButton: this.$element[0].querySelector(selectors.loadMoreButton), loadMoreSpinnerWrapper: this.$element[0].querySelector(selectors.loadMoreSpinnerWrapper), loadMoreSpinner: this.$element[0].querySelector(selectors.loadMoreSpinner), loadMoreAnchor: this.$element[0].querySelector(selectors.loadMoreAnchor) }; } bindEvents() { super.bindEvents(); // Handle load more functionality for on-click type. if (!this.elements.loadMoreButton) { return; } this.elements.loadMoreButton.addEventListener('click', event => { if (this.isLoading) { return; } event.preventDefault(); this.handlePostsQuery(); }); } onInit() { super.onInit(); this.classes = this.getSettings('classes'); this.isLoading = false; const paginationType = this.getElementSettings('pagination_type'); if ('load_more_on_click' !== paginationType && 'load_more_infinite_scroll' !== paginationType) { return; } this.isInfinteScroll = 'load_more_infinite_scroll' === paginationType; // When spinner is not available, the button's text should not be hidden. this.isSpinnerAvailable = this.getElementSettings('load_more_spinner').value; if (!this.isSpinnerAvailable) { this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreNoSpinner); } if (this.isInfinteScroll) { this.handleInfiniteScroll(); } else if (this.elements.loadMoreSpinnerWrapper && this.elements.loadMoreButton) { // Instead of creating 2 spinners for on-click and infinity-scroll, one spinner will be used so it should be appended to the button in on-click mode. this.elements.loadMoreButton.insertAdjacentElement('beforeEnd', this.elements.loadMoreSpinnerWrapper); } // Set the post id and element id for the ajax request. this.elementId = this.getID(); this.postId = elementorFrontendConfig.post.id; // Set the current page and last page for handling the load more post and when no more posts to show. if (this.elements.loadMoreAnchor) { this.currentPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-page')); this.maxPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-max-page')); if (this.currentPage === this.maxPage || !this.currentPage) { this.handleUiWhenNoPosts(); } } } // Handle load more functionality for infinity-scroll type. handleInfiniteScroll() { if (this.isEdit) { return; } this.observer = elementorModules.utils.Scroll.scrollObserver({ callback: event => { if (!event.isInViewport || this.isLoading) { return; } // When the observer is triggered it won't be triggered without scrolling, but sometimes there will be no scrollbar to trigger it again. this.observer.unobserve(this.elements.loadMoreAnchor); this.handlePostsQuery().then(() => { if (this.currentPage !== this.maxPage) { this.observer.observe(this.elements.loadMoreAnchor); } }); } }); this.observer.observe(this.elements.loadMoreAnchor); } handleUiBeforeLoading() { this.isLoading = true; if (this.elements.loadMoreSpinner) { this.elements.loadMoreSpinner.classList.add(this.classes.loadMoreSpin); } this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreIsLoading); } handleUiAfterLoading() { this.isLoading = false; if (this.elements.loadMoreSpinner) { this.elements.loadMoreSpinner.classList.remove(this.classes.loadMoreSpin); } if (this.isInfinteScroll && this.elements.loadMoreSpinnerWrapper && this.elements.loadMoreAnchor) { // Since the spinner has to be shown after the new content (posts), it should be appended after the anchor element. this.elements.loadMoreAnchor.insertAdjacentElement('afterend', this.elements.loadMoreSpinnerWrapper); } this.elements.postsWidgetWrapper.classList.remove(this.classes.loadMoreIsLoading); } handleUiWhenNoPosts() { this.elements.postsWidgetWrapper.classList.add(this.classes.loadMorePaginationEnd); } handleSuccessFetch(result) { this.handleUiAfterLoading(); // Grabbing only the new articles from the response without the existing once (prevent posts duplication). const posts = result.querySelectorAll(`[data-id="${this.elementId}"] .elementor-posts-container > article`); const nextPageUrl = result.querySelector('.e-load-more-anchor').getAttribute('data-next-page'); // Converting HTMLCollection to an Array and iterate it. const postsHTML = [...posts].reduce((accumulator, post) => { return accumulator + post.outerHTML; }, ''); this.elements.postsContainer.insertAdjacentHTML('beforeend', postsHTML); this.elements.loadMoreAnchor.setAttribute('data-page', this.currentPage); this.elements.loadMoreAnchor.setAttribute('data-next-page', nextPageUrl); if (this.currentPage === this.maxPage) { this.handleUiWhenNoPosts(); } } handlePostsQuery() { this.handleUiBeforeLoading(); this.currentPage++; const nextPageUrl = this.elements.loadMoreAnchor.getAttribute('data-next-page'); return fetch(nextPageUrl).then(response => response.text()).then(html => { // Convert the HTML string into a document object const parser = new DOMParser(); const doc = parser.parseFromString(html, 'text/html'); this.handleSuccessFetch(doc); }).catch(err => { console.warn('Something went wrong.', err); }); } } exports["default"] = LoadMore; /***/ }) }]); //# sourceMappingURL=load-more.fec6d8e0469ce9de4c2e.bundle.js.map
[+]
..
[-] jszip.vendor.dc89f0ba11b047e93d46.bundle.min.js
[edit]
[-] frontend.min.js
[edit]
[-] paypal-button.35291ad27cdc2a8a7921.bundle.js
[edit]
[-] elements-handlers.js
[edit]
[-] editor.js
[edit]
[-] woocommerce-purchase-summary.d052d7d713baf4381542.bundle.js
[edit]
[-] screenshot.min.js
[edit]
[-] portfolio.ba524e4b5f1108ecb13c.bundle.min.js
[edit]
[-] table-of-contents.04aedbfe66f61e99e535.bundle.js
[edit]
[-] qunit-tests.min.js
[edit]
[-] stripe-button.7c183c3003a91f048606.bundle.min.js
[edit]
[-] elements-handlers.min.js
[edit]
[-] form.358793a6bb3724ab5f99.bundle.min.js
[edit]
[-] woocommerce-checkout-page.22ee57e21c8eac231aba.bundle.min.js
[edit]
[-] form-submission-admin.js
[edit]
[-] frontend.js
[edit]
[-] form-submission-admin.min.js
[edit]
[-] table-of-contents.a695231ee79a390b7620.bundle.min.js
[edit]
[-] nav-menu.3de49ba5ef86f9a22ff5.bundle.min.js
[edit]
[-] code-highlight.025966fc6b037ea07f05.bundle.js
[edit]
[-] admin.js
[edit]
[-] custom-code.min.js.LICENSE.txt
[edit]
[-] preview.min.js
[edit]
[-] woocommerce-purchase-summary.555e6a4935b6f2ea3fbe.bundle.min.js
[edit]
[-] slides.c147fd1a583874a5c204.bundle.js
[edit]
[-] share-buttons.0bdd88c45462dfb2b073.bundle.min.js
[edit]
[-] slides.8e4c7cc58ad39c5630ac.bundle.min.js
[edit]
[-] webpack-pro.runtime.min.js
[edit]
[-] app.min.js
[edit]
[-] page-transitions-editor.d337d52b02b13965bde2.bundle.js
[edit]
[-] lottie.68b160acb16985899f6c.bundle.js
[edit]
[-] app.js
[edit]
[-] editor.min.js.LICENSE.txt
[edit]
[-] page-transitions.min.js
[edit]
[-] popup.1e0f0af4c386170080a9.bundle.js
[edit]
[+]
notes
[-] video-playlist.1aa3281934eb1be42914.bundle.js
[edit]
[-] hotspot.6ab1751404c381bfe390.bundle.min.js
[edit]
[-] popup.483b906ddaa1af17ff14.bundle.min.js
[edit]
[-] social.2d2e44e8608690943f29.bundle.min.js
[edit]
[-] progress-tracker.7a4e50d1be14525d8ffb.bundle.min.js
[edit]
[-] stripe-button.3c4e82ad4f8635e44542.bundle.js
[edit]
[-] nav-menu.344ae9625cf591e355d9.bundle.js
[edit]
[-] woocommerce-checkout-page.f8efa8ea5086f53925da.bundle.js
[edit]
[-] hotspot.7a26a87c29a1cd99ebc4.bundle.js
[edit]
[-] form.e231ef9f8b852ecaa4d3.bundle.js
[edit]
[-] woocommerce-my-account.8877c071e31d5024f717.bundle.min.js
[edit]
[-] editor.min.js
[edit]
[-] custom-code.js
[edit]
[-] woocommerce-notices.7acc357dab73c74f532c.bundle.js
[edit]
[-] search-form.a396372f407d3c16a0ef.bundle.min.js
[edit]
[-] video-playlist.e7e71397df149e9406ce.bundle.min.js
[edit]
[-] woocommerce-notices.da27b22c491f7cbe9158.bundle.min.js
[edit]
[-] preloaded-elements-handlers.js
[edit]
[-] jszip.vendor.dc89f0ba11b047e93d46.bundle.min.js.LICENSE.txt
[edit]
[-] woocommerce-menu-cart.3dd7c3f10f39d618076a.bundle.js
[edit]
[-] search-form.2a7313a0f793c51489e5.bundle.js
[edit]
[-] webpack-pro.runtime.js
[edit]
[-] load-more.80eb3caec79a44347d74.bundle.min.js
[edit]
[-] countdown.b0ef6392ec4ff09ca2f2.bundle.min.js
[edit]
[-] jszip.vendor.2d31998ec05c74562278.bundle.js
[edit]
[-] paypal-button.3d0d5af7df85963df32c.bundle.min.js
[edit]
[-] woocommerce-cart.e2b26d683c4de1ac5aff.bundle.js
[edit]
[-] gallery.ab76804bbe6e9657fa8b.bundle.js
[edit]
[-] gallery.9c61bb9957e10e6d7bda.bundle.min.js
[edit]
[-] screenshot.js
[edit]
[-] preview.js
[edit]
[-] animated-headline.a669865c518a01b3654e.bundle.min.js
[edit]
[-] posts.c35de42fde52aa1dbfe2.bundle.min.js
[edit]
[-] woocommerce-menu-cart.37905d32f638831bc09d.bundle.min.js
[edit]
[-] animated-headline.4d4d3c90102df0feeeb4.bundle.js
[edit]
[-] carousel.5af857cc40abaf7d2683.bundle.min.js
[edit]
[-] media-carousel.20a9d5cef4d885304bea.bundle.min.js
[edit]
[-] media-carousel.e3ec0e8809948259690d.bundle.js
[edit]
[-] code-highlight.28a979661569ddbbf60d.bundle.min.js
[edit]
[-] countdown.486737044795b3a87ad3.bundle.js
[edit]
[-] admin.min.js
[edit]
[-] woocommerce-my-account.44bbb4dd4591f0c43079.bundle.js
[edit]
[-] social.1c34ab246a4f2f971eb3.bundle.js
[edit]
[-] preloaded-elements-handlers.min.js
[edit]
[-] portfolio.71a295881db9bf336b34.bundle.js
[edit]
[-] page-transitions.js
[edit]
[-] qunit-tests.js
[edit]
[-] custom-code.min.js
[edit]
[-] archive-posts.a4d8e162c4df3b058868.bundle.min.js
[edit]
[-] carousel.ec49ae64da497d8adeee.bundle.js
[edit]
[-] progress-tracker.d38557a8e9be0c7ac097.bundle.js
[edit]
[-] archive-posts.9298f3dd8f2722909f33.bundle.js
[edit]
[-] lottie.147bf20db94f86cc4295.bundle.min.js
[edit]
[-] share-buttons.d46ad1a7ae4811ddf539.bundle.js
[edit]
[-] page-transitions-editor.8e84a298bb20935a26be.bundle.min.js
[edit]
[-] woocommerce-cart.7b31441d24d96ca1a4f8.bundle.min.js
[edit]
[-] posts.088a95f657e27386e013.bundle.js
[edit]
[-] load-more.fec6d8e0469ce9de4c2e.bundle.js
[edit]