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-subscription-switch.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 6 hours ago google-maps-8b4e4fed.js.map 6 hours 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 6 hours 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 6 hours ago sc-address_5.cjs.entry.js.map 6 hours 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 6 hours ago sc-cart-session-provider_3.cjs.entry.js.map 6 hours 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 6 hours ago sc-checkout-autofill-provider_11.cjs.entry.js.map 6 hours 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 6 hours 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 6 hours ago sc-fulfillment-shipping-status-badge.cjs.entry.js.map 6 hours ago sc-fulfillments.cjs.entry.js 6 hours ago sc-fulfillments.cjs.entry.js.map 6 hours 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 6 hours ago sc-menu-label_2.cjs.entry.js.map 6 hours 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 6 hours ago sc-order-shipment-badge.cjs.entry.js.map 6 hours 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 6 hours ago sc-orders-list.cjs.entry.js.map 6 hours 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 6 hours 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-subscription-switch.cjs.entry.js
244 lines
1 'use strict';
2
3 Object.defineProperty(exports, '__esModule', { value: true });
4
5 const index = require('./index-be4abba1.js');
6 require('./fetch-5e8dc1d5.js');
7 const lazy = require('./lazy-2b509fa7.js');
8 const price = require('./price-da3cab3d.js');
9 const addQueryArgs = require('./add-query-args-49dcb630.js');
10 const index$1 = require('./index-7ced8198.js');
11 require('./remove-query-args-b57e8cd3.js');
12 require('./currency-71fce0f0.js');
13
14 const scSubscriptionSwitchCss = ":host{display:block;position:relative}[hidden]{display:none !important}.subscriptions-switch{display:grid;gap:0.5em}.subscriptions-switch__switcher{background:rgba(0, 0, 0, 0.035);padding:2px;line-height:1;border-radius:var(--sc-border-radius-small)}";
15 const ScSubscriptionSwitchStyle0 = scSubscriptionSwitchCss;
16
17 const ScSubscriptionSwitch = class {
18 constructor(hostRef) {
19 index.registerInstance(this, hostRef);
20 this.query = undefined;
21 this.heading = undefined;
22 this.productGroupId = undefined;
23 this.productId = undefined;
24 this.subscription = undefined;
25 this.filterAbove = 4;
26 this.successUrl = window.location.href;
27 this.selectedPrice = undefined;
28 this.products = [];
29 this.prices = undefined;
30 this.filter = 'month';
31 this.hasFilters = undefined;
32 this.showFilters = undefined;
33 this.loading = undefined;
34 this.busy = undefined;
35 this.error = undefined;
36 }
37 componentWillLoad() {
38 lazy.onFirstVisible(this.el, async () => {
39 try {
40 this.loading = true;
41 await Promise.all([this.getGroup(), this.getProductPrices()]);
42 }
43 catch (e) {
44 console.error(e);
45 if (e === null || e === void 0 ? void 0 : e.message) {
46 this.error = e.message;
47 }
48 else {
49 this.error = wp.i18n.__('Something went wrong', 'surecart');
50 }
51 }
52 finally {
53 this.loading = false;
54 }
55 });
56 this.handleSubscriptionChange();
57 }
58 handleProductsChange() {
59 var _a;
60 this.prices = this.products
61 .map(product => { var _a; return (_a = product === null || product === void 0 ? void 0 : product.prices) === null || _a === void 0 ? void 0 : _a.data; })
62 .flat()
63 .filter((v, i, a) => a.findIndex(t => t.id === v.id) === i) // remove duplicates.
64 .filter(price => !(price === null || price === void 0 ? void 0 : price.archived)) // remove archived
65 .filter(price => price.portal_subscription_update_enabled); // only show prices that can be upgraded to.
66 this.showFilters = ((_a = this.prices) === null || _a === void 0 ? void 0 : _a.length) > this.filterAbove;
67 }
68 handlePricesChange(val, prev) {
69 if (!(prev === null || prev === void 0 ? void 0 : prev.length) && (val === null || val === void 0 ? void 0 : val.length)) {
70 this.selectedPrice = val.find(price => { var _a, _b; return price.id === ((_b = (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.price) === null || _b === void 0 ? void 0 : _b.id); });
71 }
72 this.hasFilters = {
73 ...this.hasFilters,
74 split: this.prices.some(price => !!(price === null || price === void 0 ? void 0 : price.recurring_period_count) && !(price === null || price === void 0 ? void 0 : price.archived)),
75 month: this.prices.some(price => price.recurring_interval === 'month' && !(price === null || price === void 0 ? void 0 : price.recurring_period_count) && !(price === null || price === void 0 ? void 0 : price.archived)),
76 year: this.prices.some(price => price.recurring_interval === 'year' && !(price === null || price === void 0 ? void 0 : price.recurring_period_count) && !(price === null || price === void 0 ? void 0 : price.archived)),
77 never: this.prices.some(price => (price.recurring_interval === 'never' || !price.recurring_interval) && !(price === null || price === void 0 ? void 0 : price.archived)),
78 };
79 }
80 handleSubscriptionChange() {
81 var _a, _b;
82 this.filter = ((_b = (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.price) === null || _b === void 0 ? void 0 : _b.recurring_interval) || 'month';
83 }
84 hasMultipleFilters() {
85 return Object.values(this.hasFilters || {}).filter(v => !!v).length > 1;
86 }
87 /** Get all subscriptions */
88 async getGroup() {
89 if (!this.productGroupId)
90 return;
91 const products = (await await index$1.apiFetch({
92 path: addQueryArgs.addQueryArgs(`surecart/v1/products/`, {
93 product_group_ids: [this.productGroupId],
94 expand: ['prices'],
95 ...this.query,
96 }),
97 }));
98 this.products = [...this.products, ...products];
99 }
100 /** Get the product's prices. */
101 async getProductPrices() {
102 if (!this.productId)
103 return;
104 const product = (await await index$1.apiFetch({
105 path: addQueryArgs.addQueryArgs(`surecart/v1/products/${this.productId}`, {
106 expand: ['prices'],
107 }),
108 }));
109 this.products = [...this.products, ...[product]];
110 }
111 async handleSubmit(e) {
112 var _a, _b, _c, _d, _e, _f, _g, _h;
113 const { plan } = await e.target.getFormJson();
114 const price = this.prices.find(p => p.id === plan);
115 const currentPlan = (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.price;
116 if ((price === null || price === void 0 ? void 0 : price.id) === currentPlan.id && !(price === null || price === void 0 ? void 0 : price.ad_hoc) && !((_c = (_b = this.subscription) === null || _b === void 0 ? void 0 : _b.variant_options) === null || _c === void 0 ? void 0 : _c.length))
117 return;
118 // confirm product variation.
119 if ((_e = (_d = this.subscription) === null || _d === void 0 ? void 0 : _d.variant_options) === null || _e === void 0 ? void 0 : _e.length) {
120 this.busy = true;
121 return window.location.assign(addQueryArgs.addQueryArgs(this.successUrl, {
122 action: 'confirm_variation',
123 price_id: plan,
124 ...(((_f = this.subscription) === null || _f === void 0 ? void 0 : _f.live_mode) === false ? { live_mode: false } : {}),
125 }));
126 }
127 // confirm ad_hoc amount.
128 if (price === null || price === void 0 ? void 0 : price.ad_hoc) {
129 this.busy = true;
130 return window.location.assign(addQueryArgs.addQueryArgs(this.successUrl, {
131 action: 'confirm_amount',
132 price_id: plan,
133 ...(((_g = this.subscription) === null || _g === void 0 ? void 0 : _g.live_mode) === false ? { live_mode: false } : {}),
134 }));
135 }
136 // confirm plan.
137 this.busy = true;
138 window.location.assign(addQueryArgs.addQueryArgs(this.successUrl, {
139 action: 'confirm',
140 price_id: plan,
141 ...(((_h = this.subscription) === null || _h === void 0 ? void 0 : _h.live_mode) === false ? { live_mode: false } : {}),
142 }));
143 }
144 renderSwitcher() {
145 if (!this.hasMultipleFilters())
146 return;
147 if (!this.showFilters)
148 return;
149 return (index.h("sc-flex", { slot: "end", class: "subscriptions-switch__switcher" }, this.hasFilters.month && (index.h("sc-button", { onClick: () => (this.filter = 'month'), size: "small", type: this.filter === 'month' ? 'default' : 'text' }, wp.i18n.__('Monthly', 'surecart'))), this.hasFilters.week && (index.h("sc-button", { onClick: () => (this.filter = 'week'), size: "small", type: this.filter === 'week' ? 'default' : 'text' }, wp.i18n.__('Weekly', 'surecart'))), this.hasFilters.year && (index.h("sc-button", { onClick: () => (this.filter = 'year'), size: "small", type: this.filter === 'year' ? 'default' : 'text' }, wp.i18n.__('Yearly', 'surecart'))), this.hasFilters.never && (index.h("sc-button", { onClick: () => (this.filter = 'never'), size: "small", type: this.filter === 'never' ? 'default' : 'text' }, wp.i18n.__('Lifetime', 'surecart'))), this.hasFilters.split && (index.h("sc-button", { onClick: () => (this.filter = 'split'), size: "small", type: this.filter === 'split' ? 'default' : 'text' }, wp.i18n.__('Payment Plan', 'surecart')))));
150 }
151 renderLoading() {
152 return (index.h("sc-choice", { name: "loading", disabled: true }, index.h("sc-skeleton", { style: { width: '60px', display: 'inline-block' } }), index.h("sc-skeleton", { style: { width: '80px', display: 'inline-block' }, slot: "price" }), index.h("sc-skeleton", { style: { width: '120px', display: 'inline-block' }, slot: "description" })));
153 }
154 /** Is the price hidden or not */
155 isHidden(price) {
156 // don't hide if no filters or has no multiple filters available.
157 if (!this.showFilters || !this.hasMultipleFilters())
158 return false;
159 // hide if the filter does not match the recurring interval.
160 let hidden = this.filter !== price.recurring_interval;
161 // if filter is never, show prices with non-recurring interval.
162 if (this.filter === 'never' && !(price === null || price === void 0 ? void 0 : price.recurring_interval)) {
163 hidden = false;
164 }
165 // if filter is split, show prices with a recurring_period_count.
166 if (this.filter === 'split' && (price === null || price === void 0 ? void 0 : price.recurring_period_count)) {
167 hidden = false;
168 }
169 return hidden;
170 }
171 renderContent() {
172 if (this.loading) {
173 return this.renderLoading();
174 }
175 return (index.h("sc-choices", { required: true }, index.h("div", null, (this.prices || [])
176 .filter(price => !price.archived)
177 .filter(price => { var _a; return (price === null || price === void 0 ? void 0 : price.currency) === ((_a = this.subscription) === null || _a === void 0 ? void 0 : _a.currency); })
178 .sort((a, b) => a.amount - b.amount)
179 .map(price$1 => {
180 var _a, _b;
181 const currentPlan = ((_b = (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.price) === null || _b === void 0 ? void 0 : _b.id) === (price$1 === null || price$1 === void 0 ? void 0 : price$1.id);
182 const product = this.products.find(product => product.id === (price$1 === null || price$1 === void 0 ? void 0 : price$1.product));
183 return (index.h("sc-choice", { key: price$1 === null || price$1 === void 0 ? void 0 : price$1.id, checked: currentPlan, name: "plan", value: price$1 === null || price$1 === void 0 ? void 0 : price$1.id, hidden: this.isHidden(price$1), onScChange: e => {
184 if (e.detail) {
185 this.selectedPrice = this.prices.find(p => p.id === (price$1 === null || price$1 === void 0 ? void 0 : price$1.id));
186 }
187 } }, index.h("div", null, index.h("strong", null, product === null || product === void 0 ? void 0 :
188 product.name, " ", (price$1 === null || price$1 === void 0 ? void 0 : price$1.name) && index.h(index.Fragment, null, " \u2014 ", price$1 === null || price$1 === void 0 ? void 0 :
189 price$1.name))), index.h("div", { slot: "description" }, (price$1 === null || price$1 === void 0 ? void 0 : price$1.ad_hoc) ? (`${wp.i18n.__('Custom amount', 'surecart')} ${price.intervalString(price$1)}`) : (index.h(index.Fragment, null, index.h("sc-format-number", { type: "currency", currency: (price$1 === null || price$1 === void 0 ? void 0 : price$1.currency) || 'usd', value: price$1 === null || price$1 === void 0 ? void 0 : price$1.amount }), " ", price.intervalString(price$1, { showOnce: true })))), currentPlan && (index.h("sc-tag", { type: "warning", slot: "price" }, wp.i18n.__('Current Plan', 'surecart')))));
190 }))));
191 }
192 buttonText() {
193 var _a, _b, _c, _d, _e, _f, _g, _h, _j;
194 if ((_b = (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.variant_options) === null || _b === void 0 ? void 0 : _b.length) {
195 if (((_c = this.selectedPrice) === null || _c === void 0 ? void 0 : _c.id) === ((_e = (_d = this.subscription) === null || _d === void 0 ? void 0 : _d.price) === null || _e === void 0 ? void 0 : _e.id)) {
196 return wp.i18n.__('Update Options', 'surecart');
197 }
198 else {
199 return wp.i18n.__('Choose Options', 'surecart');
200 }
201 }
202 if ((_f = this.selectedPrice) === null || _f === void 0 ? void 0 : _f.ad_hoc) {
203 if (((_g = this.selectedPrice) === null || _g === void 0 ? void 0 : _g.id) === ((_j = (_h = this.subscription) === null || _h === void 0 ? void 0 : _h.price) === null || _j === void 0 ? void 0 : _j.id)) {
204 return wp.i18n.__('Update Amount', 'surecart');
205 }
206 else {
207 return wp.i18n.__('Choose Amount', 'surecart');
208 }
209 }
210 return wp.i18n.__('Next', 'surecart');
211 }
212 buttonDisabled() {
213 var _a, _b, _c, _d, _e;
214 if ((_a = this.subscription) === null || _a === void 0 ? void 0 : _a.variant_options) {
215 return false;
216 }
217 return ((_c = (_b = this.subscription) === null || _b === void 0 ? void 0 : _b.price) === null || _c === void 0 ? void 0 : _c.id) === ((_d = this.selectedPrice) === null || _d === void 0 ? void 0 : _d.id) && !((_e = this.selectedPrice) === null || _e === void 0 ? void 0 : _e.ad_hoc);
218 }
219 render() {
220 var _a, _b, _c, _d, _e, _f;
221 // we are not loading and we don't have enough prices to switch.
222 if (!this.loading && ((_a = this.prices) === null || _a === void 0 ? void 0 : _a.length) < 2) {
223 if (!((_c = (_b = this.prices) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.ad_hoc) && !((_e = (_d = this.subscription) === null || _d === void 0 ? void 0 : _d.variant_options) === null || _e === void 0 ? void 0 : _e.length)) {
224 return null;
225 }
226 }
227 // subscription is a payment plan.
228 if ((_f = this.subscription) === null || _f === void 0 ? void 0 : _f.finite) {
229 return (index.h("sc-alert", { type: "info", open: true }, wp.i18n.__('To make changes to your payment plan, please contact us.', 'surecart')));
230 }
231 return (index.h("sc-dashboard-module", { heading: this.heading || wp.i18n.__('Update Plan', 'surecart'), class: "subscription-switch", error: this.error }, index.h("span", { slot: "end" }, this.renderSwitcher()), index.h("sc-form", { class: "subscriptions-switch", onScFormSubmit: e => this.handleSubmit(e) }, this.renderContent(), index.h("sc-button", { type: "primary", full: true, submit: true, loading: this.loading || this.busy, disabled: this.buttonDisabled() }, this.buttonText(), " ", index.h("sc-icon", { name: "arrow-right", slot: "suffix" })), this.busy && index.h("sc-block-ui", { style: { zIndex: '9' } }))));
232 }
233 get el() { return index.getElement(this); }
234 static get watchers() { return {
235 "products": ["handleProductsChange"],
236 "prices": ["handlePricesChange"],
237 "subscription": ["handleSubscriptionChange"]
238 }; }
239 };
240 ScSubscriptionSwitch.style = ScSubscriptionSwitchStyle0;
241
242 exports.sc_subscription_switch = ScSubscriptionSwitch;
243
244 //# sourceMappingURL=sc-subscription-switch.cjs.entry.js.map