/*! 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 Внутренние резервы получения заслуг буква онлайн-казино а также retail-south.ru веселительные функции безвозмездных вращений. – InfoNile
skip to Main Content

Внутренние резервы получения заслуг буква онлайн-казино а также retail-south.ru веселительные функции безвозмездных вращений.

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

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

Системы продвижения

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

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

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

Сожаление на учете

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

В большом количестве онлайн-казино программы преданности работают на основе баллов и ватерпасов, а вот достижения в видах инвесторов зависят от катонного участия. Фактически, вести игру на сайте retail-south.ru – это восхитительный шанс не только приятного отдыха, но и получения добавочного заработка. Бойкость начисления баллов выдается исходя из на подобии игры: в слотах начисляются наиболее великорослые баллы, буква других играх, таких как видеопокер или настольные забавы, обычно — по части больше низкой ставке.

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

Стимулы в видах пользователей

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

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

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

Успехи преданности

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

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

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

Игровое взаимодействие

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

Discussion

Back To Top
Search