"use strict"; (self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["accordion"],{ /***/ "../assets/dev/js/frontend/handlers/accordion.js": /*!*******************************************************!*\ !*** ../assets/dev/js/frontend/handlers/accordion.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 _baseTabs = _interopRequireDefault(__webpack_require__(/*! ./base-tabs */ "../assets/dev/js/frontend/handlers/base-tabs.js")); class Accordion extends _baseTabs.default { getDefaultSettings() { const defaultSettings = super.getDefaultSettings(); return { ...defaultSettings, showTabFn: 'slideDown', hideTabFn: 'slideUp' }; } } exports["default"] = Accordion; /***/ }), /***/ "../assets/dev/js/frontend/handlers/base-tabs.js": /*!*******************************************************!*\ !*** ../assets/dev/js/frontend/handlers/base-tabs.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "../node_modules/core-js/modules/esnext.iterator.filter.js"); __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js"); class baseTabs extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { tablist: '[role="tablist"]', tabTitle: '.elementor-tab-title', tabContent: '.elementor-tab-content' }, classes: { active: 'elementor-active' }, showTabFn: 'show', hideTabFn: 'hide', toggleSelf: true, hidePrevious: true, autoExpand: true, keyDirection: { ArrowLeft: elementorFrontendConfig.is_rtl ? 1 : -1, ArrowUp: -1, ArrowRight: elementorFrontendConfig.is_rtl ? -1 : 1, ArrowDown: 1 } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $tabTitles: this.findElement(selectors.tabTitle), $tabContents: this.findElement(selectors.tabContent) }; } activateDefaultTab() { const settings = this.getSettings(); if (!settings.autoExpand || 'editor' === settings.autoExpand && !this.isEdit) { return; } const defaultActiveTab = this.getEditSettings('activeItemIndex') || 1, originalToggleMethods = { showTabFn: settings.showTabFn, hideTabFn: settings.hideTabFn }; // Toggle tabs without animation to avoid jumping this.setSettings({ showTabFn: 'show', hideTabFn: 'hide' }); this.changeActiveTab(defaultActiveTab); // Return back original toggle effects this.setSettings(originalToggleMethods); } handleKeyboardNavigation(event) { const tab = event.currentTarget, $tabList = jQuery(tab.closest(this.getSettings('selectors').tablist)), // eslint-disable-next-line @wordpress/no-unused-vars-before-return $tabs = $tabList.find(this.getSettings('selectors').tabTitle), isVertical = 'vertical' === $tabList.attr('aria-orientation'); switch (event.key) { case 'ArrowLeft': case 'ArrowRight': if (isVertical) { return; } break; case 'ArrowUp': case 'ArrowDown': if (!isVertical) { return; } event.preventDefault(); break; case 'Home': event.preventDefault(); $tabs.first().trigger('focus'); return; case 'End': event.preventDefault(); $tabs.last().trigger('focus'); return; default: return; } const tabIndex = tab.getAttribute('data-tab') - 1, direction = this.getSettings('keyDirection')[event.key], nextTab = $tabs[tabIndex + direction]; if (nextTab) { nextTab.focus(); } else if (-1 === tabIndex + direction) { $tabs.last().trigger('focus'); } else { $tabs.first().trigger('focus'); } } deactivateActiveTab(tabIndex) { const settings = this.getSettings(), activeClass = settings.classes.active, activeFilter = tabIndex ? '[data-tab="' + tabIndex + '"]' : '.' + activeClass, $activeTitle = this.elements.$tabTitles.filter(activeFilter), $activeContent = this.elements.$tabContents.filter(activeFilter); $activeTitle.add($activeContent).removeClass(activeClass); $activeTitle.attr({ tabindex: '-1', 'aria-selected': 'false', 'aria-expanded': 'false' }); $activeContent[settings.hideTabFn](); $activeContent.attr('hidden', 'hidden'); } activateTab(tabIndex) { const settings = this.getSettings(), activeClass = settings.classes.active, $requestedTitle = this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]'), $requestedContent = this.elements.$tabContents.filter('[data-tab="' + tabIndex + '"]'), animationDuration = 'show' === settings.showTabFn ? 0 : 400; $requestedTitle.add($requestedContent).addClass(activeClass); $requestedTitle.attr({ tabindex: '0', 'aria-selected': 'true', 'aria-expanded': 'true' }); $requestedContent[settings.showTabFn](animationDuration, () => elementorFrontend.elements.$window.trigger('elementor-pro/motion-fx/recalc')); $requestedContent.removeAttr('hidden'); } isActiveTab(tabIndex) { return this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]').hasClass(this.getSettings('classes.active')); } bindEvents() { this.elements.$tabTitles.on({ keydown: event => { // Support for old markup that includes an `` tag in the tab if (jQuery(event.target).is('a') && `Enter` === event.key) { event.preventDefault(); } // We listen to keydowon event for these keys in order to prevent undesired page scrolling if (['End', 'Home', 'ArrowUp', 'ArrowDown'].includes(event.key)) { this.handleKeyboardNavigation(event); } }, keyup: event => { switch (event.code) { case 'ArrowLeft': case 'ArrowRight': this.handleKeyboardNavigation(event); break; case 'Enter': case 'Space': event.preventDefault(); this.changeActiveTab(event.currentTarget.getAttribute('data-tab')); break; } }, click: event => { event.preventDefault(); this.changeActiveTab(event.currentTarget.getAttribute('data-tab')); } }); } onInit(...args) { super.onInit(...args); this.activateDefaultTab(); } onEditSettingsChange(propertyName) { if ('activeItemIndex' === propertyName) { this.activateDefaultTab(); } } changeActiveTab(tabIndex) { const isActiveTab = this.isActiveTab(tabIndex), settings = this.getSettings(); if ((settings.toggleSelf || !isActiveTab) && settings.hidePrevious) { this.deactivateActiveTab(); } if (!settings.hidePrevious && isActiveTab) { this.deactivateActiveTab(tabIndex); } if (!isActiveTab) { this.activateTab(tabIndex); } } } exports["default"] = baseTabs; /***/ }) }]); //# sourceMappingURL=accordion.b9a0ab19c7c872c405d7.bundle.js.map developer – Page 6 – Crystal Detailing

