PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.4
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.4
4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / dist / components / esm / sc-customer-email.entry.js
surecart / dist / components / esm Last commit date
MockProcessor-5c5e066a.js 2 months ago MockProcessor-5c5e066a.js.map 2 months ago add-query-args-0e2a8393.js 1 year ago add-query-args-0e2a8393.js.map 1 year ago address-b8e2e4c8.js 4 months ago address-b8e2e4c8.js.map 4 months ago animation-registry-de37bd7e.js 3 months ago animation-registry-de37bd7e.js.map 3 months ago app-globals-0eef0276.js 2 months ago app-globals-0eef0276.js.map 2 months ago consumer-f1775a76.js 2 months ago consumer-f1775a76.js.map 2 months ago currency-a0c9bff4.js 1 year ago currency-a0c9bff4.js.map 1 year ago error-c8bf8e3e.js 1 week ago error-c8bf8e3e.js.map 1 week ago fetch-cdff67be.js 1 month ago fetch-cdff67be.js.map 1 month ago floating-ui.dom.esm-8dce4ea1.js 6 months ago floating-ui.dom.esm-8dce4ea1.js.map 6 months ago form-data-76641f16.js 1 year ago form-data-76641f16.js.map 1 year ago functions-4f009ce1.js 3 months ago functions-4f009ce1.js.map 3 months ago geo-permission-62aea8ee.js 1 month ago geo-permission-62aea8ee.js.map 1 month ago getters-1049a6f8.js 2 months ago getters-1049a6f8.js.map 2 months ago getters-1477d792.js 2 months ago getters-1477d792.js.map 2 months ago getters-4bb6cc1b.js 2 months ago getters-4bb6cc1b.js.map 2 months ago getters-7090a9c1.js 1 week ago getters-7090a9c1.js.map 1 week ago getters-9cfeb0de.js 1 week ago getters-9cfeb0de.js.map 1 week ago google-52867ad8.js 1 week ago google-52867ad8.js.map 1 week ago google-e9085e27.js 1 week ago google-e9085e27.js.map 1 week ago google-maps-e8b00ffd.js 3 months ago google-maps-e8b00ffd.js.map 3 months ago index-17aac936.js 1 month ago index-17aac936.js.map 1 month ago index-18f5a1bc.js 2 months ago index-18f5a1bc.js.map 2 months ago index-25e5af33.js 2 months ago index-25e5af33.js.map 2 months ago index-824c562b.js 2 months ago index-824c562b.js.map 2 months ago index-871d88b8.js 1 year ago index-871d88b8.js.map 1 year ago index-a786f689.js 1 week ago index-a786f689.js.map 1 week ago index-c5a96d53.js 2 years ago index-c5a96d53.js.map 2 years ago index-d602bc13.js 1 month ago index-d602bc13.js.map 1 month ago index.js 1 week ago index.js.map 1 month ago inline-c012a0f9.js 1 year ago inline-c012a0f9.js.map 1 year ago lazy-deb42890.js 1 year ago lazy-deb42890.js.map 1 year ago library-1bd957d5.js 2 months ago library-1bd957d5.js.map 2 months ago loader.js 2 weeks ago loader.js.map 1 year ago media-d21119a3.js 1 year ago media-d21119a3.js.map 1 year ago mutations-7458343f.js 2 months ago mutations-7458343f.js.map 2 months ago mutations-9ffd30f4.js 1 week ago mutations-9ffd30f4.js.map 1 week ago mutations-ae7167ad.js 1 week ago mutations-ae7167ad.js.map 1 week ago mutations-b310b068.js 1 week ago mutations-b310b068.js.map 1 week ago page-align-0cdacf32.js 1 year ago page-align-0cdacf32.js.map 1 year ago price-1ff6aa07.js 4 months ago price-1ff6aa07.js.map 4 months ago pure-963214cb.js 1 year ago pure-963214cb.js.map 1 year ago quantity-5c986f3d.js 3 months ago quantity-5c986f3d.js.map 3 months ago razorpay-4c4a3d31.js 3 months ago razorpay-4c4a3d31.js.map 3 months ago remove-query-args-938c53ea.js 1 year ago remove-query-args-938c53ea.js.map 1 year ago sc-address_5.entry.js 2 weeks ago sc-address_5.entry.js.map 2 weeks ago sc-alert.entry.js 1 month ago sc-alert.entry.js.map 1 year ago sc-avatar_2.entry.js 1 week ago sc-avatar_2.entry.js.map 1 month ago sc-badge-notice.entry.js 1 month ago sc-badge-notice.entry.js.map 1 year ago sc-block-ui.entry.js 1 month ago sc-block-ui.entry.js.map 5 months ago sc-breadcrumb.entry.js 1 month ago sc-breadcrumb.entry.js.map 1 year ago sc-breadcrumbs.entry.js 1 month ago sc-breadcrumbs.entry.js.map 1 year ago sc-button-group.entry.js 1 month ago sc-button-group.entry.js.map 1 year ago sc-button_6.entry.js 1 month ago sc-button_6.entry.js.map 1 month ago sc-cancel-dialog_3.entry.js 1 month ago sc-cancel-dialog_3.entry.js.map 1 month ago sc-cancel-discount_4.entry.js 1 month ago sc-cancel-discount_4.entry.js.map 2 months ago sc-card_2.entry.js 1 month ago sc-card_2.entry.js.map 4 months ago sc-cart-button.entry.js 1 week ago sc-cart-button.entry.js.map 1 year ago sc-cart-form-submit.entry.js 2 months ago sc-cart-form-submit.entry.js.map 1 year ago sc-cart-form.entry.js 1 week ago sc-cart-form.entry.js.map 1 month ago sc-cart-header.entry.js 1 week ago sc-cart-header.entry.js.map 1 year ago sc-cart-icon.entry.js 1 week ago sc-cart-icon.entry.js.map 1 year ago sc-cart-loader.entry.js 1 week ago sc-cart-loader.entry.js.map 1 year ago sc-cart-session-provider_3.entry.js 1 week ago sc-cart-session-provider_3.entry.js.map 2 months ago sc-cart-submit.entry.js 2 months ago sc-cart-submit.entry.js.map 1 year ago sc-cart.entry.js 1 week ago sc-cart.entry.js.map 2 months ago sc-cc-logo_2.entry.js 1 month ago sc-cc-logo_2.entry.js.map 1 month ago sc-charges-list.entry.js 1 month ago sc-charges-list.entry.js.map 2 months ago sc-checkout-autofill-provider_11.entry.js 1 week ago sc-checkout-autofill-provider_11.entry.js.map 1 month ago sc-checkout-form-errors.entry.js 2 months ago sc-checkout-form-errors.entry.js.map 1 year ago sc-checkout-mollie-payment_3.entry.js 1 week ago sc-checkout-mollie-payment_3.entry.js.map 2 months ago sc-checkout-product-bundle-component-variants.entry.js 1 week ago sc-checkout-product-bundle-component-variants.entry.js.map 1 month ago sc-checkout-product-price-variant-selector.entry.js 1 week ago sc-checkout-product-price-variant-selector.entry.js.map 4 weeks ago sc-checkout.entry.js 1 week ago sc-checkout.entry.js.map 1 month ago sc-choice-container.entry.js 1 month ago sc-choice-container.entry.js.map 1 year ago sc-choice.entry.js 1 month ago sc-choice.entry.js.map 1 year ago sc-choices.entry.js 1 month ago sc-choices.entry.js.map 1 year ago sc-column_2.entry.js 1 month ago sc-column_2.entry.js.map 1 month ago sc-compact-address_18.entry.js 1 week ago sc-compact-address_18.entry.js.map 1 month ago sc-conditional-form.entry.js 1 week ago sc-conditional-form.entry.js.map 2 months ago sc-consumer.entry.js 2 months ago sc-consumer.entry.js.map 1 year ago sc-coupon-form.entry.js 1 week ago sc-coupon-form.entry.js.map 5 months ago sc-custom-order-price-input.entry.js 1 month ago sc-custom-order-price-input.entry.js.map 2 months ago sc-customer-details.entry.js 1 month ago sc-customer-details.entry.js.map 7 months ago sc-customer-edit.entry.js 1 month ago sc-customer-edit.entry.js.map 2 months ago sc-customer-email.entry.js 1 week ago sc-customer-email.entry.js.map 1 month ago sc-customer-firstname.entry.js 1 week ago sc-customer-firstname.entry.js.map 2 months ago sc-customer-lastname.entry.js 1 week ago sc-customer-lastname.entry.js.map 2 months ago sc-customer-name.entry.js 1 week ago sc-customer-name.entry.js.map 2 months ago sc-dashboard-customer-details.entry.js 1 month ago sc-dashboard-customer-details.entry.js.map 2 months ago sc-dashboard-downloads-list.entry.js 1 month ago sc-dashboard-downloads-list.entry.js.map 2 months ago sc-dialog.entry.js 1 month ago sc-dialog.entry.js.map 5 months ago sc-divider.entry.js 1 month ago sc-divider.entry.js.map 1 year ago sc-donation-choices.entry.js 2 months ago sc-donation-choices.entry.js.map 1 year ago sc-downloads-list.entry.js 1 month ago sc-downloads-list.entry.js.map 1 month ago sc-dropdown_3.entry.js 1 month ago sc-dropdown_3.entry.js.map 6 months ago sc-empty_3.entry.js 1 month ago sc-empty_3.entry.js.map 4 months ago sc-express-payment.entry.js 1 week ago sc-express-payment.entry.js.map 3 months ago sc-feature-demo-banner.entry.js 1 month ago sc-feature-demo-banner.entry.js.map 1 year ago sc-flex.entry.js 1 month ago sc-flex.entry.js.map 1 year ago sc-form-control_2.entry.js 1 month ago sc-form-control_2.entry.js.map 2 months ago sc-form-row.entry.js 1 month ago sc-form-row.entry.js.map 1 year ago sc-form.entry.js 1 month ago sc-form.entry.js.map 1 year ago sc-format-bytes.entry.js 2 months ago sc-format-bytes.entry.js.map 1 year ago sc-format-interval.entry.js 2 months ago sc-format-interval.entry.js.map 1 year ago sc-format-number.entry.js 2 months ago sc-format-number.entry.js.map 1 year ago sc-fulfillment-shipping-status-badge.entry.js 2 months ago sc-fulfillment-shipping-status-badge.entry.js.map 4 months ago sc-fulfillments.entry.js 1 month ago sc-fulfillments.entry.js.map 2 months ago sc-heading_2.entry.js 1 month ago sc-heading_2.entry.js.map 1 year ago sc-image-slider.entry.js 1 month ago sc-image-slider.entry.js.map 1 month ago sc-invoice-status-badge.entry.js 1 month ago sc-invoice-status-badge.entry.js.map 4 months ago sc-invoices-list.entry.js 1 month ago sc-invoices-list.entry.js.map 2 months ago sc-license.entry.js 1 month ago sc-license.entry.js.map 2 months ago sc-licenses-list.entry.js 1 month ago sc-licenses-list.entry.js.map 1 month ago sc-line-item-bump.entry.js 1 week ago sc-line-item-bump.entry.js.map 1 year ago sc-line-item-total.entry.js 1 week ago sc-line-item-total.entry.js.map 6 months ago sc-line-item.entry.js 1 month ago sc-line-item.entry.js.map 1 year ago sc-line-items-provider.entry.js 1 month ago sc-line-items-provider.entry.js.map 1 year ago sc-line-items.entry.js 1 week ago sc-line-items.entry.js.map 1 month ago sc-login-form.entry.js 1 month ago sc-login-form.entry.js.map 2 months ago sc-manual-payment-method_3.entry.js 1 month ago sc-manual-payment-method_3.entry.js.map 3 months ago sc-menu-divider.entry.js 1 month ago sc-menu-divider.entry.js.map 1 year ago sc-menu-label_2.entry.js 1 month ago sc-menu-label_2.entry.js.map 1 month ago sc-mollie-add-method.entry.js 1 month ago sc-mollie-add-method.entry.js.map 2 months ago sc-order-confirmation-customer.entry.js 2 months ago sc-order-confirmation-customer.entry.js.map 1 year ago sc-order-confirmation-details.entry.js 2 months ago sc-order-confirmation-details.entry.js.map 11 months ago sc-order-confirmation-line-items_2.entry.js 1 month ago sc-order-confirmation-line-items_2.entry.js.map 1 month ago sc-order-confirmation.entry.js 1 month ago sc-order-confirmation.entry.js.map 2 months ago sc-order-coupon-form.entry.js 1 week ago sc-order-coupon-form.entry.js.map 2 months ago sc-order-detail.entry.js 2 months ago sc-order-detail.entry.js.map 1 year ago sc-order-fulfillment-badge.entry.js 1 month ago sc-order-fulfillment-badge.entry.js.map 4 months ago sc-order-manual-instructions.entry.js 2 months ago sc-order-manual-instructions.entry.js.map 1 year ago sc-order-password.entry.js 2 months ago sc-order-password.entry.js.map 1 year ago sc-order-return-badge.entry.js 1 month ago sc-order-return-badge.entry.js.map 4 months ago sc-order-shipment-badge.entry.js 2 months ago sc-order-shipment-badge.entry.js.map 4 months ago sc-order-status-badge.entry.js 1 month ago sc-order-status-badge.entry.js.map 4 months ago sc-order-submit.entry.js 1 week ago sc-order-submit.entry.js.map 2 months ago sc-order-summary.entry.js 1 week ago sc-order-summary.entry.js.map 1 month ago sc-order.entry.js 1 month ago sc-order.entry.js.map 1 month ago sc-orders-list.entry.js 1 month ago sc-orders-list.entry.js.map 1 month ago sc-pagination.entry.js 2 months ago sc-pagination.entry.js.map 1 year ago sc-password-nag.entry.js 1 month ago sc-password-nag.entry.js.map 2 months ago sc-password.entry.js 1 month ago sc-password.entry.js.map 1 month ago sc-payment-method-choice_2.entry.js 1 month ago sc-payment-method-choice_2.entry.js.map 1 year ago sc-payment-method-details.entry.js 1 month ago sc-payment-method-details.entry.js.map 1 year ago sc-payment-methods-list.entry.js 1 month ago sc-payment-methods-list.entry.js.map 2 months ago sc-payment.entry.js 1 week ago sc-payment.entry.js.map 3 months ago sc-paypal-add-method.entry.js 1 month ago sc-paypal-add-method.entry.js.map 2 months ago sc-paypal-buttons_2.entry.js 1 week ago sc-paypal-buttons_2.entry.js.map 2 months ago sc-paystack-add-method.entry.js 1 month ago sc-paystack-add-method.entry.js.map 2 months ago sc-pill-option.entry.js 1 month ago sc-pill-option.entry.js.map 1 year ago sc-popover.entry.js 1 month ago sc-popover.entry.js.map 6 months ago sc-premium-tag.entry.js 1 month ago sc-premium-tag.entry.js.map 1 year ago sc-price-choice-container.entry.js 1 month ago sc-price-choice-container.entry.js.map 1 month ago sc-price-choice.entry.js 1 month ago sc-price-choice.entry.js.map 2 months ago sc-price-choices.entry.js 1 week ago sc-price-choices.entry.js.map 1 year ago sc-price-input.entry.js 1 month ago sc-price-input.entry.js.map 1 year ago sc-price-range_4.entry.js 1 month ago sc-price-range_4.entry.js.map 1 year ago sc-price.entry.js 2 months ago sc-price.entry.js.map 11 months ago sc-product-buy-button.entry.js 1 week ago sc-product-buy-button.entry.js.map 2 months ago sc-product-donation-amount-choice.entry.js 1 week ago sc-product-donation-amount-choice.entry.js.map 2 months ago sc-product-donation-choices.entry.js 1 week ago sc-product-donation-choices.entry.js.map 2 months ago sc-product-donation-custom-amount.entry.js 1 week ago sc-product-donation-custom-amount.entry.js.map 2 months ago sc-product-item-list.entry.js 1 week ago sc-product-item-list.entry.js.map 2 months ago sc-product-item.entry.js 1 month ago sc-product-item.entry.js.map 1 year ago sc-product-pills-variant-option.entry.js 1 week ago sc-product-pills-variant-option.entry.js.map 1 year ago sc-product-price-choices.entry.js 1 week ago sc-product-price-choices.entry.js.map 1 year ago sc-product-price-modal.entry.js 1 week ago sc-product-price-modal.entry.js.map 2 months ago sc-product-price.entry.js 1 week ago sc-product-price.entry.js.map 2 months ago sc-product-quantity.entry.js 1 week ago sc-product-quantity.entry.js.map 1 year ago sc-product-selected-price.entry.js 1 week ago sc-product-selected-price.entry.js.map 2 months ago sc-product-text.entry.js 1 week ago sc-product-text.entry.js.map 1 year ago sc-provider.entry.js 2 months ago sc-provider.entry.js.map 1 year ago sc-provisional-banner.entry.js 1 month ago sc-provisional-banner.entry.js.map 11 months ago sc-purchase-downloads-list.entry.js 1 month ago sc-purchase-downloads-list.entry.js.map 1 month ago sc-razorpay-add-method.entry.js 1 month ago sc-razorpay-add-method.entry.js.map 2 months ago sc-recurring-price-choice-container.entry.js 2 months ago sc-recurring-price-choice-container.entry.js.map 1 year ago sc-review-stars.entry.js 2 months ago sc-review-stars.entry.js.map 5 months ago sc-rich-text.entry.js 1 month ago sc-rich-text.entry.js.map 1 month ago sc-skeleton.entry.js 1 month ago sc-skeleton.entry.js.map 1 year ago sc-spacing.entry.js 1 month ago sc-spacing.entry.js.map 1 year ago sc-stripe-add-method.entry.js 1 month ago sc-stripe-add-method.entry.js.map 2 months ago sc-stripe-element.entry.js 1 week ago sc-stripe-element.entry.js.map 2 months ago sc-stripe-payment-element.entry.js 1 week ago sc-stripe-payment-element.entry.js.map 2 months ago sc-stripe-payment-request.entry.js 1 week ago sc-stripe-payment-request.entry.js.map 2 months ago sc-subscription-ad-hoc-confirm.entry.js 1 month ago sc-subscription-ad-hoc-confirm.entry.js.map 6 months ago sc-subscription-details_2.entry.js 1 month ago sc-subscription-details_2.entry.js.map 1 month ago sc-subscription-payment-method.entry.js 1 month ago sc-subscription-payment-method.entry.js.map 2 months ago sc-subscription-payment.entry.js 1 month ago sc-subscription-payment.entry.js.map 2 months ago sc-subscription-switch.entry.js 1 month ago sc-subscription-switch.entry.js.map 2 months ago sc-subscription-variation-confirm.entry.js 1 month ago sc-subscription-variation-confirm.entry.js.map 1 year ago sc-subscription.entry.js 1 month ago sc-subscription.entry.js.map 1 month ago sc-subscriptions-list.entry.js 1 month ago sc-subscriptions-list.entry.js.map 2 months ago sc-summary.entry.js 1 month ago sc-summary.entry.js.map 1 year ago sc-swap.entry.js 1 week ago sc-swap.entry.js.map 2 months ago sc-switch.entry.js 1 month ago sc-switch.entry.js.map 7 months ago sc-tab-group.entry.js 1 month ago sc-tab-group.entry.js.map 1 year ago sc-tab-panel.entry.js 1 month ago sc-tab-panel.entry.js.map 1 year ago sc-tab.entry.js 1 month ago sc-tab.entry.js.map 1 year ago sc-table-head.entry.js 1 month ago sc-table-head.entry.js.map 1 year ago sc-table_3.entry.js 1 month ago sc-table_3.entry.js.map 10 months ago sc-tag.entry.js 1 month ago sc-tag.entry.js.map 4 months ago sc-test-mode-info.entry.js 1 month ago sc-test-mode-info.entry.js.map 6 months ago sc-text.entry.js 1 month ago sc-text.entry.js.map 1 year ago sc-toggle.entry.js 1 month ago sc-toggle.entry.js.map 1 year ago sc-toggles.entry.js 1 month ago sc-toggles.entry.js.map 1 year ago sc-total.entry.js 1 week ago sc-total.entry.js.map 1 year ago sc-upcoming-invoice.entry.js 1 month ago sc-upcoming-invoice.entry.js.map 2 months ago sc-upgrade-required.entry.js 2 months ago sc-upgrade-required.entry.js.map 1 year ago sc-upsell-countdown-timer.entry.js 1 month ago sc-upsell-countdown-timer.entry.js.map 1 year ago sc-upsell-no-thanks-button.entry.js 1 week ago sc-upsell-no-thanks-button.entry.js.map 2 months ago sc-upsell-submit-button.entry.js 1 week ago sc-upsell-submit-button.entry.js.map 2 months ago sc-upsell-totals.entry.js 1 week ago sc-upsell-totals.entry.js.map 2 months ago sc-upsell.entry.js 1 week ago sc-upsell.entry.js.map 2 months ago sc-verification-code.entry.js 1 month ago sc-verification-code.entry.js.map 2 months ago sc-visually-hidden.entry.js 1 month ago sc-visually-hidden.entry.js.map 1 year ago sc-wordpress-password-edit.entry.js 1 month ago sc-wordpress-password-edit.entry.js.map 2 months ago sc-wordpress-user-edit.entry.js 1 month ago sc-wordpress-user-edit.entry.js.map 2 months ago sc-wordpress-user.entry.js 1 month ago sc-wordpress-user.entry.js.map 1 year ago store-289e460c.js 2 months ago store-289e460c.js.map 2 months ago store-ac90a769.js 1 month ago store-ac90a769.js.map 1 month ago store-b1758b00.js 2 months ago store-b1758b00.js.map 2 months ago surecart.js 2 weeks ago surecart.js.map 1 year ago tax-a03623ca.js 1 year ago tax-a03623ca.js.map 1 year ago universe-7bd0ac2b.js 2 months ago universe-7bd0ac2b.js.map 2 months ago util-dfbf863e.js 2 months ago util-dfbf863e.js.map 2 months ago utils-f84b2118.js 3 months ago utils-f84b2118.js.map 3 months ago verification-00df9439.js 1 month ago verification-00df9439.js.map 1 month ago watchers-2d9a1422.js 1 week ago watchers-2d9a1422.js.map 1 week ago watchers-81f32d01.js 1 week ago watchers-81f32d01.js.map 1 week ago watchers-843c3dbe.js 1 week ago watchers-843c3dbe.js.map 1 week ago watchers-c7bbc6b2.js 2 months ago watchers-c7bbc6b2.js.map 2 months ago watchers-df374a91.js 1 week ago watchers-df374a91.js.map 1 week ago
sc-customer-email.entry.js
245 lines
1 import { r as registerInstance, c as createEvent, h, F as Fragment } from './index-25e5af33.js';
2 import { s as speak } from './index-c5a96d53.js';
3 import { a as apiFetch } from './index-824c562b.js';
4 import { c as createOrUpdateCheckout } from './index-a786f689.js';
5 import { a as getValueFromUrl, b as isRateLimited } from './util-dfbf863e.js';
6 import { r as resendAnchorFrom, g as getBlockedDuplicateSeconds } from './verification-00df9439.js';
7 import { s as state$1, C as CODE_SENT, o as onChange$1, U as UNVERIFIED, r as resetUser, V as VERIFYING, a as CODE_EXPIRED } from './store-ac90a769.js';
8 import { s as state, o as onChange } from './mutations-9ffd30f4.js';
9 import './add-query-args-0e2a8393.js';
10 import './remove-query-args-938c53ea.js';
11 import './fetch-cdff67be.js';
12 import './index-18f5a1bc.js';
13 import './utils-f84b2118.js';
14 import './google-e9085e27.js';
15 import './currency-a0c9bff4.js';
16 import './store-b1758b00.js';
17 import './price-1ff6aa07.js';
18
19 const scCustomerEmailCss = ":host{display:block;position:relative}a{color:var(--sc-color-primary-500)}.email-preview{display:flex;align-items:center;justify-content:space-between;position:relative;width:100%;box-sizing:border-box;font-family:var(--sc-input-font-family);font-weight:var(--sc-input-font-weight);letter-spacing:var(--sc-input-letter-spacing);background-color:var(--sc-input-background-color);border:solid 1px var(--sc-input-border-color, var(--sc-input-border));vertical-align:middle;box-shadow:var(--sc-input-box-shadow);transition:var(--sc-input-transition, var(--sc-transition-medium)) color, var(--sc-input-transition, var(--sc-transition-medium)) border, var(--sc-input-transition, var(--sc-transition-medium)) box-shadow;border-radius:var(--sc-input-border-radius-medium);padding:var(--sc-input-spacing-small);font-size:var(--sc-font-size-small)}.email-preview sc-avatar{--sc-avatar-size:38px}.email-preview__info{display:flex;align-items:center;gap:1em}.email-preview__text{line-height:var(--sc-line-height-dense)}.email-preview__text :last-child:not(:first-child){color:var(--sc-input-help-text-color)}.email-preview__name{font-weight:var(--sc-font-weight-bold)}a.customer-email__login-link{color:var(--sc-customer-login-link-color, var(--sc-input-placeholder-color));text-decoration:none;font-size:var(--sc-font-size-small)}.tracking-confirmation-message{font-size:var(--sc-font-size-xx-small)}.tracking-confirmation-message span{opacity:0.75}.account-loader{line-height:0}";
20 const ScCustomerEmailStyle0 = scCustomerEmailCss;
21
22 const ScCustomerEmail = class {
23 constructor(hostRef) {
24 registerInstance(this, hostRef);
25 this.scChange = createEvent(this, "scChange", 7);
26 this.scClear = createEvent(this, "scClear", 7);
27 this.scInput = createEvent(this, "scInput", 7);
28 this.scFocus = createEvent(this, "scFocus", 7);
29 this.scBlur = createEvent(this, "scBlur", 7);
30 this.scUpdateOrderState = createEvent(this, "scUpdateOrderState", 7);
31 this.scUpdateAbandonedCart = createEvent(this, "scUpdateAbandonedCart", 7);
32 this.scLoginPrompt = createEvent(this, "scLoginPrompt", 7);
33 this.trackingConfirmationMessage = undefined;
34 this.size = 'medium';
35 this.value = getValueFromUrl('email');
36 this.pill = false;
37 this.label = undefined;
38 this.showLabel = true;
39 this.help = '';
40 this.placeholder = undefined;
41 this.disabled = false;
42 this.readonly = false;
43 this.required = false;
44 this.invalid = false;
45 this.autofocus = undefined;
46 this.hasFocus = undefined;
47 this.busy = undefined;
48 this.logoutBusy = false;
49 this.error = '';
50 this.loginMode = 'code';
51 }
52 async handleChange() {
53 this.value = this.input.value;
54 this.scChange.emit();
55 try {
56 state.checkout = (await createOrUpdateCheckout({ id: state.checkout.id, data: { email: this.input.value } }));
57 }
58 catch (error) {
59 console.log(error);
60 }
61 finally {
62 this.busy = false;
63 }
64 }
65 handleValueChange() {
66 if (this.loginCodeDebounce) {
67 clearTimeout(this.loginCodeDebounce);
68 }
69 this.loginCodeDebounce = window.setTimeout(() => {
70 this.createLoginCode();
71 this.loginCodeDebounce = null;
72 }, 800);
73 }
74 async createLoginCode() {
75 if (!this.value)
76 return;
77 if (state$1.loggedIn)
78 return;
79 // Opt-out merchant setting: skip proactive code-send when disabled.
80 if (!state.showLoginPrompt)
81 return;
82 // Check if a valid email using regex, if not return.
83 if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.value)) {
84 return;
85 }
86 try {
87 this.busy = true;
88 this.error = '';
89 this.loginMode = 'code';
90 const response = await apiFetch({
91 method: 'POST',
92 path: 'surecart/v1/verification_codes',
93 data: {
94 login: this.value,
95 checkout_mode: state.mode,
96 },
97 });
98 state$1.email = this.value;
99 state$1.verificationStatus = CODE_SENT;
100 // Anchor the resend cooldown to the platform's window (may be a resumed
101 // one when no fresh email was sent), so reload/tab switch stay accurate.
102 // Falls back to the default window if the platform omits the value.
103 state$1.resendAvailableAt = resendAnchorFrom(response === null || response === void 0 ? void 0 : response.resend_available_in);
104 // An in-window request resumes the existing code — don't announce a new email.
105 if ((response === null || response === void 0 ? void 0 : response.email_sent) === false) {
106 speak(wp.i18n.__('A verification code was already sent to your email. Please check your email.', 'surecart'), 'assertive');
107 }
108 else {
109 speak(wp.i18n.__('Verification code is sent to your email. Please check your email.', 'surecart'), 'assertive');
110 }
111 }
112 catch (e) {
113 this.handleCodeSendError(e);
114 }
115 finally {
116 this.busy = false;
117 }
118 }
119 async reportValidity() {
120 var _a, _b;
121 // if user is logged in, no need to validate.
122 if (state$1.loggedIn)
123 return true;
124 return (_b = (_a = this.input) === null || _a === void 0 ? void 0 : _a.reportValidity) === null || _b === void 0 ? void 0 : _b.call(_a);
125 }
126 /** Sync customer email with session if it's updated by other means */
127 handleSessionChange() {
128 var _a, _b, _c, _d, _e, _f;
129 // we already have a value and we are not yet logged in.
130 if (this.value && !state$1.loggedIn)
131 return;
132 // we are logged in already.
133 if (state$1.loggedIn) {
134 // get email from user state fist.
135 this.value = state$1.email || ((_b = (_a = state === null || state === void 0 ? void 0 : state.checkout) === null || _a === void 0 ? void 0 : _a.customer) === null || _b === void 0 ? void 0 : _b.email) || ((_c = state === null || state === void 0 ? void 0 : state.checkout) === null || _c === void 0 ? void 0 : _c.email);
136 return;
137 }
138 const fromUrl = getValueFromUrl('email');
139 if (!state$1.loggedIn && !!fromUrl) {
140 this.value = fromUrl;
141 return;
142 }
143 this.value = ((_d = state === null || state === void 0 ? void 0 : state.checkout) === null || _d === void 0 ? void 0 : _d.email) || ((_f = (_e = state === null || state === void 0 ? void 0 : state.checkout) === null || _e === void 0 ? void 0 : _e.customer) === null || _f === void 0 ? void 0 : _f.email);
144 if (!!this.value && !state$1.loggedIn) {
145 state$1.email = this.value;
146 }
147 }
148 /** Listen to checkout. */
149 componentWillLoad() {
150 this.handleSessionChange();
151 this.removeCheckoutListener = onChange('checkout', () => this.handleSessionChange());
152 this.removeUserListener = onChange$1('email', val => {
153 this.value = val;
154 });
155 }
156 handleCodeSendError(error) {
157 var _a;
158 // 429: silently switch to password mode. Header + input is enough context — no red error.
159 if (isRateLimited(error)) {
160 state$1.email = ((_a = this.input) === null || _a === void 0 ? void 0 : _a.value) || '';
161 state$1.verificationStatus = UNVERIFIED;
162 this.loginMode = 'password';
163 return;
164 }
165 const blockedSeconds = getBlockedDuplicateSeconds(error);
166 ((error === null || error === void 0 ? void 0 : error.additional_errors) || []).forEach((e) => {
167 var _a;
168 if ((e === null || e === void 0 ? void 0 : e.code) === 'verification_code.email.blocked_duplicate') {
169 state$1.email = ((_a = this.input) === null || _a === void 0 ? void 0 : _a.value) || '';
170 state$1.verificationStatus = CODE_SENT;
171 // Resume the countdown from the platform's reported backoff window
172 // (default window if the platform didn't include seconds).
173 state$1.resendAvailableAt = resendAnchorFrom(blockedSeconds);
174 }
175 else {
176 this.error = (e === null || e === void 0 ? void 0 : e.message) || wp.i18n.__('Verification code is not valid. Please try again.', 'surecart');
177 }
178 });
179 }
180 /** Remove listener. */
181 disconnectedCallback() {
182 this.removeCheckoutListener();
183 this.removeUserListener();
184 }
185 async logout() {
186 try {
187 this.logoutBusy = true;
188 state.checkout = (await createOrUpdateCheckout({ id: state.checkout.id, data: { email: '' } }));
189 const response = (await apiFetch({
190 method: 'POST',
191 path: 'surecart/v1/logout',
192 }));
193 // @ts-ignore - nonceMiddleware is set in fetch.ts but not in @wordpress/api-fetch types.
194 if ((response === null || response === void 0 ? void 0 : response.nonce) && apiFetch.nonceMiddleware) {
195 // @ts-ignore
196 apiFetch.nonceMiddleware.nonce = response.nonce;
197 }
198 resetUser();
199 speak(wp.i18n.__('Logged out successfully.', 'surecart'), 'assertive');
200 }
201 catch (e) {
202 console.error(e);
203 }
204 finally {
205 this.logoutBusy = false;
206 }
207 }
208 renderLoggedIn() {
209 return (h("div", { class: "email-preview" }, h("div", { class: "email-preview__info" }, h("sc-avatar", { image: state$1.avatarUrl, initials: ((state$1 === null || state$1 === void 0 ? void 0 : state$1.name) || (state$1 === null || state$1 === void 0 ? void 0 : state$1.email)).charAt(0) }), h("div", { class: "email-preview__text" }, h("div", { class: "email-preview__name" }, state$1.name), h("div", { class: "email-preview__email" }, state$1.email))), h("sc-dropdown", { placement: "bottom-end" }, h("sc-button", { type: "text", slot: "trigger", loading: this.logoutBusy }, h("sc-icon", { name: "chevron-down", "aria-label": wp.i18n.__('Account options', 'surecart') })), h("sc-menu", null, h("sc-menu-item", { onClick: () => this.logout() }, h("sc-icon", { slot: "prefix", name: "log-out" }), wp.i18n.__('Logout', 'surecart'))))));
210 }
211 renderOptIn() {
212 if (!this.trackingConfirmationMessage)
213 return null;
214 if (state.abandonedCheckoutEnabled !== false) {
215 return (h("div", { class: "tracking-confirmation-message" }, h("span", null, this.trackingConfirmationMessage), ' ', h("a", { href: "#", onClick: e => {
216 e.preventDefault();
217 this.scUpdateAbandonedCart.emit(false);
218 } }, wp.i18n.__('No Thanks', 'surecart'))));
219 }
220 return (h("div", { class: "tracking-confirmation-message" }, h("span", null, " ", wp.i18n.__("You won't receive further emails from us.", 'surecart'))));
221 }
222 render() {
223 var _a;
224 if (state$1.loggedIn) {
225 return this.renderLoggedIn();
226 }
227 if (state$1.verificationStatus === CODE_SENT ||
228 state$1.verificationStatus === VERIFYING ||
229 state$1.verificationStatus === UNVERIFIED ||
230 state$1.verificationStatus === CODE_EXPIRED) {
231 return h("sc-customer-login", { initialMode: this.loginMode, codeError: this.error });
232 }
233 return (h(Fragment, null, h("sc-input", { exportparts: "base, input, form-control, label, help-text, prefix, suffix", type: "email", name: "email", ref: el => (this.input = el), value: this.value, help: this.help, label: this.label, autocomplete: 'email', placeholder: this.placeholder, disabled: this.disabled || (!!state$1.loggedIn && !!((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) && !this.invalid), readonly: this.readonly, required: true, invalid: this.invalid, autofocus: this.autofocus, hasFocus: this.hasFocus, onScChange: () => this.handleChange(), onScInput: () => {
234 this.scInput.emit();
235 }, onScFocus: () => this.scFocus.emit(), onScBlur: () => this.scBlur.emit() }, this.busy && h("sc-spinner", { slot: "suffix", class: "account-loader" })), this.renderOptIn()));
236 }
237 static get watchers() { return {
238 "value": ["handleValueChange"]
239 }; }
240 };
241 ScCustomerEmail.style = ScCustomerEmailStyle0;
242
243 export { ScCustomerEmail as sc_customer_email };
244
245 //# sourceMappingURL=sc-customer-email.entry.js.map