"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 8 – Crystal Detailing

20bet Casino Mobile App: Your Pocket-Sized Gaming Hub

Embarking on the exciting world of online casinos has never been more accessible or convenient, especially for players who prefer gaming on the go. The digital landscape is constantly evolving, and for those seeking a seamless mobile experience, exploring options like the 20bet Casino Mobile App is a prime consideration. This comprehensive overview delves into […]

Fraga Kazino oyun çeşidi – hansı oyunlar mövcuddur

Fraga Kazino oyun çeşidi – hansı oyunlar mövcuddur ▶️ OYNA Содержимое Slot Oyunları Bonus və Faydalar Əlverişli Masalar Canlı Dealer Qeydləri Sport Qumarçılıq və Biletlər Bonus və Promo Kodlar Fraga Kazino İstifadəçilərinə Ümumi Xərəkətlər Çevik Ödəniş Sistemləri Fraga Kazinoda Mükəmməllik Oyunların Üzrə Təlqin Slot Oyunları Fraga kazinoda ən çox rağbat görən slotlar arasında, fraga kazino […]

Online casinon med stora bonusar i Sverige

Online casinon med stora bonusar i Sverige ▶️ SPELA Содержимое Hur valja rätt casino med bonus i Sverige Topplistan över nya online casino med stora bonusar i Sverige Sammanfattning: Hur du kan maximera bonusen på ditt favoritcasino Nya svenska casino erbjuder spelare fantastiska chanser att njuta av online spel och stora bonusar. Dessa nya online […]

Kasyno online Vulkan Vegas – Niezawodność i recenzje graczy

Kasyno online Vulkan Vegas – Niezawodność i recenzje graczy ▶️ GRAĆ Содержимое Bezpieczeństwo i ochrona danych w kasynie Vulkan Vegas Metody płatności w kasynie Vulkan Vegas Wydajność i responsywność strony internetowej kasyna Opinie i doświadczenia graczy z kasynem Vulkan Vegas Jeśli szukasz niezawodnego kasyna online, Vulkan Vegas jest jednym z najlepszych wyborów. Vulkan Vegas 91 […]

Unlock Excitement: Mastering the 24casino Bonus Landscape

Embarking on the online casino journey can be an exhilarating experience, offering a vast array of games and entertainment from the comfort of your home. For players seeking to maximize their gaming potential and explore the diverse offerings, understanding the nuances of available promotions is paramount. Savvy players often begin their exploration by looking into […]

Shotz Casino Login: Navigating Your Best Online Gaming Choices

Embarking on the digital casino journey can feel like stepping into a vast, glittering metropolis, filled with endless possibilities and exciting avenues to explore. Each platform offers a unique flavour, a distinct atmosphere, and a different set of temptations designed to capture your attention and keep you engaged. For those in New Zealand looking for […]

ArtCasino casino online – métodos de pago y tiempos de retirada

ArtCasino casino online – métodos de pago y tiempos de retirada ▶️ JUGAR Содержимое Métodos de pago habilitados en ArtCasino Procedimiento para depositar con tarjetas de crédito Uso de monederos electrónicos: pasos y consideraciones Transferencias bancarias: plazos y costos Consejos para agilizar la transferencia Cómo solicitar y recibir tu retiro rápidamente Resolución de problemas comunes […]

ArtCasino Online-Casino – Einzahlungen, Auszahlungen und Zahlungsoptionen

ArtCasino Online-Casino – Einzahlungen, Auszahlungen und Zahlungsoptionen ▶️ SPIELEN Содержимое Verfügbare Einzahlungsmethoden und ihre Gebühren Schnelle Kreditkarten‑Einzahlung: Vorgehensweise und Limits E‑Wallets bei ArtCasino: Vorteile und Sicherheitsaspekte Auszahlung per Banküberweisung: Dauer und erforderliche Dokumente Auszahlungslimits und Verifizierung: Was Spieler wissen müssen Tipps zur Optimierung von Ein‑ und Auszahlungen im ArtCasino Nutzen Sie Sofortüberweisung für Einzahlungen, weil […]

ArtCasino casino España – seguridad y protección de los jugadores

ArtCasino casino España – seguridad y protección de los jugadores ▶️ JUGAR Содержимое Licencias y regulaciones que respaldan la fiabilidad de ArtCasino Protocolos de encriptación y protección de datos personales Cifrado de datos en reposo Protección de datos personales Medidas anti‑fraude y detección de actividades sospechosas Herramientas de juego responsable para los usuarios Temporizadores de […]

ArtCasino Online-Casino – Einzahlungen, Auszahlungen und Zahlungsoptionen

ArtCasino Online-Casino – Einzahlungen, Auszahlungen und Zahlungsoptionen ▶️ SPIELEN Содержимое Wie man bei ArtCasino Einzahlungen per Kreditkarte tätigt Schritt‑für‑Schritt-Anleitung Tipps für eine reibungslose Transaktion Mobile Geldtransfer: Einzahlen über Apple Pay und Google Pay Sofort/Klarna – Schritt‑für‑Schritt Anleitung für Einzahlungen bei artcasino de Auszahlung per Banküberweisung: Verifizierung und Bearbeitungszeiten Verifizierungsschritte und typische Zeiten E‑Geldbörsen nutzen: Auszahlung mit Skrill, […]