Wild Tokyo casinò online Italia – caratteristiche principali della piattaforma

Wild Tokyo casinò online Italia – caratteristiche principali della piattaforma ▶️ GIOCARE Содержимое Procedura di registrazione passo‑passo Opzioni di deposito e prelievo disponibili Tipologie di giochi offerti e fornitori Bonus di benvenuto e promozioni ricorrenti Promozioni settimanali Misure di sicurezza e protezione dei dati Assistenza clienti: canali e orari di supporto Consiglio di provare subito […]

Unlock More Fun: Your Guide to Sol Casino Bonus Offers

Navigating the exciting world of online casinos can be a thrilling adventure, especially when exciting offers are on the table. For those looking to enhance their gaming experience with a little extra bang for their buck, exploring the various promotions available is key. You can discover a wide array of opportunities designed to boost your […]

Dragonia Casino Mobile App: Your Gateway to Gaming Excitement

Embark on a thrilling journey into the world of online gaming, where convenience meets unparalleled excitement. Many players are discovering the seamless experience of accessing their favorite casino games directly from their pockets, and for good reason. The evolution of mobile technology has brought the casino floor to us, and the intuitive design of the […]

Jackpoty Casino Registration: Your Path to Excitement

Embarking on your online gaming journey begins with a simple yet crucial step: the registration process. For those seeking thrilling entertainment and lucrative opportunities, understanding how to initiate your account is paramount. Many players look for a straightforward and secure way to start playing, and this often involves seeking out a reputable platform. Discovering the […]

Spinathlon Online Casino UK – Loyalty Rewards and Casino Features

Spinathlon Online Casino UK – Loyalty Rewards and Casino Features ▶️ PLAY Содержимое Spinathlon’s Tiered VIP Loyalty Program Explained Tier 1 – Bronze & Silver: 0–24,999 points Tier 3 – Gold & Platinum: 25,000+ points Daily SpinPoints Accumulation and Redemption Strategies Exclusive Games and Slot Collections for Loyal Members Tier‑Specific Slot Library Bonus Tournaments for […]

Vavada online casino w Polsce – opinie graczy

Vavada online casino w Polsce – opinie graczy ▶️ GRAĆ Содержимое Jak zarejestrować się w Vavada casino i uzyskać bonus powitalny Czy Vavada casino jest bezpieczne i legalne w Polsce Jak wybrać najlepsze gry i automaty do gry w Vavada casino Vavada to popularna platforma hazardowa, która zyskała dużą popularność wśród polskich graczy. Vavada Polska […]

Retrobet Casino DE – Spiele, Boni und Zahlungsmethoden

Retrobet Casino DE – Spiele, Boni und Zahlungsmethoden ▶️ SPIELEN Содержимое Registrierung und Altersverifikation Einzahlung per Sofortüberweisung Willkommensbonus für neue Spieler Slotauswahl: Klassiker und neue Titel Live-Casino: Tischspiele im Retro‑Stil Kundenservice und Support-Optionen Wir empfehlen, sofort ein Konto bei retrobet casino zu eröffnen, weil das Willkommenspaket bereits nach der ersten Einzahlung freigeschaltet wird. Im retrobet […]

Retrobet Online-Casino – Einzahlungen, Auszahlungen und Zahlungsoptionen

Retrobet Online-Casino – Einzahlungen, Auszahlungen und Zahlungsoptionen ▶️ SPIELEN Содержимое Verfügbare Einzahlungsarten im Überblick Kredit‑ und Debitkarten Alternative Zahlungsmethoden Schritt‑für‑Schritt: Sofortige Einzahlung per Kreditkarte Nutzung von E‑Wallets: PayPal & Skrill bei Retrobet Gebühren‑ und Zeitübersicht Auszahlungsempfehlung: Prüfe täglich dein Limit, um Verzögerungen zu verhindern Bearbeitungszeiten nach Auszahlungsmethode Sicherheitsmaßnahmen bei Geldtransfers im retrobet casino Verschlüsselung und […]

Retrobet Casino DE – Live Casino und Tischspiele

Retrobet Casino DE – Live Casino und Tischspiele ▶️ SPIELEN Содержимое Registrierung und Kontoeröffnung für das Live Casino Schritt‑für‑Schritt‑Anleitung Verifizierungszeit Übersicht der verfügbaren Live‑Dealer Spiele Roulette & Baccarat Poker & Spezialspiele Einsatzlimits und Wettoptionen an den Tischspielen Strategische Tipps für unterschiedliche Wettarten Strategische Tipps für Blackjack und Roulette im Live-Format Bonus- und Promotionangebote im Live […]

Snatch Casino Registration: Your Gateway to Online Gaming

Embarking on the digital casino journey can be an exhilarating experience, offering a vast array of entertainment and potential rewards right at your fingertips. For those looking to dive into this exciting world, understanding the initial steps is crucial, and for many, this begins with a straightforward process such as exploring the options available at […]