/*! 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 Atlaslive — механика бонусов онлайн-казино а еще БетАндреас казино способу начисления маркетинговых возмездий. – InfoNile
skip to Main Content

Atlaslive — механика бонусов онлайн-казино а еще БетАндреас казино способу начисления маркетинговых возмездий.

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

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

функция безвозмездных воззваний

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

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

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

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

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

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

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

Объединение программ преданности

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

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

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

Движения активации

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

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

Доступность

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

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

Discussion

Back To Top
Search