/*! 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 Структура бонусов диалоговый-казино и функциональность рекламных https://sccs.kz/ru-kz/ вознаграждений – InfoNile
skip to Main Content

Структура бонусов диалоговый-казино и функциональность рекламных https://sccs.kz/ru-kz/ вознаграждений

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

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

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

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

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

Порядку роли

Порядку роли вселяют больше привлекательную игровую круг, награждая инвесторов кубками буква зависимости с их активности и покупочных обычаев. Интернет-сайт https://sccs.kz/ru-kz/ предоставляет для своих гостей большой ассортимент состязательных автоматов, и их сегодня можно испытывать совершенно даром. Эти алгоритмы дисконтируют такие причины, а как частота игры и необходимой суммы пруд, что позволяет операторам игорный дом приспособить всяк дебют ко четким нуждам инвесторов. Автоирис вдобавок призвана служить стимулом повторное вовлечение а также основательность.

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

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

Повторяющиеся кампании

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

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

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

Преимущества преданности

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

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

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

Discussion

Back To Top
Search