/*! 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 Levante procedimiento estaria pensado para ser ri?pido y con total seguridad, protegiendo las textos de toda la vida desde el arranque – InfoNile
skip to Main Content

Levante procedimiento estaria pensado para ser ri?pido y con total seguridad, protegiendo las textos de toda la vida desde el arranque

En cierta ocasion instalada una App Casino Genial Madrid, el desarrollo con el fin de producir una cuenta seri�a asimismo intuitivo, permitiendote configurar tu perfil desplazandolo hacia el pelo prepararte de la accion sin demorasenzar su aventura sobre nuestro Casino Gigantesco Madrid Movi seri�a un transcurso veloz AdmiralBet asi� como adecuado. Asimismo, alrededor existir instalada la App Casino Enorme Madrid, seras el primeramente referente a informarte de modelos promociones y leeras sobre como ajustar las notificaciones que recibes. Por eso, es necesario volcado todo nuestra vivencia acerca de ejecutar una aplicacion que nunca unicamente cumple, estrella que pasari�a tus salidas.

Igualmente, informamos cual los posiciones destacadas sobre las rankings fueron pagadas por los operadores

Sobre Time2play proporcionamos ofertas de casino y apuestas zapatillas de deporte personalizadas mediante enlaces de afiliados, teniendo una mision por lo tanto por absolutamente las operadores que no tiene costo de usted en el momento de hacer un deposito. Despues encontraras una eleccion de casinos cual destacan debido a la celeridad sobre sus propias pagos, la fiabilidad sobre sus procesos y la transparencia en sus condiciones. Pero los plazos podran diferir conforme el cirujano y no ha transpirado el metodo elegido, tenemos plataformas que procesan los retiradas de manera veloz y no ha transpirado con caracteristicas definidas.

El Casino Genial Madrid Online ofrece la habilidad sobre juego total asi� como fiable, es invierno autorizacion de juego expedida debido a la Gobierno Global de Ordenacion de el Entretenimiento (DGOJ) asegura que demasiadas operaciones vienen conforme a la legislatura vivo, lo cual da a las personas un marco de entretenimiento competente, seguro desplazandolo hacia el pelo casado usando entretenimiento responsable. Ademas, con parte sobre asistencia de el website existen un lejano de preguntas serios organizado para clasificaciones donde se pueden hallar las respuestas a las cuestiones sobra comunes con su usuario, de que forma participar, metodos de remuneracion, bonos y entretenimiento fiable. Acerca de cualquier ambito de esparcimiento indudablemente, una resguardo del cliente es fundamental, por eso, tras el registro, debemos completar nuestro proceso sobre demostracion de modo de ser. Las juegos de su folleto estan certificados por la DGOJ, felicidad declaracion se va a apoyar sobre el silli�n concede en cierta ocasion el entretenimiento ocurre con exito los competiciones de justicia, transparencia asi� como aleatoriedad exigidas por la legislatura actual. Nuestro Casino Gran Madrid En internet posee atribucion de la Gobierno Global sobre Ordenacion del Juego (DGOJ), tronco cual regula y no ha transpirado supervisa una labor para operadores sobre esparcimiento en internet sobre Ciertas zonas de espana, lo cual asegura algun escenario sobre juego facultado asi� como seguro dentro del proceder pobre cualquier marco regulatorio.

Una plataforma colabora con el pasar del tiempo acoples 30 niveles sobre software famosos mundialmente para garantizar variacii?n y no ha transpirado clase referente a cada clase de juego. Una coleccion sobre juegos de Casino Gran Madrid pasari�a las 2,500 importes, abarcando un monton de clasificaciones populares del juego online. Los usuarios VIP sobre Casino Gran Madrid acceden a torneos Drops & Wins que usan premios garantizados sobre inclusive �50,000 cada mes, gestores de cuenta customizados y no ha transpirado limites de jubilacion prioritarios cual podran regresar los �diez,000 diarios. La prediccion del bono necesitan cualquier requisito de puesta sobre 35x acerca del monto de el bono en obtener jubilar los ganancias. La publicidad comprende cincuenta giros gratuito en la popular slot Book of Dead, activados automaticamente buscando terminar nuestro sometimiento y no ha transpirado realizar el deposito insignificante de �30. Las mas usuarios de Casino Gigantesco Madrid podrian reclamar un largo bono de recibimiento del 500% incluso �100 acerca de su primer deposito.

Consulta los casinos con el pasar del tiempo procesos de retirada sobra graciles desplazandolo hacia el pelo caracteristicas definidas

Asimismo, es posible usar pronosticos asi� como tuercas, tornillos y bicicletas en la medio con el fin de encaminarse alternativas informadas. Habitualmente, este operador es una posibilidad digna con el fin de algunos que quieren una habilidad sobre apuestas de calidad y no ha transpirado una medio que inscribiri? adapte en las exigencias. Hay productos de facilitarte a comprender conveniente el lugar y tambien una total division sobre cuestiones solventes. Si tendri�as mas preguntas de de que forma elaborar apuestas, apelar su primer jubilacion, u otra otra ser, sobre la division de �Ayuda� del Casino Enorme Madrid tenemos gran cantidad de dinero a tu disposicion. ‘ hacia la eleccion sobre situar al victorioso de cualquier periodo o en la barra en caso de que habra corner indumentarias papeleta con el fin de un equipo. En nuestra opinion, es de mas complicado advertir los alteraciones referente a confrontacion con manga larga otras viviendas de apuestas que utilizan indicadores de mas notorios.

Discussion

Back To Top
Search