/*! 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

Веб-обозрение премиальных действий а также планов лояльности Казино Мерс зеркало онлайн-казино

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

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

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

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

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

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

Програмки бесплатных воззваний

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

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

Повторяющиеся акции

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

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

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

возможности участия пользователей

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

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

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

Структуры возмездия

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

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

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

Discussion

Back To Top
Search