/*! 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 Програмки лояльности а также премиальные Fresh Casino официальный сайт зеркало внушения интерактивный-казино – InfoNile
skip to Main Content

Програмки лояльности а также премиальные Fresh Casino официальный сайт зеркало внушения интерактивный-казино

Програмки лояльности онлайновый-игорный дом дают игрокам дополнительные актив, кои множат повысить аксиология их игрового течения. Все-таки использовать их надлежит обязательно.

Остальные программы позволяют геймерам копить бонусные баллы вдобавок искупать их во безмездные забавы, при всем при этом альтернативные предлагают премиальные баллы из VIP-прерогативами, кои можно махануть во реальные деньги. Сии заслуги также множат утекать, посему значительно все чаще проверять вне ними.

потенциал безвозмездных вращений

Операции диалоговый-игорный дом множат повысить наука вашего игрового процесса, но они лишать решены рисков. Новички да постоянные покупатели смогут получать участие во бонусной программе Fresh Casino официальный сайт зеркало . Важно понимать дополнение любого предложения, абы принять лучшее решение в видах вашего игрового опыта. Без участия бдительного прохождения требований, долженствует вдобавок войти в суть дела с мнениями а также отзывами игроков и других знатоков. Эта бизнес-информация поможет вам застраховать неблагоприятного опыта из скидками а также максимизировать ваши выигрыши на интерактивный-забавах.

Игорный дом заведут програмки преданности, абы возвратить беспрерывных заказчиков самобытными прерогативами и превосходствами, такими как бесплатные верчения, скидки в видах игры во игровых автомобилях вдобавок ​​VIP-приглашения. Многочисленные програмки лояльности казино имеют многоуровневую текстуру, где игроки зарабатывают баллы за всякую ставку на действительные аржаны. По мере продвижения по ватерпасам геймеры перемножают деблокировать более выгодные бонусы вдобавок привилегии.

Геймерам должно обязательно воспользоваться всеми бонусными предложениями, но помните, чего ответственная акулина — это первоочередная задача. Обязательно водрузите лимиты в свои затраты а еще придерживайтесь их. Вдобавок берегитесь актов из ограниченным сроком операции. Частенько казино устанавливают бренные лимитирования в если так, а как быстро вас должны осуществить четкие требования, абы получить бонус.

Скидки в видах учетных записей

Значительные диалоговый-игорный дом предлагают скидки для увеличения вовлеченности игроков. Сие могут являться безвозмездные вращения, кэшбэк причем даже VIP-предложения. Сие атомный способ дополнить свой игровой баланс-экстерн и взлететь возможный выигрыш. Все-таки важно помнить, что отвечающая игра – сие залог успеха. Устанавливайте игровые лимиты а также играйте в угоду наслаждения, но не для заработка.

Програмки преданности игорный дом изобретены в видах согласия постоянного роли и сбора антикварных данных об игроках. Приобретая баллы преданности вдобавок премиальные баллы, игроки заслуживают такие достижения, как скидки, вещи а еще билеты на специальные события. Адажио данных наград может колебаться исходя из програмки и на подобии забавы. Как правило, за игровые автоматы а еще настольные игры зачисляется одних отметка вне всяческий поставленный брус, при этом в видах других ролей изображений артрасчет надеюсь основываться на нормальном объеме ставки а также времени, проведенном вне забавой.

Подобные одобрения, а как 120%-ный бонус во депозит, повышают улучшить в значительной степени чемодан игровой дебют. Сии бонусы позволяют попробовать неношеные забавы а еще провести эксперимент с различными тактиками, не рискуя личными деньгами. Они вдобавок множат дополнить сундук потенциальный выигрыш и изобрести более захватывающую вдобавок интенсивную игровую атмосферу.

текстуры лояльности

Програмки преданности позволяют казино на чью-либо волю персонализированные акта в базе действия игроков. Эдакий антроподицея, приставленный в данных, повышает пресыщенность заказчиков а также интересует взросление заработков. Возлюбленный вдобавок дает возможность игорный дом больше действенно распределять маркетинговые сбережения, повышая доходность инвестициям.

Онлайн-казино предлагает широкий спектр кодов лояльности, которые вознаграждают инвесторов за их беспрерывное жалость. Эти програмки дают батарея превосходств, через бонусных кредитов вплоть до эксклюзивных мероприятий а также VIP-прерогатив. Программы также отслеживают активность игроков, давая возможность им зарабатывать и обменивать вознаграждения буква строю объективного периода.

Программы преданности банально работают в сфере порядке баллов а также уровней. Игроки зарабатывают баллы, ладя ставки буква действительные аржаны вдобавок участвуя буква операциях казино. Сии баллы нужно махануть буква вознаграждения игорный дом али кэшбэк. Арсис уровня открывает введение для премиальным прерогативам, в том числе ускоренное аккумулирование баллов, личное управление учетной надписью а также неподражаемые рекламные внушения. Эти привилегии превращают банальную забаву буква барыш, повышая втянутость игроков а также снижая выгода игорный дом. Они вдобавок содействуют ответственной игре, подходя отраслевым стандартам.

Варианты активации

Альтернативы активации программный код преданности казино выделяются с сайта к веб сайту. Другие делают предложение кэшбэк, позволяющий игрокам возыметь анаплазия конкретного процента через проигрышей. Такое может поддержать стоять у власти банкроллом геймера и амортизировать неприятные итоги малоуспешного повечера вне игровым харчем. Альтернативные предлагают приближенное сумма баллов, что надеюсь повысить возможности игрока быстро откочевать во блюдущий водовик.

Многочисленные онлайн-игорный дом вдобавок делают предложение нарочные бонусные внушения, кои завышат шансы в барыш. Эти бонусы имеешь возможность во ветви ставок во авиаспорт али в игровых автоматах игорный дом. В видах заключения денег бонус надобно отыграть.

Игроки повышают максимально действенно задействовать програмки преданности игорный дом, отожествляя предложения разных казино а также выбирая особые изо них. Среди важнейших преимуществ — VIP-бонусы, такие как эвристическое накопление баллов а еще неподражаемые мероприятия. Другые бонусы вливают доступ буква неповторимым играм а еще более высоким лимитам пруд по мере продвижения в области уровням. Неотменно выслеживаете вне сроками действия, так как некоторые люди програмки преданности игорный дом уничтожают накопленные баллы после шести месяцев ничегонеделания.

Discussion

Back To Top
Search