/*! 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 Бонусные програмки и island 2 успехи онлайн-игорный дом для юзеров – InfoNile
skip to Main Content

Бонусные програмки и island 2 успехи онлайн-игорный дом для юзеров

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

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

Награды аккаунта

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

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

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

Похода из бесплатными вращениями

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

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

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

Возможности лояльности

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

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

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

Рекламные опции

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

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

Методы участия

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

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

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

Discussion

Back To Top
Search