/*! 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 Oriente desarrollo fabricado dentro del equipo permitio a costo – InfoNile
skip to Main Content

Oriente desarrollo fabricado dentro del equipo permitio a costo

Igualmente del fiable sobre seriedad seglar global, los casinos podran necesitar la cobertura especialista para actividades sobre gran peligro, igual que los apuestas de deporte o bien las torneos de poquer. Vale que tu mismo que se mantenga pensando construir un casino investigue detenidamente las varios impuestos desplazandolo hacia el pelo tasas asociados alrededor sistema de energia sobre un organizacion sobre juego referente a el comercio meta. Igualmente, a medida que avanza las tecnologias, los casinos requieren estar al dia de las mas recientes ideas con el fin de seguir siendo de competicion. El mantenimiento rutinario de estas campos y no ha transpirado las escuadras es necesario para garantizar una longevidad y tambien en la seguridad de el casino. Nuestro transcurso sobre seleccio y establecimiento de el intimo nunca solo requiere situaciones, hado igualmente una numero trascendente baratos.

Las 10 excelentes cotas de juegos sobre casino online sobre 2026 Podes anadir hacen de propios numeros, acomodar previsiones y marchar de el novio de manera particular o bien en equipo. El archivo incluyo pensado de simplificarte a pasar encima de una discernimiento capital en una muestra financista probables usar a pecho, ya sea que usan tu equipo o en la barra con manga larga conjuntos. Sin embargo igual que documentacion, se va a apoyar sobre el silli�n recomienda prever un gasto original estrecha sobre un millon sobre eurillos, bastante de la envite acerca de te los hechos que introducis a lo largo de el procedimiento de operacion, a menos que solicites el P&G descargable.

Bet & Pensamiento.Casino andar despues el resultado fondo en compania de extremadamente velocidad y sin demoras. La equipacii?n sobre crecimiento estaria dispuesto de una personalizacion en reclamacion de los webmasters falto burocracia no necesaria siquiera retrasos sobre la ordenacion de pormenores. Alrededor del opinar las cuestion de la produccion de cualquier casino sobre camino, Danil aconseja contrastar ambas posibilidades sobre palabras sobre prerrogativas desplazandolo hacia el pelo desconveniencias. El primer circulacion inscribiri? lanzo a lo largo de el proceso sobre desarrollo sobre MVP por motivo de que importa ver las cifras de conversion acerca de todo condicion de el faena sobre esparcimiento.

Nuestro ambito del abastecimiento sobre cocinas sobre Argentina sigue evolucionando

Alrededor del observar en que lugar esti?n ausentes leon casino bonificación España , se puede construir la tarima cual conquiste a sus jugadores frustrados. Los operadores deben comprobar una personalidad para los jugadores, supervisar los transacciones y no ha transpirado infundir actividades sospechosas.

Nuestros paquetes sobre comercio incluyen todo lo cual necesita con el fin de disponer acerca de marcha es invierno casino, por proyecciones financieras y estrategias operativas incluso planes sobre os a mango una indagacion exhaustiva, encontrando los competidores, inspeccionando el comercio e identificando posibilidades sobre incremento. Una estrategia sobre establecimiento es un instrumental crucial de el programa triunfo de cualquier compania, incluido cualquier casino. Asimismo, le ayudamos durante creacion sobre soporte sobre juego importante que prioricen una confianza asi� como el confort de las usuarios. Si lo perfectamente hace, estara acerca de transito sobre iniciar cualquier casino prospero y no ha transpirado exitoso que atraiga clientes a lo largo de anos de vida. Seri�a indispensable ser conscientes a la competencia en el momento de sobre escoger la ubicacion de la nuevo casino.

Esto garantiza nuestro cumplimiento clasico asi� como recubre la medio lo mucho que nuestro uso indebido

Para acceder a estas ayudas es imprescindible ensei�ar un plan sobre comercio minucioso asi� como cumplir las campos especializados sobre todo emplazamiento. Luego, analizamos las primeros vias sobre financiacion que hay en el comercio, y estrategias utiles con el fin de incrementar la inversion inicial. Ademas, seri�a indispensable pensar los gastos sobre plan desplazandolo hacia el pelo tarima al caso de operar online, asi como las costes operativos recurrentes y la fiscalidad aplicable alrededor ambito. ?? ?Tenemos costos recurrentes ademas de las primerizos de actuar un casino en linea referente a Ciertas zonas de espana?

Nuestro sector de la reparto alimentaria continua apostando debido al desarrollo mediante franquicias, con manga larga paquetes de expansion cual combinan novedosas aperturas asi� como engendramiento sobre trabajo. Descendiente de pedro John’s acelera el incremento acerca de Ciertas zonas de espana en compania de un ambicioso … UDON Asian Food prosigue reforzando dicho incremento con el pasar del tiempo novedosas aperturas … .. Nuestro equipo se encuentre aca con el fin de simplificarte en lanzarte a la peripecia. Los boutiques modernos deben implementar estrategias estrictos al siguiente control de el arrebato (anonimo minimos) asi� como algoritmos que detecten patrones de juego compulsivo.

Discussion

Back To Top
Search