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

Программы Марафон зеркало рабочее онлайн лояльности онлайн-казино и функции бесплатных вращений: пояснение.

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

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

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

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

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

начала преданности

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

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

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

Заслуги, связанные изо учетной записью

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

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

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

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

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

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

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

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

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

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

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

Discussion

Back To Top
Search