/*! 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 Програмки вознаграждений и опции etazhi-quest.ru безмездных обращений в онлайн-казино: пояснение – InfoNile
skip to Main Content

Програмки вознаграждений и опции etazhi-quest.ru безмездных обращений в онлайн-казино: пояснение

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

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

Порядка продвижения

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

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

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

введение лояльности

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

Ко составным частям лояльности дотрагиваются многоуровневые вознаграждения, персонализированные скидки а еще неповторимые привилегии. Эти факторы обеспечивают измеримые показатели сопричастности вдобавок удержания инвесторов, еще завышат вечную наука заказчика (LTV). Они вдобавок выручают игорный дом вселять при собственных инвесторов чувство благодарности а также эксклюзивности, побуждая их продолжать игровые сессии.

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

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

Согласия для инвесторов

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

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

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

Премиальные текстуры

Бонусные програмки — под замком изо самых массивных вдобавок эффективных инструментов для подъема сопричастности пользователей а еще стимулирования их беспрерывного роли. Адли их также нужно использовать извращенно а еще малоэффективно. Именно поэтому операторам актуально измерять эффективность собственных бонусов а еще действий казино, еще прослеживать, а как они воздействуют на коэффициенты конверсии, данные удержания клиентов вдобавок пожизненную ценность геймера (LTV).

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

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

Discussion

Back To Top
Search