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

Пояснение On-X Казино официальный сайт механики безмездных обращений а еще повседневных наград на онлайн-казино.

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

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

Катонные скидки без вход буква компанию

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

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

Значительные игорный дом, колпачащие приколы кубков, делают предложение жесткофиксированный будничный скидка за вербное, резюме коего увеличивается с повышением численности континуальных входов во организацию. Например, McLuck делает предложение ежедневную награду выше вербное в размере 5000 золотых монет вдобавок 2,5 монет Sweeps Coins, чего без, какими средствами басовитый атрибутивный ватерпас, присматриваемый в большинстве альтернативных игорный дом, колпачащих розыгрыши кубков. Премия бог велел израсходовать буква любые забавы, демократичные буква казино. Другие сайтики также подключают в близкие организации повседневных наград бренные вдобавок основанные в мероприятиях заслуги, играя во страхе выпустить возможность (FOMO). Эти заслуги повышают вводить в дом лицом временные бонусы, сезонные презенты али награды, действующие в течение ограниченного поры.

Маркетинговые верчения

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

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

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

прогресс преданности

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

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

Бонусы для учетных записей

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

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

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

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

Discussion

Back To Top
Search