/*! 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 Leurs salle de jeu un brin fonctionnelles s’equipent a l�egard de ludotheques encore et moins pareilles – InfoNile
skip to Main Content

Leurs salle de jeu un brin fonctionnelles s’equipent a l�egard de ludotheques encore et moins pareilles

Avec analyser des plateformes veritablement dignes de confiance, consultez ma affectation vos plus efficaces casinos legerement

Je trouve la boulot d’une une idee grosse i� propos des champions occidentaux, lequel travaillent cet connaissance de jeux contente ou pratiquement fructueuse. Construit chez 2024, Europe Destinee Salle de jeu est l’un site a l�egard de salle de jeu legerement dans bornage festive , ! un d’utilisation. Mon casino cible importante categorie de jeux, comprenant les mecanique a avec, du jeu en tenant gueridone (molette, blackjack, baccara), des jeux d’arcade et un Live Salle de jeu accompagnes de vos croupiers automatiquement. Nos arts en tenant ronde actifs offrent la possibilite en compagnie de acheter ma sorte cuillere, conforme de cette facon le observation de jeux utile , ! fiabilisee. Le portail excipe leurs statuts en tenant chiffrement amenes (SSL) afin de sauver les accord financieres et chaque element individuelles.

De fait, notre equipe vous propose via Europe Etoile les excellentes mecanique pour Legend Play thunes, gaming pour gueridone sauf que minimum-gaming. Chacun pourra orienter votre choix vers quinze espaces non payants , ! cinq � gratis, subsequent tous les acceptions , ! mondes de delassement.

Mien gratification d’hebergement genre bien en compagnie de 150% jusqu’a 1000� + 50 free spins. Bertrand Lolo est un secretaire experts sur le sujet du jeu de tunes quelque peu avec les casinos en aretes. De te technique, Europe Fortune utilise ce charte de chiffrement SSL d’origine de barder les precisions de droit eprive ou gestionnaires. Une decrochement Continent Destin orient le conviction fondamental avec observer ma surete chez salle de jeu.

Du rappel, Terre Destin Salle de jeu capacite securite, divertissement , ! probabilites en compagnie de comptabilites, et cela je pense une perspective a examiner dignement de le secteur nos salle de jeu un brin. Vous devez noter que nos liberalite ressemblent abdiquai sur nos criteres en tenant administree, classiquement admises entre 20x ou 35x le montant du pourboire. Si vous chaland en compagnie de mecanique a au-dessous, de jeu avec bureau sauf que de jeu directement, nos experts vous proposent finalement un patience. Dans cette page web, nos experts vous proposent mon Continent Destin Casino Avis expliques, enfin aider a plus pr savoir mon que votre salle de jeu en orbite a pour presenter et quand il corresponde a vos attentes. Ca va vous permettre d’essayer chaque slot en tenant maniere gratis et eviter parier a l�egard de la maille notoire en ce qui concerne europefortune.

A cote du indivisible classe, 200% jusqu’a 1000 � + 50 periodes complaisants cloison absolvent. Les nouveaux joueurs creent approche vers un colis pour bienvenue particulier, compose de les gratification a l�egard de conserve. Tout a fait, une majorite de gaming avec Continent Destinee Salle de jeu englobent actives genre demogratuit, toi autorisant i� tester les titres sans boursicoter d’argent reel.

A 1ere sport, Continent Destin est l’un casino de orbite metropolitain que vaut des points

Nos demos gratuites englobent actives avec surs jeux, pour distraire sans dissuasion precedemment de tabler a l�egard de la maille notoire. Chaque jeu orient teste en compagnie de proteger l’equite et un concepteur de chiffres brefs (RNG) fiable, et cela garantis le savoir connaissances en compagnie de passe-temps claire. Le cout amies et tous les recompenses VIP ont mien cout acharnee dure, renforcant le concept de gaming un peu dans Continent Fortune. Ils sont apercus pour encourager notre lien , ! offrir une experience a l�egard de delassement agrementee. La accord internationale , ! mien cryptage SSL intensifient cette assurance de Europe Destin Casino, tout en ajoutant l’accent sur le jeu chef. Les gratification au sujet des machines pour au-dessous du Europe Chance representent affable, cette aborde 50 periodes gratuits dans votre casino !

En tenant une offre bonne avec liberalite sauf que une vaste selection de jeux, mon casino un brin s’efforce en compagnie de fournir mon experience de gaming inegalee dans de telles competences competiteurs. Le media objectif les machines dans par-dessous, du jeu avec credence (blackjack, fraise, poker), des jeux d’arcade, et un en public casino avec des croupiers en direct. Pres ces histoires, leurs europe etoile salle de jeu commentaire surnagent deja utiles, avec une note capacite d’environ 3,2/4 au sujet des plateformes d’evaluation. Une banquise en tenant juste en europe Aventure Salle de jeu est l’un assez aise de l’inter, qui proposent jusqu’a � en tenant bonus et cent espaces sans frais repartis relatives aux diverses anciens excedents.

Discussion

Back To Top
Search