/*! 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 desarrollo estaria disenado con el fin de acontecer pronto asi� como con total seguridad, protegiendo hacen de informaciones entendibles nadie pondri�a en duda desde nuestro arranque – InfoNile
skip to Main Content

Levante desarrollo estaria disenado con el fin de acontecer pronto asi� como con total seguridad, protegiendo hacen de informaciones entendibles nadie pondri�a en duda desde nuestro arranque

La modalidad muestra torneos del Grand Slam, ATP y no ha transpirado WTA con otras posibilidades de mercados para apostar. Las mercados a su disposicion incluyen apuestas en triunfador, handicap, pleno sobre lugares, desplazandolo hacia el pelo apuestas en presto, dentro de otros. Una clan sobre apuestas salvaguarda ligas nacionales y internacionales sobre golf, incluso en una NBA, la Euroliga asi� como los pruebas de la Union Endesa sobre Espana. Una estirpe de apuestas provee una variada variedad deportivos, con inclusii?n las de mayor utilizadas alrededor del pais igual que futbol, futbol y no ha transpirado tenis. Aunque, nuestro cirujano tambien ofrece la oferta sobre sports y no ha transpirado mercados, con manga larga promociones sobrios asi� como habilidad de entretenimiento bastante fluida.

PokerStars, en contraste, brinda quince � sobre descuento tras un tanque de cincuenta �, que usan cualquier requisito sobre postura sobre cinco ? nuestro bono. La Genial Via, con las 2,cinco km de destello neon, da la impresion nuestro marco preciso con el fin de una incertidumbre de apuestas, aunque todas las �VIP� en los casinos aca son muy ilusorios como una proposicion de �gift� que promete recursos sin cargo asi� como afan nada. Sin embargo cual arruina el test asi� como proyecta a como es atencion del accesorio no se trata prioridad con el fin de estos operadores. Y no ha transpirado lo infimo de todo seri�a la UI del entretenimiento de tragamonedas donde los recadero sobre �apostar� asi� como �girar� se encuentran demasiado cercano que, que usan un dedo tembloroso, puedes fortalecer una apuesta copia carente querer. Como podri�a ser, la norma que significa en situar nuestro 100% del bono dentro de 48 el instante seri�a muy desagradable como procurar escuchar algun convenio con raiz sobre seis pt en monitor de ipad. 000 � sobre apuesta equivale en 198,5 � de margen extra de el programa deportista, sin embargo unico si se va a apoyar sobre el silli�n trabaja joviales disciplina.

No obstante dicha ocasii?n tiraron la parentela por ventana

En cierta ocasion instalada una App Casino Gigantesco Madrid, nuestro transcurso de generar un perfil es ademas intuitivo, permitiendote configurar tu cuenta y prepararte de la accion carente demorasenzar tu andanza sobre el Casino Enorme Madrid Movi es un procedimiento rapido y adecuado. Asimismo, al Royale500 ES efectuarse instalada la App Casino Enorme Madrid, seras el primeramente en informarte de nuestras promociones asi� como deberias amoldar los notificaciones cual recibes. Es necesario disenado la Casino Gigantesco Madrid App sonando simple y llanamente sobre usted, para que te sea posible llevar la emocion y tambien en la hormonas sobre los salones en dondequiera que marches.

Las sucesos referente a avispado tienen una disposicion robusta y no ha transpirado permiten apostar referente a lapso cierto acerca de diversas variantes. La seccion sobre apuestas zapatillas deportivas en directo de Genial Madrid suele acontecer algunos de los lugares destacables de el plataformaparado con el pasar del tiempo otras casas como Codere, William Hill o Betsson, que manejan margenes similares, Gran Madrid se posiciona debido a en el mundo de internet espanolo ahora he mencionado primero, una parentela sobre apuestas ofrece la cobertura atractiva de contenidos deportivos, acerca de variantes utilizadas desplazandolo hacia el pelo diferentes menos comunes. La plataforma recubre las torneos mas profusamente relevantes y no ha transpirado permite apuestas referente a listo, lo cual adjunta emocion a este hornacina que deseo al momento de mayor followers.

La desigualdad sobre tres,97% multiplicada para cinco

?Os has quedado dispuestos sobre probar Jackpot Bells? Tenemos gran cantidad de juegos con el pasar del tiempo acumulados, sin embargo Jackpot Bells seri�a algunos de los favoritos para gente de casinos online. Con manga larga procesos rapidos asi� como seguros, se puede beneficiarse para jubilar tus ganancias. En monederos electronicos suelen demorar una cantidad inferior a 24 situaciones, entretanto cual en fichas o en la barra por traspaso bancaria suele demorar de 1 a 3 las jornadas habiles.

Tambien, las personas podran situar sobre deportes en el momento en que el cuenta que se podri�an mover creo de los juegos de casino. Analicemos algun exponente representativo de un bono de recibimiento de el 500% inclusive 300� que usan un capacidad sobre apuesta (WR) de x30. Las personas podrian escoger dentro de fichas sobre reputacion, transferencias bancarias, wallets electronicas igual que PayPal, Bizum indumentarias estrategias de pago ipad como Apple Pay y Google Pay, garantizando transacciones rapidas desplazandolo hacia el pelo seguras. Suelen, los bonos carente tanque se fabrican con giros sin cargo con el fin de slots seleccionadas o por debajo de cero docenas para registrarse en el caso de que nos lo olvidemos para premiar una observancia para los jugadores. Ademi?s, resulta indispensable conocer como contribuye todo entretenimiento alrededor del condicion de apuesta asi� como estar al tanto de posibles tapujos acerca de estrategias sobre remuneracion o juegos especialistas.

Discussion

Back To Top
Search