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

Приложение игорный дом — комфортные Лев казино вход официальный сайт функции для пользователей подвижных веселий.

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

Игровая библиотека веб-сайта подключает в себя армада популярных игровых автоматов вдобавок столов изо актуальными дилерами. Для сопровождения высоких манеров качества а также безопасности применяются известные поставщики программ, такие как Pragmatic Play а также Evolution Gaming.

Функции управления учетными записями

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

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

Авианавигация по части интерфейсу

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

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

Дополнение Casino для Android легко устанавливается а также настаивает лишь неотказного интернет-воссоединения, предотвращающего зависания и замедление службы. Сверх того, дополнение нужно вмешать буква главный бронеэкран прибора iOS, абы оно действовало как передовое веб-приложение (PWA) вне необходимости загрузки из App Store.

инструменты обеспечения доступности

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

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

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

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

Великорослая быстроту отклика

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

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

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

легкость из телефонами

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

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

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

Алгоритмы взаимодействия с подвижными приборами

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

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

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

Discussion

Back To Top
Search