PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / trunk
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments vtrunk
4.7.0 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 / cjs / sc-customer-email.cjs.entry.js
surecart / dist / components / cjs Last commit date
MockProcessor-ad11752f.js 2 months ago MockProcessor-ad11752f.js.map 2 months ago add-query-args-49dcb630.js 1 year ago add-query-args-49dcb630.js.map 1 year ago address-7404695f.js 4 months ago address-7404695f.js.map 4 months ago animation-registry-b597d2f4.js 3 months ago animation-registry-b597d2f4.js.map 3 months ago app-globals-464bf4c9.js 2 months ago app-globals-464bf4c9.js.map 2 months ago consumer-b58230e6.js 2 months ago consumer-b58230e6.js.map 2 months ago currency-71fce0f0.js 1 year ago currency-71fce0f0.js.map 1 year ago error-66b4ae42.js 1 week ago error-66b4ae42.js.map 1 week ago fetch-5e8dc1d5.js 1 month ago fetch-5e8dc1d5.js.map 1 month ago floating-ui.dom.esm-7fad5c49.js 6 months ago floating-ui.dom.esm-7fad5c49.js.map 6 months ago form-data-0da9940f.js 1 year ago form-data-0da9940f.js.map 1 year ago functions-033a6a55.js 3 months ago functions-033a6a55.js.map 3 months ago geo-permission-8128c254.js 1 month ago geo-permission-8128c254.js.map 1 month ago getters-4e5fc4d4.js 1 week ago getters-4e5fc4d4.js.map 1 week ago getters-68a0d178.js 2 months ago getters-68a0d178.js.map 2 months ago getters-bc65a40b.js 2 months ago getters-bc65a40b.js.map 2 months ago getters-c3cd6c93.js 1 week ago getters-c3cd6c93.js.map 1 week ago getters-d68c08ed.js 2 months ago getters-d68c08ed.js.map 2 months ago google-5d965da2.js 1 week ago google-5d965da2.js.map 1 week ago google-8dbad1a6.js 1 week ago google-8dbad1a6.js.map 1 week ago google-maps-8b4e4fed.js 1 day ago google-maps-8b4e4fed.js.map 1 day ago index-7ced8198.js 2 months ago index-7ced8198.js.map 2 months ago index-a4a4f390.js 1 month ago index-a4a4f390.js.map 1 month ago index-adacfa36.js 1 year ago index-adacfa36.js.map 1 year ago index-be4abba1.js 2 months ago index-be4abba1.js.map 2 months ago index-c2d0eb49.js 1 week ago index-c2d0eb49.js.map 1 week ago index-c3de642f.js 2 months ago index-c3de642f.js.map 2 months ago index-f3933112.js 1 month ago index-f3933112.js.map 1 month ago index-fb76df07.js 2 years ago index-fb76df07.js.map 2 years ago index.cjs.js 1 week ago index.cjs.js.map 1 month ago inline-aa15f113.js 1 year ago inline-aa15f113.js.map 1 year ago lazy-2b509fa7.js 1 year ago lazy-2b509fa7.js.map 1 year ago library-08bc52a5.js 2 months ago library-08bc52a5.js.map 2 months ago loader.cjs.js 1 day ago loader.cjs.js.map 1 year ago media-43b85f3d.js 1 year ago media-43b85f3d.js.map 1 year ago mutations-463da571.js 1 week ago mutations-463da571.js.map 1 week ago mutations-627c79a0.js 1 week ago mutations-627c79a0.js.map 1 week ago mutations-98f05402.js 1 week ago mutations-98f05402.js.map 1 week ago mutations-d5d6ddf1.js 2 months ago mutations-d5d6ddf1.js.map 2 months ago page-align-5a2ab493.js 1 year ago page-align-5a2ab493.js.map 1 year ago price-da3cab3d.js 4 months ago price-da3cab3d.js.map 4 months ago pure-bd6f0a6e.js 1 year ago pure-bd6f0a6e.js.map 1 year ago quantity-aa458329.js 3 months ago quantity-aa458329.js.map 3 months ago razorpay-88fe8897.js 3 months ago razorpay-88fe8897.js.map 3 months ago remove-query-args-b57e8cd3.js 1 year ago remove-query-args-b57e8cd3.js.map 1 year ago sc-address_5.cjs.entry.js 1 day ago sc-address_5.cjs.entry.js.map 1 day ago sc-alert.cjs.entry.js 1 month ago sc-alert.cjs.entry.js.map 1 year ago sc-avatar_2.cjs.entry.js 1 week ago sc-avatar_2.cjs.entry.js.map 1 month ago sc-badge-notice.cjs.entry.js 1 month ago sc-badge-notice.cjs.entry.js.map 1 year ago sc-block-ui.cjs.entry.js 1 month ago sc-block-ui.cjs.entry.js.map 5 months ago sc-breadcrumb.cjs.entry.js 1 month ago sc-breadcrumb.cjs.entry.js.map 1 year ago sc-breadcrumbs.cjs.entry.js 1 month ago sc-breadcrumbs.cjs.entry.js.map 1 year ago sc-button-group.cjs.entry.js 1 month ago sc-button-group.cjs.entry.js.map 1 year ago sc-button_6.cjs.entry.js 1 month ago sc-button_6.cjs.entry.js.map 1 month ago sc-cancel-dialog_3.cjs.entry.js 1 month ago sc-cancel-dialog_3.cjs.entry.js.map 1 month ago sc-cancel-discount_4.cjs.entry.js 1 month ago sc-cancel-discount_4.cjs.entry.js.map 2 months ago sc-card_2.cjs.entry.js 1 month ago sc-card_2.cjs.entry.js.map 4 months ago sc-cart-button.cjs.entry.js 1 week ago sc-cart-button.cjs.entry.js.map 1 year ago sc-cart-form-submit.cjs.entry.js 2 months ago sc-cart-form-submit.cjs.entry.js.map 1 year ago sc-cart-form.cjs.entry.js 1 week ago sc-cart-form.cjs.entry.js.map 1 month ago sc-cart-header.cjs.entry.js 1 week ago sc-cart-header.cjs.entry.js.map 1 year ago sc-cart-icon.cjs.entry.js 1 week ago sc-cart-icon.cjs.entry.js.map 1 year ago sc-cart-loader.cjs.entry.js 1 week ago sc-cart-loader.cjs.entry.js.map 1 year ago sc-cart-session-provider_3.cjs.entry.js 1 day ago sc-cart-session-provider_3.cjs.entry.js.map 1 day ago sc-cart-submit.cjs.entry.js 2 months ago sc-cart-submit.cjs.entry.js.map 1 year ago sc-cart.cjs.entry.js 1 week ago sc-cart.cjs.entry.js.map 2 months ago sc-cc-logo_2.cjs.entry.js 1 month ago sc-cc-logo_2.cjs.entry.js.map 1 month ago sc-charges-list.cjs.entry.js 1 month ago sc-charges-list.cjs.entry.js.map 2 months ago sc-checkout-autofill-provider_11.cjs.entry.js 1 day ago sc-checkout-autofill-provider_11.cjs.entry.js.map 1 day ago sc-checkout-form-errors.cjs.entry.js 2 months ago sc-checkout-form-errors.cjs.entry.js.map 1 year ago sc-checkout-mollie-payment_3.cjs.entry.js 1 week ago sc-checkout-mollie-payment_3.cjs.entry.js.map 2 months ago sc-checkout-product-bundle-component-variants.cjs.entry.js 1 week ago sc-checkout-product-bundle-component-variants.cjs.entry.js.map 1 month ago sc-checkout-product-price-variant-selector.cjs.entry.js 1 week ago sc-checkout-product-price-variant-selector.cjs.entry.js.map 4 weeks ago sc-checkout.cjs.entry.js 1 week ago sc-checkout.cjs.entry.js.map 1 month ago sc-choice-container.cjs.entry.js 1 month ago sc-choice-container.cjs.entry.js.map 1 year ago sc-choice.cjs.entry.js 1 month ago sc-choice.cjs.entry.js.map 1 year ago sc-choices.cjs.entry.js 1 month ago sc-choices.cjs.entry.js.map 1 year ago sc-column_2.cjs.entry.js 1 month ago sc-column_2.cjs.entry.js.map 1 month ago sc-compact-address_18.cjs.entry.js 1 day ago sc-compact-address_18.cjs.entry.js.map 1 month ago sc-conditional-form.cjs.entry.js 1 week ago sc-conditional-form.cjs.entry.js.map 2 months ago sc-consumer.cjs.entry.js 2 months ago sc-consumer.cjs.entry.js.map 1 year ago sc-coupon-form.cjs.entry.js 1 week ago sc-coupon-form.cjs.entry.js.map 5 months ago sc-custom-order-price-input.cjs.entry.js 1 month ago sc-custom-order-price-input.cjs.entry.js.map 2 months ago sc-customer-details.cjs.entry.js 1 month ago sc-customer-details.cjs.entry.js.map 7 months ago sc-customer-edit.cjs.entry.js 1 month ago sc-customer-edit.cjs.entry.js.map 2 months ago sc-customer-email.cjs.entry.js 1 week ago sc-customer-email.cjs.entry.js.map 1 month ago sc-customer-firstname.cjs.entry.js 1 week ago sc-customer-firstname.cjs.entry.js.map 2 months ago sc-customer-lastname.cjs.entry.js 1 week ago sc-customer-lastname.cjs.entry.js.map 2 months ago sc-customer-name.cjs.entry.js 1 week ago sc-customer-name.cjs.entry.js.map 2 months ago sc-dashboard-customer-details.cjs.entry.js 1 month ago sc-dashboard-customer-details.cjs.entry.js.map 2 months ago sc-dashboard-downloads-list.cjs.entry.js 1 month ago sc-dashboard-downloads-list.cjs.entry.js.map 2 months ago sc-dialog.cjs.entry.js 1 month ago sc-dialog.cjs.entry.js.map 5 months ago sc-divider.cjs.entry.js 1 month ago sc-divider.cjs.entry.js.map 1 year ago sc-donation-choices.cjs.entry.js 2 months ago sc-donation-choices.cjs.entry.js.map 1 year ago sc-downloads-list.cjs.entry.js 1 month ago sc-downloads-list.cjs.entry.js.map 1 month ago sc-dropdown_3.cjs.entry.js 1 month ago sc-dropdown_3.cjs.entry.js.map 6 months ago sc-empty_3.cjs.entry.js 1 month ago sc-empty_3.cjs.entry.js.map 4 months ago sc-express-payment.cjs.entry.js 1 week ago sc-express-payment.cjs.entry.js.map 3 months ago sc-feature-demo-banner.cjs.entry.js 1 month ago sc-feature-demo-banner.cjs.entry.js.map 1 year ago sc-flex.cjs.entry.js 1 month ago sc-flex.cjs.entry.js.map 1 year ago sc-form-control_2.cjs.entry.js 1 month ago sc-form-control_2.cjs.entry.js.map 2 months ago sc-form-row.cjs.entry.js 1 month ago sc-form-row.cjs.entry.js.map 1 year ago sc-form.cjs.entry.js 1 month ago sc-form.cjs.entry.js.map 1 year ago sc-format-bytes.cjs.entry.js 2 months ago sc-format-bytes.cjs.entry.js.map 1 year ago sc-format-interval.cjs.entry.js 2 months ago sc-format-interval.cjs.entry.js.map 1 year ago sc-format-number.cjs.entry.js 2 months ago sc-format-number.cjs.entry.js.map 1 year ago sc-fulfillment-shipping-status-badge.cjs.entry.js 1 day ago sc-fulfillment-shipping-status-badge.cjs.entry.js.map 1 day ago sc-fulfillments.cjs.entry.js 1 day ago sc-fulfillments.cjs.entry.js.map 1 day ago sc-heading_2.cjs.entry.js 1 month ago sc-heading_2.cjs.entry.js.map 1 year ago sc-image-slider.cjs.entry.js 1 month ago sc-image-slider.cjs.entry.js.map 1 month ago sc-invoice-status-badge.cjs.entry.js 1 month ago sc-invoice-status-badge.cjs.entry.js.map 4 months ago sc-invoices-list.cjs.entry.js 1 month ago sc-invoices-list.cjs.entry.js.map 2 months ago sc-license.cjs.entry.js 1 month ago sc-license.cjs.entry.js.map 2 months ago sc-licenses-list.cjs.entry.js 1 month ago sc-licenses-list.cjs.entry.js.map 1 month ago sc-line-item-bump.cjs.entry.js 1 week ago sc-line-item-bump.cjs.entry.js.map 1 year ago sc-line-item-total.cjs.entry.js 1 week ago sc-line-item-total.cjs.entry.js.map 6 months ago sc-line-item.cjs.entry.js 1 month ago sc-line-item.cjs.entry.js.map 1 year ago sc-line-items-provider.cjs.entry.js 1 month ago sc-line-items-provider.cjs.entry.js.map 1 year ago sc-line-items.cjs.entry.js 1 week ago sc-line-items.cjs.entry.js.map 1 month ago sc-login-form.cjs.entry.js 1 month ago sc-login-form.cjs.entry.js.map 2 months ago sc-manual-payment-method_3.cjs.entry.js 1 month ago sc-manual-payment-method_3.cjs.entry.js.map 3 months ago sc-menu-divider.cjs.entry.js 1 month ago sc-menu-divider.cjs.entry.js.map 1 year ago sc-menu-label_2.cjs.entry.js 1 day ago sc-menu-label_2.cjs.entry.js.map 1 day ago sc-mollie-add-method.cjs.entry.js 1 month ago sc-mollie-add-method.cjs.entry.js.map 2 months ago sc-order-confirmation-customer.cjs.entry.js 2 months ago sc-order-confirmation-customer.cjs.entry.js.map 1 year ago sc-order-confirmation-details.cjs.entry.js 2 months ago sc-order-confirmation-details.cjs.entry.js.map 11 months ago sc-order-confirmation-line-items_2.cjs.entry.js 1 month ago sc-order-confirmation-line-items_2.cjs.entry.js.map 1 month ago sc-order-confirmation.cjs.entry.js 1 month ago sc-order-confirmation.cjs.entry.js.map 2 months ago sc-order-coupon-form.cjs.entry.js 1 week ago sc-order-coupon-form.cjs.entry.js.map 2 months ago sc-order-detail.cjs.entry.js 2 months ago sc-order-detail.cjs.entry.js.map 1 year ago sc-order-fulfillment-badge.cjs.entry.js 1 month ago sc-order-fulfillment-badge.cjs.entry.js.map 4 months ago sc-order-manual-instructions.cjs.entry.js 2 months ago sc-order-manual-instructions.cjs.entry.js.map 1 year ago sc-order-password.cjs.entry.js 2 months ago sc-order-password.cjs.entry.js.map 1 year ago sc-order-return-badge.cjs.entry.js 1 month ago sc-order-return-badge.cjs.entry.js.map 4 months ago sc-order-shipment-badge.cjs.entry.js 1 day ago sc-order-shipment-badge.cjs.entry.js.map 1 day ago sc-order-status-badge.cjs.entry.js 1 month ago sc-order-status-badge.cjs.entry.js.map 4 months ago sc-order-submit.cjs.entry.js 1 week ago sc-order-submit.cjs.entry.js.map 2 months ago sc-order-summary.cjs.entry.js 1 week ago sc-order-summary.cjs.entry.js.map 1 month ago sc-order.cjs.entry.js 1 month ago sc-order.cjs.entry.js.map 1 month ago sc-orders-list.cjs.entry.js 1 day ago sc-orders-list.cjs.entry.js.map 1 day ago sc-pagination.cjs.entry.js 2 months ago sc-pagination.cjs.entry.js.map 1 year ago sc-password-nag.cjs.entry.js 1 month ago sc-password-nag.cjs.entry.js.map 2 months ago sc-password.cjs.entry.js 1 month ago sc-password.cjs.entry.js.map 1 month ago sc-payment-method-choice_2.cjs.entry.js 1 month ago sc-payment-method-choice_2.cjs.entry.js.map 1 year ago sc-payment-method-details.cjs.entry.js 1 month ago sc-payment-method-details.cjs.entry.js.map 1 year ago sc-payment-methods-list.cjs.entry.js 1 month ago sc-payment-methods-list.cjs.entry.js.map 2 months ago sc-payment.cjs.entry.js 1 week ago sc-payment.cjs.entry.js.map 3 months ago sc-paypal-add-method.cjs.entry.js 1 month ago sc-paypal-add-method.cjs.entry.js.map 2 months ago sc-paypal-buttons_2.cjs.entry.js 1 week ago sc-paypal-buttons_2.cjs.entry.js.map 2 months ago sc-paystack-add-method.cjs.entry.js 1 month ago sc-paystack-add-method.cjs.entry.js.map 2 months ago sc-pill-option.cjs.entry.js 1 month ago sc-pill-option.cjs.entry.js.map 1 year ago sc-popover.cjs.entry.js 1 month ago sc-popover.cjs.entry.js.map 6 months ago sc-premium-tag.cjs.entry.js 1 month ago sc-premium-tag.cjs.entry.js.map 1 year ago sc-price-choice-container.cjs.entry.js 1 month ago sc-price-choice-container.cjs.entry.js.map 1 month ago sc-price-choice.cjs.entry.js 1 month ago sc-price-choice.cjs.entry.js.map 2 months ago sc-price-choices.cjs.entry.js 1 week ago sc-price-choices.cjs.entry.js.map 1 year ago sc-price-input.cjs.entry.js 1 month ago sc-price-input.cjs.entry.js.map 1 year ago sc-price-range_4.cjs.entry.js 1 month ago sc-price-range_4.cjs.entry.js.map 1 year ago sc-price.cjs.entry.js 2 months ago sc-price.cjs.entry.js.map 11 months ago sc-product-buy-button.cjs.entry.js 1 week ago sc-product-buy-button.cjs.entry.js.map 2 months ago sc-product-donation-amount-choice.cjs.entry.js 1 week ago sc-product-donation-amount-choice.cjs.entry.js.map 2 months ago sc-product-donation-choices.cjs.entry.js 1 week ago sc-product-donation-choices.cjs.entry.js.map 2 months ago sc-product-donation-custom-amount.cjs.entry.js 1 week ago sc-product-donation-custom-amount.cjs.entry.js.map 2 months ago sc-product-item-list.cjs.entry.js 1 week ago sc-product-item-list.cjs.entry.js.map 2 months ago sc-product-item.cjs.entry.js 1 month ago sc-product-item.cjs.entry.js.map 1 year ago sc-product-pills-variant-option.cjs.entry.js 1 week ago sc-product-pills-variant-option.cjs.entry.js.map 1 year ago sc-product-price-choices.cjs.entry.js 1 week ago sc-product-price-choices.cjs.entry.js.map 1 year ago sc-product-price-modal.cjs.entry.js 1 week ago sc-product-price-modal.cjs.entry.js.map 2 months ago sc-product-price.cjs.entry.js 1 week ago sc-product-price.cjs.entry.js.map 2 months ago sc-product-quantity.cjs.entry.js 1 week ago sc-product-quantity.cjs.entry.js.map 1 year ago sc-product-selected-price.cjs.entry.js 1 week ago sc-product-selected-price.cjs.entry.js.map 2 months ago sc-product-text.cjs.entry.js 1 week ago sc-product-text.cjs.entry.js.map 1 year ago sc-provider.cjs.entry.js 2 months ago sc-provider.cjs.entry.js.map 1 year ago sc-provisional-banner.cjs.entry.js 1 month ago sc-provisional-banner.cjs.entry.js.map 11 months ago sc-purchase-downloads-list.cjs.entry.js 1 month ago sc-purchase-downloads-list.cjs.entry.js.map 1 month ago sc-razorpay-add-method.cjs.entry.js 1 month ago sc-razorpay-add-method.cjs.entry.js.map 2 months ago sc-recurring-price-choice-container.cjs.entry.js 2 months ago sc-recurring-price-choice-container.cjs.entry.js.map 1 year ago sc-review-stars.cjs.entry.js 2 months ago sc-review-stars.cjs.entry.js.map 6 months ago sc-rich-text.cjs.entry.js 1 month ago sc-rich-text.cjs.entry.js.map 1 month ago sc-skeleton.cjs.entry.js 1 month ago sc-skeleton.cjs.entry.js.map 1 year ago sc-spacing.cjs.entry.js 1 month ago sc-spacing.cjs.entry.js.map 1 year ago sc-stripe-add-method.cjs.entry.js 1 month ago sc-stripe-add-method.cjs.entry.js.map 2 months ago sc-stripe-element.cjs.entry.js 1 week ago sc-stripe-element.cjs.entry.js.map 2 months ago sc-stripe-payment-element.cjs.entry.js 1 week ago sc-stripe-payment-element.cjs.entry.js.map 2 months ago sc-stripe-payment-request.cjs.entry.js 1 week ago sc-stripe-payment-request.cjs.entry.js.map 2 months ago sc-subscription-ad-hoc-confirm.cjs.entry.js 1 month ago sc-subscription-ad-hoc-confirm.cjs.entry.js.map 6 months ago sc-subscription-details_2.cjs.entry.js 1 month ago sc-subscription-details_2.cjs.entry.js.map 1 month ago sc-subscription-payment-method.cjs.entry.js 1 month ago sc-subscription-payment-method.cjs.entry.js.map 2 months ago sc-subscription-payment.cjs.entry.js 1 month ago sc-subscription-payment.cjs.entry.js.map 2 months ago sc-subscription-switch.cjs.entry.js 1 month ago sc-subscription-switch.cjs.entry.js.map 2 months ago sc-subscription-variation-confirm.cjs.entry.js 1 month ago sc-subscription-variation-confirm.cjs.entry.js.map 1 year ago sc-subscription.cjs.entry.js 1 month ago sc-subscription.cjs.entry.js.map 1 month ago sc-subscriptions-list.cjs.entry.js 1 month ago sc-subscriptions-list.cjs.entry.js.map 2 months ago sc-summary.cjs.entry.js 1 month ago sc-summary.cjs.entry.js.map 1 year ago sc-swap.cjs.entry.js 1 week ago sc-swap.cjs.entry.js.map 2 months ago sc-switch.cjs.entry.js 1 month ago sc-switch.cjs.entry.js.map 7 months ago sc-tab-group.cjs.entry.js 1 month ago sc-tab-group.cjs.entry.js.map 1 year ago sc-tab-panel.cjs.entry.js 1 month ago sc-tab-panel.cjs.entry.js.map 1 year ago sc-tab.cjs.entry.js 1 month ago sc-tab.cjs.entry.js.map 1 year ago sc-table-head.cjs.entry.js 1 month ago sc-table-head.cjs.entry.js.map 1 year ago sc-table_3.cjs.entry.js 1 month ago sc-table_3.cjs.entry.js.map 10 months ago sc-tag.cjs.entry.js 1 month ago sc-tag.cjs.entry.js.map 4 months ago sc-test-mode-info.cjs.entry.js 1 month ago sc-test-mode-info.cjs.entry.js.map 6 months ago sc-text.cjs.entry.js 1 month ago sc-text.cjs.entry.js.map 1 year ago sc-toggle.cjs.entry.js 1 month ago sc-toggle.cjs.entry.js.map 1 year ago sc-toggles.cjs.entry.js 1 month ago sc-toggles.cjs.entry.js.map 1 year ago sc-total.cjs.entry.js 1 week ago sc-total.cjs.entry.js.map 1 year ago sc-upcoming-invoice.cjs.entry.js 1 month ago sc-upcoming-invoice.cjs.entry.js.map 2 months ago sc-upgrade-required.cjs.entry.js 2 months ago sc-upgrade-required.cjs.entry.js.map 1 year ago sc-upsell-countdown-timer.cjs.entry.js 1 month ago sc-upsell-countdown-timer.cjs.entry.js.map 1 year ago sc-upsell-no-thanks-button.cjs.entry.js 1 week ago sc-upsell-no-thanks-button.cjs.entry.js.map 2 months ago sc-upsell-submit-button.cjs.entry.js 1 week ago sc-upsell-submit-button.cjs.entry.js.map 2 months ago sc-upsell-totals.cjs.entry.js 1 week ago sc-upsell-totals.cjs.entry.js.map 2 months ago sc-upsell.cjs.entry.js 1 week ago sc-upsell.cjs.entry.js.map 2 months ago sc-verification-code.cjs.entry.js 1 month ago sc-verification-code.cjs.entry.js.map 2 months ago sc-visually-hidden.cjs.entry.js 1 month ago sc-visually-hidden.cjs.entry.js.map 1 year ago sc-wordpress-password-edit.cjs.entry.js 1 month ago sc-wordpress-password-edit.cjs.entry.js.map 2 months ago sc-wordpress-user-edit.cjs.entry.js 1 month ago sc-wordpress-user-edit.cjs.entry.js.map 2 months ago sc-wordpress-user.cjs.entry.js 1 month ago sc-wordpress-user.cjs.entry.js.map 1 year ago store-01e8edc2.js 2 months ago store-01e8edc2.js.map 2 months ago store-401bdb4d.js 2 months ago store-401bdb4d.js.map 2 months ago store-9c215436.js 1 month ago store-9c215436.js.map 1 month ago surecart.cjs.js 1 day ago surecart.cjs.js.map 1 year ago tax-a4582e73.js 1 year ago tax-a4582e73.js.map 1 year ago universe-1db52218.js 2 months ago universe-1db52218.js.map 2 months ago util-a15c420c.js 2 months ago util-a15c420c.js.map 2 months ago utils-a9d13080.js 3 months ago utils-a9d13080.js.map 3 months ago verification-19455819.js 1 month ago verification-19455819.js.map 1 month ago watchers-08c6f04b.js 1 week ago watchers-08c6f04b.js.map 1 week ago watchers-517825ae.js 2 months ago watchers-517825ae.js.map 2 months ago watchers-a136c7bc.js 1 week ago watchers-a136c7bc.js.map 1 week ago watchers-b5cd03f1.js 1 week ago watchers-b5cd03f1.js.map 1 week ago watchers-c1bcf0a8.js 1 week ago watchers-c1bcf0a8.js.map 1 week ago
sc-customer-email.cjs.entry.js
249 lines
1 'use strict';
2
3 Object.defineProperty(exports, '__esModule', { value: true });
4
5 const index = require('./index-be4abba1.js');
6 const index$3 = require('./index-fb76df07.js');
7 const index$2 = require('./index-7ced8198.js');
8 const index$1 = require('./index-c2d0eb49.js');
9 const util = require('./util-a15c420c.js');
10 const verification = require('./verification-19455819.js');
11 const store = require('./store-9c215436.js');
12 const mutations = require('./mutations-98f05402.js');
13 require('./add-query-args-49dcb630.js');
14 require('./remove-query-args-b57e8cd3.js');
15 require('./fetch-5e8dc1d5.js');
16 require('./index-c3de642f.js');
17 require('./utils-a9d13080.js');
18 require('./google-8dbad1a6.js');
19 require('./currency-71fce0f0.js');
20 require('./store-01e8edc2.js');
21 require('./price-da3cab3d.js');
22
23 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}";
24 const ScCustomerEmailStyle0 = scCustomerEmailCss;
25
26 const ScCustomerEmail = class {
27 constructor(hostRef) {
28 index.registerInstance(this, hostRef);
29 this.scChange = index.createEvent(this, "scChange", 7);
30 this.scClear = index.createEvent(this, "scClear", 7);
31 this.scInput = index.createEvent(this, "scInput", 7);
32 this.scFocus = index.createEvent(this, "scFocus", 7);
33 this.scBlur = index.createEvent(this, "scBlur", 7);
34 this.scUpdateOrderState = index.createEvent(this, "scUpdateOrderState", 7);
35 this.scUpdateAbandonedCart = index.createEvent(this, "scUpdateAbandonedCart", 7);
36 this.scLoginPrompt = index.createEvent(this, "scLoginPrompt", 7);
37 this.trackingConfirmationMessage = undefined;
38 this.size = 'medium';
39 this.value = util.getValueFromUrl('email');
40 this.pill = false;
41 this.label = undefined;
42 this.showLabel = true;
43 this.help = '';
44 this.placeholder = undefined;
45 this.disabled = false;
46 this.readonly = false;
47 this.required = false;
48 this.invalid = false;
49 this.autofocus = undefined;
50 this.hasFocus = undefined;
51 this.busy = undefined;
52 this.logoutBusy = false;
53 this.error = '';
54 this.loginMode = 'code';
55 }
56 async handleChange() {
57 this.value = this.input.value;
58 this.scChange.emit();
59 try {
60 mutations.state.checkout = (await index$1.createOrUpdateCheckout({ id: mutations.state.checkout.id, data: { email: this.input.value } }));
61 }
62 catch (error) {
63 console.log(error);
64 }
65 finally {
66 this.busy = false;
67 }
68 }
69 handleValueChange() {
70 if (this.loginCodeDebounce) {
71 clearTimeout(this.loginCodeDebounce);
72 }
73 this.loginCodeDebounce = window.setTimeout(() => {
74 this.createLoginCode();
75 this.loginCodeDebounce = null;
76 }, 800);
77 }
78 async createLoginCode() {
79 if (!this.value)
80 return;
81 if (store.state.loggedIn)
82 return;
83 // Opt-out merchant setting: skip proactive code-send when disabled.
84 if (!mutations.state.showLoginPrompt)
85 return;
86 // Check if a valid email using regex, if not return.
87 if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.value)) {
88 return;
89 }
90 try {
91 this.busy = true;
92 this.error = '';
93 this.loginMode = 'code';
94 const response = await index$2.apiFetch({
95 method: 'POST',
96 path: 'surecart/v1/verification_codes',
97 data: {
98 login: this.value,
99 checkout_mode: mutations.state.mode,
100 },
101 });
102 store.state.email = this.value;
103 store.state.verificationStatus = store.CODE_SENT;
104 // Anchor the resend cooldown to the platform's window (may be a resumed
105 // one when no fresh email was sent), so reload/tab switch stay accurate.
106 // Falls back to the default window if the platform omits the value.
107 store.state.resendAvailableAt = verification.resendAnchorFrom(response === null || response === void 0 ? void 0 : response.resend_available_in);
108 // An in-window request resumes the existing code — don't announce a new email.
109 if ((response === null || response === void 0 ? void 0 : response.email_sent) === false) {
110 index$3.speak(wp.i18n.__('A verification code was already sent to your email. Please check your email.', 'surecart'), 'assertive');
111 }
112 else {
113 index$3.speak(wp.i18n.__('Verification code is sent to your email. Please check your email.', 'surecart'), 'assertive');
114 }
115 }
116 catch (e) {
117 this.handleCodeSendError(e);
118 }
119 finally {
120 this.busy = false;
121 }
122 }
123 async reportValidity() {
124 var _a, _b;
125 // if user is logged in, no need to validate.
126 if (store.state.loggedIn)
127 return true;
128 return (_b = (_a = this.input) === null || _a === void 0 ? void 0 : _a.reportValidity) === null || _b === void 0 ? void 0 : _b.call(_a);
129 }
130 /** Sync customer email with session if it's updated by other means */
131 handleSessionChange() {
132 var _a, _b, _c, _d, _e, _f;
133 // we already have a value and we are not yet logged in.
134 if (this.value && !store.state.loggedIn)
135 return;
136 // we are logged in already.
137 if (store.state.loggedIn) {
138 // get email from user state fist.
139 this.value = store.state.email || ((_b = (_a = mutations.state === null || mutations.state === void 0 ? void 0 : mutations.state.checkout) === null || _a === void 0 ? void 0 : _a.customer) === null || _b === void 0 ? void 0 : _b.email) || ((_c = mutations.state === null || mutations.state === void 0 ? void 0 : mutations.state.checkout) === null || _c === void 0 ? void 0 : _c.email);
140 return;
141 }
142 const fromUrl = util.getValueFromUrl('email');
143 if (!store.state.loggedIn && !!fromUrl) {
144 this.value = fromUrl;
145 return;
146 }
147 this.value = ((_d = mutations.state === null || mutations.state === void 0 ? void 0 : mutations.state.checkout) === null || _d === void 0 ? void 0 : _d.email) || ((_f = (_e = mutations.state === null || mutations.state === void 0 ? void 0 : mutations.state.checkout) === null || _e === void 0 ? void 0 : _e.customer) === null || _f === void 0 ? void 0 : _f.email);
148 if (!!this.value && !store.state.loggedIn) {
149 store.state.email = this.value;
150 }
151 }
152 /** Listen to checkout. */
153 componentWillLoad() {
154 this.handleSessionChange();
155 this.removeCheckoutListener = mutations.onChange('checkout', () => this.handleSessionChange());
156 this.removeUserListener = store.onChange('email', val => {
157 this.value = val;
158 });
159 }
160 handleCodeSendError(error) {
161 var _a;
162 // 429: silently switch to password mode. Header + input is enough context — no red error.
163 if (util.isRateLimited(error)) {
164 store.state.email = ((_a = this.input) === null || _a === void 0 ? void 0 : _a.value) || '';
165 store.state.verificationStatus = store.UNVERIFIED;
166 this.loginMode = 'password';
167 return;
168 }
169 const blockedSeconds = verification.getBlockedDuplicateSeconds(error);
170 ((error === null || error === void 0 ? void 0 : error.additional_errors) || []).forEach((e) => {
171 var _a;
172 if ((e === null || e === void 0 ? void 0 : e.code) === 'verification_code.email.blocked_duplicate') {
173 store.state.email = ((_a = this.input) === null || _a === void 0 ? void 0 : _a.value) || '';
174 store.state.verificationStatus = store.CODE_SENT;
175 // Resume the countdown from the platform's reported backoff window
176 // (default window if the platform didn't include seconds).
177 store.state.resendAvailableAt = verification.resendAnchorFrom(blockedSeconds);
178 }
179 else {
180 this.error = (e === null || e === void 0 ? void 0 : e.message) || wp.i18n.__('Verification code is not valid. Please try again.', 'surecart');
181 }
182 });
183 }
184 /** Remove listener. */
185 disconnectedCallback() {
186 this.removeCheckoutListener();
187 this.removeUserListener();
188 }
189 async logout() {
190 try {
191 this.logoutBusy = true;
192 mutations.state.checkout = (await index$1.createOrUpdateCheckout({ id: mutations.state.checkout.id, data: { email: '' } }));
193 const response = (await index$2.apiFetch({
194 method: 'POST',
195 path: 'surecart/v1/logout',
196 }));
197 // @ts-ignore - nonceMiddleware is set in fetch.ts but not in @wordpress/api-fetch types.
198 if ((response === null || response === void 0 ? void 0 : response.nonce) && index$2.apiFetch.nonceMiddleware) {
199 // @ts-ignore
200 index$2.apiFetch.nonceMiddleware.nonce = response.nonce;
201 }
202 store.resetUser();
203 index$3.speak(wp.i18n.__('Logged out successfully.', 'surecart'), 'assertive');
204 }
205 catch (e) {
206 console.error(e);
207 }
208 finally {
209 this.logoutBusy = false;
210 }
211 }
212 renderLoggedIn() {
213 return (index.h("div", { class: "email-preview" }, index.h("div", { class: "email-preview__info" }, index.h("sc-avatar", { image: store.state.avatarUrl, initials: ((store.state === null || store.state === void 0 ? void 0 : store.state.name) || (store.state === null || store.state === void 0 ? void 0 : store.state.email)).charAt(0) }), index.h("div", { class: "email-preview__text" }, index.h("div", { class: "email-preview__name" }, store.state.name), index.h("div", { class: "email-preview__email" }, store.state.email))), index.h("sc-dropdown", { placement: "bottom-end" }, index.h("sc-button", { type: "text", slot: "trigger", loading: this.logoutBusy }, index.h("sc-icon", { name: "chevron-down", "aria-label": wp.i18n.__('Account options', 'surecart') })), index.h("sc-menu", null, index.h("sc-menu-item", { onClick: () => this.logout() }, index.h("sc-icon", { slot: "prefix", name: "log-out" }), wp.i18n.__('Logout', 'surecart'))))));
214 }
215 renderOptIn() {
216 if (!this.trackingConfirmationMessage)
217 return null;
218 if (mutations.state.abandonedCheckoutEnabled !== false) {
219 return (index.h("div", { class: "tracking-confirmation-message" }, index.h("span", null, this.trackingConfirmationMessage), ' ', index.h("a", { href: "#", onClick: e => {
220 e.preventDefault();
221 this.scUpdateAbandonedCart.emit(false);
222 } }, wp.i18n.__('No Thanks', 'surecart'))));
223 }
224 return (index.h("div", { class: "tracking-confirmation-message" }, index.h("span", null, " ", wp.i18n.__("You won't receive further emails from us.", 'surecart'))));
225 }
226 render() {
227 var _a;
228 if (store.state.loggedIn) {
229 return this.renderLoggedIn();
230 }
231 if (store.state.verificationStatus === store.CODE_SENT ||
232 store.state.verificationStatus === store.VERIFYING ||
233 store.state.verificationStatus === store.UNVERIFIED ||
234 store.state.verificationStatus === store.CODE_EXPIRED) {
235 return index.h("sc-customer-login", { initialMode: this.loginMode, codeError: this.error });
236 }
237 return (index.h(index.Fragment, null, index.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 || (!!store.state.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: () => {
238 this.scInput.emit();
239 }, onScFocus: () => this.scFocus.emit(), onScBlur: () => this.scBlur.emit() }, this.busy && index.h("sc-spinner", { slot: "suffix", class: "account-loader" })), this.renderOptIn()));
240 }
241 static get watchers() { return {
242 "value": ["handleValueChange"]
243 }; }
244 };
245 ScCustomerEmail.style = ScCustomerEmailStyle0;
246
247 exports.sc_customer_email = ScCustomerEmail;
248
249 //# sourceMappingURL=sc-customer-email.cjs.entry.js.map