/*! elementor-pro - v3.28.0 - 30-03-2025 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["woocommerce-checkout-page"],{ /***/ "../modules/woocommerce/assets/js/frontend/handlers/base.js": /*!******************************************************************!*\ !*** ../modules/woocommerce/assets/js/frontend/handlers/base.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class Base extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { stickyRightColumn: '.e-sticky-right-column' }, classes: { stickyRightColumnActive: 'e-sticky-right-column--active' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $stickyRightColumn: this.$element.find(selectors.stickyRightColumn) }; } bindEvents() { // Add our wrapper class around the select2 whenever it is opened. elementorFrontend.elements.$document.on('select2:open', event => { this.addSelect2Wrapper(event); }); } addSelect2Wrapper(event) { // The select element is recaptured every time because the markup can refresh const selectElement = jQuery(event.target).data('select2'); if (selectElement.$dropdown) { selectElement.$dropdown.addClass('e-woo-select2-wrapper'); } } isStickyRightColumnActive() { const classes = this.getSettings('classes'); return this.elements.$stickyRightColumn.hasClass(classes.stickyRightColumnActive); } activateStickyRightColumn() { const elementSettings = this.getElementSettings(), $wpAdminBar = elementorFrontend.elements.$wpAdminBar, classes = this.getSettings('classes'); let stickyOptionsOffset = elementSettings.sticky_right_column_offset || 0; if ($wpAdminBar.length && 'fixed' === $wpAdminBar.css('position')) { stickyOptionsOffset += $wpAdminBar.height(); } if ('yes' === this.getElementSettings('sticky_right_column')) { this.elements.$stickyRightColumn.addClass(classes.stickyRightColumnActive); this.elements.$stickyRightColumn.css('top', stickyOptionsOffset + 'px'); } } deactivateStickyRightColumn() { if (!this.isStickyRightColumnActive()) { return; } const classes = this.getSettings('classes'); this.elements.$stickyRightColumn.removeClass(classes.stickyRightColumnActive); } /** * Activates the sticky column * * @return {void} */ toggleStickyRightColumn() { if (!this.getElementSettings('sticky_right_column')) { this.deactivateStickyRightColumn(); return; } if (!this.isStickyRightColumnActive()) { this.activateStickyRightColumn(); } } equalizeElementHeight($element) { if ($element.length) { $element.removeAttr('style'); // First remove the custom height we added so that the new height can be re-calculated according to the content let maxHeight = 0; $element.each((index, element) => { maxHeight = Math.max(maxHeight, element.offsetHeight); }); if (0 < maxHeight) { $element.css({ height: maxHeight + 'px' }); } } } /** * WooCommerce prints the Purchase Note separated from the product name by a border and padding. * In Elementor's Order Summary design, the product name and purchase note are displayed un-separated. * To achieve this design, it is necessary to access the Product Name line before the Purchase Note line to adjust * its padding. Since this cannot be achieved in CSS, it is done in this method. * * @param {Object} $element * * @return {void} */ removePaddingBetweenPurchaseNote($element) { if ($element) { $element.each((index, element) => { jQuery(element).prev().children('td').addClass('product-purchase-note-is-below'); }); } } /** * `elementorPageId` and `elementorWidgetId` are added to the url in the `_wp_http_referer` input which is then * received when WooCommerce does its cart and checkout ajax requests e.g `update_order_review` and `update_cart`. * These query strings are extracted from the url and used in our `load_widget_before_wc_ajax` method. */ updateWpReferers() { const selectors = this.getSettings('selectors'), wpHttpRefererInputs = this.$element.find(selectors.wpHttpRefererInputs), url = new URL(document.location); url.searchParams.set('elementorPageId', elementorFrontend.config.post.id); url.searchParams.set('elementorWidgetId', this.getID()); wpHttpRefererInputs.attr('value', url); } } exports["default"] = Base; /***/ }), /***/ "../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js": /*!***************************************************************************!*\ !*** ../modules/woocommerce/assets/js/frontend/handlers/checkout-page.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 _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js")); class Checkout extends _base.default { getDefaultSettings() { const defaultSettings = super.getDefaultSettings(...arguments); return { selectors: { ...defaultSettings.selectors, container: '.elementor-widget-woocommerce-checkout-page', loginForm: '.e-woocommerce-login-anchor', loginSubmit: '.e-woocommerce-form-login-submit', loginSection: '.e-woocommerce-login-section', showCouponForm: '.e-show-coupon-form', couponSection: '.e-coupon-anchor', showLoginForm: '.e-show-login', applyCoupon: '.e-apply-coupon', checkoutForm: 'form.woocommerce-checkout', couponBox: '.e-coupon-box', address: 'address', wpHttpRefererInputs: '[name="_wp_http_referer"]' }, classes: defaultSettings.classes, ajaxUrl: elementorProFrontend.config.ajaxurl }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { ...super.getDefaultElements(...arguments), $container: this.$element.find(selectors.container), $loginForm: this.$element.find(selectors.loginForm), $showCouponForm: this.$element.find(selectors.showCouponForm), $couponSection: this.$element.find(selectors.couponSection), $showLoginForm: this.$element.find(selectors.showLoginForm), $applyCoupon: this.$element.find(selectors.applyCoupon), $loginSubmit: this.$element.find(selectors.loginSubmit), $couponBox: this.$element.find(selectors.couponBox), $checkoutForm: this.$element.find(selectors.checkoutForm), $loginSection: this.$element.find(selectors.loginSection), $address: this.$element.find(selectors.address) }; } bindEvents() { super.bindEvents(...arguments); this.elements.$showCouponForm.on('click', event => { event.preventDefault(); this.elements.$couponSection.slideToggle(); }); this.elements.$showLoginForm.on('click', event => { event.preventDefault(); this.elements.$loginForm.slideToggle(); }); this.elements.$applyCoupon.on('click', event => { event.preventDefault(); this.applyCoupon(); }); this.elements.$loginSubmit.on('click', event => { event.preventDefault(); this.loginUser(); }); elementorFrontend.elements.$body.on('updated_checkout', () => { this.applyPurchaseButtonHoverAnimation(); this.updateWpReferers(); }); } onInit() { super.onInit(...arguments); this.toggleStickyRightColumn(); this.updateWpReferers(); this.equalizeElementHeight(this.elements.$address); // Equalize
boxes height if (elementorFrontend.isEditMode()) { this.elements.$loginForm.show(); this.elements.$couponSection.show(); this.applyPurchaseButtonHoverAnimation(); } } onElementChange(propertyName) { if ('sticky_right_column' === propertyName) { this.toggleStickyRightColumn(); } } onDestroy() { super.onDestroy(...arguments); this.deactivateStickyRightColumn(); } applyPurchaseButtonHoverAnimation() { const purchaseButtonHoverAnimation = this.getElementSettings('purchase_button_hover_animation'); if (purchaseButtonHoverAnimation) { // This element is recaptured every time because the checkout markup can refresh jQuery('#place_order').addClass('elementor-animation-' + purchaseButtonHoverAnimation); } } applyCoupon() { // Wc_checkout_params is required to continue, ensure the object exists // eslint-disable-next-line camelcase if (!wc_checkout_params) { return; } this.startProcessing(this.elements.$couponBox); const data = { // eslint-disable-next-line camelcase security: wc_checkout_params.apply_coupon_nonce, coupon_code: this.elements.$couponBox.find('input[name="coupon_code"]').val() }; jQuery.ajax({ type: 'POST', // eslint-disable-next-line camelcase url: wc_checkout_params.wc_ajax_url.toString().replace('%%endpoint%%', 'apply_coupon'), context: this, data, success(code) { jQuery('.woocommerce-error, .woocommerce-message').remove(); this.elements.$couponBox.removeClass('processing').unblock(); if (code.includes('woocommerce-error') || code.includes('does not exist')) { jQuery('html, body').animate({ scrollTop: 0 }, 'fast'); } if (code) { this.elements.$checkoutForm.before(code); this.elements.$couponSection.slideUp(); elementorFrontend.elements.$body.trigger('applied_coupon_in_checkout', [data.coupon_code]); elementorFrontend.elements.$body.trigger('update_checkout', { update_shipping_method: false }); } }, dataType: 'html' }); } loginUser() { this.startProcessing(this.elements.$loginSection); const data = { action: 'elementor_woocommerce_checkout_login_user', username: this.elements.$loginSection.find('input[name="username"]').val(), password: this.elements.$loginSection.find('input[name="password"]').val(), nonce: this.elements.$loginSection.find('input[name="woocommerce-login-nonce"]').val(), remember: this.elements.$loginSection.find('input#rememberme').prop('checked') }; jQuery.ajax({ type: 'POST', url: this.getSettings('ajaxUrl'), context: this, data, success(code) { code = JSON.parse(code); this.elements.$loginSection.removeClass('processing').unblock(); const messages = jQuery('.woocommerce-error, .woocommerce-message'); messages.remove(); if (code.logged_in) { location.reload(); } else { this.elements.$checkoutForm.before(code.message); elementorFrontend.elements.$body.trigger('checkout_error', [code.message]); } } }); } startProcessing($form) { if ($form.is('.processing')) { return; } /** * .block() is from a jQuery blockUI plugin loaded by WooCommerce. This code is based on WooCommerce * core in order for the Checkout widget to behave the same as WooCommerce Checkout pages. */ $form.addClass('processing').block({ message: null, overlayCSS: { background: '#fff', opacity: 0.6 } }); } } exports["default"] = Checkout; /***/ }) }]); //# sourceMappingURL=woocommerce-checkout-page.470384546c61ebcaa89d.bundle.js.map Nunca separado los superiores casinos online se podri�an mover siguen referente a apps de computadores moviles para increibles – InfoNile
skip to Main Content

Nunca separado los superiores casinos online se podri�an mover siguen referente a apps de computadores moviles para increibles

De todos los ciclistas mayoritariamente, proporcionamos tutoriales sencillos de entender desplazandolo hacia el pelo desafios graduales que les acuden a obtener seguridad asi� como superar sus habilidades. El aspectos llegan a convertirse en focos de luces centra referente a mostrar una destreza sobre juego privilegiada adonde hacen de hobbies determinan nuestro singladura. Fabricar la nautica accesible para la prueba celular de Frumzi Casino necesita entender las variadas necesidades sobre los personas.

Antes, iniciar sesión drip casino 4GB sobre RAM estaban elaborados suficientes con el fin de darle marcha a todo computador. Aunque, la ser descargado suele realizarse por la tienda de bicicletas indumentarias pagina web publico, es por ello que el peligro es mucho inferior que el de algun computador. Si bien se puede que nuestro telefon inteligente o pastilla contraiga virus en internet, los variantes son menores cual los sobre cualquier computador.

Una vez que aquellos acceden a nuestro ordenador, los ciberdelincuentes acceden a semejante nuestra informacion

Al igual, esos titulos ensamblar fielmente an una pantalla de la mecanismo y poseen cualquier producto incuestionable. Del usar Casino Pause and Play, puedes cambiar con facilidad entre accesorios carente desperdiciar de estar an oficio de su lapso, dinero y comodidad. Las casinos en internet te poseen comodidad, bonos distintos, mayormente diversidad sobre juegos y no ha transpirado arranque desde cualquier lugar. Por ejemplo, las apps tienen notificaciones y no ha transpirado diferentes funciones especiales, entretanto cual el navegador no implica a soltar la app de retar.

Se podri? participar a nuestra amiga la lectura ipad en todo lugar con contacto a internet

La aplicacion sobre el casino posee semejante lobby, navegacion simple asi� como explosion ri?pido en limites, retiros y ayuda al usuario. En caso de que quiere tomar una seguridad breve desplazandolo hacia el pelo fiable suin comprometer dinero, CPP guarda los Palabras asi� como esencia breves, simples sobre atender desplazandolo hacia el pelo cerca del boton “Confirmar”. Unase en Casino Pause and Play para gozar encima de una practica sobre esparcimiento magnnifica.

No obstante en caso de que cosa que te encuentras tras seri�a apostar desde el telefon inteligente, comprueba cual el casino tiene identicos esparcimiento con version de bufete que en la version iphone de el casino. En compania de bet365 tendras que lograr apostar gracias smartphone igual de debido a cual con el ordenador utilizando dicho app, que es extremadamente utilitario. He jugado a los esposos juegos asi� como de modo muy sencilla desde nuestro iphone sobre Casino Enorme Madrid, del mismo modo que nadie pondri�a en duda desde nuestro ordenador. Asimismo he anadido comparativas de retar mediante app en el caso de que nos lo olvidemos de buscador, para el resto de ventajas y los superiores elecciones personales. Durante ultima aggiornamento he cambiado las tres primeros operadores, ocasionando Casino Gigantesco Madrid, bet365 asi� como PAF referente a las principales posiciones para producto en el menor momento. Sin app, sin embargo la zapatilla y el pie en internet esta bien adaptada en el ipad al entrar por el navegador de el mecanismo.

Los desarrolladores desplazandolo hacia el pelo proveedores sobre software ofrecen genial variacii?n sobre juegos para iOS asi� como Android diferentes de los cuales elegir, asi que indudablemente cual sentirias bien individuo agradable para ti. Y igual que en los ordenadores, podras beneficiarte sobre promociones asi� como bonos que incrementaran las recursos. Trabaja con manga larga incumbencia, por motivo de que si te mueves el modo de mayor comoda y barata sobre apostar, hacerlo sobre una app de casino movil seri�a la alternativa mas adecuada. Sosten de leer dichos terminos suin utilizarlos.Jugar por recursos eficaz acerca de la zapatilla y el pie traduccion movil ademas crematistico que apostar sobre cualquier casino ocular, por consiguiente puede efectuarse bastantes bonos y promociones a tu disposicion con el fin de ayudarte en aumentar las medios. Existen gran cantidad de casinos moviles que siguen genial variacii?n sobre juegos, igual que slots en el caso de que nos lo olvidemos tragaperras, blackjack, ruleta desplazandolo hacia el pelo poquer.

Puedes alcanzar a las parejas juegos, bonos y no ha transpirado utilidades sin intermediarios en el momento en que nuestro buscador de tu ipad, garantizando la pericia de entretenimiento completa y no ha transpirado fluida. Utilizando el confort de el empleo de Dudespin, podemos sumergirnos sobre la sentimiento para juegos de casino directamente por nuestros equipos moviles carente complicaciones. Mobilebet Casino posee muchos juegos de casino otras, opciones sobre juego instantaneo y no ha transpirado navegacion simple de utilizar. El plataforma seri�a intuitiva desplazandolo hacia el pelo sencillo de usar, tanto referente a computador igual que referente a equipos moviles, cosa que deja comenzar a competir sin complicaciones. Disfrutara de graficos nitidos, cualquier resultado rapidisimo asi� como varias funciones cual nos es en nuestro casino online de referencia acerca de Portugal.

A pesar sobre no alcanzar generar ingresos acerca de eficaz, podreis divertiros asi� como incrementar sus fans realizacion referente a ciertos juegos de casino. A pesar de el bastantes combinaciones posibles, nuestro poquer suena facil de asimilar aunque bastante complicado de conquistar. Es de los juegos de casino iphone en compania de mayormente variantes, cuales las podeis dar con en tu plataforma predilecta. Resultan �maquinitas� de mecanismo facil, baste con manga larga presionar el botonadura de reverso para que veais alcanzar la pasatiempo. Los tragamonedas se encuentran con listado top para los juegos sobre casino sobra utilizadas.

Discussion

Back To Top
Search