/*! 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 Казино — подвижный Mers Казино скачать дебют онлайновый-игорный дом а также взросление знаменитости представлений в телефонах. – InfoNile
skip to Main Content

Казино — подвижный Mers Казино скачать дебют онлайновый-игорный дом а также взросление знаменитости представлений в телефонах.

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

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

Обычая инвесторов продолжают меняться.

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

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

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

маневренная приспособление

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

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

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

веб-дизайн интерфейса

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

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

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

здоровье навигации

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

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

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

Портативность

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

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

Производительность употребления

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

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

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

Discussion

Back To Top
Search