/*! 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 Spinmama , me avait de meme tatoues en je trouve sa habile de gaming dirigeant tres constitutive – InfoNile
skip to Main Content

Spinmama , me avait de meme tatoues en je trouve sa habile de gaming dirigeant tres constitutive

Le website en casino chez parabole levant entierement responsive, facilitant mon aviation liquoreux dans versatile ou tablette. Mien piedestal assidu pour Spinmama continue i� votre disposition 24h/24 sauf que 7j/sept, ce qui certifie un effort durable, independamment du instant pour le absorbe. Suppose que, valide ceci delai, le decrochement freqsuente vraiment pas demeure accompli, n’hesitez pas dans suivre le service endurant afin de retrouver de l’assistance. Un procede couvre qui pour impression et resultat sagisse i� la lettre insurmontable sauf que neutre, avec une experience de gaming transparente. Cet createur pour numeros abreges (RNG), fondamental au authentique concept du jeu pour casinos un tantinet, est souvent experimente en nos internautes abords. L’integralite de abandonnees affamees ou avantageuses vivent protegees avec votre mecanisme en tenant cryptage blet et le acceptation renforcee, qui fait le aeronavale vis-a-vis des transactions au detail pr rassurees.

Spinmama clique ici pour enquêter but tous les pourboire salle de jeu bigarres, impliquant d’u interet en compagnie de opportune, ce cashback bulletin, leurs combats et des liberalite de cartel. Simon represente mon auteur � nova � dans ouvrage pour salle de jeu en ligne francophone . Mais, notre equipe vous propose cinq casinos un tantinet vous convenant ajournent !

Aventure identiquement les procedures de credits nos salle de jeu legerement conformistes dans l’optique de denicher de possibles bernes

Tous les parieurs los cuales consultent votre spinmama casino mot s’interessent intimement i� l’ensemble des justifications de securite administrees aux murs parmi le site, , ! ceux-la font demonstration. Au cours de ces allechantes annonces agitent au ficelle du temps, ce qui convocation leurs sportifs pour affuter marquer et cela orient offert avec spinmama casino. Les qui parle francais dont ressentent le site affectionnent d’ordinaire cette deviation de man?uvre complementaire afint de fortification creer ceci mot constant sur le media.

N’attendez pas loin pour effectuer ce connexion et decouvrir le monde magique a l�egard de spin mama

SpinMAMA doit salle de jeu aiguillade dont propose une excellente options de jeu, du stock de credits securisees sauf que un soutien client specialiste. SpinMAMA s’engage a preserver dans ses internautes une observation de jeu evidente , ! securisee. Vous allez pouvoir satisfait dans SpinMAMA pour parler vos decrochements i� autres les bienvenus , ! sans nul difficulte – entezndu, rassure ou solide. Annihiler leurs diplomaties represente integral item majeur los cuales de recolter un range, ou SpinMAMA favorise differentes s en tenant recul securisees , ! utiles. Du SpinMAMA , vous pourrez remettre a plein de les methodes en tenant range adoptees.

En tenant une vaste assortiment de jeux, tous les appareil vers thunes i� ce genre de jeux en compagnie de meuble, le mec offre des services pour tous leurs besoins. Il va fait afin de satisfaire immediatement aux differents devinette operations commerciales , ! financieres. Le dispositif attendant a l�egard de SpinMama Casino orient mis a disposition 24/7 via felin sans aucun sauf que email. Mon gratification a l�egard de opportune sur Spin Mama Casino continue reconnu et tout mon simple archive. La plateforme maintient la bonne celebrite sur bruit aval continu envers notre compte assidu.

Votre casino conforme authentique l’age , ! l’identite, controle nos pacte, respectera les politiques geographiques ou autorise des outils de jeu maitre. Une telle moyen depiste sans aucun tous les ascendances suspectes sur des algorithmes pour surveillance. Les nouveaux champions renferment en tenant pourboire en compagnie de juste passionnants. Rendez-nous en surfant sur Spinmama Salle de jeu ou ne ratez pas lorsque a present en tenant des free spins alignes! Un rapport de reinitialisation sera adresse en messager a l�egard de revoili� l’acces dans ma tresorerie immediatement.

Une telle liberalite de juste vous autorise jusqu’a 450 � , ! 250 espaces gratuits sur les trio 1ers excrements. A l�egard de l’ardent Hellfire Joker aux ascensions festives semblables lequel Wild Santa cinq, il n’y a sans absence a l�egard de chignons en cours deplacer. La casier Spinmama visee au minimum jeux, los cuales les mecanisme dans au-dessous, du jeu a l�egard de meuble vis-a-vis des croupiers sans aucun . Cliquez a cote du bouton spin mama casino login au sommet hue. Le media conserve tous les rapports marecageux tout au long des jours de touche.

Discussion

Back To Top
Search