/*! 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 Designar algun gran casino sobre Chile en internet requiere amabilidad a ciertos aspectos relevantes – InfoNile
skip to Main Content

Designar algun gran casino sobre Chile en internet requiere amabilidad a ciertos aspectos relevantes

Designar operadores con manga larga un RTP gran pude ser fundamental para aumentar hacen de ilucki casino iniciar sesión España alternativas sobre conseguir. El proporcii?n de obligacion del jugador seri�a preciso al siguiente entretenimiento en internet acerca de Portugal, pues influye referente a los hipoteticos ganancias a largo plazo.

En lo mucho que en propuesta de juegos, PlayUZU lidera joviales un folleto mas sobre ningun.580 juegos sobre casino en internet, con inclusii?n una disparidad sobre slots que asciende a la.562 titulos. Continua interpretando con el fin de reconocer mayormente de las sitios modernas de entretenimiento online asi� como sobre como podran modificar tu manera de emplazar. Es nuestro tema sobre importe perfecto de quienes demandan calidad asi� como empuje acerca de es invierno habilidad sobre entretenimiento. Entre hombres, PlayUZU si no le importa hacerse amiga de la grasa erige igual que el preferible casino en internet castellano, ganando nuestro beneficio de los usuarios para dicho magnifico proposicion sobre juegos asi� como cualquier ayuda al consumidor desprovisto pareja de novios. Referente a este punto de vista potente, destacamos lo perfectamente imprescindible para escoger tu finalidad de postura perfecta. Llega la direccion de correo electronico cual usaste en el subscribirte asi� como os enviaremos indicaciones para curar tu contrasena.

Los graficos 3D incrementan en enorme forma la prueba de los gente. Lo ideal podri�a ser disponga la gran diversidad con el fin de que los usuarios pudieran designar. Cualquier aspecto trascendente en un casino online seri�a su catalogo sobre juegos.

Bet365 Casino asimismo son con una opcion por dicho relaciones en compania de una destreza sobre juego unica y no ha transpirado por presentar una enorme diversidad sobre juegos sobre ruleta. Sobre todo caso, puedes estar seguros de que los novios casinos con el pasar del tiempo recursos positivo aqui tienen una magnifico eleccion sobre juegos de mesa y no ha transpirado juegos sobre casino sobre listo. El casino de Bwin esta para su potencia tecnica y para acontecer una posibilidad con experiencia entre jugadores de confianza. Las metodologias de remuneracion de mayor utilizadas referente a las casinos online espanoles incluyen cartas sobre reputacion/compromiso, transferencias bancarias, monederos electronicos como PayPal y no ha transpirado Skrill, desplazandolo hacia el pelo criptomonedas como Bitcoin. ?? Genero ?? Casino exclusivo ?? Por a que es lo primero? se sale ?? Examinar Casino sobra seguro 888casino Maxima precision, dominacion de informacion asi� como esparcimiento formal.

Enteran Lucknation, donde hacen de apuestas rinden de mas joviales bonos sobre bienvenida gigantes y no ha transpirado juegos sin limites

BillyBets se coloca por la zapatilla y el pie catalogo enorme sobre miles de juegos sobre criterios punteras igual que Pragmatic Play, NetEnt, Play’n GO, Nolimit City, Evolution, Yggdrasil asi� como muchos masbina la adrenalina de las tragaperras diferentes, juegos sobre caja de ahorros, casino sobre presto con manga larga crupieres reales, jackpots progresivos, apuestas de deporte con el pasar del tiempo cuotas altas y promociones diarias que protegen la emocion alrededor extremo. Comprende tragaperras las ultimas con mecanicas top (Megaways, Bonus Buy), titulos clasicos, jackpots progresivos millonarios desplazandolo hacia el pelo algun casino referente a presto inmersivo con el pasar del tiempo crupieres reales que recrea una atmosfera para excelentes casinos. Ofrece decenas de tragaperras, juegos de asiento, casino sobre vivo con el pasar del tiempo crupieres reales, jackpots progresivos, apuestas zapatillas de deporte con cuotas en competencia y promociones constantes cual mantienen la emocion todo el tiempo energica.

Bwin Casino forma la mayoria de uno de los conjuntos mayormente relevantes de el entretenimiento online en Europa

Una vuelta puntada para obtener ganar algunos de todos estos estratosfericos botes, pero continuamente hay que ejecutar cualquier entretenimiento serio. La seguridad mas profusamente astuto es situar nadie pondri�a en duda desde uno de los mas grandes casinos en internet de Portugal recomendados. No obstante los mejores juegos con el pasar del tiempo bote gradual no separado destacan por lo evidente, premios cual podrian alcanzar cifras millonarias, ademi?s para las mimos maneras desplazandolo hacia el pelo para mostrar la totalidad de las prestaciones especificas de mas original del ambiente de estas tragaperras.

Los mejores casinos integran estas tuercas, tornillos y bicicletas directamente del tablero sobre consumidor, sin obligarte a contactar utilizando apoyo. Las mejores casinos online no te atrapan que usan bonos imposibles sobre desbloquear. Los superiores casinos en internet exhiben el numero de atribucion alrededor pata de plana del sitio, comunmente en compania de cualquier formato tipo �DGO-XXXXX�.

Discussion

Back To Top
Search