/*! elementor-pro - v3.30.0 - 01-07-2025 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["loop-filter-editor"],{ /***/ "../modules/loop-filter/assets/js/editor/module.js": /*!*********************************************************!*\ !*** ../modules/loop-filter/assets/js/editor/module.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _taxonomyFilter = _interopRequireDefault(__webpack_require__(/*! ./taxonomy-filter */ "../modules/loop-filter/assets/js/editor/taxonomy-filter.js")); class LoopFilter extends elementorModules.editor.utils.Module { onElementorInit() { this.taxonomyFilter = new _taxonomyFilter.default('taxonomy-filter'); } } exports["default"] = LoopFilter; /***/ }), /***/ "../modules/loop-filter/assets/js/editor/taxonomy-filter.js": /*!******************************************************************!*\ !*** ../modules/loop-filter/assets/js/editor/taxonomy-filter.js ***! \******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; const ElementEditorModule = __webpack_require__(/*! elementor-pro/editor/element-editor-module */ "../assets/dev/js/editor/element-editor-module.js"); module.exports = ElementEditorModule.extend({ __construct() { this.cache = {}; ElementEditorModule.prototype.__construct.apply(this, arguments); }, onInit() { elementor.channels.editor.on('editor:widget:taxonomy-filter:section_taxonomy_filter:activated', this.onTaxonomyFilterSectionActive); }, onTaxonomyFilterSectionActive() { this.updateSelectedElementOptions(); const selectedElementControlView = this.getEditorControlView('selected_element'), selectedElementControlValue = selectedElementControlView.getControlValue(); if (selectedElementControlValue) { this.updateTaxonomyOptions(selectedElementControlValue); } }, updateSelectedElementOptions() { const selectedElementControlView = this.getEditorControlView('selected_element'), selectedElementControlValue = selectedElementControlView.getControlValue(), selectedElement = !!selectedElementControlValue ? elementor.$previewContents[0].querySelector(`[data-elementor-id="${elementor.config.document.id}"] .elementor-element-${selectedElementControlValue}`) : ''; if (!selectedElement) { selectedElementControlView.setValue(''); } const loopWidgets = elementor.$previewContents[0].querySelectorAll(`[data-elementor-id="${elementor.config.document.id}"] .elementor-widget-loop-grid`), selectedElementControlOptions = { '': __('Select a widget', 'elementor-pro') }; if (!loopWidgets.length) { this.updateOptions('selected_element', selectedElementControlOptions); selectedElementControlView.setValue(''); } let index = 1; for (const loopWidget of loopWidgets) { selectedElementControlOptions[loopWidget.dataset.id] = `${__('Loop Grid', 'elementor-pro')} ${index++}`; } this.updateOptions('selected_element', selectedElementControlOptions); }, onElementChange(setting, controlView) { if ('selected_element' !== setting) { return; } const controlValue = controlView.getControlValue(); if (controlValue) { this.updateTaxonomyOptions(controlValue); } else { this.updateOptions('taxonomy', { '': __('Select a taxonomy', 'elementor-pro') }); } }, getPostSourceQueryPostType(loopWidgetContainer) { const querySource = loopWidgetContainer.settings.attributes.post_query_post_type; let queryPostType = ''; switch (querySource) { case 'current_query': queryPostType = elementorPro.config.loopFilter.mainQueryPostType; break; case 'by_id': // Currently 'by ID' is not supported since it can include multiple post types. queryPostType = 'post'; break; case 'related': queryPostType = 'post'; break; default: queryPostType = querySource; } return queryPostType; }, getLoopQueryPostType(loopWidgetId) { const loopWidgetContainer = elementor.getContainer(loopWidgetId); const loopSource = loopWidgetContainer.settings.attributes._skin; if ('post' === loopSource) { return this.getPostSourceQueryPostType(loopWidgetContainer); } return 'product'; }, updateTaxonomyOptions(loopWidgetId) { // TODO: Add control spinner. const postType = this.getLoopQueryPostType(loopWidgetId); const postTypeTaxonomies = this.getPostTypeTaxonomies(postType).then(response => { if (!(response instanceof Response)) { return response; } else if (!response.ok || 400 <= response.status) { this.displayErrorDialog(); return {}; } return response.json(); }).catch(() => { this.displayErrorDialog(); return {}; }).then(response => { let data = response?.data || response; if (!Object.keys(data).length) { this.updateOptions('taxonomy', { '': __('No taxonomies found', 'elementor-pro') }); return; } data = { ...{ '': __('Select a taxonomy', 'elementor-pro') }, ...data }; this.cache[postType] = data; this.updateOptions('taxonomy', data); }); return postTypeTaxonomies; }, /** * * @param {string} postType * @return {Promise} Promise that should resolve with taxonomies data. */ getPostTypeTaxonomies(postType) { if (this.cache[postType] && Object.keys(this.cache[postType]).length) { return Promise.resolve(this.cache[postType]); } return this.fetchPostTypeTaxonomies(postType); }, fetchPostTypeTaxonomies(postType) { return fetch(`${elementorCommon.config.urls.rest}elementor-pro/v1/get-post-type-taxonomies`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-WP-Nonce': elementorWebCliConfig.nonce }, body: JSON.stringify({ post_type: postType }) }); }, displayErrorDialog() { elementorCommon.dialogsManager.createWidget('alert', { id: 'e-filter-error-message', className: 'e-filter__error-message', headerMessage: __('Something went wrong', 'elementor-pro'), message: __('We are experiencing technical difficulties on our end. Please try again to reconnect.', 'elementor-pro'), position: { my: 'center center', at: 'center center' }, strings: { confirm: __('OK', 'elementor-pro') } }).show(); } }); /***/ }) }]); //# sourceMappingURL=loop-filter-editor.46a4c013b80a381a50c9.bundle.js.map.flexa-counter{box-sizing:border-box}.flexa-counter__list{display:grid;gap:32px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.flexa-counter__item{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-start}.flexa-counter__row{align-items:center;display:flex;flex-direction:row;gap:.5em}.flexa-counter__icon{align-items:center;display:inline-flex;justify-content:center;line-height:1}.flexa-counter__icon img,.flexa-counter__icon svg{display:block;height:100%;width:100%}.flexa-counter__number{align-items:baseline;display:flex;flex-direction:row;gap:.1em;justify-content:center;line-height:1}.flexa-counter__value{font-variant-numeric:tabular-nums}.flexa-counter__label{display:block}.flexa-counter__separator{border-top:0 solid;display:block}@media(min-width:1025px){.flexa-counter.flexa-hide-desktop{display:none!important}}@media(min-width:768px)and (max-width:1024px){.flexa-counter.flexa-hide-tablet{display:none!important}}@media(max-width:767px){.flexa-counter.flexa-hide-mobile{display:none!important}} Better Online casinos which 500 free spins no deposit casino have $three hundred No-deposit Incentive Uncategorized – Page Array – funnwurkz2

Extra 25% off with code SUMMER25.

Shop Your Favorite League

  • NFL
  • NBA
  • WNBA
  • COLLEGES
  • MLB
  • NHL
  • MLS
  • NASCAR
Select a Team

Better Online casinos which 500 free spins no deposit casino have $three hundred No-deposit Incentive

Check in having fun with our personal hook up now and enter the zero-deposit bonus password to claim their totally free spins. At the same time, you may enjoy a a hundred% suits incentive to A good$five hundred, as well as 100 100 percent free revolves together with your basic put from A great$20 or even more. Build your the fresh account now using our very own exclusive link to rating started. Continue reading “Better Online casinos which 500 free spins no deposit casino have $three hundred No-deposit Incentive”

Casino-Bonus bloß casinospiele mit den besten gewinnchancen Einzahlung Neue Angebote 2026

Meist verhalten nachfolgende Angeschlossen Casinos unser entsprechende Runde im vorfeld, in manchen Fällen kann unter mehreren Slots eines bestimmten Spieleherstellers gewählt werden. In Eingabe des Bonuscodes anbrechen Sie reibungslos unser betreffende Durchgang & im griff haben Die Freispiele sofort vorteil. Continue reading “Casino-Bonus bloß casinospiele mit den besten gewinnchancen Einzahlung Neue Angebote 2026”

Coyote Moon Harbors Servers from the IGT Free Ports On Vikings casino slots line in the 2024

Sunshine & Moonlight really well balance the newest difficulty of contemporary slot framework to your classic attractiveness of an easy 5×step 3 position grid. Read this on the web position opinion to have inside the-breadth information for the just how this video game try played and you may exactly what establishes it apart from almost every other on the internet slot machines. Both wilds regarding the slot game are signs of your moon plus the sunshine. Continue reading “Coyote Moon Harbors Servers from the IGT Free Ports On Vikings casino slots line in the 2024”

Casino Online Jämför Bästa Svenska Slot santas wild ride Casinon 2026 lista

Som udstrakt nævnte over, er heri slig en hel del forskellige typer af sted online-spilsteder sikken danske spillere, at det kan eksistere overvældende. Når som helst virk ikke sandt har set din foretrukne type idræt yderliger online denne beskaffenhed, slig er heri ikke bund til bekymring. At musikus skuespil i skrabelodder, eSport plu nyhedsspil er alle mulige online vores anbefalede bedste sider pr. Continue reading “Casino Online Jämför Bästa Svenska Slot santas wild ride Casinon 2026 lista”

Sweet Bonanza 100 percent free Gamble in the Demonstration casino unibet mobile Mode & Remark

These arbitrary areas of expertise seem to are available, nonetheless they do not usually result in profitable a reward. Sign up with our required the newest gambling enterprises to experience the brand new slot game and have an informed greeting extra also offers for 2024. You could also is to experience the brand new Super Sevens video slot from the Belatra Video game. That one have a much more classic be to it, however, keeps the five-reel build which have four paylines. Continue reading “Sweet Bonanza 100 percent free Gamble in the Demonstration casino unibet mobile Mode & Remark”

Sweet Bonanza 2500 Kundgebung: Power Stars Deutschland Slots kostenfrei zum besten geben bloß Eintragung

Sweet Bonanza besticht durch seine lebendige unter anderem farbenfrohe Design, unser Zocker as part of die Erde voller Naschwerk ferner Früchte entführt. Ihr Folie zeigt die eine idyllische Zuckerlandschaft unter einsatz von Bonbonbäumen, Schokofelsen unter anderem einem leuchtend blauen Himmelsphäre. Unser Symbole man sagt, sie seien detailliert & appetitlich gestaltet, wodurch jedes Zuckerl unter anderem jede Obst zum Anbeißen aussieht. Continue reading “Sweet Bonanza 2500 Kundgebung: Power Stars Deutschland Slots kostenfrei zum besten geben bloß Eintragung”