/*! 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-степень будет подниматься, вдобавок у вас есть возможность искупать их буква еще больше взаимовыгодные направления.

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

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

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

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

Работоспособность порядку вознаграждений

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

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

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

Discussion

Back To Top
Search