PATH:
home
/
lab2454c
/
caimegroup.com
/
wp-content
/
plugins
/
elementor-pro
/
assets
/
js
/*! elementor-pro - v3.20.0 - 26-03-2024 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["taxonomy-filter"],{ /***/ "../assets/dev/js/frontend/utils/flex-horizontal-scroll.js": /*!*****************************************************************!*\ !*** ../assets/dev/js/frontend/utils/flex-horizontal-scroll.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.changeScrollStatus = changeScrollStatus; exports.setHorizontalScrollAlignment = setHorizontalScrollAlignment; exports.setHorizontalTitleScrollValues = setHorizontalTitleScrollValues; function changeScrollStatus(element, event) { if ('mousedown' === event.type) { element.classList.add('e-scroll'); element.dataset.pageX = event.pageX; } else { element.classList.remove('e-scroll', 'e-scroll-active'); element.dataset.pageX = ''; } } // This function was written using this example https://codepen.io/thenutz/pen/VwYeYEE. function setHorizontalTitleScrollValues(element, horizontalScrollStatus, event) { const isActiveScroll = element.classList.contains('e-scroll'), isHorizontalScrollActive = 'enable' === horizontalScrollStatus, headingContentIsWiderThanWrapper = element.scrollWidth > element.clientWidth; if (!isActiveScroll || !isHorizontalScrollActive || !headingContentIsWiderThanWrapper) { return; } event.preventDefault(); const previousPositionX = parseFloat(element.dataset.pageX), mouseMoveX = event.pageX - previousPositionX, maximumScrollValue = 5, stepLimit = 20; let toScrollDistanceX = 0; if (stepLimit < mouseMoveX) { toScrollDistanceX = maximumScrollValue; } else if (stepLimit * -1 > mouseMoveX) { toScrollDistanceX = -1 * maximumScrollValue; } else { toScrollDistanceX = mouseMoveX; } element.scrollLeft = element.scrollLeft - toScrollDistanceX; element.classList.add('e-scroll-active'); } function setHorizontalScrollAlignment(_ref) { let { element, direction, justifyCSSVariable, horizontalScrollStatus } = _ref; if (!element) { return; } if (isHorizontalScroll(element, horizontalScrollStatus)) { initialScrollPosition(element, direction, justifyCSSVariable); } else { element.style.setProperty(justifyCSSVariable, ''); } } function isHorizontalScroll(element, horizontalScrollStatus) { return element.clientWidth < getChildrenWidth(element.children) && 'enable' === horizontalScrollStatus; } function getChildrenWidth(children) { let totalWidth = 0; const parentContainer = children[0].parentNode, computedStyles = getComputedStyle(parentContainer), gap = parseFloat(computedStyles.gap) || 0; // Get the gap value or default to 0 if it's not specified for (let i = 0; i < children.length; i++) { totalWidth += children[i].offsetWidth + gap; } return totalWidth; } function initialScrollPosition(element, direction, justifyCSSVariable) { const isRTL = elementorFrontend.config.is_rtl; switch (direction) { case 'end': element.style.setProperty(justifyCSSVariable, 'start'); element.scrollLeft = isRTL ? -1 * getChildrenWidth(element.children) : getChildrenWidth(element.children); break; default: element.style.setProperty(justifyCSSVariable, 'start'); element.scrollLeft = 0; } } /***/ }), /***/ "../modules/loop-filter/assets/js/frontend/handlers/taxonomy-filter.js": /*!*****************************************************************************!*\ !*** ../modules/loop-filter/assets/js/frontend/handlers/taxonomy-filter.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _flexHorizontalScroll = __webpack_require__(/*! elementor-pro/frontend/utils/flex-horizontal-scroll */ "../assets/dev/js/frontend/utils/flex-horizontal-scroll.js"); var _queryConstants = __webpack_require__(/*! ../../query-constants */ "../modules/loop-filter/assets/js/query-constants.js"); class TaxonomyFilter extends elementorModules.frontend.handlers.Base { constructor() { super(...arguments); this.resizeListenerNestedTabs = null; } /** * * @return {{filterValues: {default: string}, selectors: {container: string, item: string}}} Default Settings */ getDefaultSettings() { return { selectors: { item: '.e-filter-item', container: '.e-filter' }, filterValues: { default: '__all' } }; } /** * * @return {{$filterButtons: *, $container: *}} Default Elements */ getDefaultElements() { return { $filterButtons: this.$element.find(this.getSettings('selectors.item')), $container: this.$element.find(this.getSettings('selectors.container')) }; } getHeadingEvents() { const container = this.elements.$container[0]; return { mousedown: _flexHorizontalScroll.changeScrollStatus.bind(this, container), mouseup: _flexHorizontalScroll.changeScrollStatus.bind(this, container), mouseleave: _flexHorizontalScroll.changeScrollStatus.bind(this, container), mousemove: _flexHorizontalScroll.setHorizontalTitleScrollValues.bind(this, container, this.getHorizontalScrollSetting()) }; } bindEvents() { this.elements.$filterButtons.on('click', this.onFilterButtonClick.bind(this)); this.elements.$container.on(this.getHeadingEvents()); const settingsObject = { element: this.elements.$container[0], direction: this.getItemsAlignment(), justifyCSSVariable: '--e-filter-justify-content', horizontalScrollStatus: this.getHorizontalScrollSetting() }; this.resizeListenerNestedTabs = _flexHorizontalScroll.setHorizontalScrollAlignment.bind(this, settingsObject); elementorFrontend.elements.$window.on('resize', this.resizeListenerNestedTabs); } /** * * @param {string} propertyName */ onElementChange(propertyName) { if (this.checkSliderPropsToWatch(propertyName)) { const settingsObject = { element: this.elements.$container[0], direction: this.getItemsAlignment(), justifyCSSVariable: '--e-filter-justify-content', horizontalScrollStatus: this.getHorizontalScrollSetting() }; (0, _flexHorizontalScroll.setHorizontalScrollAlignment)(settingsObject); } } /** * * @param {string} propertyName * @return {boolean} Is slider property */ checkSliderPropsToWatch(propertyName) { return 0 === propertyName.indexOf('horizontal_scroll') || 0 === propertyName.indexOf('item_alignment_horizontal'); } /** * Get the filter buttons elements. * * If the filter buttons weren't rendered when the handler was initialized, this method will cache the filter * button elements and add the necessary event listeners. * * @return {*} jQuery collection of filter button elements. Might be empty. */ getFilterButtonElements() { if (this.elements?.$filterButtons.length) { return this.elements.$filterButtons; } this.elements = this.getDefaultElements(); this.bindEvents(); return this.elements.$filterButtons; } /** * Get the active filter buttons elements. * * @return {*} jQuery collection of the active filter button elements. Might be empty. */ getActiveFilterButtonElements() { return this.getFilterButtonElements().filter('[aria-pressed="true"]'); } /** * * @param {string} selectedTermSlug */ activateFilterButton(selectedTermSlug) { const $filterButtons = this.getFilterButtonElements(), multipleSelectionActive = 'yes' === this.getElementSettings('multiple_selection'); if (!$filterButtons.length) { return; } const defaultFilter = this.getSettings('filterValues.default'); if (!multipleSelectionActive || defaultFilter === selectedTermSlug) { $filterButtons.attr('aria-pressed', false); } const $activeButton = $filterButtons.filter('[data-filter="' + selectedTermSlug + '"]'); $activeButton.attr('aria-pressed', true); const activeFiltersButtons = this.getCurrentlyActiveFilter(); if (activeFiltersButtons && activeFiltersButtons.includes(defaultFilter) && defaultFilter !== selectedTermSlug) { this.deactivateDefaultFilterButton($filterButtons); } } /** * * @param {string} clickedFilter */ deactivateFilterButton(clickedFilter) { const $filterButtons = this.getFilterButtonElements(), multipleSelectionActive = 'yes' === this.getElementSettings('multiple_selection'); if (!$filterButtons.length) { return; } const $activeButton = $filterButtons.filter('[data-filter="' + clickedFilter + '"]'), defaultFilter = this.getSettings('filterValues.default'), currentlyActiveButtons = this.getCurrentlyActiveFilter(), isActivateDefaultFilterButtonNeeded = !multipleSelectionActive || !currentlyActiveButtons.includes(defaultFilter) && 1 === currentlyActiveButtons.length; $activeButton.attr('aria-pressed', false); if (isActivateDefaultFilterButtonNeeded) { this.activateDefaultFilterButton(); } elementorProFrontend.modules.taxonomyFilter.removeFilterFromLoopWidget(this.getElementSettings('selected_element'), this.getID(), clickedFilter, defaultFilter); } activateDefaultFilterButton() { const $filterButtons = this.getFilterButtonElements(), $defaultButton = $filterButtons.filter('[data-filter="' + this.getSettings('filterValues.default') + '"]'); $filterButtons.attr('aria-pressed', false); $defaultButton.attr('aria-pressed', true); } deactivateDefaultFilterButton() { const $filterButtons = this.getFilterButtonElements(); const $defaultButton = $filterButtons.filter('[data-filter="' + this.getSettings('filterValues.default') + '"]'); $defaultButton.attr('aria-pressed', false); } /** * Gets the currently active buttons independent of URL params. * @return {Array} Currently active filter(s). */ getCurrentlyActiveFilter() { const $activeFilterButtons = this.getActiveFilterButtonElements(), currentlyActiveFilterButtons = []; for (let i = 0; i < $activeFilterButtons.length; i++) { currentlyActiveFilterButtons.push($activeFilterButtons[i].dataset.filter); } return currentlyActiveFilterButtons; } /** * Get the filter operator for WP_Query. OR is translated IN. * @return {string} 'IN' or 'AND' for WP_Query or DISABLED for single selection. */ getFilterOperator() { const elementSettings = this.getElementSettings(), multipleSelection = elementSettings.multiple_selection; if (!multipleSelection || !['AND', 'OR'].includes(elementSettings.logical_combination)) { return 'DISABLED'; } return elementSettings.logical_combination; } /** * * @param {string} selectedTermSlug - Slug of currently selected term relating to last clicked button */ filterItems(selectedTermSlug) { const elementSettings = this.getElementSettings(), defaultFilterValue = this.getSettings('filterValues.default'); if (defaultFilterValue === selectedTermSlug) { elementorProFrontend.modules.taxonomyFilter.removeFilterFromLoopWidget(elementSettings.selected_element, this.getID(), selectedTermSlug, defaultFilterValue); return; } const multipleSelectionLogicalJoin = this.getFilterOperator(); elementorProFrontend.modules.taxonomyFilter.setFilterDataForLoopWidget(elementSettings.selected_element, this.getID(), { filterType: 'taxonomy', filterData: { selectedTaxonomy: elementSettings.taxonomy, terms: [selectedTermSlug] } }, true, multipleSelectionLogicalJoin); } /** * * @param {string} filter */ setFilter() { let filter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSettings('filterValues.default'); this.filterItems(filter); this.activateFilterButton(filter); } onFilterButtonClick(event) { this.removePaginationHiddenClassOnLoopWidgetContainer(); const currentlyActiveFilterButtons = this.getCurrentlyActiveFilter(), clickedFilter = event.currentTarget?.dataset?.filter; if (this.userClickedOnAllWhileItWasActive(clickedFilter, currentlyActiveFilterButtons)) { return; } if (currentlyActiveFilterButtons.includes(clickedFilter)) { this.deactivateFilterButton(clickedFilter); return; } this.setFilter(clickedFilter); } removePaginationHiddenClassOnLoopWidgetContainer() { const elementSettings = this.getElementSettings(), loopWidget = document.querySelector('.elementor-element-' + elementSettings.selected_element); if (loopWidget) { loopWidget.classList.remove('e-load-more-pagination-end'); } } /** * * @param {string} clickedFilter * @param {Array} currentlyActiveFilter * @return {boolean} User clicked on all while it was active. */ userClickedOnAllWhileItWasActive(clickedFilter, currentlyActiveFilter) { return currentlyActiveFilter.includes(clickedFilter) && clickedFilter === this.getSettings('filterValues.default'); } onDestroy() { const selectedElementId = this.getElementSettings('selected_element'), selectedTaxonomy = this.getElementSettings('taxonomy'), filterId = this.getID(); if (selectedElementId && selectedTaxonomy) { elementorProFrontend.modules.taxonomyFilter.removeFilterFromLoopWidget(selectedElementId, filterId, ''); } super.onDestroy(); } populateLoopWidgetsStoreOnInitialPageLoad() { const elementSettings = this.getElementSettings(), urlParams = new URLSearchParams(window.location.search); let selectedTermSlugs = urlParams.get('e-filter-' + elementSettings.selected_element + '-' + elementSettings.taxonomy); if (selectedTermSlugs) { // Avoid null values in elementSettings.taxonomy when multiple taxonomies deselected to trigger all (Default) state. selectedTermSlugs = this.getTermsFromParams(selectedTermSlugs); const multipleSelectionLogicalJoin = this.getFilterOperator(); elementorProFrontend.modules.taxonomyFilter.setFilterDataForLoopWidget(elementSettings.selected_element, this.getID(), { filterType: 'taxonomy', filterData: { selectedTaxonomy: elementSettings.taxonomy, terms: selectedTermSlugs } }, false, multipleSelectionLogicalJoin); } } getTermsFromParams(params) { let separator = _queryConstants.queryConstants.AND.separator.fromBrowser; // The web browser automatically replaces the plus sign with a space character before sending the data to the server. if (params.includes(_queryConstants.queryConstants.OR.separator.fromBrowser)) { separator = _queryConstants.queryConstants.OR.separator.fromBrowser; } return params.split(separator); } onInit() { super.onInit(); this.populateLoopWidgetsStoreOnInitialPageLoad(); const settingsObject = { element: this.elements.$container[0], direction: this.getItemsAlignment(), justifyCSSVariable: '--e-filter-justify-content', horizontalScrollStatus: this.getHorizontalScrollSetting() }; (0, _flexHorizontalScroll.setHorizontalScrollAlignment)(settingsObject); } getHorizontalScrollSetting() { const currentDevice = elementorFrontend.getCurrentDeviceMode(); return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(), 'horizontal_scroll', '', currentDevice); } getItemsAlignment() { const currentDevice = elementorFrontend.getCurrentDeviceMode(); return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(), 'item_alignment_horizontal', '', currentDevice); } } exports["default"] = TaxonomyFilter; /***/ }) }]); //# sourceMappingURL=taxonomy-filter.9d41aac2f76c01cfdb42.bundle.js.map
[+]
..
[-] frontend.min.js
[edit]
[-] media-carousel.d8417210e0b731dd32b8.bundle.js
[edit]
[-] woocommerce-cart.73c6990b0b1a1ea18220.bundle.js
[edit]
[-] woocommerce-menu-cart.010ec7298aee1fcdc2ea.bundle.js
[edit]
[-] mega-menu-stretch-content.60ca9e1e97c52ac3bf8c.bundle.min.js
[edit]
[-] progress-tracker.3ec316715116e9087057.bundle.js
[edit]
[-] elements-handlers.js
[edit]
[-] editor.js
[edit]
[-] screenshot.min.js
[edit]
[-] gallery.805130d33e18cb04635f.bundle.js
[edit]
[-] qunit-tests.min.js
[edit]
[-] jszip.vendor.99a5b769619f50a6cb60.bundle.min.js.LICENSE.txt
[edit]
[-] elements-handlers.min.js
[edit]
[-] nested-carousel.9145d6891784d5818672.bundle.min.js
[edit]
[-] social.deeefd0e3641200f8239.bundle.js
[edit]
[-] form.efd3434e4ecbe4dd5fc6.bundle.js
[edit]
[-] form-submission-admin.js
[edit]
[-] frontend.js
[edit]
[-] woocommerce-my-account.6509f179e93231fa2b6a.bundle.js
[edit]
[-] load-more.bc9573b5d1f73abd80b9.bundle.min.js
[edit]
[-] form-submission-admin.min.js
[edit]
[-] hotspot.70886883c622dd8d5eb2.bundle.js
[edit]
[-] admin.js
[edit]
[-] mega-menu-stretch-content.4648b25d00c1f94cec4e.bundle.js
[edit]
[-] preview.min.js
[edit]
[-] woocommerce-notices.d8c0850de1984ac89f33.bundle.js
[edit]
[-] stripe-button.2acbca466dfeb9585680.bundle.min.js
[edit]
[-] taxonomy-filter.b42e9c10a9d0abc3454e.bundle.min.js
[edit]
[-] 60745ddf42fde6647dbc.bundle.min.js.LICENSE.txt
[edit]
[-] animated-headline.3efc6517c2a055f6c242.bundle.min.js
[edit]
[-] nested-carousel-editor.6337dab68af203be7c04.bundle.min.js
[edit]
[-] display-conditions.js
[edit]
[-] webpack-pro.runtime.min.js
[edit]
[-] app.min.js
[edit]
[-] app.js
[edit]
[-] form.10bf1a6475f0741920ff.bundle.min.js
[edit]
[+]
packages
[-] preloaded-elements-handlers.min.js.LICENSE.txt
[edit]
[-] 98217e0c00e1f53421ef.bundle.js
[edit]
[-] page-transitions.min.js
[edit]
[-] taxonomy-filter.9d41aac2f76c01cfdb42.bundle.js
[edit]
[+]
notes
[-] nav-menu.d43af66e5000fd109c04.bundle.min.js
[edit]
[-] hotspot.6ab1751404c381bfe390.bundle.min.js
[edit]
[-] 60745ddf42fde6647dbc.bundle.min.js
[edit]
[-] search-form.4beabae7f0e0a3129ef7.bundle.js
[edit]
[-] product-add-to-cart.e099bc90899376d00959.bundle.js
[edit]
[-] social.2d2e44e8608690943f29.bundle.min.js
[edit]
[-] video-playlist.74fca1f2470fa6474595.bundle.min.js
[edit]
[-] posts.caaf3e27e57db8207afc.bundle.min.js
[edit]
[-] countdown.be941c879efa861dbbfa.bundle.min.js
[edit]
[-] countdown.60cf02eaf22d71d83f3d.bundle.js
[edit]
[-] mega-menu-editor.319a739ef1260a2b2da1.bundle.min.js
[edit]
[-] portfolio.9a52c1f0953359d74119.bundle.js
[edit]
[-] 4abfbfd970d6f7680bc7.bundle.js
[edit]
[-] loop-carousel.4e8fd6593adbba21698e.bundle.min.js
[edit]
[-] loop-filter-editor.21982d6e76a4fba12cd5.bundle.min.js
[edit]
[-] woocommerce-menu-cart.faa7b80e9ba9e5072070.bundle.min.js
[edit]
[-] menu-title-keyboard-handler.255f6b16a2f292e5c260.bundle.js
[edit]
[-] gutenberg-woocommerce-notice.min.js
[edit]
[-] editor.min.js
[edit]
[-] nested-carousel-editor.2fdc278ce6bc9f6ec2e0.bundle.js
[edit]
[-] archive-posts.d30c917134774f65dd6d.bundle.min.js
[edit]
[-] share-buttons.58e0fcb000aa02df3f24.bundle.js
[edit]
[-] 1b816ba777b14157325b.bundle.min.js
[edit]
[-] display-conditions.min.js
[edit]
[-] custom-code.js
[edit]
[-] loop-carousel.827a11bd7f1b0343de42.bundle.js
[edit]
[-] mega-menu-editor.bbef3f7412481cbce555.bundle.js
[edit]
[-] product-add-to-cart.023d7d31fbf96c3dbdfc.bundle.min.js
[edit]
[-] table-of-contents.82ad797536446d523057.bundle.min.js
[edit]
[-] media-carousel.aca2224ef13e6f999011.bundle.min.js
[edit]
[-] popup.1f90f6cfd0d44ef28772.bundle.js
[edit]
[-] woocommerce-notices.aaa7a3d06f24f7ea6951.bundle.min.js
[edit]
[-] woocommerce-checkout-page.9b1242f2568f94bb8d5c.bundle.js
[edit]
[-] preloaded-elements-handlers.js
[edit]
[-] woocommerce-cart.fc30c6cb753d4098eff5.bundle.min.js
[edit]
[-] menu-title-keyboard-handler.80c53fcbf2fdb487c91d.bundle.min.js
[edit]
[-] slides.fb6b9afd278bb9c5e75b.bundle.min.js
[edit]
[-] paypal-button.3028ea98fc2e17fdfe8f.bundle.js
[edit]
[-] webpack-pro.runtime.js
[edit]
[-] gallery.8ca9a354ce039d1ba641.bundle.min.js
[edit]
[-] mega-menu.bc1b8483f0d497cb1b50.bundle.js
[edit]
[-] paypal-button.3d0d5af7df85963df32c.bundle.min.js
[edit]
[-] carousel.9b02b45d7826c1c48f33.bundle.min.js
[edit]
[-] slides.3b185c687f9167dfae0c.bundle.js
[edit]
[-] woocommerce-my-account.3ee10d01e625dad87f73.bundle.min.js
[edit]
[-] screenshot.js
[edit]
[-] ajax-pagination.bc400e6cb24a14a2ea97.bundle.js
[edit]
[-] woocommerce-purchase-summary.46445ab1120a8c28c05c.bundle.min.js
[edit]
[-] gutenberg-woocommerce-notice.js
[edit]
[-] animated-headline.e4c2ed3934d0df18c40a.bundle.js
[edit]
[-] jszip.vendor.a3c65615c1de5560962d.bundle.js
[edit]
[-] popup.085c1727e36940b18f29.bundle.min.js
[edit]
[-] portfolio.b5c5e89624dc6b81a11a.bundle.min.js
[edit]
[-] preview.js
[edit]
[-] loop.c4d9f09c7596d4e1df61.bundle.js
[edit]
[-] loop-filter-editor.d1bae86a5ed21c0e9981.bundle.js
[edit]
[-] table-of-contents.e67f9eaf44032e14dc57.bundle.js
[edit]
[-] lottie.a00fda0bbf10f9b99eae.bundle.js
[edit]
[-] ajax-pagination.a8dae0f5699fe9733e7d.bundle.min.js
[edit]
[-] code-highlight.28a979661569ddbbf60d.bundle.min.js
[edit]
[-] video-playlist.964a12bbea2078517f07.bundle.js
[edit]
[-] carousel.998a291abf70435fd698.bundle.js
[edit]
[-] share-buttons.08f4daf4a4285a8632b8.bundle.min.js
[edit]
[-] archive-posts.0aae8c3bd7d196797b6c.bundle.js
[edit]
[-] admin.min.js
[edit]
[-] preloaded-elements-handlers.min.js
[edit]
[-] page-transitions.js
[edit]
[-] qunit-tests.js
[edit]
[-] custom-code.min.js
[edit]
[-] woocommerce-purchase-summary.8d56a92f38ab4fc4575f.bundle.js
[edit]
[-] jszip.vendor.99a5b769619f50a6cb60.bundle.min.js
[edit]
[-] lottie.565b778d23c04461c4ea.bundle.min.js
[edit]
[-] nested-carousel.da220b2d6ef36e95bbad.bundle.js
[edit]
[-] loop.e45e73509acb0a350776.bundle.min.js
[edit]
[-] posts.5d2d70b1d6918b6d8205.bundle.js
[edit]
[-] nav-menu.ad2c1632628f619ad9e9.bundle.js
[edit]
[-] search-form.a25a87283d08dad12f18.bundle.min.js
[edit]
[-] load-more.ad89e46f2f6bfd9c27e8.bundle.js
[edit]
[-] stripe-button.b00915f9aec396f7b070.bundle.js
[edit]
[-] code-highlight.8b676d9a001f56fb77fa.bundle.js
[edit]
[-] woocommerce-checkout-page.b18af78282979b6f74e4.bundle.min.js
[edit]
[-] mega-menu.ff65163e28a043660c7b.bundle.min.js
[edit]
[-] progress-tracker.53951a08af7543da98e6.bundle.min.js
[edit]