/*! 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 Бонусные функции Pin Up казахстан онлайновый-казино а также методике начисления рекламных возмездий – InfoNile
skip to Main Content

Бонусные функции Pin Up казахстан онлайновый-казино а также методике начисления рекламных возмездий

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

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

антье безмездных воззваний

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

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

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

Достижения управления учетной надписью

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

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

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

системы преданности

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

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

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

Алгоритмы роли

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

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

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

Discussion

Back To Top
Search