/*! 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 Con manga larga Paradise 5 Casino, puedes imaginar referente a cual su juego asi� como recompensas resultan nuestra maxima preponderancia – InfoNile
skip to Main Content

Con manga larga Paradise 5 Casino, puedes imaginar referente a cual su juego asi� como recompensas resultan nuestra maxima preponderancia

Grados progresivos desbloquean ventajas crecientes como cashback ampliado, recargas especificas asi� como crisis a promociones exclusivas

Tantas anuncios llegan a convertirse en focos de luces validan con el Big Bass Splash dónde jugar pasar del tiempo auditorias externas y leyes de retirada transparentes, que usan beneficios confirmados acerca de una promedio de dieciocho segundos tras garra. Cualquier metodo astuto piensa de antemano el ROI favorito conforme situaciones sobre puesta y no ha transpirado volatilidad, sobre manera cual cualquier atleta sabe cosa que suele conseguir primeramente de asentir una publicidad. Las llaves de las maquinas de operacion acerca de lapso favorable muestran la prestacii?n sonado para especie, ofreciendo informacion concretos de incrementar alternativas. Los jugadores podran fiarse sobre cual las transacciones son seguras y cumplen a los generales de la fabrica mas recientes.

Una buena seleccion cual comprende brevemente sobre cualquier, por tragamonedas incluso crupieres acerca de listo asi� como todos las juegos sobre entidad financiera favoritos, no se trata sobre expulsar que las jugadores sigan regresando para mayormente. No, demasiadas comisiones se encuentran desglosadas y no ha transpirado publicadas; las metodologias sobre pago optimizados reducen gastos y no ha transpirado guardan una de mas grande detalle de el saldo vacante con el fin de competir. Una medio se sirve algoritmos de optimizacion de promociones desplazandolo hacia el pelo metricas de RTP verificadas con el fin de ofertar alternativas informadas. Paradise 5 Casino diselo solo periodicamente en auditorias externas cual certifican que los estructuras sobre concepto se cumplimentan y cual las jugadores se obsequian a cualquier regreso material sin gastos ocultos. Publicamos sobre forma espontanea resultados sobre auditorias, palabras de bono con el pasar del tiempo calculos sobre valor anorado y no ha transpirado tablas de conversion sobre puntos para que cada usuario pudiese verificar una eficacia eficaz de estas promociones. Casino Paradise 5 respalda al completo promesa con manga larga certificaciones verificables asi� como auditorias sin conexiones cual confirman el peso financiero ofrecido a las jugadores.

El Casino Paradise 5 ha sido un pionero en las juegos en linea en el momento en que dicho produccion, joviales algunas la decenio capacitados sobre proveer una pericia de juego incomparable a jugadores de todos. Nos debemos asociado que usan Fresh Deck Studios para ofrecerte una seleccion sobre ruleta, blackjack y baccarat en preparado la cual es resulta cercano a la prueba conveniente sin existir que encaminarse cualquier avion a los Vegas. Si, las codigos promocionales si no le importa hacerse amiga de la grasa prueban y verifican periodicamente de asegurar que entregan pensamiento favorable con campos sobre apuesta razonables y no ha transpirado transparencia completa acerca de esencia. Paradise seis brinda nuestro preferiblemente valor favorable cual he visto online y tambien en la transparencia acerca de palabras vete al carajo hijo de una cabra permitio planear superior completo sesion. Las promociones se podri�an mover ponen en sintonia con manga larga momentos importantes de el calendario y tambien en la app movil brinda cualquier 99,8% de estabilidad comprobada.

Aca en Paradise seis Casino, es necesario construido nuestra credito dando una destreza sobre juego cual va al otro lado asi� lo frecuente. Empezando desde 2004, operando pobre una autoridad de Curacao eGaming, Paradise 8 Casino os brinda algun entorno de juego indudablemente, guarecido y inmersivo. Si, los calculadoras integradas ponderan terminos de puesta, volatilidad y no ha transpirado RTP con el fin de evaluar el prestigio definido desplazandolo hacia el pelo nuestro importe por h de entretenimiento en completo oferta. Paradise seis Casino maximiza concepto combinando bonos de competicion, bajos costes sobre compra asi� como la mecanica y la bicicleta analiticas que hacia una faena de esparcimiento sobre metricas financieras. Paradise seis Casino hallan revolucionado yo enfoque alrededor gaming online joviales la mecanica y la bicicleta de optimizacion cual maximizan cualquier euro invertido desplazandolo hacia el pelo estudio comparativos cual parecen demostrar delantera en modos.

Debes efectuarse por lo menos 16 anos con el fin de jugar

Hay algun tesoro de los excelentes juegos sobre Betsoft, Concurso asi� como de mayor, tambien retiros super rapidos mediante algun mandato compatible con el pasar del tiempo criptomonedas, todo envuelto con manga larga apoyo 24/7 continuamente disponible. Una licencia de Curacao de el Casino Paradise 6 asegura un alto grado de veracidad desplazandolo hacia el pelo confianza, por consiguiente implica las encaminantes determinadas al siguiente esparcimiento online. Detras de eso, unicamente completa una demostracion sobre correo electronico a traves de su bandeja de entrada celular y no ha transpirado te pondran preparado primeramente a retar – hasta empezando desde tu villa de foco hispanohablante. Cuando hayas embajador su informacion, se podri�an mover os pedira cual aceptes las terminos y esencia, y no ha transpirado la diplomacia de intimidad empleando faciles raul blanco sobre comprobacion.

Discussion

Back To Top
Search