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

Авторуководство по маневренною платформе онлайн-игорный пин ап казино онлайн скачать дом для пользователей телефонов

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

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

Подвижный пропуск

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

Значительное большинство ведущих игорный дом обладают а как мобильные применения для iOS али Android, так и веб-порталы, оптимизированные для мобильных устройств. Мобильные использования обычно нужно загрузить с App Store для юзеров iPhone и с Google Play Store для собственников механизмов Android. Они предлагают удобный а еще интуитивно закономерный сокет с упрощенными карта а также кнопками, комфортными в видах перстов.

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

Довольство использования

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

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

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

Хороший в видах мобильных механизмов интерфейс

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

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

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

Воспринимающее аллелопатия

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

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

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

Беглая автозагрузка

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

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

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

Discussion

Back To Top
Search