/*! 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

Инструменты ответственной игры а еще функции для сервиса цифрового благоденствия буква Лев Казино диалоговый-игорный дом

Наблюдение энергичности

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

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

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

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

Времена охлаждения

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

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

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

Лимитирования буква адажио депозита

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

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

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

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

Discussion

Back To Top
Search