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

Веб-обозрение бонусных Eva Casino операций а еще программ лояльности онлайновый-казино

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

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

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

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

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

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

Програмки безвозмездных призывов

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

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

Повторяющиеся рекламные акции

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

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

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

возможности участия юзеров

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

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

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

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

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

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

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

Discussion

Back To Top
Search