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.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-button_6.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-0f9b7648.js 3 months ago google-maps-0f9b7648.js.map 3 months 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 2 weeks 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 2 weeks ago sc-address_5.cjs.entry.js.map 2 weeks 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 week ago sc-cart-session-provider_3.cjs.entry.js.map 2 months 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 week ago sc-checkout-autofill-provider_11.cjs.entry.js.map 1 month 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 week 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 2 months ago sc-fulfillment-shipping-status-badge.cjs.entry.js.map 4 months ago sc-fulfillments.cjs.entry.js 1 month ago sc-fulfillments.cjs.entry.js.map 2 months 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 month ago sc-menu-label_2.cjs.entry.js.map 1 month 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 2 months ago sc-order-shipment-badge.cjs.entry.js.map 4 months 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 month ago sc-orders-list.cjs.entry.js.map 1 month 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 5 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 2 weeks 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-button_6.cjs.entry.js
534 lines
1 'use strict';
2
3 Object.defineProperty(exports, '__esModule', { value: true });
4
5 const index = require('./index-be4abba1.js');
6 const pageAlign = require('./page-align-5a2ab493.js');
7 const library = require('./library-08bc52a5.js');
8 const index$1 = require('./index-f3933112.js');
9 const index$2 = require('./index-fb76df07.js');
10
11 const scButtonCss = ":host{display:inline-block;width:auto;cursor:pointer;--primary-color:var(--sc-color-primary-text);--primary-background:var(--sc-color-primary-500)}:host([full]){display:block}::slotted(*){pointer-events:none}.button{box-sizing:border-box;z-index:10;display:inline-flex;align-items:stretch;justify-content:center;width:100%;border-style:solid;border-width:var(--sc-input-border-width);font-family:var(--sc-input-font-family);font-weight:var(--sc-font-weight-semibold);text-decoration:none;user-select:none;white-space:nowrap;vertical-align:middle;padding:0;transition:var(--sc-input-transition, var(--sc-transition-medium)) background-color, 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, var(--sc-input-transition, var(--sc-transition-medium)) opacity;cursor:inherit}.button::-moz-focus-inner{border:0}.button:focus{outline:none}.button:focus-visible{box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-focus-ring-color-primary)}.button.button--disabled{cursor:not-allowed}.button.button--disabled *{pointer-events:none}.button.button--disabled .button__label,.button.button--disabled .button__suffix,.button.button--disabled .button__prefix{opacity:0.5}.button ::slotted(.sc--icon){pointer-events:none}.button__prefix,.button__suffix{flex:0 0 auto;display:flex;align-items:center}.button__label{display:flex;align-items:center}.button__label ::slotted(sc-icon){vertical-align:-2px}.button:not(.button--text):not(.button--link){box-shadow:var(--sc-shadow-small)}.button.button--standard.button--default{background-color:var(--sc-button-default-background-color, var(--sc-color-white));border-color:var(--sc-button-default-border-color, var(--sc-color-gray-300));color:var(--sc-button-default-color, var(--sc-color-gray-600))}.button.button--standard.button--default:hover:not(.button--disabled){background-color:var(--sc-button-default-hover-background-color, var(--sc-color-white));border-color:var(--sc-button-default-focus-border-color, var(--primary-background));color:var(--primary-background)}.button.button--standard.button--default:focus:not(.button--disabled){background-color:var(--sc-button-default-focus-background-color, var(--sc-color-white));border-color:var(--sc-button-default-focus-border-color, var(--sc-color-white));color:var(--primary-background);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-focus-ring-color-primary)}.button.button--standard.button--default:active:not(.button--disabled){background-color:var(--sc-button-default-active-background-color, var(--sc-color-white));border-color:var(--sc-button-default-active-border-color, var(--sc-color-white));color:var(--primary-background)}.button.button--standard.button--primary{background-color:var(--primary-background);border-color:var(--primary-background);color:var(--primary-color)}.button.button--standard.button--primary:hover:not(.button--disabled){opacity:0.8}.button.button--standard.button--primary:focus:not(.button--disabled){opacity:0.8;color:var(--primary-color);border-color:var(--sc-color-white);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-focus-ring-color-primary)}.button.button--standard.button--primary:active:not(.button--disabled){background-color:var(--primary-background);border-color:var(--sc-color-white);color:var(--primary-color)}.button.button--standard.button--success{background-color:var(--sc-color-success-500);border-color:var(--sc-color-success-500);color:var(--sc-color-success-text)}.button.button--standard.button--success:hover:not(.button--disabled){background-color:var(--sc-color-success-400);border-color:var(--sc-color-success-400);color:var(--sc-color-success-text)}.button.button--standard.button--success:focus:not(.button--disabled){background-color:var(--sc-color-success-400);border-color:var(--sc-color-success-400);color:var(--sc-color-success-text);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-focus-ring-color-success)}.button.button--standard.button--success:active:not(.button--disabled){background-color:var(--sc-color-success-500);border-color:var(--sc-color-success-500);color:var(--sc-color-success-text)}.button.button--standard.button--info{background-color:var(--sc-color-info-500);border-color:var(--sc-color-info-500);color:var(--sc-color-info-text)}.button.button--standard.button--info:hover:not(.button--disabled){background-color:var(--sc-color-info-400);border-color:var(--sc-color-info-400);color:var(--sc-color-info-text)}.button.button--standard.button--info:focus:not(.button--disabled){background-color:var(--sc-color-info-400);border-color:var(--sc-color-info-400);color:var(--sc-color-info-text);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-focus-ring-color-info)}.button.button--standard.button--info:active:not(.button--disabled){background-color:var(--sc-color-info-500);border-color:var(--sc-color-info-500);color:var(--sc-color-info-text)}.button.button--standard.button--warning{background-color:var(--sc-color-warning-500);border-color:var(--sc-color-warning-500);color:var(--sc-color-warning-text)}.button.button--standard.button--warning:hover:not(.button--disabled){background-color:var(--sc-color-warning-400);border-color:var(--sc-color-warning-400);color:var(--sc-color-warning-text)}.button.button--standard.button--warning:focus:not(.button--disabled){background-color:var(--sc-color-warning-400);border-color:var(--sc-color-warning-400);color:var(--sc-color-warning-text);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-focus-ring-color-warning)}.button.button--standard.button--warning:active:not(.button--disabled){background-color:var(--sc-color-warning-500);border-color:var(--sc-color-warning-500);color:var(--sc-color-warning-text)}.button.button--standard.button--danger{background-color:var(--sc-color-danger-500);border-color:var(--sc-color-danger-500);color:var(--sc-color-danger-text)}.button.button--standard.button--danger:hover:not(.button--disabled){background-color:var(--sc-color-danger-400);border-color:var(--sc-color-danger-400);color:var(--sc-color-danger-text)}.button.button--standard.button--danger:focus:not(.button--disabled){background-color:var(--sc-color-danger-400);border-color:var(--sc-color-danger-400);color:var(--sc-color-danger-text);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-focus-ring-color-danger)}.button.button--standard.button--danger:active:not(.button--disabled){background-color:var(--sc-color-danger-500);border-color:var(--sc-color-danger-500);color:var(--sc-color-danger-text)}.button--outline{background:none;border:solid 1px}.button--outline.button--default{border-color:var(--sc-color-gray-300);color:var(--sc-color-gray-700)}.button--outline.button--default:hover:not(.button--disabled){border-color:var(--primary-background);background-color:var(--primary-background);color:var(--sc-color-white)}.button--outline.button--default:focus:not(.button--disabled){border-color:var(--primary-background);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--primary-background)/var(--sc-focus-ring-alpha)}.button--outline.button--default:active:not(.button--disabled){opacity:0.8;color:var(--sc-color-white)}.button--outline.button--primary{border-color:var(--primary-background);color:var(--primary-background)}.button--outline.button--primary:hover:not(.button--disabled){background-color:var(--primary-background);opacity:0.8;color:var(--sc-color-white)}.button--outline.button--primary:focus:not(.button--disabled){border-color:var(--primary-background);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--primary-background)/var(--sc-focus-ring-alpha)}.button--outline.button--primary:active:not(.button--disabled){border-color:var(--primary-background);background-color:var(--primary-background);opacity:0.9;color:var(--sc-color-white)}.button--outline.button--success{border-color:var(--sc-color-success-500);color:var(--sc-color-success-500)}.button--outline.button--success:hover:not(.button--disabled){background-color:var(--sc-color-success-500);color:var(--sc-color-white)}.button--outline.button--success:focus:not(.button--disabled){border-color:var(--sc-color-success-500);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-color-success-500)/var(--sc-focus-ring-alpha)}.button--outline.button--success:active:not(.button--disabled){border-color:var(--sc-color-success-700);background-color:var(--sc-color-success-700);color:var(--sc-color-white)}.button--outline.button--info{border-color:var(--sc-color-gray-500);color:var(--sc-color-gray-500)}.button--outline.button--info:hover:not(.button--disabled){background-color:var(--sc-color-gray-500);color:var(--sc-color-white)}.button--outline.button--info:focus:not(.button--disabled){border-color:var(--sc-color-gray-500);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-color-gray-500)/var(--sc-focus-ring-alpha)}.button--outline.button--info:active:not(.button--disabled){border-color:var(--sc-color-gray-700);background-color:var(--sc-color-gray-700);color:var(--sc-color-white)}.button--outline.button--warning{border-color:var(--sc-color-warning-500);color:var(--sc-color-warning-500)}.button--outline.button--warning:hover:not(.button--disabled){background-color:var(--sc-color-warning-500);color:var(--sc-color-white)}.button--outline.button--warning:focus:not(.button--disabled){border-color:var(--sc-color-warning-500);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-color-warning-500)/var(--sc-focus-ring-alpha)}.button--outline.button--warning:active:not(.button--disabled){border-color:var(--sc-color-warning-700);background-color:var(--sc-color-warning-700);color:var(--sc-color-white)}.button--outline.button--danger{border-color:var(--sc-color-danger-500);color:var(--sc-color-danger-500)}.button--outline.button--danger:hover:not(.button--disabled){background-color:var(--sc-color-danger-500);color:var(--sc-color-white)}.button--outline.button--danger:focus:not(.button--disabled){border-color:var(--sc-color-danger-500);box-shadow:0 0 0 var(--sc-focus-ring-width) var(--sc-color-danger-500)/var(--sc-focus-ring-alpha)}.button--outline.button--danger:active:not(.button--disabled){border-color:var(--sc-color-danger-700);background-color:var(--sc-color-danger-700);color:var(--sc-color-white)}.button--text{background-color:transparent;border-color:transparent;color:inherit}.button--text:hover:not(.button--disabled){background-color:transparent;border-color:transparent;color:var(--sc-color-gray-600)}.button--text:focus:not(.button--disabled){background-color:transparent;border-color:transparent;box-shadow:0}.button--text:active:not(.button--disabled){background-color:transparent;border-color:transparent;box-shadow:0}.button--text.button--caret.button--has-label{padding-right:var(--sc-spacing-xx-small)}.button--text.button--caret.button--has-label .button__label{padding:0 var(--sc-spacing-xx-small) !important}.button--link{background-color:transparent;border-color:transparent;box-shadow:none;color:var(--sc-button-link-color, var(--primary-background));transition:opacity var(--sc-input-transition, var(--sc-transition-medium)) ease;text-decoration:var(--sc-button-link-text-decoration, none)}.button--link.button--has-label.button--small .button__label,.button--link.button--has-label.button--medium .button__label,.button--link.button--has-label.button--large .button__label{padding:0}.button--link:hover:not(.button--disabled){background-color:transparent;border-color:transparent;opacity:0.75}.button--link:focus:not(.button--disabled){background-color:transparent;border-color:transparent}.button--link:active:not(.button--disabled){background-color:transparent;border-color:transparent}.button--link.button--has-prefix:not(.button--text).button--small,.button--link.button--has-prefix:not(.button--text).button--medium,.button--link.button--has-prefix:not(.button--text).button--large{padding-left:0}.button--link.button--has-prefix:not(.button--text).button--small .button__label,.button--link.button--has-prefix:not(.button--text).button--medium .button__label,.button--link.button--has-prefix:not(.button--text).button--large .button__label{padding-left:var(--sc-spacing-xx-small)}.button--link.button--has-suffix:not(.button--text).button--small,.button--link.button--has-suffix:not(.button--text).button--medium,.button--link.button--has-suffix:not(.button--text).button--large{padding-right:0}.button--link.button--has-suffix:not(.button--text).button--small .button__label,.button--link.button--has-suffix:not(.button--text).button--medium .button__label,.button--link.button--has-suffix:not(.button--text).button--large .button__label{padding-right:var(--sc-spacing-xx-small)}.button--small{font-size:var(--sc-button-font-size-small);height:var(--sc-input-height-small);line-height:calc(var(--sc-input-height-small) - var(--sc-input-border-width) * 2);border-radius:var(--button-border-radius, var(--sc-input-border-radius-small))}.button--medium{font-size:var(--sc-button-font-size-medium);height:var(--sc-input-height-medium);line-height:calc(var(--sc-input-height-medium) - var(--sc-input-border-width) * 2);border-radius:var(--button-border-radius, var(--sc-input-border-radius-medium))}.button--large{font-size:var(--sc-button-font-size-large);height:var(--sc-input-height-large);line-height:calc(var(--sc-input-height-large) - var(--sc-input-border-width) * 2);border-radius:var(--button-border-radius, var(--sc-input-border-radius-large))}.button--full{display:block}.button--pill.button--small{border-radius:var(--sc-input-height-small)}.button--pill.button--medium{border-radius:var(--sc-input-height-medium)}.button--pill.button--large{border-radius:var(--sc-input-height-large)}.button--circle{padding-left:0;padding-right:0}.button--circle.button--small{width:var(--sc-input-height-small);border-radius:50%}.button--circle.button--medium{width:var(--sc-input-height-medium);border-radius:50%}.button--circle.button--large{width:var(--sc-input-height-large);border-radius:50%}.button--circle .button__prefix,.button--circle .button__suffix,.button--circle .button__caret{display:none}.button--caret .button__suffix{display:none}.button--caret .button__caret{display:flex;align-items:center}.button--caret .button__caret svg{width:1em;height:1em}.button--busy{position:relative;cursor:wait}.button--busy .button__prefix,.button--busy .button__label,.button--busy .button__suffix,.button--busy .button__caret{visibility:hidden}.button--busy *{pointer-events:none}.button--loading{position:relative;cursor:wait}.button--loading .button__prefix,.button--loading .button__label,.button--loading .button__suffix,.button--loading .button__caret{visibility:hidden}sc-spinner::part(base){--indicator-color:currentColor;--spinner-size:12px;position:absolute;top:calc(50% - var(--spinner-size) + var(--spinner-size) / 4);left:calc(50% - var(--spinner-size) + var(--spinner-size) / 4)}.button ::slotted(sc-badge){position:absolute;top:0;right:0;transform:translateY(-50%) translateX(50%);pointer-events:none}.button--has-label.button--small .button__label{padding:0 var(--sc-spacing-small)}.button--has-label.button--medium .button__label{padding:0 var(--sc-spacing-medium)}.button--has-label.button--large .button__label{padding:0 var(--sc-spacing-large)}.button--has-prefix:not(.button--text).button--small{padding-left:var(--sc-spacing-x-small)}.button--has-prefix:not(.button--text).button--small .button__label{padding-left:var(--sc-spacing-x-small)}.button--has-prefix:not(.button--text).button--medium{padding-left:var(--sc-spacing-small)}.button--has-prefix:not(.button--text).button--medium .button__label{padding-left:var(--sc-spacing-small)}.button--has-prefix:not(.button--text).button--large{padding-left:var(--sc-spacing-small)}.button--has-prefix:not(.button--text).button--large .button__label{padding-left:var(--sc-spacing-small)}.button--has-suffix.button--small,.button--caret.button--small{padding-right:var(--sc-spacing-x-small)}.button--has-suffix.button--small .button__label,.button--caret.button--small .button__label{padding-right:var(--sc-spacing-x-small)}.button--has-suffix.button--medium,.button--caret.button--medium{padding-right:var(--sc-spacing-small)}.button--has-suffix.button--medium .button__label,.button--caret.button--medium .button__label{padding-right:var(--sc-spacing-small)}.button--has-suffix.button--large,.button--caret.button--large{padding-right:var(--sc-spacing-small)}.button--has-suffix.button--large .button__label,.button--caret.button--large .button__label{padding-right:var(--sc-spacing-small)}:host(.sc-button-group__button--first) .button{border-top-right-radius:0;border-bottom-right-radius:0}:host(.sc-button-group__button--inner) .button{border-radius:0}:host(.sc-button-group__button--last) .button{border-top-left-radius:0;border-bottom-left-radius:0}:host(.sc-button-group__button:not(.sc-button-group__button--first)){margin-left:calc(-1 * var(--sc-input-border-width))}:host(.sc-button-group__button:not(.sc-button-group__button--focus,.sc-button-group__button--first,[type=default]):not(:hover,:active,:focus)) .button:after{content:\"\";position:absolute;top:0;left:0;bottom:0;border-left:solid 1px rgba(255, 255, 255, 0.2666666667);mix-blend-mode:lighten}:host(.sc-button-group__button--hover){z-index:1}:host(.sc-button-group__button--focus){z-index:2}@keyframes busy-animation{0%{background-position:200px 0}}.button--is-rtl.button--has-prefix.button--small,.button--is-rtl.button--has-prefix.button--medium,.button--is-rtl.button--has-prefix.button--large{padding-left:0}.button--is-rtl.button--has-prefix.button--small .button__label,.button--is-rtl.button--has-prefix.button--medium .button__label,.button--is-rtl.button--has-prefix.button--large .button__label{padding-left:0;padding-right:var(--sc-spacing-xx-small)}.button--is-rtl.button--has-suffix.button--small,.button--is-rtl.button--has-suffix.button--medium,.button--is-rtl.button--has-suffix.button--large{padding-right:0}.button--is-rtl.button--has-suffix.button--small .button__label,.button--is-rtl.button--has-suffix.button--medium .button__label,.button--is-rtl.button--has-suffix.button--large .button__label{padding-right:0;padding-left:var(--sc-spacing-xx-small)}";
12 const ScButtonStyle0 = scButtonCss;
13
14 const ScButton = class {
15 constructor(hostRef) {
16 index.registerInstance(this, hostRef);
17 this.scBlur = index.createEvent(this, "scBlur", 7);
18 this.scFocus = index.createEvent(this, "scFocus", 7);
19 this.hasFocus = false;
20 this.hasLabel = false;
21 this.hasPrefix = false;
22 this.hasSuffix = false;
23 this.type = 'default';
24 this.size = 'medium';
25 this.caret = false;
26 this.full = false;
27 this.disabled = false;
28 this.loading = false;
29 this.outline = false;
30 this.busy = false;
31 this.pill = false;
32 this.circle = false;
33 this.submit = false;
34 this.name = undefined;
35 this.value = undefined;
36 this.href = undefined;
37 this.target = undefined;
38 this.download = undefined;
39 this.autofocus = undefined;
40 }
41 componentWillLoad() {
42 this.handleSlotChange();
43 }
44 /** Simulates a click on the button. */
45 click() {
46 this.button.click();
47 }
48 /** Sets focus on the button. */
49 focus(options) {
50 this.button.focus(options);
51 }
52 /** Removes focus from the button. */
53 blur() {
54 this.button.blur();
55 }
56 handleSlotChange() {
57 this.hasLabel = !!this.button.children;
58 this.hasPrefix = !!this.button.querySelector('[slot="prefix"]');
59 this.hasSuffix = !!this.button.querySelector('[slot="suffix"]');
60 }
61 handleBlur() {
62 this.hasFocus = false;
63 this.scBlur.emit();
64 }
65 handleFocus() {
66 this.hasFocus = true;
67 this.scFocus.emit();
68 }
69 handleClick(event) {
70 if (this.disabled || this.loading || this.busy) {
71 event.preventDefault();
72 event.stopPropagation();
73 }
74 if (this.submit) {
75 this.submitForm();
76 }
77 }
78 submitForm() {
79 var _a, _b;
80 const form = ((_b = (_a = this.button.closest('sc-form')) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('form')) || this.button.closest('form');
81 // Calling form.submit() seems to bypass the submit event and constraint validation. Instead, we can inject a
82 // native submit button into the form, click it, then remove it to simulate a standard form submission.
83 const button = document.createElement('button');
84 if (form) {
85 button.type = 'submit';
86 button.style.position = 'absolute';
87 button.style.width = '0';
88 button.style.height = '0';
89 button.style.clip = 'rect(0 0 0 0)';
90 button.style.clipPath = 'inset(50%)';
91 button.style.overflow = 'hidden';
92 button.style.whiteSpace = 'nowrap';
93 form.append(button);
94 button.click();
95 button.remove();
96 }
97 }
98 render() {
99 const Tag = this.href ? 'a' : 'button';
100 const interior = (index.h(index.Fragment, { key: '84d023e2186c1abc388d1de326806f9a8a658808' }, index.h("span", { key: 'c32560928901007caed8336c15d0f663be0f09f7', part: "prefix", class: "button__prefix" }, index.h("slot", { key: '46de2a01772f62073e3d08135d5b96d14243918a', onSlotchange: () => this.handleSlotChange(), name: "prefix" })), index.h("span", { key: '5db06a1370062fa8e1d23d40f876192e436a87ce', part: "label", class: "button__label" }, index.h("slot", { key: 'e7fcc1fa23f9c0c277e66332cedd5958b7a3d64d', onSlotchange: () => this.handleSlotChange() })), index.h("span", { key: '4a3b90458d4751d4f80942e792c55d18370f2173', part: "suffix", class: "button__suffix" }, index.h("slot", { key: '5b45213af863a205f706e0462650ab6c87f24a9e', onSlotchange: () => this.handleSlotChange(), name: "suffix" })), this.caret ? (index.h("span", { part: "caret", class: "button__caret" }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, index.h("polyline", { points: "6 9 12 15 18 9" })))) : (''), this.loading || this.busy ? index.h("sc-spinner", { exportparts: "base:spinner" }) : ''));
101 return (index.h(Tag, { key: '25a87670748d993aeab7bf5f045f48de4cea6b54', part: "base", class: {
102 'button': true,
103 [`button--${this.type}`]: !!this.type,
104 [`button--${this.size}`]: true,
105 'button--caret': this.caret,
106 'button--circle': this.circle,
107 'button--disabled': this.disabled,
108 'button--focused': this.hasFocus,
109 'button--loading': this.loading,
110 'button--busy': this.busy,
111 'button--pill': this.pill,
112 'button--standard': !this.outline,
113 'button--outline': this.outline,
114 'button--has-label': this.hasLabel,
115 'button--has-prefix': this.hasPrefix,
116 'button--has-suffix': this.hasSuffix,
117 'button--is-rtl': pageAlign.isRtl(),
118 }, href: this.href, target: this.target, download: this.download, autoFocus: this.autofocus, rel: this.target ? 'noreferrer noopener' : undefined, role: "button", "aria-disabled": this.disabled ? 'true' : 'false', "aria-busy": this.busy || this.loading ? 'true' : 'false', tabindex: this.disabled ? '-1' : '0', disabled: this.disabled || this.busy, type: this.submit ? 'submit' : 'button', name: this.name, value: this.value, onBlur: () => this.handleBlur(), onFocus: () => this.handleFocus(), onClick: e => this.handleClick(e) }, interior));
119 }
120 get button() { return index.getElement(this); }
121 };
122 ScButton.style = ScButtonStyle0;
123
124 const iconFiles = new Map();
125 const requestIcon = (url) => {
126 if (iconFiles.has(url)) {
127 return iconFiles.get(url);
128 }
129 else {
130 const request = fetch(url).then(async (response) => {
131 if (response.ok) {
132 const div = document.createElement('div');
133 div.innerHTML = await response.text();
134 const svg = div.firstElementChild;
135 return {
136 ok: response.ok,
137 status: response.status,
138 svg: svg && svg.tagName.toLowerCase() === 'svg' ? svg.outerHTML : '',
139 };
140 }
141 else {
142 return {
143 ok: response.ok,
144 status: response.status,
145 svg: null,
146 };
147 }
148 });
149 iconFiles.set(url, request);
150 return request;
151 }
152 };
153
154 const scIconCss = ":host{--width:1em;--height:1em;display:inline-block;width:var(--width);height:var(--height);contain:strict;box-sizing:content-box !important}.icon,svg{display:block;height:100%;width:100%;stroke-width:var(--sc-icon-stroke-width, 2px)}";
155 const ScIconStyle0 = scIconCss;
156
157 /**
158 * The icon's label used for accessibility.
159 */
160 const LABEL_MAPPINGS = {
161 'chevron-down': wp.i18n.__('Open', 'surecart'),
162 'chevron-up': wp.i18n.__('Close', 'surecart'),
163 'chevron-right': wp.i18n.__('Next', 'surecart'),
164 'chevron-left': wp.i18n.__('Previous', 'surecart'),
165 'arrow-right': wp.i18n.__('Next', 'surecart'),
166 'arrow-left': wp.i18n.__('Previous', 'surecart'),
167 'arrow-down': wp.i18n.__('Down', 'surecart'),
168 'arrow-up': wp.i18n.__('Up', 'surecart'),
169 'alert-circle': wp.i18n.__('Alert', 'surecart'),
170 };
171 const parser = new DOMParser();
172 const ScIcon = class {
173 constructor(hostRef) {
174 index.registerInstance(this, hostRef);
175 this.scLoad = index.createEvent(this, "scLoad", 7);
176 this.svg = '';
177 this.name = undefined;
178 this.src = undefined;
179 this.label = undefined;
180 this.library = 'default';
181 this.mutate = true;
182 }
183 /** @internal Fetches the icon and redraws it. Used to handle library registrations. */
184 redraw() {
185 this.setIcon();
186 }
187 componentWillLoad() {
188 // Get redrawn if our library is registered after we mount.
189 library.watchIcon(this);
190 this.setIcon();
191 }
192 disconnectedCallback() {
193 library.unwatchIcon(this);
194 }
195 getLabel() {
196 let label = '';
197 if (this.label) {
198 label = (LABEL_MAPPINGS === null || LABEL_MAPPINGS === void 0 ? void 0 : LABEL_MAPPINGS[this.label]) || this.label;
199 }
200 else if (this.name) {
201 label = ((LABEL_MAPPINGS === null || LABEL_MAPPINGS === void 0 ? void 0 : LABEL_MAPPINGS[this.name]) || this.name).replace(/-/g, ' ');
202 }
203 else if (this.src) {
204 label = this.src.replace(/.*\//, '').replace(/-/g, ' ').replace(/\.svg/i, '');
205 }
206 return label;
207 }
208 async setIcon() {
209 const library$1 = library.getIconLibrary(this.library);
210 const url = this.getUrl();
211 if (url) {
212 try {
213 const file = await requestIcon(url);
214 if (url !== this.getUrl()) {
215 // If the url has changed while fetching the icon, ignore this request
216 return;
217 }
218 else if (file.ok) {
219 const doc = parser.parseFromString(file.svg, 'text/html');
220 const svgEl = doc.body.querySelector('svg');
221 if (svgEl) {
222 if (library$1 && library$1.mutator && this.mutate) {
223 library$1.mutator(svgEl);
224 }
225 this.svg = svgEl.outerHTML;
226 // add part attribute to the svg element.
227 this.svg = this.svg.replace('<svg', '<svg part="svg" ');
228 this.scLoad.emit();
229 }
230 else {
231 this.svg = '';
232 console.error({ status: file === null || file === void 0 ? void 0 : file.status });
233 }
234 }
235 else {
236 this.svg = '';
237 console.error({ status: file === null || file === void 0 ? void 0 : file.status });
238 }
239 }
240 catch {
241 console.error({ status: -1 });
242 }
243 }
244 else if (this.svg) {
245 // If we can't resolve a URL and an icon was previously set, remove it
246 this.svg = '';
247 }
248 }
249 getUrl() {
250 const library$1 = library.getIconLibrary(this.library);
251 if (this.name && library$1) {
252 return library$1.resolver(this.name);
253 }
254 else {
255 return this.src;
256 }
257 }
258 render() {
259 return index.h("div", { key: '18d7d08cbf7a046767fcb296769c3a403af6c46b', part: "base", class: "icon", role: "img", "aria-label": this.getLabel(), innerHTML: this.svg });
260 }
261 static get assetsDirs() { return ["icon-assets"]; }
262 static get watchers() { return {
263 "name": ["setIcon"],
264 "src": ["setIcon"],
265 "library": ["setIcon"]
266 }; }
267 };
268 ScIcon.style = ScIconStyle0;
269
270 const scProductLineItemCss = ":host {\n display: block;\n font-family: var(--sc-font-sans);\n}\n\n.item {\n box-sizing: border-box;\n margin: 0px;\n min-width: 0px;\n display: flex;\n gap: var(--sc-spacing-large);\n justify-content: space-between;\n align-items: stretch;\n width: 100%;\n border-bottom: none;\n container-type: inline-size;\n}\n.item__text-container {\n box-sizing: border-box;\n margin: 0px;\n min-width: 0px;\n display: flex;\n flex-direction: column;\n gap: var(--sc-product-line-item-line-gap, 6px);\n justify-content: space-between;\n align-items: stretch;\n width: 100%;\n border-bottom: none;\n}\n.item__row {\n display: flex;\n gap: 18px;\n justify-content: space-between;\n align-items: stretch;\n width: 100%;\n}\n.item__row.stick-bottom {\n margin-top: auto;\n}\n.item__scratch-price {\n text-decoration: line-through;\n font-size: var(--sc-font-size-small);\n line-height: 1;\n color: var(--sc-input-help-text-color);\n white-space: nowrap;\n}\n.item__remove-container {\n display: flex;\n gap: 6px;\n align-items: center;\n line-height: 1;\n cursor: pointer;\n color: var(--sc-input-help-text-color);\n font-size: var(--sc-input-help-text-font-size-medium);\n}\n.item__add-review sc-button {\n --sc-input-border-radius-small: var(--sc-input-border-radius-medium);\n}\n.item--has-review {\n border-bottom: solid 1px var(--sc-input-border-color, var(--sc-input-border));\n padding-top: var(--sc-spacing-small);\n padding-bottom: var(--sc-spacing-large);\n}\n:host(:first-of-type) .item--has-review {\n padding-top: 0;\n}\n\n.item__text {\n box-sizing: border-box;\n margin: 0px;\n min-width: 0px;\n display: flex;\n gap: 6px;\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n flex: 1 1 0%;\n}\n\n.item__text-details {\n display: grid;\n gap: var(--sc-product-line-item-line-gap, 6px);\n}\n\n.item__title {\n box-sizing: border-box;\n min-width: 0px;\n margin: 0;\n color: var(--sc-line-item-title-color, var(--sc-input-label-color));\n font-size: var(--sc-font-size-medium);\n font-weight: var(--sc-font-weight-semibold);\n line-height: 1;\n cursor: pointer;\n display: -webkit-box;\n display: -moz-box;\n -webkit-box-orient: vertical;\n -moz-box-orient: vertical;\n -webkit-line-clamp: 3;\n -moz-box-lines: 3;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.item__suffix {\n flex: 1;\n box-sizing: border-box;\n margin: 0px;\n min-width: 0px;\n display: flex;\n flex-direction: column;\n -webkit-box-pack: start;\n justify-content: space-between;\n align-items: flex-end;\n min-width: 100px;\n margin-left: auto;\n align-self: center;\n}\n\n.product-line-item__removable .item__suffix {\n align-self: flex-start;\n}\n\n.product-line-item__editable .item__suffix {\n align-self: flex-start;\n}\n\n.product-line-item__purchasable-status {\n font-size: var(--sc-font-size-x-small);\n color: var(--sc-input-error-text-color);\n}\n\n.item__price {\n text-align: right;\n max-width: 100%;\n display: grid;\n gap: var(--sc-product-line-item-line-gap, 6px);\n}\n\n.item__description {\n color: var(--sc-price-label-color, var(--sc-input-help-text-color));\n font-size: var(--sc-price-label-font-size, var(--sc-input-help-text-font-size-medium));\n line-height: 1;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n gap: var(--sc-product-line-item-line-gap, 6px);\n text-wrap: pretty;\n}\n.item__description:last-child {\n align-items: flex-end;\n text-align: right;\n}\n\n.item__image-placeholder {\n width: var(--sc-product-line-item-image-size, 65px);\n height: var(--sc-product-line-item-image-size, 65px);\n background-color: var(--sc-input-border-color, var(--sc-input-border));\n border-radius: 4px;\n flex: 0 0 var(--sc-product-line-item-image-size, 65px);\n}\n\n.item__image,\n.attachment-thumbnail {\n width: var(--sc-product-line-item-image-size, 65px);\n height: var(--sc-product-line-item-image-size, 65px);\n object-fit: cover;\n border-radius: 4px;\n border: solid 1px var(--sc-input-border-color, var(--sc-input-border));\n display: block;\n box-shadow: var(--sc-input-box-shadow);\n align-self: flex-start;\n}\n\n@container (max-width: 380px) {\n .item__image,\n .item__image-placeholder {\n display: var(--sc-product-line-item-mobile-image-display, none);\n }\n}\n.product__description {\n display: flex;\n gap: 0.5em;\n align-items: center;\n}\n\n.price {\n font-size: var(--sc-font-size-medium);\n font-weight: var(--sc-font-weight-semibold);\n color: var(--sc-input-label-color);\n line-height: 1;\n white-space: nowrap;\n display: flex;\n gap: 4px;\n align-items: baseline;\n}\n\n.price__description {\n font-size: var(--sc-font-size-small);\n line-height: 1;\n color: var(--sc-input-help-text-color);\n text-align: right;\n white-space: nowrap;\n}\n\n.item--is-rtl.price {\n text-align: right;\n}\n.item--is-rtl .item__price {\n text-align: left;\n}\n\n.base {\n display: grid;\n gap: var(--sc-spacing-x-small);\n}\n\n.fee__description {\n color: var(--sc-input-help-text-color);\n}\n\nsc-quantity-select::part(base) {\n box-shadow: none;\n background-color: transparent;\n}\n\nsc-quantity-select::part(base):not(:focus-within) {\n border-color: transparent;\n}\n\nsc-quantity-select::part(input),\nsc-quantity-select::part(plus),\nsc-quantity-select::part(minus) {\n background-color: transparent;\n}\n\n.line-item-details {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n align-self: flex-start;\n gap: 0.25em;\n margin-top: var(--sc-spacing-xx-small);\n color: var(--sc-input-label-color);\n font-size: var(--sc-font-size-small);\n line-height: 1.4;\n background: transparent;\n outline: none;\n}\n.line-item-details:hover, .line-item-details:focus, .line-item-details:focus-visible {\n background: transparent;\n}\n.line-item-details--clickable {\n cursor: pointer;\n}\n.line-item-details__content {\n flex: 0 1 auto;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.line-item-details:not(.line-item-details--is-expanded) .line-item-details__content {\n max-height: calc(var(--sc-line-item-details-collapse-lines, 2) * 1.4em + (var(--sc-line-item-details-collapse-lines, 2) - 1) * 2px);\n max-height: calc(var(--sc-line-item-details-collapse-lines, 2) * 1lh + (var(--sc-line-item-details-collapse-lines, 2) - 1) * 2px);\n overflow: hidden;\n}\n.line-item-details--is-expanded .line-item-details__content {\n max-height: none;\n overflow: visible;\n}\n.line-item-details__row:empty {\n display: none;\n}\n.line-item-details__qty {\n margin-inline-end: 0.35em;\n}\n.line-item-details__variant {\n margin-inline-start: 0.35em;\n color: var(--sc-color-gray-500, var(--sc-input-help-text-color));\n}\n.line-item-details__note {\n color: var(--sc-color-gray-500, var(--sc-input-help-text-color));\n word-wrap: break-word;\n white-space: normal;\n max-width: 100%;\n}\n.line-item-details__toggle {\n background: transparent;\n border: 0;\n padding: 0;\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n color: var(--sc-color-gray-500, var(--sc-input-help-text-color));\n cursor: pointer;\n border-radius: var(--sc-border-radius-small);\n transition: color 0.2s ease;\n appearance: none;\n -webkit-appearance: none;\n box-shadow: none;\n}\n.line-item-details__toggle:hover, .line-item-details__toggle:focus, .line-item-details__toggle:active {\n background: transparent;\n box-shadow: none;\n color: var(--sc-color-gray-700, var(--sc-input-label-color));\n}\n.line-item-details__toggle:focus {\n outline: none;\n}\n.line-item-details__toggle:focus-visible {\n outline: 2px solid var(--sc-color-primary-500);\n outline-offset: 2px;\n}\n.line-item-details__toggle-label {\n font-size: 14px;\n line-height: 20px;\n}\n.line-item-details__toggle-icon {\n transition: transform 0.2s ease;\n will-change: transform;\n}\n.line-item-details--is-expanded .line-item-details__toggle-icon {\n transform: rotate(180deg);\n}\n\n.item__title-count {\n margin-inline-start: 0.25em;\n}\n\n.visually-hidden {\n position: absolute !important;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}";
271 const ScProductLineItemStyle0 = scProductLineItemCss;
272
273 /** Number of detail rows shown before the region collapses (matches the cart block default). */
274 const COLLAPSE_AFTER = 2;
275 const ScProductLineItem = class {
276 constructor(hostRef) {
277 index.registerInstance(this, hostRef);
278 this.scUpdateQuantity = index.createEvent(this, "scUpdateQuantity", 3);
279 this.scRemove = index.createEvent(this, "scRemove", 3);
280 this.image = undefined;
281 this.name = undefined;
282 this.amount = undefined;
283 this.scratch = undefined;
284 this.displayAmount = undefined;
285 this.scratchDisplayAmount = undefined;
286 this.fees = undefined;
287 this.price = undefined;
288 this.variant = '';
289 this.quantity = undefined;
290 this.interval = undefined;
291 this.trial = undefined;
292 this.removable = undefined;
293 this.editable = true;
294 this.max = undefined;
295 this.sku = '';
296 this.purchasableStatus = undefined;
297 this.note = undefined;
298 this.reviewButtonLink = '';
299 this.bundleComponents = [];
300 this.showAllBundleItems = true;
301 this.separator = '·';
302 this.detailsExpanded = false;
303 }
304 toggleDetails() {
305 this.detailsExpanded = !this.detailsExpanded;
306 }
307 /**
308 * Bundle items render in a single collapsible region. Collapsed, only the
309 * first `COLLAPSE_AFTER` rows show; bundle components render one row each, so
310 * the hidden count is exact ("+N more").
311 */
312 renderDetails() {
313 const sep = (this.separator || '·').trim() || '·';
314 const rows = index$1.getBundleComponentRowsFromLineItems(this.bundleComponents, this.quantity, this.showAllBundleItems, sep);
315 if (!rows.length)
316 return null;
317 const bundleHidden = rows.length > COLLAPSE_AFTER ? rows.length - COLLAPSE_AFTER : 0;
318 // Row count is authoritative for bundles (avoids a wrapped row falsely
319 // triggering a toggle).
320 const collapsible = this.detailsExpanded || bundleHidden > 0;
321 const toggleLabel = this.detailsExpanded
322 ? wp.i18n.__('Show less', 'surecart')
323 : bundleHidden > 0
324 ? wp.i18n.sprintf(/* translators: %d: number of hidden bundle items */ wp.i18n.__('+%d more', 'surecart'), bundleHidden)
325 : wp.i18n.__('Show more', 'surecart');
326 return (index.h("div", { class: {
327 'line-item-details': true,
328 'line-item-details--clickable': collapsible,
329 'line-item-details--is-expanded': this.detailsExpanded,
330 }, part: "details", onClick: () => collapsible && this.toggleDetails() }, index.h("div", { class: "line-item-details__content" }, rows.map(row => (index.h("div", { class: "line-item-details__row", part: "details__component", key: row.id }, row.qty > 1 && index.h("span", { class: "line-item-details__qty" }, row.qty, " \u00D7"), index.h("span", { class: "line-item-details__name" }, row.name), !!row.variants && (index.h("span", { class: "line-item-details__variant", part: "details__variant" }, sep, " ", row.variants)))))), collapsible && (index.h("button", { class: "line-item-details__toggle", type: "button", part: "details__toggle", "aria-expanded": this.detailsExpanded ? 'true' : 'false', onClick: e => {
331 e.stopPropagation();
332 this.toggleDetails();
333 } }, index.h("span", { class: "line-item-details__toggle-label" }, toggleLabel), index.h("sc-icon", { class: "line-item-details__toggle-icon", name: "chevron-down", "aria-hidden": "true", style: { width: '16px', height: '16px' } })))));
334 }
335 render() {
336 var _a, _b, _c, _d;
337 const isImageFallback = ((_a = this.image) === null || _a === void 0 ? void 0 : _a.type) === 'fallback';
338 // Number of products a bundle contains — shown as "(N)" next to the name.
339 const bundleCount = ((_b = this.bundleComponents) === null || _b === void 0 ? void 0 : _b.length) || 0;
340 const hasDescriptionDetails = !!this.variant || !!this.price || !!this.sku || !!this.purchasableStatus;
341 const hasTrialFeesDetails = !!this.trial || (this.fees || []).some(fee => (fee === null || fee === void 0 ? void 0 : fee.display_amount) || (fee === null || fee === void 0 ? void 0 : fee.description));
342 const hasMetaRow = hasDescriptionDetails || hasTrialFeesDetails;
343 return (index.h("div", { key: '83d9573f96517b1e5589f6ed917e1232d52f44e6', class: "base", part: "base" }, index.h("div", { key: '1a9fc5b3065201292ca576c542906c69716383c6', part: "product-line-item", class: {
344 'item': true,
345 'item--has-image': !!((_c = this.image) === null || _c === void 0 ? void 0 : _c.src),
346 'item--has-review': !!this.reviewButtonLink,
347 'item--is-rtl': pageAlign.isRtl(),
348 'product-line-item__editable': this.editable,
349 'product-line-item__removable': this.removable,
350 } }, !!((_d = this.image) === null || _d === void 0 ? void 0 : _d.src) ? (index.h("img", { ...this.image, part: isImageFallback ? 'placeholder__image' : 'image', class: isImageFallback ? 'item__image-placeholder' : 'item__image' })) : (index.h("div", { class: "item__image-placeholder", part: "placeholder__image" })), index.h("div", { key: '46e4e94c95be8949922be91eabd354324445820c', class: "item__text-container" }, index.h("div", { key: '8a092d0b25ed8f08feea9f4d5d2283bcb4a88017', class: "item__row" }, index.h("div", { key: '99f2a5b72d749bac8fb169a2d0424340b7baa777', class: "item__title", part: "title" }, index.h("slot", { key: '6b5a077ca5acced18163ff6f0b3ad66cb9129b7e', name: "title" }, this.name), bundleCount > 0 && (index.h("span", { key: '3a310ffe710600c73e59905789864a1f762b0d03', class: "item__title-count", "aria-hidden": "true" }, "(", bundleCount, ")")), bundleCount > 0 && index.h("span", { key: 'afd855d2f64476c6a02f52181303f0febd1aa3f7', class: "visually-hidden" }, wp.i18n.sprintf(wp.i18n._n('Includes %d item', 'Includes %d items', bundleCount, 'surecart'), bundleCount))), index.h("div", { key: 'a4a0b90d1faaf3b9bd4b303bc71f1cdfffe77911', class: "price", part: "price__amount" }, !!this.scratch && this.scratch !== this.amount && index.h("span", { key: '742fa88c625a4388bb556b8ee32fed9eefd8f630', class: "item__scratch-price" }, this.scratch), this.amount, index.h("div", { key: 'a4c7b0d1852a0ea3d1e17458c70c017cef2b43bb', class: "price__description", part: "price__description" }, this.interval))), hasMetaRow && (index.h("div", { key: 'b5aabb2e2d0cc5fd936656124336b05f99cf0100', class: "item__row" }, index.h("div", { key: 'f6f152b2ddcba92b6c8d2ecda0f49e4c8b8dd6ed', class: "item__description", part: "description" }, this.variant && index.h("div", { key: 'd499b9a0390314f3f7fde5b876d4a2946d59bd6a' }, this.variant), this.price && index.h("div", { key: '12394beab31dd51be37c885b7c023159c312ebf8' }, this.price), this.sku && (index.h("div", { key: '7f57930476202c91a6b360beb72996f0fa940fe1' }, wp.i18n.__('SKU:', 'surecart'), " ", this.sku)), !!this.purchasableStatus && index.h("div", { key: 'e69060d0491f81ac9825b5c29c6c0c58114756ad' }, this.purchasableStatus)), index.h("div", { key: '20d21e071cbedd6e9832c28e1654ae6ed0535d3e', class: "item__description", part: "trial-fees" }, !!this.trial && index.h("div", { key: '8bb86047207a23fd3327943b8e0eeec018b3f93b' }, this.trial), (this.fees || []).map(fee => {
351 return (index.h("div", null, fee === null || fee === void 0 ? void 0 :
352 fee.display_amount, " ", fee === null || fee === void 0 ? void 0 :
353 fee.description));
354 })))), this.renderDetails(), !!this.note && (index.h("div", { key: '43e4128b6f44b4eb9f118f00a32fdbe2fdc65857', class: "item__description" }, index.h("sc-product-line-item-note", { key: '4a94e30b0530426c99df5faeb5195385c3f628aa', note: this.note, exportparts: "base:note" }))), index.h("div", { key: 'a0629cdd7906c2eebe12b3457eeac878842565ed', class: "item__row stick-bottom" }, this.editable ? (index.h("sc-quantity-select", { max: this.max || Infinity, exportparts: "base:quantity, minus:quantity__minus, minus-icon:quantity__minus-icon, plus:quantity__plus, plus-icon:quantity__plus-icon, input:quantity__input", clickEl: this.el, quantity: this.quantity, size: "small", onScChange: e => e.detail && this.scUpdateQuantity.emit(e.detail), "aria-label":
355 /** translators: %1$s: product name, %2$s: product price name */
356 wp.i18n.sprintf(wp.i18n.__('Change Quantity - %1$s %2$s', 'surecart'), this.name, this.price), productName: this.name })) : (index.h("span", { class: "item__description", part: "static-quantity" }, wp.i18n.__('Qty:', 'surecart'), " ", this.quantity)), !!this.reviewButtonLink && (index.h("div", { key: '3cc3d05585054334d3995e440de0a0523184ce34', class: "item__add-review" }, index.h("sc-button", { key: 'c26a69bfd4605193113a240b4fa33bd6c69eed21', size: "small", href: this.reviewButtonLink, target: "_blank" }, wp.i18n.__('Review Product', 'surecart')))), !!this.removable && (index.h("div", { key: 'ea6d312c2ec917b332c30ab46128b74f37b37f43', class: "item__remove-container", onClick: () => this.scRemove.emit(), onKeyDown: e => {
357 if (e.key === 'Enter') {
358 this.scRemove.emit();
359 }
360 }, "aria-label": wp.i18n.sprintf(wp.i18n.__('Remove Item - %1$s %2$s', 'surecart'), this.name, this.amount), tabIndex: 0 }, index.h("sc-icon", { key: 'b0b99a1488432d4b6577322b912a3dc5246fc170', exportparts: "base:remove-icon__base", class: "item__remove", name: "x" }), index.h("span", { key: 'ba58e3c57316d646ad85cf2de19fb61008076704', class: "item__remove-text" }, wp.i18n.__('Remove', 'surecart')))))))));
361 }
362 get el() { return index.getElement(this); }
363 };
364 ScProductLineItem.style = ScProductLineItemStyle0;
365
366 const scProductLineItemNoteCss = ".line-item-note{display:flex;align-items:flex-start;gap:0.25em;min-height:1.5em}.line-item-note--clickable{cursor:pointer}.line-item-note__text{line-height:1.4;flex:1;display:-webkit-box;-webkit-box-orient:vertical;line-clamp:1;-webkit-line-clamp:1;overflow:hidden;text-overflow:ellipsis;transition:all 0.2s}.line-item-note--is-expanded .line-item-note__text{display:block;line-clamp:unset;-webkit-line-clamp:unset;overflow:visible;text-overflow:unset}.line-item-note__toggle{background:none;border:none;color:var(--sc-color-gray-500);cursor:pointer;padding:0;align-self:flex-start;transition:opacity 0.2s ease;border-radius:var(--sc-border-radius-small)}.line-item-note__toggle:hover{opacity:0.8}.line-item-note__toggle:focus-visible{outline:2px solid var(--sc-color-primary-500);outline-offset:2px}.line-item-note__toggle:focus{outline:2px solid var(--sc-color-primary-500);outline-offset:2px}";
367 const ScProductLineItemNoteStyle0 = scProductLineItemNoteCss;
368
369 const ScProductLineItemNote = class {
370 constructor(hostRef) {
371 index.registerInstance(this, hostRef);
372 this.note = undefined;
373 this.expanded = false;
374 this.isOverflowing = false;
375 }
376 componentDidLoad() {
377 this.setupObservers();
378 this.checkOverflow();
379 }
380 disconnectedCallback() {
381 this.cleanupObservers();
382 }
383 setupObservers() {
384 if (!this.noteEl)
385 return;
386 // ResizeObserver for container size changes
387 if (typeof ResizeObserver !== 'undefined') {
388 this.resizeObserver = new ResizeObserver(() => {
389 this.checkOverflow();
390 });
391 this.resizeObserver.observe(this.noteEl);
392 }
393 // MutationObserver for content changes
394 if (typeof MutationObserver !== 'undefined') {
395 this.mutationObserver = new MutationObserver(() => {
396 this.checkOverflow();
397 });
398 this.mutationObserver.observe(this.noteEl, {
399 characterData: true,
400 subtree: true,
401 childList: true,
402 });
403 }
404 }
405 cleanupObservers() {
406 if (this.resizeObserver) {
407 this.resizeObserver.disconnect();
408 this.resizeObserver = undefined;
409 }
410 if (this.mutationObserver) {
411 this.mutationObserver.disconnect();
412 this.mutationObserver = undefined;
413 }
414 }
415 checkOverflow() {
416 if (!this.noteEl)
417 return;
418 this.isOverflowing = this.noteEl.scrollHeight > this.noteEl.clientHeight;
419 }
420 toggle() {
421 this.expanded = !this.expanded;
422 }
423 render() {
424 if (!this.note)
425 return null;
426 return (index.h("div", { class: "base", part: "base" }, index.h("div", { class: {
427 'line-item-note': true,
428 'line-item-note--is-expanded': this.expanded,
429 'line-item-note--clickable': this.isOverflowing || this.expanded,
430 }, tabIndex: this.isOverflowing || this.expanded ? 0 : undefined, onClick: () => (this.isOverflowing || this.expanded) && this.toggle() }, index.h("div", { ref: el => (this.noteEl = el), class: "line-item-note__text" }, this.note), (this.isOverflowing || this.expanded) && (index.h("button", { class: "line-item-note__toggle", type: "button", onClick: e => {
431 e.stopPropagation();
432 this.toggle();
433 }, title: this.expanded ? wp.i18n.__('Collapse note', 'surecart') : wp.i18n.__('Expand note', 'surecart') }, index.h("slot", { name: "icon" }, index.h("sc-icon", { name: this.expanded ? 'chevron-up' : 'chevron-down', style: { width: '16px', height: '16px' } })))))));
434 }
435 get el() { return index.getElement(this); }
436 };
437 ScProductLineItemNote.style = ScProductLineItemNoteStyle0;
438
439 const scQuantitySelectCss = ":host{--focus-ring:0 0 0 var(--sc-focus-ring-width) var(--sc-focus-ring-color-primary);--border-radius:var(--sc-quantity-border-radius, var(--sc-input-border-radius-small));display:inline-block}.input__control{text-align:center;line-height:1;border:none;flex:1;max-width:var(--sc-quantity-input-max-width, 35px);background-color:var(--sc-input-control-background-color, var(--sc-color-white));color:var(--sc-input-control-color, var(--sc-color-black));-moz-appearance:textfield}.input__control::-webkit-outer-spin-button,.input__control::-webkit-inner-spin-button{-webkit-appearance:none}.input__control::-webkit-search-decoration,.input__control::-webkit-search-cancel-button,.input__control::-webkit-search-results-button,.input__control::-webkit-search-results-decoration{-webkit-appearance:none}.input__control:-webkit-autofill,.input__control:-webkit-autofill:hover,.input__control:-webkit-autofill:focus,.input__control:-webkit-autofill:active{box-shadow:0 0 0 var(--sc-input-height-large) var(--sc-input-background-color-hover) inset !important;-webkit-text-fill-color:var(--sc-input-color)}.input__control::placeholder{color:var(--sc-input-placeholder-color);user-select:none}.input__control:focus{outline:none}.quantity--trigger{cursor:pointer;white-space:nowrap}.quantity{position:relative;display:inline-block;width:var(--sc-quantity-select-width, 100px);height:var(--sc-quantity-control-height, var(--sc-input-height-small));display:flex;align-items:stretch;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:var(--sc-input-border);border-radius:var(--border-radius);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}.quantity:hover:not(.quantity--disabled){background-color:var(--sc-input-background-color-hover);border-color:var(--sc-input-border-color-hover)}.quantity:hover:not(.quantity--disabled) .quantity__control{color:var(--sc-input-color-hover)}.quantity.quantity--focused:not(.quantity--disabled){background-color:var(--sc-input-background-color-focus);border-color:var(--sc-input-border-color-focus);box-shadow:var(--focus-ring)}.quantity.quantity--focused:not(.quantity--disabled) .quantity__control{color:var(--sc-input-color-focus)}.quantity.quantity--disabled{background-color:var(--sc-input-background-color-disabled);border-color:var(--sc-input-border-color-disabled);opacity:0.5;cursor:not-allowed}.quantity.quantity--disabled .input__control{color:var(--sc-input-color-disabled)}.quantity.quantity--disabled .input__control::placeholder{color:var(--sc-input-placeholder-color-disabled)}.button__decrease,.button__increase{display:inline-block;text-align:center;vertical-align:middle;line-height:0;height:auto;top:1px;bottom:1px;width:32px;background:var(--sc-input-background-color);color:var(--sc-input-help-text-color);cursor:pointer;font-size:13px;user-select:none;border-width:0;padding:0}.button__decrease:hover:not(.button--disabled) .quantity__control,.button__increase:hover:not(.button--disabled) .quantity__control{color:var(--sc-input-color-hover)}.button__decrease.button--disabled,.button__increase.button--disabled{background-color:var(--sc-input-background-color-disabled);border-color:var(--sc-input-border-color-disabled);opacity:0.5;cursor:not-allowed}.quantity--small{width:var(--sc-quantity-select-width-small, 76px);height:var(--sc-quantity-control-height-small, 26px)}.quantity--small .button__decrease,.quantity--small .button__increase{width:24px;border:none}.quantity--small .input__control{max-width:24px}.button__decrease{left:1px;border-radius:var(--border-radius) 0 0 var(--border-radius);border-right:var(--sc-input-border)}.button__increase{right:1px;border-radius:0 var(--border-radius) var(--border-radius) 0;border-left:var(--sc-input-border)}.quantity--is-rtl .button__decrease{right:1px;border-left:var(--sc-input-border);border-right:0}.quantity--is-rtl .button__increase{left:1px;border-right:var(--sc-input-border);border-left:0}";
440 const ScQuantitySelectStyle0 = scQuantitySelectCss;
441
442 const ScQuantitySelect = class {
443 constructor(hostRef) {
444 index.registerInstance(this, hostRef);
445 this.scChange = index.createEvent(this, "scChange", 7);
446 this.scInput = index.createEvent(this, "scInput", 7);
447 this.scFocus = index.createEvent(this, "scFocus", 7);
448 this.scBlur = index.createEvent(this, "scBlur", 7);
449 this.clickEl = undefined;
450 this.disabled = undefined;
451 this.max = Infinity;
452 this.min = 1;
453 this.quantity = 0;
454 this.productName = 'Product';
455 this.size = 'medium';
456 this.hasFocus = undefined;
457 }
458 decrease() {
459 if (this.disabled)
460 return;
461 this.quantity = Math.max(this.quantity - 1, this.min);
462 // translators: %1$s is the product name
463 index$2.speak(wp.i18n.sprintf(wp.i18n.__('Decreased %1$s quantity by one', 'surecart'), this.productName), 'assertive');
464 this.scChange.emit(this.quantity);
465 this.scInput.emit(this.quantity);
466 }
467 increase() {
468 if (this.disabled)
469 return;
470 this.quantity = Math.min(this.quantity + 1, this.max);
471 // translators: %1$s is the product name
472 index$2.speak(wp.i18n.sprintf(wp.i18n.__('Increased %1$s quantity by one', 'surecart'), this.productName), 'assertive');
473 this.scChange.emit(this.quantity);
474 this.scInput.emit(this.quantity);
475 }
476 handleBlur() {
477 this.hasFocus = false;
478 this.scBlur.emit();
479 }
480 handleFocus() {
481 this.hasFocus = true;
482 this.scFocus.emit();
483 }
484 handleChange() {
485 this.quantity = parseInt(this.input.value) > this.max ? this.max : parseInt(this.input.value);
486 // translators: %1$s is the product name, %2$s is the quantity
487 index$2.speak(wp.i18n.sprintf(wp.i18n.__('Quantity of %1$s changed to %2$s', 'surecart'), this.productName, this.quantity), 'assertive');
488 this.scChange.emit(this.quantity);
489 }
490 handleInput() {
491 this.quantity = parseInt(this.input.value);
492 this.scInput.emit(this.quantity);
493 }
494 render() {
495 return (index.h("div", { key: 'f87d0e717cca0f093b8cd46001668ee45acd602e', part: "base", class: {
496 'quantity': true,
497 // States
498 'quantity--focused': this.hasFocus,
499 'quantity--disabled': this.disabled,
500 'quantity--is-rtl': pageAlign.isRtl(),
501 'quantity--small': this.size === 'small',
502 } }, index.h("button", { key: 'b87e536709d9facd789600480e15e491ed8f59e4', part: "minus", "aria-label":
503 /** translators: %1$s: product name */
504 wp.i18n.sprintf(wp.i18n.__('Decrease %1$s quantity by one', 'surecart'), this.productName), "aria-disabled": this.disabled || (this.quantity <= this.min && this.min > 1), class: { 'button__decrease': true, 'button--disabled': this.quantity <= this.min && this.min > 1 }, onClick: () => this.quantity > this.min && this.decrease(), disabled: this.disabled || (this.quantity <= this.min && this.min > 1) }, index.h("sc-icon", { key: '587cea8b0c6b06b0ddee6b88dd610f3363066f0a', name: "minus", exportparts: "base:minus__icon" })), index.h("input", { key: 'ab04a8b9dde3ce3960f4d5f83d5902fc692a1815', part: "input", class: "input__control", ref: el => (this.input = el), step: "1", type: "number", max: this.max, min: this.min, value: this.quantity, disabled: this.disabled, autocomplete: "off", role: "spinbutton", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": this.quantity, "aria-disabled": this.disabled, onChange: () => this.handleChange(), onInput: () => this.handleInput(), onFocus: () => this.handleFocus(), onBlur: () => this.handleBlur(), "aria-label":
505 /** translators: %1$s: product name */
506 wp.i18n.sprintf(wp.i18n.__('Quantity input for %1$s product', 'surecart'), this.productName) }), index.h("button", { key: '969d9da1d6cac9d9aa484b1a3b1983f0325c65fb', part: "plus", "aria-label":
507 /** translators: %1$s: product name */
508 wp.i18n.sprintf(wp.i18n.__('Increase %1$s quantity by one', 'surecart'), this.productName), class: { 'button__increase': true, 'button--disabled': this.quantity >= this.max }, onClick: () => this.quantity < this.max && this.increase(), "aria-disabled": this.disabled || this.quantity >= this.max, disabled: this.disabled || this.quantity >= this.max }, index.h("sc-icon", { key: '498ee6e4edac91ab06c2f13fe8b4df553b98a34a', name: "plus", exportparts: "base:plus__icon" }))));
509 }
510 get el() { return index.getElement(this); }
511 };
512 ScQuantitySelect.style = ScQuantitySelectStyle0;
513
514 const scSpinnerCss = ":host{--track-color:#0d131e20;--indicator-color:var(--sc-color-primary-500);--stroke-width:2px;--spinner-size:1em;display:inline-block}.spinner{display:inline-block;width:var(--spinner-size);height:var(--spinner-size);border-radius:50%;border:solid var(--stroke-width) var(--track-color);border-top-color:var(--indicator-color);border-right-color:var(--indicator-color);animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}";
515 const ScSpinnerStyle0 = scSpinnerCss;
516
517 const ScSpinner = class {
518 constructor(hostRef) {
519 index.registerInstance(this, hostRef);
520 }
521 render() {
522 return index.h("span", { key: '2ee97812cfb75bbdc7b60de3552494267e4480ac', part: "base", class: "spinner", "aria-busy": "true", "aria-live": "polite" });
523 }
524 };
525 ScSpinner.style = ScSpinnerStyle0;
526
527 exports.sc_button = ScButton;
528 exports.sc_icon = ScIcon;
529 exports.sc_product_line_item = ScProductLineItem;
530 exports.sc_product_line_item_note = ScProductLineItemNote;
531 exports.sc_quantity_select = ScQuantitySelect;
532 exports.sc_spinner = ScSpinner;
533
534 //# sourceMappingURL=sc-button_6.cjs.entry.js.map