@salla.sa/twilight-components 3.0.24 → 3.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{Helper-sq6ztayx.js → Helper-Di1G8EnP.js} +1 -1
- package/dist/cjs/{filepond-BMxlEH8M.js → filepond-DU_-t59i.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-poster-DVSz4StJ.js → filepond-plugin-file-poster-CYpSqb6i.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-size-CXJiLSzt.js → filepond-plugin-file-validate-size-a_tUhUBx.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-type-DWK85msl.js → filepond-plugin-file-validate-type-D_X7irXu.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-edit-BHttJI5X.js → filepond-plugin-image-edit-BRP3GZ31.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-exif-orientation-DTKIO2zE.js → filepond-plugin-image-exif-orientation-CiHIpg-4.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-preview-BaRxwhFa.js → filepond-plugin-image-preview-CKT6x8T1.js} +1 -1
- package/dist/cjs/{index-BJ3-fFSF.js → index-BLPUgwXq.js} +6 -6
- package/dist/cjs/info-Do5bVPmK.js +13 -0
- package/dist/cjs/{intlTelInput-DNoOb73M.js → intlTelInput-CyL5UDfU.js} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-accordion_6.cjs.entry.js +2 -2
- package/dist/cjs/salla-add-product-button_5.cjs.entry.js +2 -2
- package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
- package/dist/cjs/salla-alert_2.cjs.entry.js +3 -9
- package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
- package/dist/cjs/salla-applied-filters.cjs.entry.js +2 -2
- package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
- package/dist/cjs/salla-attachment-view_9.cjs.entry.js +11 -11
- package/dist/cjs/salla-badge.cjs.entry.js +1 -1
- package/dist/cjs/salla-basket-gap.cjs.entry.js +1 -1
- package/dist/cjs/salla-bullet-delivery_3.cjs.entry.js +1 -1
- package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
- package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +5 -1
- package/dist/cjs/salla-cart-summary-card.cjs.entry.js +120 -5
- package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
- package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
- package/dist/cjs/salla-comment-form_9.cjs.entry.js +2 -2
- package/dist/cjs/salla-conditional-offer.cjs.entry.js +628 -19
- package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
- package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
- package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
- package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
- package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
- package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters-widget.cjs.entry.js +2 -2
- package/dist/cjs/salla-filters.cjs.entry.js +2 -2
- package/dist/cjs/salla-free-shipping-banner.cjs.entry.js +1 -1
- package/dist/cjs/salla-free-shipping-tag.cjs.entry.js +1 -1
- package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
- package/dist/cjs/salla-gift-card-redeem_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-gifting.cjs.entry.js +1 -1
- package/dist/cjs/salla-hook.cjs.entry.js +1 -1
- package/dist/cjs/salla-infinite-scroll.cjs.entry.js +2 -2
- package/dist/cjs/salla-installment.cjs.entry.js +1 -1
- package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
- package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-banner_10.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-exchange-product-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
- package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
- package/dist/cjs/salla-map_3.cjs.entry.js +1 -1
- package/dist/cjs/salla-menu.cjs.entry.js +1 -1
- package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
- package/dist/cjs/salla-mobile-update-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +1 -1
- package/dist/cjs/salla-next-order-coupon.cjs.entry.js +8 -1
- package/dist/cjs/salla-notification-item_2.cjs.entry.js +2 -2
- package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-items.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-options-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-payment.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-rewards.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-shipments.cjs.entry.js +2 -11
- package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-totals-card.cjs.entry.js +27 -6
- package/dist/cjs/salla-orders.cjs.entry.js +2 -2
- package/dist/cjs/salla-payments.cjs.entry.js +1 -1
- package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
- package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
- package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
- package/dist/cjs/salla-product-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
- package/dist/cjs/salla-products-list.cjs.entry.js +2 -2
- package/dist/cjs/salla-products-slider.cjs.entry.js +2 -2
- package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
- package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +2 -2
- package/dist/cjs/salla-rating-modal.cjs.entry.js +2 -2
- package/dist/cjs/salla-review-factors-tags.cjs.entry.js +1 -1
- package/dist/cjs/salla-review-order-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
- package/dist/cjs/salla-search-product-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-search.cjs.entry.js +2 -2
- package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/salla-social-share.cjs.entry.js +1 -1
- package/dist/cjs/salla-social.cjs.entry.js +1 -1
- package/dist/cjs/salla-tab-content_3.cjs.entry.js +1 -1
- package/dist/cjs/salla-thank-you-header.cjs.entry.js +1 -1
- package/dist/cjs/salla-thank-you-page.cjs.entry.js +1 -1
- package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
- package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
- package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
- package/dist/cjs/salla-user-settings.cjs.entry.js +1 -1
- package/dist/cjs/salla-verify.cjs.entry.js +1 -1
- package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
- package/dist/cjs/salla-wishlist-actions.cjs.entry.js +1 -1
- package/dist/cjs/salla-wishlist-summary.cjs.entry.js +2 -2
- package/dist/cjs/twilight.cjs.js +2 -2
- package/dist/cjs/{vanilla-picker-CceY3g8c.js → vanilla-picker-C9AVuYe1.js} +1 -1
- package/dist/collection/components/salla-cart-item-offers/salla-cart-item-offers.js +4 -0
- package/dist/collection/components/salla-cart-summary-card/salla-cart-summary-card.css +152 -59
- package/dist/collection/components/salla-cart-summary-card/salla-cart-summary-card.js +123 -4
- package/dist/collection/components/salla-conditional-offer/salla-conditional-offer.css +139 -0
- package/dist/collection/components/salla-conditional-offer/salla-conditional-offer.js +568 -14
- package/dist/collection/components/salla-next-order-coupon/salla-next-order-coupon.js +7 -0
- package/dist/collection/components/salla-order-shipments/salla-order-shipments.js +1 -10
- package/dist/collection/components/salla-order-totals-card/salla-order-totals-card.css +3 -0
- package/dist/collection/components/salla-order-totals-card/salla-order-totals-card.js +25 -4
- package/dist/collection/shared/cart-free-gifts.js +42 -1
- package/dist/collection/shared/offer-stages.js +22 -3
- package/dist/components/index.js +2 -2
- package/dist/components/info.js +11 -0
- package/dist/components/salla-bottom-alert.js +2 -8
- package/dist/components/salla-cart-item-offers.js +4 -0
- package/dist/components/salla-cart-summary-card.js +124 -5
- package/dist/components/salla-conditional-offer.js +631 -18
- package/dist/components/salla-next-order-coupon.js +7 -0
- package/dist/components/salla-order-shipments.js +1 -10
- package/dist/components/salla-order-totals-card.js +26 -5
- package/dist/docs.json +4 -4
- package/dist/esm/{Helper-BwzPfwZJ.js → Helper-CFEqaSN-.js} +1 -1
- package/dist/esm/{filepond-JNV-1zqR.js → filepond-BfW_OXid.js} +1 -1
- package/dist/esm/{filepond-plugin-file-poster-nFqNHCag.js → filepond-plugin-file-poster-CsMiL-wZ.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-size-P3KmOTH8.js → filepond-plugin-file-validate-size-BuxVUFKn.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-type-BV0Ctr7U.js → filepond-plugin-file-validate-type-Dq94isoe.js} +1 -1
- package/dist/esm/{filepond-plugin-image-edit-D62rKlfH.js → filepond-plugin-image-edit-CEVstXlA.js} +1 -1
- package/dist/esm/{filepond-plugin-image-exif-orientation-DerapxIk.js → filepond-plugin-image-exif-orientation-BhViRs-X.js} +1 -1
- package/dist/esm/{filepond-plugin-image-preview-BlRd2Ble.js → filepond-plugin-image-preview-BrscXNqJ.js} +1 -1
- package/dist/esm/{index-CtoXzf1y.js → index-g-_4am8C.js} +6 -6
- package/dist/esm/info-OdOOjQZO.js +11 -0
- package/dist/esm/{intlTelInput-BZz-u5_w.js → intlTelInput-PsSXBr__.js} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/salla-accordion-body_2.entry.js +1 -1
- package/dist/esm/salla-accordion_6.entry.js +2 -2
- package/dist/esm/salla-add-product-button_5.entry.js +2 -2
- package/dist/esm/salla-advertisement.entry.js +1 -1
- package/dist/esm/salla-alert_2.entry.js +3 -9
- package/dist/esm/salla-app-install-alert.entry.js +1 -1
- package/dist/esm/salla-applied-filters.entry.js +2 -2
- package/dist/esm/salla-apps-icons.entry.js +1 -1
- package/dist/esm/salla-attachment-view_9.entry.js +11 -11
- package/dist/esm/salla-badge.entry.js +1 -1
- package/dist/esm/salla-basket-gap.entry.js +1 -1
- package/dist/esm/salla-bullet-delivery_3.entry.js +1 -1
- package/dist/esm/salla-cart-coupons.entry.js +1 -1
- package/dist/esm/salla-cart-item-offers_2.entry.js +5 -1
- package/dist/esm/salla-cart-summary-card.entry.js +120 -5
- package/dist/esm/salla-cashback-banner.entry.js +1 -1
- package/dist/esm/salla-comment-factors.entry.js +1 -1
- package/dist/esm/salla-comment-form_9.entry.js +2 -2
- package/dist/esm/salla-conditional-offer.entry.js +628 -19
- package/dist/esm/salla-contacts.entry.js +1 -1
- package/dist/esm/salla-cookies-bar.entry.js +1 -1
- package/dist/esm/salla-count-down.entry.js +1 -1
- package/dist/esm/salla-custom-fields.entry.js +1 -1
- package/dist/esm/salla-delivery-promise.entry.js +1 -1
- package/dist/esm/salla-edit-order-button.entry.js +1 -1
- package/dist/esm/salla-filters-widget.entry.js +2 -2
- package/dist/esm/salla-filters.entry.js +2 -2
- package/dist/esm/salla-free-shipping-banner.entry.js +1 -1
- package/dist/esm/salla-free-shipping-tag.entry.js +1 -1
- package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
- package/dist/esm/salla-gift-card-redeem_2.entry.js +1 -1
- package/dist/esm/salla-gifting.entry.js +1 -1
- package/dist/esm/salla-hook.entry.js +1 -1
- package/dist/esm/salla-infinite-scroll.entry.js +2 -2
- package/dist/esm/salla-installment.entry.js +1 -1
- package/dist/esm/salla-list-tile.entry.js +1 -1
- package/dist/esm/salla-localization-modal.entry.js +1 -1
- package/dist/esm/salla-login-modal.entry.js +1 -1
- package/dist/esm/salla-loyalty-banner_10.entry.js +1 -1
- package/dist/esm/salla-loyalty-exchange-product-card.entry.js +1 -1
- package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
- package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
- package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
- package/dist/esm/salla-loyalty.entry.js +1 -1
- package/dist/esm/salla-maintenance-alert.entry.js +1 -1
- package/dist/esm/salla-map_3.entry.js +1 -1
- package/dist/esm/salla-menu.entry.js +1 -1
- package/dist/esm/salla-metadata.entry.js +1 -1
- package/dist/esm/salla-mobile-update-modal.entry.js +1 -1
- package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
- package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
- package/dist/esm/salla-multiple-bundle-product.entry.js +1 -1
- package/dist/esm/salla-next-order-coupon.entry.js +8 -1
- package/dist/esm/salla-notification-item_2.entry.js +2 -2
- package/dist/esm/salla-offer-modal.entry.js +1 -1
- package/dist/esm/salla-offer.entry.js +1 -1
- package/dist/esm/salla-order-branch.entry.js +1 -1
- package/dist/esm/salla-order-cancel.entry.js +1 -1
- package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
- package/dist/esm/salla-order-details-options.entry.js +1 -1
- package/dist/esm/salla-order-details.entry.js +1 -1
- package/dist/esm/salla-order-edit-item.entry.js +1 -1
- package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
- package/dist/esm/salla-order-edit.entry.js +1 -1
- package/dist/esm/salla-order-items.entry.js +1 -1
- package/dist/esm/salla-order-options-modal.entry.js +1 -1
- package/dist/esm/salla-order-payment.entry.js +1 -1
- package/dist/esm/salla-order-rewards.entry.js +1 -1
- package/dist/esm/salla-order-shipments.entry.js +2 -11
- package/dist/esm/salla-order-summary.entry.js +1 -1
- package/dist/esm/salla-order-totals-card.entry.js +27 -6
- package/dist/esm/salla-orders.entry.js +2 -2
- package/dist/esm/salla-payments.entry.js +1 -1
- package/dist/esm/salla-placeholder.entry.js +1 -1
- package/dist/esm/salla-price-range.entry.js +1 -1
- package/dist/esm/salla-product-card-embed.entry.js +1 -1
- package/dist/esm/salla-product-card.entry.js +1 -1
- package/dist/esm/salla-product-size-guide.entry.js +1 -1
- package/dist/esm/salla-products-list.entry.js +2 -2
- package/dist/esm/salla-products-slider.entry.js +2 -2
- package/dist/esm/salla-quick-order.entry.js +1 -1
- package/dist/esm/salla-rating-modal-v2.entry.js +2 -2
- package/dist/esm/salla-rating-modal.entry.js +2 -2
- package/dist/esm/salla-review-factors-tags.entry.js +1 -1
- package/dist/esm/salla-review-order-item.entry.js +1 -1
- package/dist/esm/salla-scopes.entry.js +1 -1
- package/dist/esm/salla-search-product-card.entry.js +1 -1
- package/dist/esm/salla-search.entry.js +2 -2
- package/dist/esm/salla-skeleton.entry.js +1 -1
- package/dist/esm/salla-social-share.entry.js +1 -1
- package/dist/esm/salla-social.entry.js +1 -1
- package/dist/esm/salla-tab-content_3.entry.js +1 -1
- package/dist/esm/salla-thank-you-header.entry.js +1 -1
- package/dist/esm/salla-thank-you-page.entry.js +1 -1
- package/dist/esm/salla-tiered-offer.entry.js +1 -1
- package/dist/esm/salla-trust-badges.entry.js +1 -1
- package/dist/esm/salla-user-menu.entry.js +1 -1
- package/dist/esm/salla-user-profile.entry.js +1 -1
- package/dist/esm/salla-user-settings.entry.js +1 -1
- package/dist/esm/salla-verify.entry.js +1 -1
- package/dist/esm/salla-wallet.entry.js +1 -1
- package/dist/esm/salla-wishlist-actions.entry.js +1 -1
- package/dist/esm/salla-wishlist-summary.entry.js +2 -2
- package/dist/esm/twilight.js +3 -3
- package/dist/esm/{vanilla-picker-BfmpXY4G.js → vanilla-picker-D3lgt9go.js} +1 -1
- package/dist/twilight/{p-0b583810.entry.js → p-02006b3a.entry.js} +1 -1
- package/dist/twilight/{p-f51f31df.entry.js → p-0207dae4.entry.js} +1 -1
- package/dist/twilight/{p-117e714b.entry.js → p-025e30c7.entry.js} +1 -1
- package/dist/twilight/{p-38b70281.entry.js → p-058e4be3.entry.js} +1 -1
- package/dist/twilight/{p-77deaa00.entry.js → p-0ce6514e.entry.js} +1 -1
- package/dist/twilight/{p-f3455825.entry.js → p-0d94c90e.entry.js} +1 -1
- package/dist/twilight/{p-5dea6c09.entry.js → p-0e423424.entry.js} +1 -1
- package/dist/twilight/{p-71b5546b.entry.js → p-0f7db4a1.entry.js} +1 -1
- package/dist/twilight/{p-374d9f0c.entry.js → p-12038aef.entry.js} +1 -1
- package/dist/twilight/{p-2e1dd9cf.entry.js → p-12dcb9a0.entry.js} +1 -1
- package/dist/twilight/{p-aac9d2fe.entry.js → p-14311053.entry.js} +1 -1
- package/dist/twilight/{p-0ce0cdb0.entry.js → p-151df172.entry.js} +1 -1
- package/dist/twilight/{p-d76b7564.entry.js → p-152ac425.entry.js} +1 -1
- package/dist/twilight/{p-a4fee391.entry.js → p-1b6d84a8.entry.js} +1 -1
- package/dist/twilight/p-1d31b983.entry.js +4 -0
- package/dist/twilight/{p-6495383e.entry.js → p-1dcbbbbf.entry.js} +1 -1
- package/dist/twilight/{p-f310b923.entry.js → p-1df3fe4a.entry.js} +1 -1
- package/dist/twilight/{p-00a1ec4e.entry.js → p-22271248.entry.js} +1 -1
- package/dist/twilight/{p-e8ebb2fe.entry.js → p-2834a4d3.entry.js} +1 -1
- package/dist/twilight/{p-2882d626.entry.js → p-2907057d.entry.js} +1 -1
- package/dist/twilight/{p-ed37e702.entry.js → p-2d3b29d9.entry.js} +1 -1
- package/dist/twilight/{p-055bf228.entry.js → p-2db9ee05.entry.js} +1 -1
- package/dist/twilight/{p-4080fdc9.entry.js → p-2e4ce75b.entry.js} +1 -1
- package/dist/twilight/{p-3845e427.entry.js → p-329b7cc2.entry.js} +1 -1
- package/dist/twilight/{p-c4264e87.entry.js → p-3c2e7bef.entry.js} +1 -1
- package/dist/twilight/p-3fedd652.entry.js +4 -0
- package/dist/twilight/{p-36a7344c.entry.js → p-4247db1a.entry.js} +1 -1
- package/dist/twilight/{p-f664fa69.entry.js → p-496f950b.entry.js} +1 -1
- package/dist/twilight/{p-40e651ac.entry.js → p-49cd89d1.entry.js} +1 -1
- package/dist/twilight/p-4b8bb969.entry.js +4 -0
- package/dist/twilight/{p-c18fe9e5.entry.js → p-5166cd84.entry.js} +1 -1
- package/dist/twilight/{p-cbff6c68.entry.js → p-5350ba07.entry.js} +1 -1
- package/dist/twilight/{p-2c04bba3.entry.js → p-54eec74a.entry.js} +1 -1
- package/dist/twilight/{p-ae1efde9.entry.js → p-55861492.entry.js} +1 -1
- package/dist/twilight/{p-cd55369c.entry.js → p-6070b995.entry.js} +1 -1
- package/dist/twilight/{p-4254e9c2.entry.js → p-62a3394a.entry.js} +1 -1
- package/dist/twilight/{p-974c100d.entry.js → p-63c982e1.entry.js} +1 -1
- package/dist/twilight/{p-2afc4658.entry.js → p-6432401e.entry.js} +1 -1
- package/dist/twilight/{p-7a8fde62.entry.js → p-64ae09b4.entry.js} +1 -1
- package/dist/twilight/{p-f67d03fb.entry.js → p-685a61fa.entry.js} +1 -1
- package/dist/twilight/{p-7c684782.entry.js → p-710a42d2.entry.js} +1 -1
- package/dist/twilight/{p-2566f688.entry.js → p-72e13a12.entry.js} +1 -1
- package/dist/twilight/{p-ebed682b.entry.js → p-73612f04.entry.js} +1 -1
- package/dist/twilight/{p-2401f0d7.entry.js → p-74602eb0.entry.js} +1 -1
- package/dist/twilight/{p-365ff361.entry.js → p-76e238b3.entry.js} +1 -1
- package/dist/twilight/{p-7169ba9a.entry.js → p-78240cb3.entry.js} +1 -1
- package/dist/twilight/{p-8413d52b.entry.js → p-78a7b46e.entry.js} +1 -1
- package/dist/twilight/{p-1af75625.entry.js → p-79f9403a.entry.js} +1 -1
- package/dist/twilight/{p-6ffbf505.entry.js → p-7f4f300a.entry.js} +1 -1
- package/dist/twilight/{p-2140be84.entry.js → p-7fc9a0bf.entry.js} +1 -1
- package/dist/twilight/{p-b1bc70af.entry.js → p-8016f122.entry.js} +1 -1
- package/dist/twilight/{p-a8102290.entry.js → p-801eb7d8.entry.js} +1 -1
- package/dist/twilight/{p-02ddd64c.entry.js → p-81ec67d8.entry.js} +1 -1
- package/dist/twilight/{p-3356638d.entry.js → p-83a1123b.entry.js} +1 -1
- package/dist/twilight/p-84b9416e.entry.js +4 -0
- package/dist/twilight/{p-8fe950e8.entry.js → p-8783aa81.entry.js} +1 -1
- package/dist/twilight/{p-60ae422e.entry.js → p-87ba0ca2.entry.js} +1 -1
- package/dist/twilight/{p-e2cb5c49.entry.js → p-8cbbe961.entry.js} +1 -1
- package/dist/twilight/{p-a260f35e.entry.js → p-8ec7866e.entry.js} +1 -1
- package/dist/twilight/{p-e89daada.entry.js → p-92cbac49.entry.js} +1 -1
- package/dist/twilight/{p-3da2e3f3.entry.js → p-93a85463.entry.js} +1 -1
- package/dist/twilight/{p-4f4933f8.entry.js → p-95f8caa0.entry.js} +1 -1
- package/dist/twilight/{p-061216d4.entry.js → p-965c3ee8.entry.js} +1 -1
- package/dist/twilight/{p-9c1b0978.entry.js → p-98b24f1d.entry.js} +1 -1
- package/dist/twilight/{p-6KZIgnh6.js → p-9h9-vkr9.js} +1 -1
- package/dist/twilight/{p-DT73iyFr.js → p-B6WlUws-.js} +1 -1
- package/dist/twilight/{p-78r0jdyY.js → p-ByR59DTl.js} +2 -2
- package/dist/twilight/{p-DYAn-F48.js → p-CB552NRi.js} +2 -2
- package/dist/twilight/{p-x4_Sxqd_.js → p-CWi90iJ1.js} +1 -1
- package/dist/twilight/{p-CC-KFXD9.js → p-DjCyIWR1.js} +1 -1
- package/dist/twilight/{p-BeC8AhMn.js → p-EXd4paYi.js} +1 -1
- package/dist/twilight/{p-BwUX8dew.js → p-MEqjtc_i.js} +1 -1
- package/dist/twilight/p-OdOOjQZO.js +4 -0
- package/dist/twilight/{p-D5DrmlyQ.js → p-WsiD2WP-.js} +1 -1
- package/dist/twilight/{p-F1Erq7GR.js → p-_ulhlUUw.js} +1 -1
- package/dist/twilight/{p-b3472096.entry.js → p-a185d836.entry.js} +1 -1
- package/dist/twilight/p-a2147ef3.entry.js +4 -0
- package/dist/twilight/{p-1d105a57.entry.js → p-a21bc7ee.entry.js} +1 -1
- package/dist/twilight/{p-1f39ca4f.entry.js → p-a255167f.entry.js} +1 -1
- package/dist/twilight/{p-72b0724c.entry.js → p-a76a2a5d.entry.js} +1 -1
- package/dist/twilight/{p-97065b4f.entry.js → p-a7aa162c.entry.js} +1 -1
- package/dist/twilight/{p-c1ab1b40.entry.js → p-aa5be7cf.entry.js} +1 -1
- package/dist/twilight/{p-0d1b8490.entry.js → p-ac31a382.entry.js} +1 -1
- package/dist/twilight/{p-94d5b080.entry.js → p-ad95bb9a.entry.js} +1 -1
- package/dist/twilight/{p-0cb60522.entry.js → p-ae4ea8c9.entry.js} +1 -1
- package/dist/twilight/{p-d6a3b2d8.entry.js → p-ba601791.entry.js} +1 -1
- package/dist/twilight/{p-dc2be7b8.entry.js → p-c0423cfc.entry.js} +1 -1
- package/dist/twilight/{p-a236dd3b.entry.js → p-c861b955.entry.js} +1 -1
- package/dist/twilight/{p-3d3eda0f.entry.js → p-c96e9150.entry.js} +1 -1
- package/dist/twilight/{p-1b4c3b85.entry.js → p-cdd8e44a.entry.js} +1 -1
- package/dist/twilight/{p-9e50f29c.entry.js → p-cf3285f1.entry.js} +1 -1
- package/dist/twilight/p-d02dee6d.entry.js +4 -0
- package/dist/twilight/{p-95e7c2e1.entry.js → p-d204326c.entry.js} +1 -1
- package/dist/twilight/{p-e5dc1d27.entry.js → p-d304b8fc.entry.js} +1 -1
- package/dist/twilight/{p-79b743eb.entry.js → p-da63cbf0.entry.js} +1 -1
- package/dist/twilight/p-db2b9499.entry.js +4 -0
- package/dist/twilight/{p-a9ae6ab9.entry.js → p-dba5b89a.entry.js} +1 -1
- package/dist/twilight/{p-aca2717e.entry.js → p-e0387b79.entry.js} +1 -1
- package/dist/twilight/{p-f738f492.entry.js → p-e0dc2c2d.entry.js} +1 -1
- package/dist/twilight/{p-3e285056.entry.js → p-e3d37ab2.entry.js} +1 -1
- package/dist/twilight/{p-b3c9ab0e.entry.js → p-e59a8901.entry.js} +1 -1
- package/dist/twilight/{p-4adaee32.entry.js → p-e776afcd.entry.js} +1 -1
- package/dist/twilight/{p-4008e164.entry.js → p-e8921db3.entry.js} +1 -1
- package/dist/twilight/p-ec9434d9.entry.js +4 -0
- package/dist/twilight/{p-4c5a7ffc.entry.js → p-ee7e6ce9.entry.js} +1 -1
- package/dist/twilight/{p-213368ef.entry.js → p-f0ab3933.entry.js} +1 -1
- package/dist/twilight/{p-8ea3a265.entry.js → p-f16bdaf5.entry.js} +1 -1
- package/dist/twilight/{p-e8198efc.entry.js → p-f2718aec.entry.js} +1 -1
- package/dist/twilight/{p-118aa92e.entry.js → p-f581bb32.entry.js} +1 -1
- package/dist/twilight/{p-8fd6ed52.entry.js → p-f6981856.entry.js} +1 -1
- package/dist/twilight/{p-b2cbdaa0.entry.js → p-f7f8d758.entry.js} +1 -1
- package/dist/twilight/{p-fbce8a18.entry.js → p-fbff3efd.entry.js} +1 -1
- package/dist/twilight/{p-36167cbe.entry.js → p-ff890108.entry.js} +1 -1
- package/dist/twilight/{p-8cbf3bc2.entry.js → p-fffd562d.entry.js} +1 -1
- package/dist/twilight/{p-CtoXzf1y.js → p-g-_4am8C.js} +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/types/components/salla-cart-summary-card/salla-cart-summary-card.d.ts +26 -0
- package/dist/types/components/salla-conditional-offer/interfaces.d.ts +36 -0
- package/dist/types/components/salla-conditional-offer/salla-conditional-offer.d.ts +182 -3
- package/dist/types/components/salla-order-shipments/salla-order-shipments.d.ts +0 -1
- package/dist/types/components/salla-order-totals-card/interfaces.d.ts +8 -3
- package/dist/types/components/salla-order-totals-card/salla-order-totals-card.d.ts +2 -1
- package/dist/types/shared/cart-free-gifts.d.ts +26 -0
- package/dist/types/shared/offer-stages.d.ts +6 -1
- package/package.json +5 -5
- package/dist/twilight/p-034b80ad.entry.js +0 -4
- package/dist/twilight/p-0fb390fb.entry.js +0 -4
- package/dist/twilight/p-17be7967.entry.js +0 -4
- package/dist/twilight/p-5bc2190a.entry.js +0 -4
- package/dist/twilight/p-7303ebd1.entry.js +0 -4
- package/dist/twilight/p-8b9c44c8.entry.js +0 -4
- package/dist/twilight/p-919650b7.entry.js +0 -4
- package/dist/twilight/p-ebe45961.entry.js +0 -4
|
@@ -1,11 +1,42 @@
|
|
|
1
|
-
import { type Offer } from "./interfaces";
|
|
2
|
-
import { type CartFreeGiftItem } from "../../shared/cart-free-gifts";
|
|
1
|
+
import { type FreeProductCard, type Offer } from "./interfaces";
|
|
2
|
+
import { type CartFreeGiftItem, type CartProductLine } from "../../shared/cart-free-gifts";
|
|
3
3
|
export declare class SallaConditionalOffer {
|
|
4
4
|
offer: Offer;
|
|
5
5
|
isLoading: boolean;
|
|
6
6
|
canRender: boolean;
|
|
7
7
|
/** Free-gift cart LINES belonging to this offer — the "ادارة العرض" card. */
|
|
8
8
|
gifts: CartFreeGiftItem[];
|
|
9
|
+
/** CP-2171 — every cart line (paid and free), for the picker's per-product state. */
|
|
10
|
+
cartLines: CartProductLine[];
|
|
11
|
+
/**
|
|
12
|
+
* CP-2171 — whether `cartLines` came from a cart lookup that answered. Until then the
|
|
13
|
+
* lines are `[]`: the "Free products" panel and the gift-pick banner line wait for it.
|
|
14
|
+
*/
|
|
15
|
+
cartLinesLoaded: boolean;
|
|
16
|
+
/** CP-2171 — the picker's product cards, keyed by ENCODED product id. */
|
|
17
|
+
freeProductCards: Record<string, FreeProductCard>;
|
|
18
|
+
/**
|
|
19
|
+
* CP-2171 — the product (encoded id) an add is in flight for. Held until cart lines read
|
|
20
|
+
* AFTER the add arrive, not just until the request ends: the cart refresh starts only after
|
|
21
|
+
* the coalescing window, and a tap in between is ignored, so a double tap adds one unit.
|
|
22
|
+
*/
|
|
23
|
+
pendingFreeProduct: string | null;
|
|
24
|
+
/** `giftsGeneration` when the pending change succeeded; a cart load started after it unlocks. */
|
|
25
|
+
private pendingFreeProductSettledAt;
|
|
26
|
+
private pendingFreeProductTimer;
|
|
27
|
+
/**
|
|
28
|
+
* `giftsGeneration` when an add from the picker succeeded: the first cart lines read after it
|
|
29
|
+
* are checked against the page (see `showMissingCartLines`). Kept apart from the
|
|
30
|
+
* button lock on purpose: the lock's fallback can fire before those lines arrive, and the
|
|
31
|
+
* page still has to show the new line when they do.
|
|
32
|
+
*/
|
|
33
|
+
private cartPageCheckAfter;
|
|
34
|
+
/** A cart page fetch for missing lines is in flight; lines read meanwhile wait in `pendingCartPageLines`. */
|
|
35
|
+
private insertingCartLines;
|
|
36
|
+
private pendingCartPageLines;
|
|
37
|
+
/** Re-reads of the cart after a failed lookup while a picker change waits; see `retryPickerCartLookup`. */
|
|
38
|
+
private pickerLookupRetries;
|
|
39
|
+
private pickerLookupTimer;
|
|
9
40
|
/**
|
|
10
41
|
* How many LINES the cart holds — `null` while that is genuinely UNKNOWN.
|
|
11
42
|
*
|
|
@@ -392,6 +423,9 @@ export declare class SallaConditionalOffer {
|
|
|
392
423
|
*/
|
|
393
424
|
private toCartCount;
|
|
394
425
|
private getFreeLabel;
|
|
426
|
+
private getAddLabel;
|
|
427
|
+
/** A platform-wide label (not `blocks.cart_offer.*`): its own text, or `fallback` when missing. */
|
|
428
|
+
private sharedLabel;
|
|
395
429
|
/**
|
|
396
430
|
* Read a `blocks.cart_offer.*` translation.
|
|
397
431
|
*
|
|
@@ -461,6 +495,13 @@ export declare class SallaConditionalOffer {
|
|
|
461
495
|
* disconnect cleared is re-armed by `connectedCallback` without costing one.
|
|
462
496
|
*/
|
|
463
497
|
private scheduleCartLookupRetry;
|
|
498
|
+
/**
|
|
499
|
+
* Ask for the cart again after a lookup that could not answer while a picker change is
|
|
500
|
+
* waiting on real lines. Its own bounded episode, on the count retry's delays: that one
|
|
501
|
+
* ends as soon as the cart event has supplied a count, which is exactly when this is needed.
|
|
502
|
+
*/
|
|
503
|
+
private retryPickerCartLookup;
|
|
504
|
+
private clearPickerLookupRetry;
|
|
464
505
|
/**
|
|
465
506
|
* End the retry episode: a lookup answered, or the cart changed under it. The count
|
|
466
507
|
* goes back to zero so a LATER failure gets its own full set of attempts.
|
|
@@ -651,6 +692,139 @@ export declare class SallaConditionalOffer {
|
|
|
651
692
|
* The prose is `details.rules`, NEVER `offer.description` — see `readOfferRules`.
|
|
652
693
|
*/
|
|
653
694
|
private renderTooltip;
|
|
695
|
+
/**
|
|
696
|
+
* CP-2171 — the tier the free product picker belongs to: the first `free_product` tier that
|
|
697
|
+
* carries a non-empty `free_products` list. `null` on an offer without one, which keeps the
|
|
698
|
+
* read-only gift card exactly as before. An empty list (every listed product unavailable) is
|
|
699
|
+
* treated as no picker: there is nothing to choose, so a "Choose N" header would be a dead end.
|
|
700
|
+
*/
|
|
701
|
+
private getPickerStage;
|
|
702
|
+
private isPickerTier;
|
|
703
|
+
/**
|
|
704
|
+
* CP-5033 — the furthest tier the cart's value reaches is a gift tier with none of its gifts
|
|
705
|
+
* addable (the server lists only what can be added: out of stock, hidden and deleted are left
|
|
706
|
+
* out), and the cart holds none of this offer's gifts. The engine pays nothing for that tier,
|
|
707
|
+
* so neither "congrats" nor "conditions unmet" is true.
|
|
708
|
+
*/
|
|
709
|
+
private areGiftsUnavailable;
|
|
710
|
+
/**
|
|
711
|
+
* Load the picker's product cards (name, image, price) — one `salla.product.fetch` for
|
|
712
|
+
* the ids not loaded yet. Never rejects: a failed lookup leaves the cards out, not the banner.
|
|
713
|
+
*/
|
|
714
|
+
private loadFreeProductCards;
|
|
715
|
+
/**
|
|
716
|
+
* The picker's view of the cart for this offer.
|
|
717
|
+
*
|
|
718
|
+
* - `freeCount`: products a line of THIS offer made free — the engine's own verdict, read
|
|
719
|
+
* off the cart lines (`added_by_offer` + `offer_id`), never re-derived here. Gifts of other
|
|
720
|
+
* offers (another cart offer, Buy X Get Y) are not counted against this offer's limit.
|
|
721
|
+
* - `reached`: the tier's threshold is met. Read from `current_value` against `min_spend`,
|
|
722
|
+
* NOT from `is_applied`: a free product tier is only "applied" once a listed product is
|
|
723
|
+
* in the cart, so gating "Add" on it would never let the customer add the first one.
|
|
724
|
+
*/
|
|
725
|
+
private getPickerState;
|
|
726
|
+
/**
|
|
727
|
+
* The free lines this offer granted — the SAME rule as `selectOwnGifts`, so the picker and
|
|
728
|
+
* the gifts card never disagree: lines matching the offer id; only when none match, the
|
|
729
|
+
* lines whose `offer_id` is unreadable.
|
|
730
|
+
*/
|
|
731
|
+
private selectOwnFreeLines;
|
|
732
|
+
/**
|
|
733
|
+
* Add a free product to the cart — always from the cart page, never a redirect.
|
|
734
|
+
*
|
|
735
|
+
* Quick-add, exactly like the single free product was auto-added before CP-2171: a variant
|
|
736
|
+
* (SKU) product gets its default SKU — `is_default` first, or the first in stock when stock
|
|
737
|
+
* is per SKU (`AddToCart::addItemToCart()`) — with that SKU's option values. Any listed
|
|
738
|
+
* product in the cart counts, so the engine then frees it. A failed add is left to the SDK,
|
|
739
|
+
* which already shows the shopper its error notice.
|
|
740
|
+
*/
|
|
741
|
+
private addFreeProduct;
|
|
742
|
+
/** Its own method so specs can observe it; the mock window cannot reload. */
|
|
743
|
+
private reloadPage;
|
|
744
|
+
/**
|
|
745
|
+
* Its own method so specs can stub it; the mock window has no `fetch`. Aborted after
|
|
746
|
+
* `CART_PAGE_FETCH_TIMEOUT_MS`: a fetch that never settles would hold `insertingCartLines`
|
|
747
|
+
* for the page view, and every later line would only be queued behind it.
|
|
748
|
+
*/
|
|
749
|
+
private fetchCartPageHtml;
|
|
750
|
+
/**
|
|
751
|
+
* Show the cart lines an add from the picker created that the page has no `form#item-<id>`
|
|
752
|
+
* for. Themes render cart lines on the server and only refresh lines already on the page, so
|
|
753
|
+
* the new line (and its price) would otherwise appear only after a manual refresh.
|
|
754
|
+
*
|
|
755
|
+
* The cart page is fetched again and the missing line forms are inserted, in the server's
|
|
756
|
+
* order — no reload. The fetched markup is fresh, so its prices need no update. Its inline
|
|
757
|
+
* handlers and web components work as on a loaded page; only what the theme's own script wires
|
|
758
|
+
* to a line at page load (e.g. raed's loading overlay on a quantity change) is missing.
|
|
759
|
+
* Any failure (fetch, a line the fetched page lacks) falls back to `reloadForMissingCartLines`.
|
|
760
|
+
*
|
|
761
|
+
* Left alone on a page with no cart line forms at all (not a cart page this can reason about).
|
|
762
|
+
* One fetch at a time; lines read meanwhile are checked again after it.
|
|
763
|
+
*/
|
|
764
|
+
private showMissingCartLines;
|
|
765
|
+
/**
|
|
766
|
+
* A picker change started while the cart page was fetched (e.g. a second add),
|
|
767
|
+
* so neither the fetched page nor the cart lines can be trusted: inserting now could bring
|
|
768
|
+
* back a line the cart no longer has. The answer is dropped and the cart read after that
|
|
769
|
+
* change checks the page again (the change itself arms `cartPageCheckAfter` when it lands;
|
|
770
|
+
* armed here too, for a change that fails and so arms nothing).
|
|
771
|
+
*
|
|
772
|
+
* Lines are always read from `cartLines` once the page arrives, never from the call's own
|
|
773
|
+
* `lines`: a change that landed during the fetch has already replaced them there.
|
|
774
|
+
*/
|
|
775
|
+
private cartChangedDuringPageFetch;
|
|
776
|
+
/** Ids of `lines` the page has no form for, sorted; empty on a page with no cart line forms. */
|
|
777
|
+
private missingCartLineIds;
|
|
778
|
+
/**
|
|
779
|
+
* Insert the `missing` line forms from the fetched cart page `html`, each right before the next
|
|
780
|
+
* line the page already has (in the fetched order), else after the last one. Returns false —
|
|
781
|
+
* nothing inserted — when the fetched page lacks any of them.
|
|
782
|
+
*/
|
|
783
|
+
private insertCartLineForms;
|
|
784
|
+
/**
|
|
785
|
+
* Reload once, when the missing lines could not be inserted. Never twice for the same missing
|
|
786
|
+
* lines, so a line a theme never renders cannot loop the page. The guard lives in
|
|
787
|
+
* `sessionStorage`; where storage is blocked the page still reloads, but never twice in a row.
|
|
788
|
+
*/
|
|
789
|
+
private reloadForMissingCartLines;
|
|
790
|
+
/** The reload guard, or `undefined` when storage cannot be read (blocked, disabled). */
|
|
791
|
+
private readReloadGuard;
|
|
792
|
+
private writeReloadGuard;
|
|
793
|
+
/** Whether this page load is itself a reload — the guard when storage is unavailable. */
|
|
794
|
+
private pageWasReloaded;
|
|
795
|
+
/**
|
|
796
|
+
* Run one add. A failure unlocks at once — nothing changed. A success stays locked
|
|
797
|
+
* until a cart load that started after it publishes (see `loadCart`), or the fallback fires.
|
|
798
|
+
*/
|
|
799
|
+
private runFreeProductChange;
|
|
800
|
+
/**
|
|
801
|
+
* The lock's fallback: no cart lines read after the change have arrived, so the lines on
|
|
802
|
+
* screen are the ones from BEFORE it. Release the lock, mark the lines unread and ask again
|
|
803
|
+
* on a fresh read — `loadCart` retries within its bound while the picker has no lines.
|
|
804
|
+
*/
|
|
805
|
+
private unlockOnStaleLines;
|
|
806
|
+
private unlockFreeProduct;
|
|
807
|
+
/**
|
|
808
|
+
* CP-2171 — Figma's banner line at the gift tier: "You got N free products", with
|
|
809
|
+
* "Choose them now" while none is picked yet. N is the tier's limit, not the count picked.
|
|
810
|
+
*/
|
|
811
|
+
private pickerGotMessage;
|
|
812
|
+
private getPickerCards;
|
|
813
|
+
/** CP-2171 — Figma "Choose N free products": the counter, then one card per listed product. */
|
|
814
|
+
private renderPicker;
|
|
815
|
+
/**
|
|
816
|
+
* One picker card: the product, its normal price and Add — the same on every card, whether
|
|
817
|
+
* the product is in the cart, free or not. Add is never disabled: every tap adds one unit at
|
|
818
|
+
* the normal price (also once the product is in the cart, and after the free limit is used
|
|
819
|
+
* up) and the engine decides what is free. What IS free shows in the "Free products" panel
|
|
820
|
+
* below, never on the card. A tap while the previous add is still in flight is ignored
|
|
821
|
+
* (`addFreeProduct`), so one double tap is one unit.
|
|
822
|
+
*
|
|
823
|
+
* No remove: the picker never deletes a cart line. A free line can also hold paid units, and
|
|
824
|
+
* deleting it would take what the customer bought with the gift — products leave the cart
|
|
825
|
+
* from their own cart line only.
|
|
826
|
+
*/
|
|
827
|
+
private renderPickerCard;
|
|
654
828
|
/**
|
|
655
829
|
* "ادارة العرض". Rendered TWICE with complementary responsive visibility rather than
|
|
656
830
|
* moved with `order:`: desktop wants it inline with the banner row, mobile wants a
|
|
@@ -658,7 +832,12 @@ export declare class SallaConditionalOffer {
|
|
|
658
832
|
* in the flow, not a different order within one flex line.
|
|
659
833
|
*/
|
|
660
834
|
private renderGiftsToggle;
|
|
661
|
-
/**
|
|
835
|
+
/**
|
|
836
|
+
* Spec §5 — the gifts card: one row per gift line. Read-only on an offer without a picker,
|
|
837
|
+
* exactly as before; with the CP-2171 picker it becomes the Figma "Free products" panel,
|
|
838
|
+
* shown only once a gift is in the cart. Its rows are read-only, as are the picker cards: a
|
|
839
|
+
* gift leaves the cart from its own cart line.
|
|
840
|
+
*/
|
|
662
841
|
private renderGiftsCard;
|
|
663
842
|
private renderGiftRow;
|
|
664
843
|
private getLoadingSkeletonView;
|
|
@@ -33,7 +33,6 @@ export declare class SallaOrderShipments {
|
|
|
33
33
|
openTrackingSheet(): Promise<void>;
|
|
34
34
|
private fetchShipments;
|
|
35
35
|
private label;
|
|
36
|
-
private get enabled();
|
|
37
36
|
private get isSplit();
|
|
38
37
|
/** "يصل خلال 3 أيام": the API's own SLA text, else derived from the estimated delivery date. */
|
|
39
38
|
private slaText;
|
|
@@ -20,15 +20,19 @@ export interface AmountsTax {
|
|
|
20
20
|
percent: string | number;
|
|
21
21
|
amount: Total;
|
|
22
22
|
}
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
/** Service fee line — BE supplies the display title and charged amount. */
|
|
24
|
+
export interface ServiceFee {
|
|
25
|
+
title: string;
|
|
26
|
+
amount: Total | number | string;
|
|
27
|
+
}
|
|
28
|
+
/** Amounts prop shape (from theme's Moneys interface). */
|
|
26
29
|
export interface Amounts {
|
|
27
30
|
sub_total?: Total;
|
|
28
31
|
shipping_cost?: Total;
|
|
29
32
|
cash_on_delivery?: Total;
|
|
30
33
|
tax?: AmountsTax;
|
|
31
34
|
discounts?: AmountsDiscount[];
|
|
35
|
+
service_fees?: ServiceFee[];
|
|
32
36
|
total?: Total;
|
|
33
37
|
paid_amount?: Total;
|
|
34
38
|
remaining_amount?: Total;
|
|
@@ -38,6 +42,7 @@ export interface OrderSummary {
|
|
|
38
42
|
sub_total?: Total;
|
|
39
43
|
options?: OrderProduct[];
|
|
40
44
|
options_total?: Total;
|
|
45
|
+
service_fees?: ServiceFee[];
|
|
41
46
|
discounts?: Discount[];
|
|
42
47
|
cod_cost?: Total;
|
|
43
48
|
shipping_cost?: Total;
|
|
@@ -20,7 +20,8 @@ export declare class SallaOrderTotalsCard {
|
|
|
20
20
|
private renderTotalRow;
|
|
21
21
|
private renderDiscountRow;
|
|
22
22
|
private renderRefundRow;
|
|
23
|
-
/** Totals arrive either as a money object or a plain float, depending on the presenter. */
|
|
24
23
|
private toAmount;
|
|
24
|
+
private isChargeableServiceFee;
|
|
25
|
+
private renderServiceFeeRows;
|
|
25
26
|
render(): any;
|
|
26
27
|
}
|
|
@@ -58,6 +58,24 @@ export interface CartFreeGiftItem {
|
|
|
58
58
|
url: string;
|
|
59
59
|
originalPrice: number | null;
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* CP-2171 — EVERY cart line reduced to what the free product picker needs: which product it
|
|
63
|
+
* holds and how many of its units a cart offer made free. The picker counts the distinct
|
|
64
|
+
* products on this offer's free lines against the tier's limit (`getPickerState`), and finds
|
|
65
|
+
* the lines the page does not show yet by their id (`showMissingCartLines`).
|
|
66
|
+
*
|
|
67
|
+
* `productId` is the line's `product_id` as the cart API sent it: optimus-ENCODED
|
|
68
|
+
* (`CartItemTransformer` → `encodeFakeId`).
|
|
69
|
+
*/
|
|
70
|
+
export interface CartProductLine {
|
|
71
|
+
/** Cart-item id (already a route key / string), as in the page's `form#item-<id>`. */
|
|
72
|
+
id: string;
|
|
73
|
+
productId: number | null;
|
|
74
|
+
quantity: number;
|
|
75
|
+
/** Units a cart offer made free on this line — `0` on a paid line. */
|
|
76
|
+
freeQuantity: number;
|
|
77
|
+
offerId: number | null;
|
|
78
|
+
}
|
|
61
79
|
/**
|
|
62
80
|
* The SDK's own name for "this visitor has no cart at all".
|
|
63
81
|
*
|
|
@@ -80,6 +98,14 @@ export declare function isCartNotCreated(error: any): boolean;
|
|
|
80
98
|
* `details()` request per cart mutation.
|
|
81
99
|
*/
|
|
82
100
|
export declare function getCartFreeGiftItems(): Promise<CartFreeGiftItem[]>;
|
|
101
|
+
/**
|
|
102
|
+
* Every line of the cart (paid and free), in cart order — for the CP-2171 free product picker.
|
|
103
|
+
*
|
|
104
|
+
* Shares the cache, the in-flight promise and the generation guard with
|
|
105
|
+
* `getCartFreeGiftItems()` and `getCartItemCount()`: no request of its own, and never a
|
|
106
|
+
* different cart state from theirs.
|
|
107
|
+
*/
|
|
108
|
+
export declare function getCartProductLines(): Promise<CartProductLine[]>;
|
|
83
109
|
/**
|
|
84
110
|
* Whether the cached cart picture came from a response that was actually reached and
|
|
85
111
|
* parsed, rather than from the fallback a rejected lookup publishes.
|
|
@@ -209,8 +209,13 @@ export declare function sortByThreshold<T>(items: T[], getThreshold: (item: T) =
|
|
|
209
209
|
* @param rawTierValues each stage's OWN `current_value`, aligned the same way. A tier
|
|
210
210
|
* without a readable one is measured by `currentValue`, so omitting it — an older
|
|
211
211
|
* backend — changes nothing. See `OfferStageProgress.values`.
|
|
212
|
+
* @param rawCanAddFree each stage's `can_add_free` (CP-2171), aligned the same way. Read
|
|
213
|
+
* only in case (3), where no tier carries `is_applied`: a free product tier that
|
|
214
|
+
* carries one is reached when the ENGINE says so, not when its `current_value` —
|
|
215
|
+
* which counts the gift lines at full price — passes `min_spend`. Omit it and case
|
|
216
|
+
* (3) is the threshold behaviour, unchanged.
|
|
212
217
|
*/
|
|
213
|
-
export declare function computeOfferStageProgress(currentValue: NumericLike, rawThresholds: NumericLike[], rawStartValue?: NumericLike, rawApplied?: unknown[], rawTierValues?: NumericLike[]): OfferStageProgress;
|
|
218
|
+
export declare function computeOfferStageProgress(currentValue: NumericLike, rawThresholds: NumericLike[], rawStartValue?: NumericLike, rawApplied?: unknown[], rawTierValues?: NumericLike[], rawCanAddFree?: unknown[]): OfferStageProgress;
|
|
214
219
|
/**
|
|
215
220
|
* Locked / Current / Completed for one 0-based stage index — from `met`, so a tier the
|
|
216
221
|
* engine withheld outright reads LOCKED even with its threshold met, and every tier the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salla.sa/twilight-components",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.26",
|
|
4
4
|
"license": "GPL-3.0",
|
|
5
5
|
"author": "Salla Team <support@salla.dev> (https://salla.dev)",
|
|
6
6
|
"bugs": {
|
|
@@ -82,9 +82,9 @@
|
|
|
82
82
|
},
|
|
83
83
|
"dependencies": {
|
|
84
84
|
"@googlemaps/markerclusterer": "2.6.2",
|
|
85
|
-
"@salla.sa/applepay": "3.0.
|
|
86
|
-
"@salla.sa/twilight": "3.0.
|
|
87
|
-
"@salla.sa/twilight-tailwind-theme": "3.0.
|
|
85
|
+
"@salla.sa/applepay": "3.0.26",
|
|
86
|
+
"@salla.sa/twilight": "3.0.26",
|
|
87
|
+
"@salla.sa/twilight-tailwind-theme": "3.0.26",
|
|
88
88
|
"@salla.sa/ui-address-autocomplete-widget": "1.2.1",
|
|
89
89
|
"@salla.sa/ui-google-map-render": "1.2.1",
|
|
90
90
|
"@types/node": "^20.4.8",
|
|
@@ -104,5 +104,5 @@
|
|
|
104
104
|
"vanilla-lazyload": "^17.9.0",
|
|
105
105
|
"vanilla-picker": "^2.12.3"
|
|
106
106
|
},
|
|
107
|
-
"gitHead": "
|
|
107
|
+
"gitHead": "25a7ab831c5053da04e0dddb5cedcc3743c523ac"
|
|
108
108
|
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Crafted with ❤ by Salla
|
|
3
|
-
*/
|
|
4
|
-
import{r as t,h as a,H as s,a as r}from"./p-CtoXzf1y.js";const i=[{label:"100px",value:"56px"},{label:"72px",value:"64px"},{label:"96px",value:"48px"}],e=class{constructor(a){t(this,a),this.validateForms=!0,this.cartCount=0,this.cartTotal=0,this.cartTotalDiscount=0,this.cartCashbackAmount=0,this.cartSubTotal=0,this.cartOptionsTotal=0,this.cartShippingCost=0,this.cartTaxAmount=0,this.cartHasShipping=!1,this.isOpen=!1,this.isDesktop=!1,this.isLoading=!0,this.originalParent=null,this.originalNextSibling=null,this.bodyObserver=null,this.mediaQueryList=null,this.submitObserver=null,this.isSubmitting=!1,this.mqlChangeHandler=t=>{this.isDesktop=t.matches,this.applyMode()},this.cartEventNames=["cart::details.fetched","cart::updated","cart::latest.fetched","cart::coupon.added","cart::coupon.deleted"],this.cartEventHandler=t=>this.applyCartData(this.extractCart(t)),this.releaseSubmitLoading=()=>{this.submitObserver?.disconnect(),this.submitObserver=null,this.submitObserverTimeout&&(clearTimeout(this.submitObserverTimeout),this.submitObserverTimeout=void 0),this.host.querySelector("#s-cart-summary-card-submit")?.removeAttribute?.("loading")},this.toggleSheet=()=>{this.isDesktop||(this.isOpen=!this.isOpen)},this.handleSubmit=async t=>{if(this.isSubmitting)return void t.preventDefault();if(this.isSubmitting=!0,this.validateForms&&!await this.validateCartForms())return t.preventDefault(),salla.notify?.error?.(salla.lang?.get?.("common.messages.required_fields")),void(this.isSubmitting=!1);const a=this.host.querySelector("#s-cart-summary-card-submit");a&&(a.load?.(),this.submitObserver?.disconnect(),this.submitObserverTimeout&&clearTimeout(this.submitObserverTimeout),this.submitObserver=new MutationObserver((()=>{a.hasAttribute("loading")||a.setAttribute("loading","")})),this.submitObserver.observe(a,{attributes:!0,attributeFilter:["loading"]}),this.submitObserverTimeout=window.setTimeout((()=>{this.submitObserver?.disconnect(),this.submitObserver=null,a.removeAttribute?.("loading")}),1e4)),salla.cart?.submit?.(),window.setTimeout((()=>{this.isSubmitting=!1}),1500)}}componentWillLoad(){this.mediaQueryList=window.matchMedia(this.desktopMediaQuery()),this.isDesktop=this.mediaQueryList.matches,this.isDesktop&&(this.isOpen=!0),this.init()}async init(){await salla.onReady(),await salla.lang.onLoaded(),this.loadTranslations(),this.cartEventNames.forEach((t=>salla.event.on(t,this.cartEventHandler))),salla.event.on("cart::submit.failed",this.releaseSubmitLoading),this.fetchCart()}loadTranslations(){this.summaryLabel=salla.lang.get("pages.cart.summary"),this.itemsTotalLabel=salla.lang.get("pages.cart.items_total"),this.itemsTotalNoTaxLabel=salla.lang.get("pages.cart.items_total_without_tax"),this.optionsTotalLabel=salla.lang.get("pages.cart.order_options_total"),this.shippingCostLabel=salla.lang.get("pages.cart.shipping_cost"),this.vatTaxLabel=salla.lang.get("pages.cart.VAT_tax_amount"),this.savedLabel=salla.lang.get("pages.cart.discount"),this.discountBadge=salla.lang.get("pages.cart.saved"),this.cashbackLabel=salla.lang.get("pages.checkout.cashback"),this.finalTotalLabel=salla.lang.get("pages.cart.final_total"),this.pricesTaxedLabel=salla.lang.get("pages.cart.prices_taxed"),this.completeOrderLabel=salla.lang.get("pages.cart.complete_order"),this.openSummaryLabel=salla.lang.get("pages.cart.open_summary"),this.closeSummaryLabel=salla.lang.get("pages.cart.close_summary"),this.itemsCountTemplate=salla.lang.get("pages.cart.items_with_count")}num(t){if(null==t)return 0;if("number"==typeof t)return isFinite(t)?t:0;if("string"==typeof t)return parseFloat(t)||0;if("object"==typeof t){if("amount"in t)return this.num(t.amount);if("value"in t)return this.num(t.value);if("formatted"in t)return this.num(t.formatted)}return 0}breakpointPx(){return 1024}desktopMediaQuery(){return`(min-width: ${this.breakpointPx()}px)`}componentDidLoad(){this.originalParent=this.host.parentElement,this.originalNextSibling=this.host.nextSibling,this.mediaQueryList||(this.mediaQueryList=window.matchMedia(this.desktopMediaQuery()),this.isDesktop=this.mediaQueryList.matches),this.applyMode(),this.mediaQueryList.addEventListener?this.mediaQueryList.addEventListener("change",this.mqlChangeHandler):this.mediaQueryList.addListener(this.mqlChangeHandler)}applyMode(){this.isDesktop?(this.isOpen=!0,this.bodyObserver?.disconnect(),this.bodyObserver=null,this.originalParent&&this.host.parentElement!==this.originalParent&&this.originalParent.insertBefore(this.host,this.originalNextSibling?.parentNode===this.originalParent?this.originalNextSibling:null)):this.pinToBodyEnd()}pinToBodyEnd(){this.host.parentElement===document.body&&document.body.lastElementChild===this.host||document.body.appendChild(this.host),this.bodyObserver||(this.bodyObserver=new MutationObserver((()=>{this.isDesktop||document.body.lastElementChild===this.host||document.body.appendChild(this.host)})),this.bodyObserver.observe(document.body,{childList:!0}))}disconnectedCallback(){Promise.resolve().then((()=>{this.host.isConnected||(this.bodyObserver?.disconnect(),this.submitObserver?.disconnect(),this.submitObserverTimeout&&(clearTimeout(this.submitObserverTimeout),this.submitObserverTimeout=void 0),this.mediaQueryList?.removeEventListener?this.mediaQueryList.removeEventListener("change",this.mqlChangeHandler):this.mediaQueryList?.removeListener(this.mqlChangeHandler),this.mediaQueryList=null,this.cartEventNames.forEach((t=>salla.event.off(t,this.cartEventHandler))),salla.event.off("cart::submit.failed",this.releaseSubmitLoading))}))}fetchCart(){const t=salla.config?.get?.("page.id"),a=salla.cart?.api?.details?.(t);a&&"function"==typeof a.then?a.then((t=>this.applyCartData(this.extractCart(t)))).catch((()=>this.applyCachedSummary())):this.applyCachedSummary()}applyCachedSummary(){const t=salla.storage?.get?.("cart.summary");t&&"object"==typeof t&&this.applyCartData(t,!1),this.isLoading=!1}extractCart(t){return t?t.data?.cart?t.data.cart:t.cart?t.cart:t:null}applyCartData(t,a){if(!t)return;this.isLoading=!1,void 0!==t.count&&(this.cartCount=this.num(t.count)),void 0!==t.total&&(this.cartTotal=this.num(t.total));const s=t.total_discount??t.discount;void 0!==s&&(this.cartTotalDiscount=this.num(s));const r=a??(void 0!==t.sub_total&&void 0!==t.total);void 0!==t.cashback_amount?this.cartCashbackAmount=this.num(t.cashback_amount):r&&(this.cartCashbackAmount=0),void 0!==t.sub_total&&(this.cartSubTotal=this.num(t.sub_total)),void 0!==t.options_total&&(this.cartOptionsTotal=this.num(t.options_total)),void 0!==t.tax_amount&&(this.cartTaxAmount=this.num(t.tax_amount));const i=!!t.free_shipping_bar?.has_free_shipping;void 0!==t.shipping_cost?this.cartShippingCost=this.num(t.shipping_cost):void 0!==t.real_shipping_cost&&(this.cartShippingCost=i?0:this.num(t.real_shipping_cost)),this.cartHasShipping=this.cartShippingCost>0||!!t.has_shipping}async validateCartForms(){let t=!0;document.querySelectorAll('form[id^="item-"]').forEach((a=>{a.reportValidity()||(t=!1)}));const a=Array.from(document.querySelectorAll('form[id^="item-"] salla-product-options'));for(const s of a)"function"!=typeof s.reportValidity||await s.reportValidity()||(t=!1);return t}decimalPlaces(t){const a=String(t),s=a.indexOf(".");return-1===s||a.includes("e")?0:a.length-s-1}roundToCurrency(t){const a=Math.min(Math.max(2,this.decimalPlaces(this.cartTotal),this.decimalPlaces(this.cartTotalDiscount)),4),s=Math.pow(10,a);return Math.round(t*s)/s}money(t){try{if("undefined"!=typeof salla&&"function"==typeof salla.money)return salla.money(t)}catch(t){}return String(t??0)}getItemsLabel(){return this.itemsCountTemplate?.replace(":count",String(this.cartCount))??""}renderSkeleton(){return a(s,{class:{"s-cart-summary-card":!0,"s-cart-summary-card--loading":!0,"s-cart-summary-card--desktop":this.isDesktop,"s-cart-summary-card--mobile":!this.isDesktop}},this.isDesktop&&a("div",{class:"s-cart-summary-card-sheet-wrap s-cart-summary-card-sheet-wrap--open"},a("div",{class:"s-cart-summary-card-sheet"},a("header",{class:"s-cart-summary-card-sheet-header"},a("h3",{class:"s-cart-summary-card-sheet-title"},a("salla-skeleton",{width:"140px",height:"16px"}))),i.map((({label:t,value:s},r)=>a("div",{class:"s-cart-summary-card-line",key:r},a("salla-skeleton",{width:t,height:"16px"}),a("salla-skeleton",{width:s,height:"16px"})))))),a("div",{class:"s-cart-summary-card-bar"},a("div",{class:"s-cart-summary-card-bar-label"},a("div",{class:"s-cart-summary-card-bar-label-main"},a("salla-skeleton",{width:"90px",height:"16px"}),a("salla-skeleton",{width:"48px",height:"12px"}))),a("div",{class:"s-cart-summary-card-bar-totals"},a("div",{class:"s-cart-summary-card-bar-totals-row"},a("salla-skeleton",{width:"80px",height:"20px"})))),a("div",{class:"s-cart-summary-card-action"},a("salla-skeleton",{width:"100%",height:"44px"})))}render(){if(this.isLoading)return this.renderSkeleton();const t=this.cartTotalDiscount>0,r=this.cartCashbackAmount>0,i=this.cartTaxAmount?this.itemsTotalNoTaxLabel:this.itemsTotalLabel;return a(s,{class:{"s-cart-summary-card":!0,"s-cart-summary-card--open":this.isOpen,"s-cart-summary-card--desktop":this.isDesktop,"s-cart-summary-card--mobile":!this.isDesktop}},a("div",{class:{"s-cart-summary-card-sheet-wrap":!0,"s-cart-summary-card-sheet-wrap--open":this.isOpen},"aria-hidden":this.isOpen?"false":"true"},a("div",{class:"s-cart-summary-card-sheet",style:this.isDesktop?{}:{transform:this.isOpen?"translateY(0)":"translateY(100%)",transition:"transform 0.4s cubic-bezier(0.32, 0.72, 0, 1)"}},a("header",{class:"s-cart-summary-card-sheet-header"},a("h3",{class:"s-cart-summary-card-sheet-title"},this.summaryLabel)),a("div",{class:"s-cart-summary-card-line"},a("span",null,i),a("b",{innerHTML:this.money(this.cartSubTotal)})),this.cartOptionsTotal>0&&a("div",{class:"s-cart-summary-card-line"},a("span",null,this.optionsTotalLabel),a("b",{innerHTML:this.money(this.cartOptionsTotal)})),this.cartHasShipping&&a("div",{class:"s-cart-summary-card-line"},a("span",null,this.shippingCostLabel),a("b",{innerHTML:this.money(this.cartShippingCost)})),this.cartTaxAmount>0&&a("div",{class:"s-cart-summary-card-line"},a("span",null,this.vatTaxLabel),a("b",{innerHTML:this.money(this.cartTaxAmount)})),t&&a("div",{class:"s-cart-summary-card-line s-cart-summary-card-line--discount"},a("span",null,this.savedLabel),a("b",null,"− ",a("span",{innerHTML:this.money(this.cartTotalDiscount)}))))),a("div",{class:"s-cart-summary-card-bar"},a("div",{class:"s-cart-summary-card-bar-label"},a("div",{class:"s-cart-summary-card-bar-label-main"},a("span",{class:"s-cart-summary-card-bar-label-text"},this.finalTotalLabel),a("span",{class:"s-cart-summary-card-bar-count"},this.getItemsLabel())),this.cartTaxAmount>0&&a("div",{class:"s-cart-summary-card-bar-label-sub"},this.pricesTaxedLabel)),a("div",{class:"s-cart-summary-card-bar-totals"},a("div",{class:"s-cart-summary-card-bar-totals-row"},t&&a("s",{class:"s-cart-summary-card-bar-original"},salla.helpers.number(this.roundToCurrency(this.cartTotal+this.cartTotalDiscount))),a("b",{class:"s-cart-summary-card-bar-total",innerHTML:this.money(this.cartTotal)}),!this.isDesktop&&a("button",{type:"button",class:"s-cart-summary-card-chevron","aria-label":this.isOpen?this.closeSummaryLabel:this.openSummaryLabel,"aria-expanded":this.isOpen?"true":"false",onClick:this.toggleSheet},a("i",{class:"sicon-keyboard_arrow_up s-cart-summary-card-chevron-icon"}))),(t||r)&&a("div",{class:"s-cart-summary-card-bar-savings-badge"},a("span",{"aria-hidden":"true"},"🎉"),a("span",null,t&&a("span",null,this.discountBadge," ",a("span",{innerHTML:this.money(this.cartTotalDiscount)})),t&&r&&" + ",r&&a("span",null,a("span",{innerHTML:this.money(this.cartCashbackAmount)})," ",this.cashbackLabel))))),a("div",{class:"s-cart-summary-card-action"},a("salla-button",{id:"s-cart-summary-card-submit",width:"wide","loader-position":"center",onClick:this.handleSubmit},this.completeOrderLabel)))}get host(){return r(this)}};e.style="/*!twlt*/:host{display:block}.sticky{position:sticky}.block{display:block}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.\\!btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.\\!btn:hover{opacity:0.8}.btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.btn:hover{opacity:0.8}.s-cart-summary-card-sheet-title{margin-bottom:0.5rem;flex:1 1 0%;font-size:0.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-cart-summary-card-line{margin-bottom:0.5rem;display:flex;align-items:center;justify-content:space-between;font-size:0.875rem;line-height:1.25rem}.s-cart-summary-card-line span{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-cart-summary-card-line b{font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity:1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}.s-cart-summary-card-line--discount b{--tw-text-opacity:1 !important;color:rgb(220 38 38 / var(--tw-text-opacity, 1)) !important}.s-cart-summary-card-line--discount b *{--tw-text-opacity:1 !important;color:rgb(220 38 38 / var(--tw-text-opacity, 1)) !important}.s-cart-summary-card-bar-label{display:flex;flex-direction:column;gap:0.125rem}.s-cart-summary-card-bar-label-main{display:flex;align-items:baseline;gap:0.375rem}.s-cart-summary-card-bar-label-text{white-space:nowrap;font-size:1rem;line-height:1.5rem;font-weight:700;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-cart-summary-card-bar-count{white-space:nowrap;font-size:0.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.s-cart-summary-card-bar-label-sub{font-size:11px;--tw-text-opacity:1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.s-cart-summary-card-bar-totals{display:flex;flex-direction:column;align-items:flex-end;gap:0.375rem}.s-cart-summary-card-bar-totals-row{display:flex;align-items:center;gap:0.375rem}.s-cart-summary-card-bar-total{font-size:1rem;line-height:1.5rem;font-weight:700;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-cart-summary-card-bar-original{font-size:1rem;line-height:1.5rem;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1));text-decoration-line:line-through}.s-cart-summary-card-bar-savings-badge{display:inline-flex;width:max-content;align-items:center;gap:0.25rem;border-radius:var(--s-radius, 0.25rem);--tw-bg-opacity:1;background-color:rgb(239 251 246 / var(--tw-bg-opacity, 1));padding-left:0.5rem;padding-right:0.5rem;padding-top:0.125rem;padding-bottom:0.125rem;font-size:11px;font-weight:600;--tw-text-opacity:1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.s-cart-summary-card-chevron{display:inline-flex;height:1.5rem;width:1.5rem;cursor:pointer;align-items:center;justify-content:center;border-width:0px;background-color:transparent;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1));outline:2px solid transparent;outline-offset:2px}.s-cart-summary-card-chevron-icon{display:inline-flex;transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.s-cart-summary-card{display:block;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}@media (max-width: 1023px){.s-cart-summary-card{position:fixed;inset-inline:0;bottom:0;z-index:1;border-radius:24px 24px 0 0;box-shadow:0 -12px 24px -12px rgba(0, 0, 0, 0.12);transition:box-shadow 0.3s ease;padding-bottom:calc(env(safe-area-inset-bottom) + 0.5rem)}}@media (min-width: 1024px){.s-cart-summary-card{position:relative;border-radius:0.5rem;box-shadow:0 2px 6px rgba(0, 0, 0, 0.05);padding:1.25rem 1.5rem;margin-bottom:1.25rem}}@media (max-width: 1023px){.s-cart-summary-card--open{border-radius:0;box-shadow:none}}.s-cart-summary-card-sheet-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows 0.4s cubic-bezier(0.32, 0.72, 0, 1), box-shadow 0.3s ease}@media (max-width: 1023px){.s-cart-summary-card-sheet-wrap{position:absolute;inset-inline:0;bottom:calc(100% - 1px);background:#fff;border-radius:24px 24px 0 0;overflow:hidden;box-shadow:0 -12px 24px -12px rgba(0, 0, 0, 0)}}@media (min-width: 1024px){.s-cart-summary-card-sheet-wrap{grid-template-rows:1fr}}@media (max-width: 1023px){.s-cart-summary-card-sheet-wrap--open{grid-template-rows:1fr;box-shadow:0 -12px 24px -12px rgba(0, 0, 0, 0.12)}}.s-cart-summary-card-sheet{min-height:0;overflow:hidden}@media (max-width: 1023px){.s-cart-summary-card-sheet-wrap--open .s-cart-summary-card-sheet{overflow-y:auto;max-height:70vh;-webkit-overflow-scrolling:touch;padding:0.75rem 1rem 0}}.s-cart-summary-card-sheet-header{display:flex;align-items:center;justify-content:space-between;gap:0.5rem}@media (max-width: 1023px){.s-cart-summary-card-sheet-header{padding-bottom:0.5rem}}.s-cart-summary-card-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:0.75rem;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}@media (min-width: 1024px){.s-cart-summary-card-bar{margin-top:1rem}}@media (max-width: 1023px){.s-cart-summary-card-bar{padding:0.875rem 1rem 0.5rem;border-radius:24px 24px 0 0}.s-cart-summary-card--open .s-cart-summary-card-bar{padding-top:0;border-radius:0}}@media (min-width: 1024px){.s-cart-summary-card-action{padding-top:1rem}}@media (max-width: 1023px){.s-cart-summary-card-action{padding:0 1rem 0.75rem}}.s-cart-summary-card--open .s-cart-summary-card-chevron-icon{transform:rotate(180deg)}.s-cart-summary-card-action *:focus{outline:none}";export{e as salla_cart_summary_card}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Crafted with ❤ by Salla
|
|
3
|
-
*/
|
|
4
|
-
import{r as t,h as e,H as s,a as r}from"./p-CtoXzf1y.js";import{S as a}from"./p-Ctkfc4K-.js";import{l as i}from"./p-BChI23pG.js";import{A as o}from"./p-DCZbpt2a.js";import{C as c}from"./p-gFG8By9O.js";const n=class{constructor(e){t(this,e),this.internalOffers=[],this.showAll=!1,this.freeLabel="",this.receivedOffer="",this.discountAmountLabel="",this.showMoreOffers="",this.cartUpdateEvents=["cart::latest.fetched","cart::item.updated","cart::coupon.added","cart::coupon.deleted"],this.isAttached=!1,this.hasLoaded=!1,this.icons={DiscountCouponIcon:'\x3c!-- Generated by IcoMoon.io --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n<title>discount-coupon</title>\n<path d="M27 28h-22c-0.552 0-1-0.448-1-1v0c0-1.657-1.343-3-3-3v0c-0.552 0-1-0.448-1-1v0-12c0-0.552 0.448-1 1-1v0c1.657 0 3-1.343 3-3v0c0-0.552 0.448-1 1-1v0h22c0.552 0 1 0.448 1 1v0c0 1.657 1.343 3 3 3v0c0.552 0 1 0.448 1 1v0 12c0 0.552-0.448 1-1 1v0c-1.657 0-3 1.343-3 3v0c0 0.552-0.448 1-1 1v0zM5.9 26h20.2c0.415-1.964 1.936-3.485 3.867-3.894l0.033-0.006v-10.2c-1.964-0.415-3.485-1.936-3.894-3.867l-0.006-0.033h-20.2c-0.415 1.964-1.936 3.485-3.867 3.894l-0.033 0.006v10.2c1.964 0.415 3.485 1.936 3.894 3.867l0.006 0.033zM20 7h2v3h-2v-3zM20 12h2v4h-2v-4zM20 18h2v4h-2v-4zM20 24h2v3h-2v-3zM9 16c-1.657 0-3-1.343-3-3s1.343-3 3-3c1.657 0 3 1.343 3 3v0c0 1.657-1.343 3-3 3v0zM9 12c-0.552 0-1 0.448-1 1s0.448 1 1 1c0.552 0 1-0.448 1-1v0c0-0.552-0.448-1-1-1v0zM15 24c-1.657 0-3-1.343-3-3s1.343-3 3-3c1.657 0 3 1.343 3 3v0c0 1.657-1.343 3-3 3v0zM15 20c-0.552 0-1 0.448-1 1s0.448 1 1 1c0.552 0 1-0.448 1-1v0c0-0.552-0.448-1-1-1v0zM7 24c-0.552-0-1-0.448-1-1 0-0.244 0.088-0.468 0.233-0.642l-0.001 0.002 10-12c0.185-0.221 0.461-0.36 0.769-0.36 0.553 0 1.001 0.448 1.001 1.001 0 0.245-0.088 0.469-0.233 0.643l0.001-0.002-10 12c-0.185 0.22-0.46 0.358-0.767 0.358-0.001 0-0.002 0-0.003 0h0z"></path>\n</svg>\n',GiftIcon:i,FireIcon:'\x3c!-- Generated by IcoMoon.io --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n<title>fire</title>\n<path d="M21.56 3.009c-0.052-0.047-0.116-0.065-0.173-0.103-0.073-0.048-0.143-0.1-0.223-0.132-0.083-0.033-0.165-0.047-0.252-0.063-0.081-0.016-0.16-0.035-0.243-0.035-0.089 0-0.172 0.020-0.26 0.037-0.080 0.016-0.159 0.028-0.236 0.059-0.084 0.035-0.157 0.088-0.235 0.14-0.053 0.036-0.115 0.053-0.165 0.097-0.049 0.044-0.988 0.895-2.288 2.255-2.364-2.839-4.476-4.815-4.576-4.908-0.056-0.052-0.127-0.075-0.188-0.115-0.075-0.049-0.143-0.105-0.224-0.137-0.080-0.032-0.163-0.041-0.245-0.057-0.085-0.016-0.167-0.040-0.252-0.040-0.084 0-0.163 0.023-0.245 0.039-0.087 0.016-0.172 0.025-0.253 0.059-0.080 0.032-0.147 0.087-0.22 0.135-0.063 0.041-0.133 0.064-0.189 0.116-0.453 0.423-11.092 10.408-11.092 18.095 0 7.977 4.935 13.549 12 13.549h8.667c6.673 0 11.333-5.115 11.333-12.439 0-7.052-10.013-16.167-10.44-16.552zM20.667 29.333h-7.777c-2.924 0-4.889-2.044-4.889-5.084 0-2.317 2.816-6.441 4.888-8.887 0.76 0.909 2.755 3.397 3.969 5.869 0.212 0.431 0.639 0.715 1.117 0.743 0.489 0.031 0.937-0.203 1.197-0.605 0.552-0.849 1.109-1.596 1.497-2.093 1.491 1.897 3.331 4.78 3.331 6.399 0 2.188-1.34 3.659-3.333 3.659zM26.537 27.052c0.081-0.44 0.129-0.899 0.129-1.377 0-3.269-3.713-7.847-4.46-8.735l-0.523-0.617c-0.507-0.599-1.528-0.599-2.035 0l-0.531 0.627c-0.147 0.175-0.495 0.599-0.936 1.187-1.595-2.597-3.495-4.776-3.595-4.889l-0.697-0.793c-0.507-0.577-1.499-0.577-2.004 0l-0.697 0.795c-0.6 0.684-5.856 6.803-5.856 11.001 0 0.881 0.127 1.712 0.356 2.484-1.896-1.933-3.023-4.821-3.023-8.283 0-4.915 6.073-11.997 9.329-15.255 1.001 1.008 2.692 2.789 4.368 4.927 0.243 0.309 0.609 0.496 1.001 0.509h0.048c0.376 0 0.735-0.159 0.988-0.439 0.889-0.981 1.693-1.795 2.269-2.359 3.051 2.965 8.663 9.323 8.663 13.727 0 3.171-1.031 5.769-2.796 7.491z"></path>\n</svg>\n',SpecialDiscountIcon:a,TagMoneyIcon:'\x3c!-- Generated by IcoMoon.io --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n<title>tag-money</title>\n<path d="M20.567 11.433c-0.521-0.521-1.364-0.521-1.885 0l-0.524 0.524c-1.28-0.819-3.091-0.681-4.191 0.419-0.631 0.631-0.976 1.468-0.976 2.359 0 0.889 0.347 1.727 0.976 2.357l0.943 0.943c0.171 0.171 0.195 0.368 0.195 0.472s-0.025 0.301-0.196 0.472c-0.169 0.169-0.367 0.195-0.471 0.195s-0.301-0.025-0.472-0.195l-2.357-2.357c-0.521-0.521-1.364-0.521-1.885 0s-0.521 1.364 0 1.885l0.944 0.941-0.472 0.472c-0.521 0.521-0.521 1.364 0 1.885 0.26 0.26 0.601 0.391 0.943 0.391s0.683-0.131 0.943-0.391l0.519-0.519c0.54 0.359 1.173 0.553 1.837 0.553 0.892 0 1.729-0.348 2.357-0.976 0.631-0.631 0.976-1.467 0.976-2.357s-0.347-1.727-0.976-2.357l-0.943-0.943c-0.26-0.26-0.26-0.684 0-0.944 0.259-0.259 0.683-0.261 0.944 0l1.885 1.887c0.521 0.521 1.364 0.521 1.885 0 0.521-0.52 0.521-1.364 0-1.885l-0.472-0.472 0.472-0.472c0.521-0.521 0.521-1.365 0.001-1.887zM28 0h-9.344c-1.059 0-2.056 0.411-2.809 1.153l-14.673 14.456c-1.56 1.56-1.561 4.097-0.001 5.657l9.56 9.56c0.755 0.755 1.76 1.172 2.828 1.173h0.003c1.068 0 2.072-0.416 2.833-1.179l14.451-14.668c0.743-0.753 1.153-1.751 1.153-2.809v-9.344c0-2.205-1.795-4-4-4zM29.333 13.344c0 0.353-0.137 0.685-0.385 0.937l-14.444 14.661c-0.252 0.252-0.587 0.391-0.941 0.391-0.001 0-0.001 0-0.001 0-0.356-0.001-0.691-0.139-0.943-0.392l-9.561-9.56c-0.52-0.52-0.52-1.365-0.005-1.88l14.667-14.449c0.253-0.248 0.585-0.385 0.937-0.385h9.344c0.736 0 1.333 0.597 1.333 1.333zM24 6.673c-0.737 0-1.333 0.604-1.333 1.341s0.596 1.333 1.333 1.333 1.333-0.596 1.333-1.333v-0.015c0-0.737-0.596-1.327-1.333-1.327z"></path>\n</svg>\n'},this.visibleOffersCount=3,this.handleCartItemUpdated=t=>{const e=t.data?.cart?.items?.find((t=>String(t.id)===String(this.itemId)));e&&(this.internalQuantity=e.quantity,this.internalOffers=e.detailed_offers||[],this.internalProductPrice=e.product_price)},this.toggleShowAll=()=>{this.showAll=!this.showAll}}bindCartListeners(){this.isAttached&&this.cartUpdateEvents.forEach((t=>salla.event.on(t,this.handleCartItemUpdated)))}connectedCallback(){this.isAttached=!0,this.hasLoaded&&this.bindCartListeners(),this.langUnsubscribe=salla.lang.subscribe((()=>{this.freeLabel=salla.lang.get("common.elements.freeExclam"),this.receivedOffer=salla.lang.get("pages.cart.received_offer"),this.discountAmountLabel=salla.lang.get("pages.cart.discount_amount"),this.showMoreOffers=salla.lang.get("pages.cart.show_more_offers")}))}disconnectedCallback(){this.isAttached=!1,this.cartUpdateEvents.forEach((t=>salla.event.off(t,this.handleCartItemUpdated))),this.langUnsubscribe?.()}async componentWillLoad(){await Salla.onReady(),await salla.lang.onLoaded(),this.internalQuantity=this.quantity,this.internalOffers=this.parseOffers(this.offers),this.internalProductPrice=this.productPrice}componentDidLoad(){this.hasLoaded=!0,this.bindCartListeners()}parseOffers(t){try{if("string"!=typeof t)return console.warn("Offers is not a string. Returning as-is.",t),Array.isArray(t)?t:[];const e=JSON.parse(t||"[]");return Array.isArray(e)?e:[]}catch(t){return console.error("Failed to parse offers",t),[]}}get visibleOffers(){return this.internalOffers.slice(0,this.visibleOffersCount)}get hiddenOffers(){return this.internalOffers.slice(this.visibleOffersCount)}getPaidQty(t,e){return t-e.free_quantity}renderOffer(t,s){const r=this.getPaidQty(t,s);return e("div",{class:"s-cart-item-offers-box"},s.free_quantity>0&&r>0&&e("div",{class:"s-cart-item-offers-paid-free"},e("div",{class:"s-cart-item-offers-line"},salla.helpers.number(r)," × ",e("span",{innerHTML:salla.money(this.internalProductPrice)})),e("div",{class:"s-cart-item-offers-line"},salla.helpers.number(s.free_quantity)," ×",e("span",{class:"s-cart-item-offers-regular-price",innerHTML:salla.money(this.internalProductPrice)}),e("span",{class:"s-cart-item-offers-free-label"},this.freeLabel))),e("div",{class:"s-cart-item-offers-details"},e("span",{class:"s-cart-item-offers-icon",innerHTML:this.icons[s.discount_icon]||""}),e("div",null,e("p",{class:"s-cart-item-offers-title"},this.receivedOffer.replace(":offer",s.offer_name)),e("p",{class:"s-cart-item-offers-discount"},e("span",{innerHTML:this.discountAmountLabel.replace(":amount",salla.money(s.discount_amount.toFixed(2)))})))))}render(){return this.internalOffers?.length?e("div",{class:"s-cart-item-offers-container",id:`offers_list_${this.itemId}`},this.visibleOffers.map((t=>this.renderOffer(this.internalQuantity,t))),this.internalOffers?.length>this.visibleOffersCount&&e("div",{class:"s-cart-item-offers-show-more"},e("button",{class:"s-cart-item-offers-show-more-btn",onClick:this.toggleShowAll,type:"button"},e("span",{class:"s-cart-item-offers-show-more-label"},"+",this.hiddenOffers.length," ",this.showMoreOffers,e("span",{innerHTML:o,class:{"s-cart-item-offers-arrow-icon":!0,"s-cart-item-offers-arrow-open":this.showAll}})))),this.showAll&&e("div",{class:"s-cart-item-offers-collapsed",id:`offers_${this.itemId}`},this.hiddenOffers.map((t=>this.renderOffer(this.internalQuantity,t))))):null}};n.style="/*!twlt*/:host{display:block}.s-cart-item-offers-box{margin-bottom:0.75rem}.s-cart-item-offers-container{margin-top:1.25rem}.s-cart-item-offers-paid-free{margin-bottom:0.75rem}.s-cart-item-offers-paid-free>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.25rem * var(--tw-space-y-reverse))}.s-cart-item-offers-paid-free{font-weight:500}.s-cart-item-offers-line{text-align:start}.s-cart-item-offers-regular-price{font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1));text-decoration-line:line-through}.s-cart-item-offers-free-label{margin-left:0.5rem;margin-right:0.5rem;display:inline-block;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.s-cart-item-offers-details{display:flex;align-items:flex-start;gap:0.625rem;--tw-text-opacity:1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.s-cart-item-offers-icon{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.s-cart-item-offers-icon svg{width:18px;fill:currentColor}.s-cart-item-offers-title{margin-bottom:0.5rem;font-weight:500}.s-cart-item-offers-message{font-size:0.875rem;line-height:1.25rem}.s-cart-item-offers-discount{margin-top:0px;font-size:0.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-cart-item-offers-show-more-btn{display:flex;align-items:center;justify-content:flex-start !important;background-color:transparent !important;padding-left:0px !important;padding-right:0px !important;font-size:0.875rem;line-height:1.25rem}.s-cart-item-offers-show-more-btn:hover{--tw-text-opacity:1;color:rgb(24 24 27 / var(--tw-text-opacity, 1))}.s-cart-item-offers-arrow-icon{margin-left:0.125rem;margin-right:0.125rem;transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.s-cart-item-offers-arrow-open{--tw-rotate:-180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.s-cart-item-offers-show-more-btn svg{width:18px}.s-cart-item-offers-show-more-label{display:flex;align-items:center}.s-cart-item-offers-collapsed{margin-top:0.5rem}";const l=class{constructor(e){t(this,e),this.cartSummaryCount=salla.storage.get("cart.summary.count")||0,this.cartSummaryTotal=salla.storage.get("cart.summary.total")||0,this.cartLabel="ar"===salla.config.get("user.language_code")?"السلة":"Cart",this.handleCheckoutClick=t=>{salla.mobile?.isSpaWebview?.()&&salla.mobile.openCheckout&&(t.preventDefault(),salla.mobile.openCheckout(this.getCartLink()))}}connectedCallback(){this.cartUpdatedListener=t=>{this.cartSummaryCount=t.count||0,this.cartSummaryTotal=t.total||0},salla.cart.event.onUpdated(this.cartUpdatedListener)}disconnectedCallback(){salla.cart.event.offUpdated(this.cartUpdatedListener)}async animateToCart(t){if(document.querySelectorAll(".s-cart-thumb").forEach((t=>t.remove())),!t?.src)return void salla.log("Failed to get the img element");let e=this.host.querySelector("#s-cart-icon"),s=e.getBoundingClientRect(),r=s.top+window.scrollY,a=s.left+window.scrollX,i=t.getBoundingClientRect(),o=t.offsetWidth+"px",c=t.offsetHeight+"px",n=i.top,l=i.left,f=document.createElement("img");f.src=t.getAttribute("src"),f.className="s-cart-thumb",f.setAttribute("style","object-fit:cover; width:"+o+"; height:"+c+"; top:"+n+"px; left:"+l+"px;z-index:99999999; "),document.body.append(f);let h=document.querySelector(".s-cart-thumb");e.classList.remove("animated","rubberBand");const m=window.scrollY>0?r-window.scrollY-40:r-40,d=window.scrollY>0?r-window.scrollY+10:r+10;this.flyToCart(h,e,{top:n,left:l,flyTop:m,dropTop:d,btnLeft:a})}flyToCart(t,e,s){const r=t=>t>=1?1:1-Math.pow(2,-10*t),a=(t,e,s)=>t+(e-t)*s,i=(e,s,r)=>{t.style.width=t.style.height=`${e}px`,t.style.top=`${s}px`,t.style.left=`${r}px`};let o;t.style.opacity="1",i(150,s.top,s.left),t.style.borderRadius="20%";const c=n=>{o??(o=n);const l=n-o;if(l>=200){const e=r((l-200)/1200);i(a(150,30,e),a(s.top,s.flyTop,e),a(s.left,s.btnLeft,e)),t.style.borderRadius=`${a(20,50,e)}%`}if(l>=900){const e=r((l-900)/1e3);i(a(30,0,e),a(s.flyTop,s.dropTop,e),a(s.btnLeft,s.btnLeft+10,e)),t.style.opacity=""+(1-e)}if(l>=1200)return e.classList.add("animated","rubberBand"),void t.remove();requestAnimationFrame(c)};requestAnimationFrame(c)}componentWillLoad(){return new Promise((t=>salla.onReady(t)))}getCartLink(){let t=salla.url.get("cart");const e=salla.storage.get("scope")||salla.config.get("store.scope");if(e&&e.id)try{const s=new URL(t);return s.searchParams.set("scope",e.id),e.allocation_type&&s.searchParams.set("allocation_type",e.allocation_type),e.allocation_id&&s.searchParams.set("allocation_id",e.allocation_id),s.toString()}catch(s){const r=t.includes("?")?"&":"?",a=new URLSearchParams;return a.set("scope",String(e.id)),e.allocation_type&&a.set("allocation_type",e.allocation_type),e.allocation_id&&a.set("allocation_id",e.allocation_id),`${t}${r}${a.toString()}`}return t}render(){return e(s,{key:"2f17568bd94a520d429ee40b1e80c41bf74f6296"},e("a",{key:"34787b44d5d2ad57c591121a807f395334951651",class:"s-cart-summary-wrapper",href:this.getCartLink(),onClick:this.handleCheckoutClick},e("div",{key:"7392396a000d5ccbc327eb77e5a835578ac4e6c4",id:"s-cart-icon"},e("slot",{key:"11e9b13d938f0870696c09394f599a643f69fde9",name:"icon"},e("i",{key:"1094fc352cdd55e7ff9f72fe6ae023d06f5ea680",class:"s-cart-summary-icon",innerHTML:c}))),e("span",{key:"5a61fce2f185193637e44ba9b3d6da31deab73fd",class:"s-cart-summary-count"},salla.helpers.number(this.cartSummaryCount)),e("p",{key:"9571d3e7d563694d2cab2c7806b384c643eb9b44",class:"s-cart-summary-content"},this.showCartLabel&&e("span",{key:"eeb5fed8da2dcdae09f38d6f26cfefc2b28e3e5b",class:"s-cart-summary-label"},this.cartLabel),e("b",{key:"e81072c0a81d5e3f22a09794bebced80e7706025",class:"s-cart-summary-total",innerHTML:salla.money(this.cartSummaryTotal)}))))}get host(){return r(this)}};l.style='/*!twlt*/.block{display:block}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-cart-summary-wrapper{text-decoration:none;color:var(--color-text);transition:all .5s cubic-bezier(0.2, 1, 0.3, 1);align-items:center;font-weight:bolder;position:relative;display:inline-flex}.s-cart-thumb{position:fixed;transition:all 0.3s cubic-bezier(0.2, 1, 0.3, 1)}.s-cart-summary-icon svg{height:1.25rem;width:1.25rem;fill:var(--color-text)}.s-cart-summary-count{position:absolute;top:-8px;left:-15px;display:inline-flex;height:1.25rem;width:1.25rem;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1));padding:0.25rem;font-size:0.75rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.s-cart-summary-count:where([dir="rtl"],[dir="rtl"] *){left:unset;right:-15px}';export{n as salla_cart_item_offers,l as salla_cart_summary}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Crafted with ❤ by Salla
|
|
3
|
-
*/
|
|
4
|
-
import{r as e,h as r}from"./p-CtoXzf1y.js";import{C as o}from"./p-CTtM5VoO.js";const t=class{constructor(r){e(this,r),this.coupons=[],this.isLoading=!0,this.giftsTitle="",this.titlePercentTpl="",this.titleFixedTpl="",this.badgeLabel="",this.copyLabel="",this.copiedLabel="",this.minSpendTpl="",this.expiresTpl=""}componentWillLoad(){Salla.onReady().then((()=>Salla.lang.onLoaded())).then((()=>(this.loadTranslations(),this.loadCoupons()))).catch((()=>{this.isLoading=!1}))}loadTranslations(){this.giftsTitle=Salla.lang.get("pages.thank_you.gifts_title"),this.titlePercentTpl=Salla.lang.get("pages.thank_you.next_order_coupon_title_percent")||"",this.titleFixedTpl=Salla.lang.get("pages.thank_you.next_order_coupon_title_fixed")||"",this.badgeLabel=Salla.lang.get("pages.thank_you.next_order_coupon_badge"),this.copyLabel=Salla.lang.get("common.elements.copy")||"",this.copiedLabel=Salla.lang.get("pages.thank_you.next_order_coupon_copied")||"",this.minSpendTpl=Salla.lang.get("pages.thank_you.next_order_coupon_min_spend")||"",this.expiresTpl=Salla.lang.get("pages.thank_you.next_order_coupon_expires")||""}async loadCoupons(){try{const e=await salla.api.request("coupons",{params:{type:"thankyou"}}),r=e?.data,o=Array.isArray(r)?r:Array.isArray(r?.data)?r.data:[];this.coupons=o}catch{this.coupons=[]}finally{this.isLoading=!1}}async copyCode(e){try{await navigator.clipboard.writeText(e),salla.notify.success(this.copiedLabel),salla.event.dispatch("salla::next-order-coupon.code.copied",{code:e})}catch{}}isPercentage(e){return"P"===e.type||"percentage"===e.type}formatAmount(e){if(this.isPercentage(e))return`${salla.helpers.number(e.amount)}%`;const r=e.amount;return"object"==typeof r&&r.amount?salla.money({amount:r.amount,currency:r.currency}):salla.money(r)}amountDescription(e){const r=this.isPercentage(e)?this.titlePercentTpl:this.titleFixedTpl,o=this.isPercentage(e)?":amount%":":amount";return r.replace(o,this.formatAmount(e))}minSpend(e){const r=e.minimum_amount;return r?"string"==typeof r?r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""):r.amount?salla.money({amount:r.amount,currency:r.currency}):"":""}expiry(e){if(!e.expiry_date)return"";const r=new Date(e.expiry_date);return Number.isNaN(r.getTime())?"":r.toLocaleDateString(Salla.lang.locale||"en-GB")}renderTerms(e){const o=this.minSpend(e),t=this.expiry(e);return o||t?r("span",{class:"s-next-order-coupon-meta"},o&&this.minSpendTpl?r("span",{innerHTML:this.minSpendTpl.replace(":amount",o)}):null,t&&this.expiresTpl?r("span",null,this.expiresTpl.replace(":date",t)):null):null}renderCard(e){return r("div",{class:"s-next-order-coupon-card"},r("div",{class:"s-next-order-coupon-details"},r("span",{class:"s-next-order-coupon-title"},r("span",{"aria-hidden":"true"},"🎁"),r("span",null,e.title||this.badgeLabel)),e.description?r("span",{class:"s-next-order-coupon-desc"},e.description):r("span",{class:"s-next-order-coupon-desc",innerHTML:this.amountDescription(e)}),this.renderTerms(e)),r("button",{type:"button",class:"s-next-order-coupon-code",title:this.copyLabel,onClick:()=>this.copyCode(e.code)},r("span",{dir:"ltr"},e.code),r("span",{innerHTML:o})))}renderSkeleton(){return r("div",{class:"s-next-order-coupon-wrapper s-next-order-coupon-skeleton"},r("salla-skeleton",{height:"20px",width:"120px"}),r("div",{class:"s-next-order-coupon-list"},r("div",{class:"s-next-order-coupon-card"},r("salla-skeleton",{height:"36px"})),r("div",{class:"s-next-order-coupon-card"},r("salla-skeleton",{height:"36px"}))))}render(){return this.isLoading?this.renderSkeleton():this.coupons.length?r("div",{class:"s-next-order-coupon-wrapper"},r("div",{class:"s-next-order-coupon-heading"},this.giftsTitle),r("div",{class:"s-next-order-coupon-list"},this.coupons.map((e=>this.renderCard(e))))):null}};t.style="/*!twlt*/:host{display:block}.fixed{position:fixed}.block{display:block}.s-next-order-coupon-wrapper{display:flex;flex-direction:column;gap:0.25rem;overflow:hidden;border-radius:0.75rem;background-color:color-mix(in srgb,var(--color-primary) 8%,var(--color-surface,#fff));padding-left:0.125rem;padding-right:0.125rem;padding-bottom:0.125rem;padding-top:0.25rem}.s-next-order-coupon-heading{padding-left:0.75rem;padding-right:0.75rem;font-size:0.875rem;font-weight:700;line-height:1.25rem;color:var(--color-text-primary,#333)}.s-next-order-coupon-list{display:flex;flex-wrap:wrap;align-items:stretch;gap:0.125rem}.s-next-order-coupon-card{display:flex;min-width:14rem;flex:1 1 0%;align-items:flex-start;justify-content:space-between;gap:0.25rem;border-radius:0.75rem;background-color:var(--color-surface,#fff);padding:0.75rem}.s-next-order-coupon-details{display:flex;min-width:0px;flex:1 1 0%;flex-direction:column;gap:0.25rem;font-size:0.75rem;line-height:1rem}.s-next-order-coupon-title{display:flex;align-items:flex-start;gap:0.25rem;font-weight:700;color:var(--color-text-primary,#333)}.s-next-order-coupon-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-secondary,#666)}.s-next-order-coupon-meta{display:flex;flex-wrap:wrap;column-gap:0.5rem;font-size:0.75rem;line-height:1rem;color:var(--color-text-secondary,#666)}.s-next-order-coupon-code{display:inline-flex;flex-shrink:0;cursor:pointer;align-items:center;gap:0.25rem;border-width:0px;background-color:transparent;padding:0px;font-size:0.75rem;font-weight:700;line-height:1rem;color:var(--color-text-primary,#333)}.s-next-order-coupon-code svg{height:0.875rem;width:0.875rem;fill:currentColor}@keyframes pulse{50%{opacity:.5}}.s-next-order-coupon-skeleton{animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.s-thank-you-page-wrapper .s-next-order-coupon-heading{font-size:1rem;line-height:1.5rem}.s-thank-you-page-wrapper .s-next-order-coupon-details,.s-thank-you-page-wrapper .s-next-order-coupon-code{font-size:0.875rem;line-height:1.25rem}.s-thank-you-page-wrapper .s-next-order-coupon-code svg{height:1.25rem;width:1.25rem}.s-thank-you-page-wrapper .s-next-order-coupon-card{min-width:0px;flex-direction:column;gap:0.5rem;padding:0.75rem}@media (min-width: 640px){.s-thank-you-page-wrapper .s-next-order-coupon-card{flex-direction:row;padding:1.25rem}}.s-thank-you-page-wrapper .s-next-order-coupon-details{width:100%;gap:0.5rem}.s-thank-you-page-wrapper .s-next-order-coupon-list{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.125rem}.s-thank-you-page-wrapper .s-next-order-coupon-card:only-child{grid-column:span 2 / span 2}.s-thank-you-page-wrapper .s-next-order-coupon-desc{white-space:normal;overflow-wrap:break-word}.s-thank-you-page-wrapper .s-next-order-coupon-code{max-width:100%;flex-wrap:wrap;text-align:start}.s-thank-you-page-wrapper .s-next-order-coupon-code>span{min-width:0px;word-break:break-all}";export{t as salla_next_order_coupon}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Crafted with ❤ by Salla
|
|
3
|
-
*/
|
|
4
|
-
import{r as t,h as i,H as e,a as o}from"./p-CtoXzf1y.js";var r,n;!function(t){t.PERCENTAGE="percentage",t.FIXED="fixed",t.FREE_PRODUCT="free_product",t.FREE_SHIPPING="free_shipping"}(r||(r={})),function(t){t.PRODUCT_COUNT="products_count",t.PRODUCT_PURCHASE="order_amount"}(n||(n={}));const s=Object.freeze([]);let a,l=null,c=null,d=!1,f=null,h=null,u=0;function g(t){return"CartNotCreated"===t?.name}function m(){try{const t=salla.api?.cart?.getStoredCartId?salla.api.cart.getStoredCartId():salla.storage?.get?.("cart.id");return null==t||""===t?null:String(t)}catch(t){return null}}function p(){const t=m();void 0!==a&&a!==t&&(u++,l=null,c=null,d=!1,f=null),a=t}function b(t){return null==t?0:"number"==typeof t?isFinite(t)?t:0:"string"==typeof t&&parseFloat(t)||0}function w(t){if(null==t||""===t)return null;const i=b(t);return isFinite(i)?i:null}function y(t,i){if(null!==i)return i.length;const e=w(t?.data?.cart?.count??t?.data?.count??t?.cart?.count??t?.count);return null!==e&&e>=0?e:null}function x(t){for(const i of[t?.original_price,t?.product_price,t?.price]){const t=w(i&&"object"==typeof i?i.amount:i);if(null!==t&&t>0)return t}return null}function v(t,i){const e=t?.free_gift_quantity;return null!=e&&""!==e?b(e):i>0?i:0}function k(t){const i=[];for(const e of t){if(null==e?.id)continue;if(!e.added_by_offer)continue;const t=b(e.quantity),o=v(e,t);o<=0||i.push({id:String(e.id),offerId:w(e.offer_id),quantity:o,freeQuantity:o,lineQuantity:t,name:String(e.product_name??e.name??""),imageUrl:String(e.product_image?.url??e.product_image??e.image?.url??""),imageAlt:String(e.product_image?.alt??e.image?.alt??e.product_name??""),url:String(e.url??""),originalPrice:x(e)})}return i}function _(){if(f)return f;const t=u,i=Promise.resolve().then((()=>salla.api?.cart?.details?.())).then((t=>{const i=function(t){const i=t?.data?.cart?.items??t?.data?.items??t?.cart?.items??t?.items;return Array.isArray(i)?i:null}(t);return{gifts:k(i??[]),count:y(t,i),ok:!0}})).catch((t=>({gifts:l??[],count:g(t)?0:c,ok:!1}))).then((({gifts:i,count:e,ok:o})=>{t===u&&(l=i,c=e,d=o)})).finally((()=>{f===i&&(f=null)}));return f=i,i}const C=-1;var M,T;function z(t){const i="number"==typeof t?t:parseFloat(t);return Number.isFinite(i)?i:null}function S(t){return"boolean"==typeof t?t:1===t||0===t?1===t:"true"===t||"1"===t||"false"!==t&&"0"!==t&&void 0}function L(t){return z(t)??0}function I(t,i,e){return Math.max(i,Math.min(t,e))}function V(t){const i="number"==typeof t?t:parseFloat(t);if(!Number.isFinite(i))return null;const e=Math.trunc(i);return e>=0&&e<=4?e:null}!function(t){t.LOCKED="locked",t.CURRENT="current",t.COMPLETED="completed"}(M||(M={})),function(t){t.CURRENCY="currency",t.COUNT="count"}(T||(T={}));const F=[1e3,2e3,4e3],R='[data-testid^="store-cart-item-"], form[id^="item-"]';let $=0;const P={badges_summary:":completed of :total offers unlocked",congrats:"Congratulations! You’ve unlocked all rewards in this promotion",details_title:"Offer details",free_gift:"Free Gift",free_products_title:"Free products selected from the offer",guidance_conditions_unmet:"Your cart doesn’t meet the conditions for the next reward yet",guidance_next:"Add :remaining and get :reward",guidance_next_generic:"Add :remaining to unlock the next reward",manage_offer:"Manage offer",tier_requirement:"Spend :threshold and get :reward",tier_requirement_count:"Buy :threshold and get :reward",tier_requirement_count_generic:"Buy :threshold to unlock this offer",tier_requirement_generic:"Spend :threshold to unlock this offer",tier_title:"Offer (:number)"},j="pages.checkout.free_charge";function H(t){const i=document.createElement("div");return i.textContent=t??"",i.innerHTML}const O=(t={})=>i("svg",{class:t.class,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},i("path",{d:"M5.00016 9.16634C2.69898 9.16634 0.833496 7.30084 0.833496 4.99967C0.833496 2.69849 2.69898 0.833008 5.00016 0.833008C7.30133 0.833008 9.16683 2.69849 9.16683 4.99967C9.16683 7.30084 7.30133 9.16634 5.00016 9.16634ZM4.58458 6.66634L7.53087 3.72006L6.94162 3.13081L4.58458 5.48784L3.40608 4.3093L2.81683 4.89859L4.58458 6.66634Z",fill:"currentColor"})),q=(t={})=>i("svg",{class:t.class,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},i("path",{d:"M12.6667 6.66683H13.3333C13.7015 6.66683 14 6.9653 14 7.3335V14.0002C14 14.3684 13.7015 14.6668 13.3333 14.6668H2.66667C2.29848 14.6668 2 14.3684 2 14.0002V7.3335C2 6.9653 2.29848 6.66683 2.66667 6.66683H3.33333V6.00016C3.33333 3.42284 5.42267 1.3335 8 1.3335C10.5773 1.3335 12.6667 3.42284 12.6667 6.00016V6.66683ZM11.3333 6.66683V6.00016C11.3333 4.15922 9.84093 2.66683 8 2.66683C6.15905 2.66683 4.66667 4.15922 4.66667 6.00016V6.66683H11.3333ZM7.33333 9.3335V12.0002H8.66667V9.3335H7.33333Z",fill:"currentColor"})),N=(t={})=>i("svg",{class:t.class,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},i("path",{d:"M7.00033 12.8337C3.77866 12.8337 1.16699 10.222 1.16699 7.00033C1.16699 3.77866 3.77866 1.16699 7.00033 1.16699C10.222 1.16699 12.8337 3.77866 12.8337 7.00033C12.8337 10.222 10.222 12.8337 7.00033 12.8337ZM6.41699 6.41699V9.91699H7.58366V6.41699H6.41699ZM6.41699 4.08366V5.25033H7.58366V4.08366H6.41699Z",fill:"currentColor"})),B=class{constructor(i){t(this,i),this.offer=null,this.isLoading=!1,this.canRender=!0,this.gifts=[],this.cartItemCount=null,this.isTooltipHovered=!1,this.isTooltipPinned=!1,this.isGiftsOpen=!0,this.instanceId=++$,this.refreshGeneration=0,this.giftsGeneration=0,this.cartRefreshTimer=null,this.cartRefreshPending=!1,this.wantsCartUpdates=!1,this.isListeningToCartUpdates=!1,this.cartLookupRetryTimer=null,this.cartLookupRetries=0,this.cartLookupRetryPending=!1,this.deferredByEmptyCart=!1,this.isDisconnected=!1,this.skeletonWatchdog=null,this.skeletonDeadline=0,this.hasRelocated=!1,this.hasLoaded=!1,this.relocationObserver=null,this.relocationWatchTimer=null,this.relocationWatchExpired=!1,this.relocationLogged=!1,this.cartUpdatedHandler=t=>{this.readCartCountFromEvent(t),this.clearCartLookupRetry(),this.scheduleCartRefresh()}}componentWillLoad(){this.ensureSkeletonIsWatched();try{this.isEnabled()&&this.startLoading(),this.load().catch((t=>{this.stopLoading(),this.safeLog("load() failed",t)}))}catch(t){this.stopLoading(),this.safeLog("componentWillLoad threw synchronously",t)}}safeLog(t,i){try{salla.logger.warn("salla-conditional-offer::",t,i)}catch(t){}}connectedCallback(){this.isDisconnected=!1,this.ensureSkeletonIsWatched(),this.wantsCartUpdates&&!this.isListeningToCartUpdates&&this.subscribeToCartUpdates()&&(this.cartRefreshPending=!0),this.cartRefreshPending&&this.scheduleCartRefresh(),this.cartLookupRetryPending&&this.scheduleCartLookupRetry()}disconnectedCallback(){this.isDisconnected=!0,null!==this.cartRefreshTimer&&(clearTimeout(this.cartRefreshTimer),this.cartRefreshTimer=null),null!==this.cartLookupRetryTimer&&(clearTimeout(this.cartLookupRetryTimer),this.cartLookupRetryTimer=null),Promise.resolve().then((()=>{this.isDisconnected&&this.unsubscribeFromCartUpdates()})),null!==this.skeletonWatchdog&&(clearTimeout(this.skeletonWatchdog),this.skeletonWatchdog=null),this.stopWatchingForItemsColumn()}componentDidLoad(){this.hasLoaded=!0,this.relocateIntoItemsColumn()}isShowingSomething(){return this.canRender&&this.hasCartItems()}componentDidRender(){this.hasLoaded&&this.relocateIntoItemsColumn(),this.positionTooltip(),this.ensureSkeletonIsWatched()}relocateIntoItemsColumn(){if(!this.hasRelocated&&this.isShowingSomething())try{const t=this.hostEl;if(!t?.parentElement)return;const i=this.findItemsColumn(t);if(!i)return void this.watchForItemsColumn();if(this.hasRelocated=!0,this.stopWatchingForItemsColumn(),i===t.parentElement&&i.firstElementChild===t)return;i.insertBefore(t,i.firstChild)}catch(t){this.hasRelocated=!0,this.stopWatchingForItemsColumn(),this.safeLog("relocating the banner into the cart items column failed",t)}}findItemsColumn(t){let i=t;for(let e=0;i&&e<=3;e++){for(const e of this.getFollowingSiblings(i)){if(i===t&&this.matches(e,R))return t.parentElement;const o=this.findColumnWithin(e,t);if(o)return o}if(i=i.parentElement,!i||i===document.body||i===document.documentElement)break}return null}getFollowingSiblings(t){const i=[];for(let e=t.nextElementSibling;e;e=e.nextElementSibling)i.push(e);return i}findColumnWithin(t,i){const e=t.querySelector(R),o=(e?this.climbToChildOf(e,t):null)??t.querySelector(".main-content, [data-cart-items]");return!o||o===i||o.contains(i)?null:o}climbToChildOf(t,i){let e=t;for(;e&&e.parentElement&&e.parentElement!==i;)e=e.parentElement;return e?.parentElement===i?e:null}matches(t,i){return"function"==typeof t.matches&&t.matches(i)}watchForItemsColumn(){this.hasRelocated||this.relocationWatchExpired||this.relocationObserver||("undefined"!=typeof MutationObserver?(this.relocationObserver=new MutationObserver((()=>this.relocateIntoItemsColumn())),this.relocationObserver.observe(document.documentElement,{childList:!0,subtree:!0}),this.relocationWatchTimer=setTimeout((()=>{this.relocationWatchTimer=null,this.relocationWatchExpired=!0,this.stopWatchingForItemsColumn(),this.logNoItemsColumn()}),5e3)):this.logNoItemsColumn())}stopWatchingForItemsColumn(){if(this.relocationObserver){try{this.relocationObserver.disconnect()}catch(t){}this.relocationObserver=null}null!==this.relocationWatchTimer&&(clearTimeout(this.relocationWatchTimer),this.relocationWatchTimer=null)}logNoItemsColumn(){this.relocationLogged||(this.relocationLogged=!0,this.safeLog("no cart items column found — leaving the banner at full page width"))}ensureSkeletonIsWatched(){if(!this.isLoading)return;if(null!==this.skeletonWatchdog)return;const t=Date.now();0===this.skeletonDeadline&&(this.skeletonDeadline=t+8e3);const i=Math.max(0,this.skeletonDeadline-t);this.skeletonWatchdog=setTimeout((()=>{this.skeletonWatchdog=null,this.isLoading&&(Date.now()<this.skeletonDeadline?this.ensureSkeletonIsWatched():(this.isLoading=!1,this.skeletonDeadline=0,this.safeLog("still loading after 8000ms — dropping the skeleton")))}),i)}clearSkeletonWatchdog(){this.skeletonDeadline=0,null!==this.skeletonWatchdog&&(clearTimeout(this.skeletonWatchdog),this.skeletonWatchdog=null)}startLoading(){this.isLoading=!0,this.ensureSkeletonIsWatched()}stopLoading(){this.isLoading=!1,this.clearSkeletonWatchdog()}async load(){this.wantsCartUpdates=!0,this.subscribeToCartUpdates()||this.subscribeWhenSdkIsReady(),this.loadCart(),await this.waitForSdk(),await this.refresh()}waitForSdk(){let t,i;try{t=Promise.resolve(salla.onReady?.())}catch(t){return this.safeLog("salla.onReady() threw",t),Promise.resolve()}const e=new Promise((t=>{i=setTimeout(t,3e3)}));return Promise.race([t.catch((t=>this.safeLog("salla.onReady() rejected",t))),e]).then((()=>{clearTimeout(i)}))}subscribeToCartUpdates(){if(this.isListeningToCartUpdates)return!0;try{salla.event.on("cart::updated",this.cartUpdatedHandler),this.isListeningToCartUpdates=!0}catch(t){this.safeLog("cart::updated subscription failed",t)}return this.isListeningToCartUpdates}unsubscribeFromCartUpdates(){if(this.isListeningToCartUpdates){this.isListeningToCartUpdates=!1;try{salla.event.off("cart::updated",this.cartUpdatedHandler)}catch(t){this.safeLog("cart::updated unsubscription failed",t)}}}subscribeWhenSdkIsReady(){let t;try{t=Promise.resolve(salla.onReady?.())}catch(t){return}const i=()=>{this.isDisconnected||this.subscribeToCartUpdates()};t.then(i,i)}scheduleCartRefresh(){this.cartRefreshPending=!0,null!==this.cartRefreshTimer&&clearTimeout(this.cartRefreshTimer),this.cartRefreshTimer=null,this.isDisconnected||(this.cartRefreshTimer=setTimeout((()=>{this.cartRefreshTimer=null,this.runCartRefresh()}),200))}runCartRefresh(){this.isDisconnected||(this.cartRefreshPending=!1,this.refresh(),function(){if(h)return h;u++,l=null,c=null,d=!1,a=m();const t=()=>(h===i&&(h=null),_()),i=(f??Promise.resolve()).then(t,t).finally((()=>{h===i&&(h=null)}));return h=i,i}().then((()=>this.loadCart()),(()=>this.loadCart())))}readCartCountFromEvent(t){const i=this.toCartCount(t?.count)??this.readCartCountFromStorage();null!==i&&(this.cartItemCount=i)}readCartCountFromStorage(){try{return this.toCartCount(salla.storage?.get?.("cart.summary.count"))}catch(t){return null}}toCartCount(t){return"number"==typeof t&&Number.isFinite(t)&&t>=0?t:null}getFreeLabel(){const t=salla.lang.get(j);return t&&t!==j?t:"Free"}trans(t,i){const e=`blocks.cart_offer.${t}`,o=salla.lang.get(e,i);return o&&o!==e?o:Object.entries(i??{}).reduce(((t,[i,e])=>t.split(`:${i}`).join(e)),P[t])}isEnabled(){try{return!!salla.config.get("store.features")?.includes("conditional-offer")}catch(t){return!1}}async fetchOffer(){const{data:t}=await salla.api.cart.offers(),i=(t||[]).find((t=>"conditional"===t.type));return i?.details?.discounts?.length?i:null}async refresh(){const t=++this.refreshGeneration;if(!this.isEnabled())return this.stopLoading(),void(this.canRender=!1);if(0===this.cartItemCount)return this.stopLoading(),p(),void(d||(this.deferredByEmptyCart=!0,this.loadCart()));this.deferredByEmptyCart=!1,this.offer?this.stopLoading():this.startLoading();try{const i=await this.fetchOffer();if(this.isSuperseded(t))return;if(!i)return this.offer=null,void(this.canRender=!1);this.offer=i,this.canRender=!0,this.loadCart()}catch(i){if(this.isSuperseded(t))return;this.safeLog("offers() failed",i)}finally{t===this.refreshGeneration&&this.stopLoading()}}hasCartItems(){return"number"==typeof this.cartItemCount&&this.cartItemCount>=1}isSuperseded(t){return t!==this.refreshGeneration||this.isDisconnected}loadCart(){const t=++this.giftsGeneration;return Promise.all([(p(),d&&l?Promise.resolve(l):_().then((()=>l??s))),(p(),d&&l?Promise.resolve(c):_().then((()=>c)))]).then((([i,e])=>{t!==this.giftsGeneration||this.isDisconnected||this.cartRefreshPending||(null!==e&&(this.cartItemCount=e),null!==e?this.clearCartLookupRetry():null===this.cartItemCount&&this.scheduleCartLookupRetry(),this.deferredByEmptyCart&&this.hasCartItems()&&(this.deferredByEmptyCart=!1,this.refresh()),this.gifts=this.offer?this.selectOwnGifts(i):[])})).catch((t=>{this.safeLog("cart lookup failed",t)}))}scheduleCartLookupRetry(){this.cartLookupRetries>=F.length||(this.cartLookupRetryPending=!0,null!==this.cartLookupRetryTimer||this.isDisconnected||(this.cartLookupRetryTimer=setTimeout((()=>{this.cartLookupRetryTimer=null,this.cartLookupRetryPending=!1,this.canRender&&(this.cartLookupRetries++,this.loadCart())}),F[this.cartLookupRetries])))}clearCartLookupRetry(){this.cartLookupRetries=0,this.cartLookupRetryPending=!1,null!==this.cartLookupRetryTimer&&(clearTimeout(this.cartLookupRetryTimer),this.cartLookupRetryTimer=null)}selectOwnGifts(t){const i=Number(this.offer?.id);if(!Number.isFinite(i))return t;const e=t.filter((t=>null!==t.offerId&&Number(t.offerId)===i));return e.length?e:t.filter((t=>null===t.offerId))}getStages(){const t=(this.offer?.details?.discounts??[]).filter((({min_spend:t})=>null!==z(t)));return i=({min_spend:t})=>t,e=({id:t})=>t,(t??[]).map(((t,o)=>({item:t,index:o,threshold:L(i(t)),identity:e?z(e(t)):null}))).sort(((t,i)=>t.threshold!==i.threshold?t.threshold-i.threshold:null!==t.identity&&null!==i.identity&&t.identity!==i.identity?t.identity-i.identity:t.index-i.index)).map((({item:t})=>t));var i,e}getProgress(t){return function(t,i,e=0,o=[],r=[]){const n=(i??[]).map(((t,i)=>({index:i,threshold:z(t),applied:S(o?.[i]),tierValue:z(r?.[i])}))).filter((t=>null!==t.threshold)).sort(((t,i)=>t.threshold-i.threshold||t.index-i.index)),s=n.map((t=>t.threshold)),a=n.map((t=>t.applied)),l=a.some((t=>void 0!==t)),c=L(e);if(!s.length)return{thresholds:s,met:[],applied:a,appliedIndex:C,hasEngineVerdict:l,metCount:0,nextUnmetIndex:C,allMet:!1,lastReachedIndex:C,currentIndex:C,isComplete:!1,value:Math.max(0,L(t)),values:[],startValue:c,fills:[],overallPercentage:0};const d=s[s.length-1],f=I(L(t),0,Math.max(0,d)),h=n.map((({tierValue:t})=>null===t?f:I(t,0,Math.max(0,d))));let u=C;for(let t=0;t<s.length;t++)h[t]>=s[t]&&(u=t);const g=u===s.length-1,m=g?C:u+1,p=s.map(((t,i)=>function(t,i,e){return e<=i?t>=e?100:0:I((t-i)/(e-i)*100,0,100)}(h[i],0===i?c:s[i-1],t))),b=g?100:I((u+1+(p[m]??0)/100)/s.length*100,0,100);let w=C;for(let t=0;t<a.length;t++)!0===a[t]&&(w=t);const y=s.map(l?(t,i)=>i<=w:(t,i)=>i<=u),x=y.filter(Boolean).length,v=y.findIndex((t=>!t));return{thresholds:s,met:y,applied:a,appliedIndex:w,hasEngineVerdict:l,metCount:x,nextUnmetIndex:v,allMet:v===C,lastReachedIndex:u,currentIndex:m,isComplete:g,value:f,values:h,startValue:c,fills:p,overallPercentage:b}}(this.offer?.details?.current_value,t.map((({min_spend:t})=>t)),this.offer?.details?.start_value,t.map((({is_applied:t})=>t)),t.map((({current_value:t})=>t)))}tierKey(t,i){const e=Number(t?.id);return Number.isFinite(e)?`tier-${e}`:`pos-${i}`}stageMeasure(){return this.offer?.details?.based_on===n.PRODUCT_COUNT?T.COUNT:T.CURRENCY}formatRequirement(t){const i=this.offer?.details?.based_on;if(i===n.PRODUCT_COUNT)try{return salla.lang.choice("blocks.header.products_count",t)}catch(i){return this.safeLog("invalid products_count interval",i),`${t}`}return i===n.PRODUCT_PURCHASE?salla.money(t):(this.safeLog(`unexpected offer detail's based_on value: ${i}`),`${t}`)}getRewardText(t){return(t?.reward_label??"").trim()}getGuidanceMessage(t,i){if(i.nextUnmetIndex===C)return"";const e=function(t,i,e=T.CURRENCY){const o=i.thresholds[t];if(void 0===o)return 0;const r=Math.max(0,o-(i.values?.[t]??i.value));if(0===r)return 0;const n=e===T.COUNT?0:function(){try{const t="undefined"!=typeof salla?salla:void 0,i=V(t?.config?.currency?.()?.decimals);if(null!==i)return i;const e=V(t?.config?.get?.("store.currency.decimals"));if(null!==e)return e}catch(t){}return 2}(),s=Math.pow(10,n),a=Math.ceil(r*s-1e-6)/s;return a>0?a:1/s}(i.nextUnmetIndex,i,this.stageMeasure());if(e<=0)return this.trans("guidance_conditions_unmet");const o=this.formatRequirement(e),r=this.getRewardText(t[i.nextUnmetIndex]);return r?this.trans("guidance_next",{remaining:o,reward:H(r)}):this.trans("guidance_next_generic",{remaining:o})}getTierSentence(t,i,e){const o=this.formatRequirement(e.thresholds[i]),r=this.getRewardText(t),n=this.stageMeasure()===T.COUNT;return r?this.trans(n?"tier_requirement_count":"tier_requirement",{threshold:o,reward:H(r)}):this.trans(n?"tier_requirement_count_generic":"tier_requirement_generic",{threshold:o})}getRewardIcon(t){switch(t?.type){case r.PERCENTAGE:return"sicon-percentage";case r.FREE_PRODUCT:return"sicon-gift";case r.FIXED:return this.usesSarSymbol()?"sicon-sar":"sicon-banknote";default:return"sicon-tag"}}usesSarSymbol(){try{const t=salla.config.currency?.()?.symbol;return["SAR","ر.س"].includes(t)&&!!salla.config.get("store.settings.use_sar_symbol")}catch(t){return!1}}get isTooltipOpen(){return this.isTooltipHovered||this.isTooltipPinned}toggleTooltip(){this.isTooltipPinned=!this.isTooltipPinned}closeTooltip(t=!1){this.isTooltipOpen&&(this.isTooltipPinned=!1,this.isTooltipHovered=!1,t&&this.infoTriggerEl?.focus?.())}positionTooltip(){const t=this.tooltipEl,i=this.infoTriggerEl;if(this.isTooltipOpen&&t&&i)try{this.setTooltipOffsets(t,0,0);const e=window.innerWidth||document.documentElement?.clientWidth||0,o=t.getBoundingClientRect(),r=i.getBoundingClientRect(),n=o?.width||0;if(n<=0||e<=0)return;const s=r.left+r.width/2-n/2,a=8,l=Math.min(Math.max(s,a),Math.max(a,e-a-n))-s,c=Math.max(0,n/2-16),d=Math.min(Math.max(-l,-c),c);this.setTooltipOffsets(t,l,d)}catch(t){this.safeLog("positioning the offer details popover failed",t)}}setTooltipOffsets(t,i,e){t.style?.setProperty?.("--s-conditional-offer-tooltip-shift",`${Math.round(i)}px`),t.style?.setProperty?.("--s-conditional-offer-tooltip-caret",`${Math.round(e)}px`)}handleWindowResize(){this.positionTooltip()}handleDocumentKeydown(t){"Escape"!==t.key&&"Esc"!==t.key||this.closeTooltip(!0)}handleDocumentClick(t){if(!this.isTooltipPinned||!this.infoAnchorEl)return;const i="function"==typeof t.composedPath?t.composedPath():[];(i.length?i.includes(this.infoAnchorEl):this.infoAnchorEl.contains(t.target))||this.closeTooltip()}elementId(t){return`s-conditional-offer-${t}-${this.instanceId}`}renderBadges(t,e){return i("div",{class:"s-conditional-offer-badges",role:"img","aria-label":this.trans("badges_summary",{completed:`${e.metCount}`,total:`${t.length}`})},t.map(((t,o)=>{const r=e.met[o],n=this.tierKey(t,o);return[o>0?i("span",{key:`${n}-link`,class:{"s-conditional-offer-badge-link":!0,"s-conditional-offer-badge-link-met":r,"s-conditional-offer-badge-link-unmet":!r},"aria-hidden":"true"}):null,i("span",{key:n,class:{"s-conditional-offer-badge":!0,"s-conditional-offer-badge-met":r,"s-conditional-offer-badge-unmet":!r},"data-tier-state":r?"met":"unmet","data-tier-id":t?.id??void 0},i(r?O:q,{class:"s-conditional-offer-badge-icon"}))]})))}renderTooltip(t,e){const o=function(t){const i=t?.details?.rules;if("string"==typeof i){const t=i.trim();return""===t?null:t}if(Array.isArray(i)){const t=i.filter((t=>"string"==typeof t)).map((t=>t.trim())).filter((t=>""!==t)).join(" ");return""===t?null:t}return null}(this.offer);return i("div",{class:"s-conditional-offer-tooltip",id:this.elementId("tooltip"),role:"tooltip",ref:t=>this.tooltipEl=t},i("div",{class:"s-conditional-offer-tooltip-title"},this.offer?.title),o?i("div",{class:"s-conditional-offer-tooltip-description"},o):null,i("ul",{class:"s-conditional-offer-tooltip-list"},t.map(((t,o)=>{const r=e.met[o];return i("li",{key:this.tierKey(t,o),class:"s-conditional-offer-tier","data-tier-state":r?"met":"unmet","data-tier-id":t?.id??void 0},i("span",{class:{"s-conditional-offer-tier-icon":!0,"s-conditional-offer-tier-icon-met":r,"s-conditional-offer-tier-icon-unmet":!r}},i("i",{class:this.getRewardIcon(t),"aria-hidden":"true"}),i("span",{class:{"s-conditional-offer-tier-status":!0,"s-conditional-offer-tier-status-met":r,"s-conditional-offer-tier-status-unmet":!r},"aria-hidden":"true"},r?i(O,{class:"s-conditional-offer-tier-status-check"}):i(q,{class:"s-conditional-offer-tier-status-lock"}))),i("div",{class:"s-conditional-offer-tier-body"},i("div",{class:"s-conditional-offer-tier-title"},this.trans("tier_title",{number:`${o+1}`})),i("div",{class:{"s-conditional-offer-tier-text":!0,"s-conditional-offer-tier-text-met":r},innerHTML:this.getTierSentence(t,o,e)})))}))))}renderGiftsToggle(t){return i("button",{type:"button",id:this.elementId(`toggle-${t}`),class:{"s-conditional-offer-toggle":!0,"s-conditional-offer-toggle-inline":"inline"===t,"s-conditional-offer-toggle-bar":"bar"===t},"aria-expanded":this.isGiftsOpen?"true":"false","aria-controls":this.elementId("gifts"),onClick:()=>this.isGiftsOpen=!this.isGiftsOpen},i("span",null,this.trans("manage_offer")),i("i",{class:{"sicon-keyboard_arrow_down":!0,"s-conditional-offer-toggle-icon":!0,"s-conditional-offer-toggle-icon-open":this.isGiftsOpen},"aria-hidden":"true"}))}renderGiftsCard(){return i("div",{class:"s-conditional-offer-panel",id:this.elementId("gifts")},i("div",{class:"s-conditional-offer-gifts-header"},i("span",{class:"s-conditional-offer-gifts-icon"},i("i",{class:"sicon-gift","aria-hidden":"true"})),i("span",{class:"s-conditional-offer-gifts-title"},this.trans("free_products_title"))),i("ul",{class:"s-conditional-offer-gifts-list"},this.gifts.map((t=>this.renderGiftRow(t)))))}renderGiftRow(t){return i("li",{class:"s-conditional-offer-gift","data-item-id":t.id},i("span",{class:"s-conditional-offer-gift-thumb"},t.imageUrl?i("img",{class:"s-conditional-offer-gift-image",src:t.imageUrl,alt:t.imageAlt||t.name,loading:"lazy",decoding:"async"}):i("i",{class:"sicon-gift","aria-hidden":"true"})),i("div",{class:"s-conditional-offer-gift-body"},i("span",{class:"s-conditional-offer-gift-name"},t.name||this.trans("free_gift")),i("span",{class:"s-conditional-offer-gift-prices"},i("span",{class:"s-conditional-offer-gift-free"},this.getFreeLabel()),null!==t.originalPrice?i("span",{class:"s-conditional-offer-gift-price",innerHTML:salla.money(t.originalPrice)}):null)))}getLoadingSkeletonView(){return i(e,{class:"s-conditional-offer-root"},i("div",{class:"s-conditional-offer-banner"},i("div",{class:"s-conditional-offer-lead"},i("salla-skeleton",{height:"24px",width:"80px"}),i("div",{class:"s-conditional-offer-skeleton-text"},i("salla-skeleton",{height:"12px",width:"35%"}),i("salla-skeleton",{height:"16px",width:"60%"})))))}render(){if(!this.canRender)return null;if(!this.hasCartItems())return null;if(this.isLoading)return this.getLoadingSkeletonView();if(!this.offer)return null;const t=this.getStages(),o=this.getProgress(t),r=this.getGuidanceMessage(t,o),n=this.trans("details_title"),s=this.gifts.length>0;return i(e,{class:"s-conditional-offer-root"},i("div",{class:"s-conditional-offer-banner"},i("div",{class:"s-conditional-offer-lead"},this.renderBadges(t,o),i("div",{class:"s-conditional-offer-text"},i("div",{class:"s-conditional-offer-heading",onMouseEnter:()=>this.isTooltipHovered=!0,onMouseLeave:()=>this.isTooltipHovered=!1},i("span",{class:"s-conditional-offer-name"},this.offer.title),i("span",{class:"s-conditional-offer-info",ref:t=>this.infoAnchorEl=t},i("button",{type:"button",class:"s-conditional-offer-info-trigger",ref:t=>this.infoTriggerEl=t,"aria-label":n,title:n,"aria-expanded":this.isTooltipOpen?"true":"false","aria-describedby":this.elementId("tooltip"),onClick:()=>this.toggleTooltip()},i(N,{class:"s-conditional-offer-info-icon"})),this.isTooltipOpen?this.renderTooltip(t,o):null)),o.allMet?i("div",{class:"s-conditional-offer-message",role:"status"},this.trans("congrats")):r?i("div",{class:"s-conditional-offer-message",innerHTML:r}):null)),s?this.renderGiftsToggle("inline"):null),s&&this.isGiftsOpen?this.renderGiftsCard():null,s?this.renderGiftsToggle("bar"):null)}get hostEl(){return o(this)}};B.style='/*!twlt*/:host{display:block}.s-conditional-offer-root{background-color:rgba(0, 137, 123, 0.06);background-color:color-mix(in srgb, var(--color-primary, #00897b) 7%, transparent)}.s-conditional-offer-badges::-webkit-scrollbar{height:3px}.s-conditional-offer-badges::-webkit-scrollbar-thumb{border-radius:9999px;background-color:rgba(0, 0, 0, 0.15)}.s-conditional-offer-badges::-webkit-scrollbar-track{background-color:transparent}.s-conditional-offer-tooltip{--s-conditional-offer-tooltip-shift:0px;--s-conditional-offer-tooltip-caret:0px;transform:translateX(calc(-50% + var(--s-conditional-offer-tooltip-shift)))}.s-conditional-offer-tooltip::before{content:"";position:absolute;bottom:100%;left:50%;transform:translateX(calc(-50% + var(--s-conditional-offer-tooltip-caret)));border:8px solid transparent;border-bottom-color:#fff}.s-conditional-offer-tier-icon-met,.s-conditional-offer-tier-icon-unmet{color:var(--color-primary-dark, #00695c);background-color:rgba(0, 137, 123, 0.12);background-color:color-mix(in srgb, var(--color-primary, #00897b) 14%, transparent)}.s-conditional-offer-tier:not(:last-child)::before{content:"";position:absolute;top:2.5rem;bottom:-1rem;inset-inline-start:1.125rem;width:1px;background-color:#d1d5db}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.block{display:block}.inline{display:inline}.flex{display:flex}.hidden{display:none}.w-6{width:1.5rem}.resize{resize:both}.gap-1{gap:0.25rem}.rounded{border-radius:var(--s-radius, 0.25rem)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.s-conditional-offer-root{margin-bottom:1.25rem;display:block;width:100%;min-width:0px;max-width:100%;border-radius:0.375rem;padding:0.75rem}@media (min-width: 768px){.s-conditional-offer-root{padding:1rem}}.s-conditional-offer-banner{display:flex;width:100%;min-width:0px;align-items:center;justify-content:space-between;gap:0.75rem}@media (min-width: 768px){.s-conditional-offer-banner{gap:1rem}}.s-conditional-offer-lead{display:flex;min-width:0px;flex:1 1 0%;align-items:center;gap:0.5rem}@media (min-width: 768px){.s-conditional-offer-lead{gap:0.75rem}}.s-conditional-offer-badges{display:flex;max-width:45%;flex-shrink:0;flex-wrap:nowrap;align-items:center;gap:0.25rem;overflow-x:auto;overscroll-behavior-x:contain;scroll-behavior:smooth;scrollbar-width:thin}.s-conditional-offer-badge{display:inline-flex;height:1.5rem;width:1.5rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;font-size:11px;line-height:1;--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.s-conditional-offer-badge-met{background-color:var(--color-primary)}.s-conditional-offer-badge-unmet{--tw-bg-opacity:1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.s-conditional-offer-badge-link{width:0.5rem;flex-shrink:0;border-top-width:1px}.s-conditional-offer-badge-link-met{border-color:var(--color-primary)}.s-conditional-offer-badge-link-unmet{border-style:dashed;--tw-border-opacity:1;border-color:rgb(82 82 82 / var(--tw-border-opacity, 1))}.s-conditional-offer-badge-icon{height:0.75rem;width:0.75rem;flex-shrink:0}.s-conditional-offer-text{display:flex;min-width:0px;flex-direction:column;gap:0.125rem;text-align:start}.s-conditional-offer-heading{display:flex;min-width:0px;align-items:center;gap:0.375rem}.s-conditional-offer-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:0.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.s-conditional-offer-info{position:relative;display:inline-flex;flex-shrink:0;align-items:center}.s-conditional-offer-info-trigger{display:inline-flex;height:1rem;width:1rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;--tw-text-opacity:1;color:rgb(115 115 115 / var(--tw-text-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.s-conditional-offer-info-trigger:hover{color:var(--color-primary-dark)}.s-conditional-offer-info-icon{height:0.875rem;width:0.875rem;flex-shrink:0}.s-conditional-offer-message{font-size:0.875rem;line-height:1.25rem;font-weight:700;color:var(--color-primary-dark)}@media (min-width: 768px){.s-conditional-offer-message{font-size:1rem;line-height:1.5rem}}.s-conditional-offer-toggle{align-items:center;justify-content:center;gap:0.375rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.s-conditional-offer-toggle:hover{color:var(--color-primary-dark)}.s-conditional-offer-toggle-inline{display:none;flex-shrink:0}@media (min-width: 768px){.s-conditional-offer-toggle-inline{display:inline-flex}}.s-conditional-offer-toggle-bar{margin-top:0.5rem;display:inline-flex;width:100%;border-radius:0.375rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:0.75rem;padding-right:0.75rem;padding-top:0.625rem;padding-bottom:0.625rem}@media (min-width: 768px){.s-conditional-offer-toggle-bar{display:none}}.s-conditional-offer-toggle-icon{font-size:1rem;line-height:1.5rem;line-height:1;transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.s-conditional-offer-toggle-icon-open{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.s-conditional-offer-panel{margin-top:0.75rem;width:100%;min-width:0px;border-radius:0.375rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:0.75rem}.s-conditional-offer-gifts-header{margin-bottom:0.75rem;display:flex;align-items:center;gap:0.5rem}.s-conditional-offer-gifts-icon{display:inline-flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;border-width:1px;border-color:var(--color-primary);font-size:1rem;line-height:1.5rem;line-height:1;color:var(--color-primary)}.s-conditional-offer-gifts-title{font-size:0.875rem;line-height:1.25rem;font-weight:700;color:var(--color-primary-dark)}.s-conditional-offer-gifts-list{margin:0px;display:flex;list-style-type:none;flex-direction:column;gap:0.5rem;padding:0px}.s-conditional-offer-gift{display:flex;align-items:center;gap:0.75rem;border-radius:0.375rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));padding:0.5rem}.s-conditional-offer-gift-thumb{display:inline-flex;height:3.5rem;width:3.5rem;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden;border-radius:0.375rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));font-size:1.25rem;line-height:1.75rem;--tw-text-opacity:1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.s-conditional-offer-gift-image{height:100%;width:100%;object-fit:contain}.s-conditional-offer-gift-body{display:flex;min-width:0px;flex:1 1 0%;flex-direction:column;gap:0.125rem;text-align:start}.s-conditional-offer-gift-name{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:0.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.s-conditional-offer-gift-prices{display:flex;align-items:center;gap:0.5rem;font-size:0.75rem;line-height:1rem}.s-conditional-offer-gift-free{font-weight:700;--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-conditional-offer-gift-price{--tw-text-opacity:1;color:rgb(115 115 115 / var(--tw-text-opacity, 1));text-decoration-line:line-through}.s-conditional-offer-tooltip{position:absolute;top:calc(100% + 0.75rem);left:50%;z-index:10;width:min(22rem, calc(100vw - 2rem));border-radius:0.5rem;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1rem;text-align:start;--tw-shadow:5px 10px 30px #2B2D340D;--tw-shadow-colored:5px 10px 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-conditional-offer-tooltip-title{font-size:0.875rem;line-height:1.25rem;font-weight:700;color:var(--color-primary-dark)}.s-conditional-offer-tooltip-description{margin-top:0.25rem;font-size:0.75rem;line-height:1rem;line-height:1.625;--tw-text-opacity:1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.s-conditional-offer-tooltip-list{margin:0px;margin-top:0.75rem;display:flex;list-style-type:none;flex-direction:column;gap:1rem;padding:0px}.s-conditional-offer-tier{position:relative;display:flex;align-items:flex-start;gap:0.75rem}.s-conditional-offer-tier-icon{position:relative;display:inline-flex;height:2.25rem;width:2.25rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;font-size:1rem;line-height:1.5rem;line-height:1}.s-conditional-offer-tier-icon-unmet{color:var(--color-primary-dark)}.s-conditional-offer-tier-status{position:absolute;bottom:-0.125rem;display:inline-flex;height:1rem;width:1rem;align-items:center;justify-content:center;border-radius:9999px;border-width:2px;--tw-border-opacity:1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));inset-inline-start:-2px}.s-conditional-offer-tier-status-met{color:var(--color-primary-dark)}.s-conditional-offer-tier-status-unmet{--tw-text-opacity:1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.s-conditional-offer-tier-status-check{height:0.75rem;width:0.75rem;flex-shrink:0}.s-conditional-offer-tier-status-lock{height:0.625rem;width:0.625rem;flex-shrink:0}.s-conditional-offer-tier-body{display:flex;min-width:0px;flex-direction:column;gap:0.125rem}.s-conditional-offer-tier-title{font-size:0.75rem;line-height:1rem;font-weight:700;color:var(--color-primary-dark)}.s-conditional-offer-tier-text{font-size:0.75rem;line-height:1rem;line-height:1.625;--tw-text-opacity:1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.s-conditional-offer-tier-text-met{text-decoration-line:line-through}.s-conditional-offer-skeleton-text{display:flex;min-width:0px;flex:1 1 0%;flex-direction:column;gap:0.375rem}';export{B as salla_conditional_offer}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Crafted with ❤ by Salla
|
|
3
|
-
*/
|
|
4
|
-
import{r,h as t,H as a}from"./p-CtoXzf1y.js";const o=class{constructor(t){r(this,t)}refreshSummary(){this.amounts?this.setSummaryFromAmounts(this.amounts):this.order?this.setSummaryFromOrder(this.order):this.summary=void 0}handleAmountsChange(){this.refreshSummary()}handleOrderChange(){this.refreshSummary()}async componentWillLoad(){await Salla.onReady(),this.refreshSummary()}normalizeAmounts(r){const t="string"==typeof r?JSON.parse(r):r;return{sub_total:t.sub_total,total:t.total,shipping_cost:t.shipping_cost,cod_cost:t.cash_on_delivery,paid_amount:t.paid_amount,remaining_amount:t.remaining_amount,refund_amount:t.refund_amount,options:t.options,options_total:t.options_total,tax:t.tax?{percent:"string"==typeof t.tax.percent?parseFloat(t.tax.percent):t.tax.percent,amount:t.tax.amount}:void 0,discounts:t.discounts?.map((r=>({name:r.title,discount:"string"==typeof r.discount?parseFloat(r.discount):r.discount})))}}setSummaryFromAmounts(r){try{this.summary=this.normalizeAmounts(r)}catch(r){salla.logger.error("Failed to parse amounts data",r),this.summary=void 0}}setSummaryFromOrder(r){try{const t="string"==typeof r?JSON.parse(r):r;this.summary=t}catch(r){salla.logger.error("Failed to parse order summary data",r),this.summary=void 0}}renderTotalRow(r,a,o,s,e){return t("div",{class:"s-order-totals-card-row"},t("div",{class:"s-order-totals-card-row-inner"},t("dt",{class:o||"s-order-totals-card-label"},r),t("dd",{class:s||"s-order-totals-card-value"},t(e?"b":"span",{innerHTML:salla.money(a)}))))}renderDiscountRow(){return this.summary?.discounts?.map((r=>t("div",{class:"s-order-totals-card-row",key:r.name},t("div",{class:"s-order-totals-card-row-inner"},t("dt",{class:"s-order-totals-card-discount"},r.name),t("dd",{class:"s-order-totals-card-value"},r.discount)))))}renderRefundRow(r){return t("div",{class:"s-order-totals-card-row"},t("div",{class:"s-order-totals-card-row-inner"},t("dt",{class:"s-order-totals-card-refund-label"},t("span",{class:"s-order-totals-card-refund-icon"},t("i",{class:"sicon-info"})),t("span",null," ",salla.lang.get("pages.orders.refund_amount"))),t("dd",{class:"s-order-totals-card-refund-value"},t("b",{innerHTML:salla.money(r)}))))}toAmount(r){return("number"==typeof r?r:r?.amount)||0}render(){if(!this.summary)return t(a,{class:"s-order-totals-card-wrapper"});const{summary:r}=this,o=!!Array.isArray(r.options)&&r.options.length>0,s=this.toAmount(r.refund_amount),e=r.has_remaining_amount??this.toAmount(r.remaining_amount)>0;return t(a,{class:"s-order-totals-card-wrapper"},t("div",{class:"s-order-totals-card-panel"},t("h2",{id:"summary-heading",class:"s-order-totals-card-heading"},salla.lang.get("pages.orders.summary")),t("div",{class:"s-order-totals-card-flow"},t("dl",{class:"s-order-totals-card-list"},this.renderTotalRow(salla.lang.get("pages.cart.items_total"),r.sub_total),o&&this.renderTotalRow(salla.lang.get("pages.cart.order_options_total"),r.options_total),r.discounts&&this.renderDiscountRow(),r.cod_cost&&this.renderTotalRow(salla.lang.get("pages.orders.cod_cost"),r.cod_cost,""),r.shipping_cost&&this.renderTotalRow(salla.lang.get("pages.orders.shipping_cost"),r.shipping_cost,"s-order-totals-card-shipping"),r.tax&&this.renderTotalRow(`${salla.lang.get("pages.cart.tax")} ${r.tax.percent}%`,r.tax.amount,""),e&&null!=r.paid_amount?this.renderTotalRow(salla.lang.get("pages.orders.partially_paid"),r.paid_amount,""):null,e?this.renderTotalRow(salla.lang.get("pages.orders.remaining_amount"),r.remaining_amount,""):null,t("div",{class:"s-order-totals-card-total"},this.renderTotalRow(salla.lang.get("pages.orders.final_total"),r.total,"s-order-totals-card-total-label","s-order-totals-card-total-value",!0)),s>0?t("div",{class:"s-order-totals-card-refund"},this.renderRefundRow(r.refund_amount)):null))))}static get watchers(){return{amounts:["handleAmountsChange"],order:["handleOrderChange"]}}};o.style='/*!twlt*/:host{display:block}.s-order-totals-card-wrapper{display:block}.s-order-totals-card-panel{border-radius:0.375rem;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1.5rem;padding-right:1.5rem}.s-order-totals-card-heading{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.s-order-totals-card-flow{display:flow-root}.s-order-totals-card-list{font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-order-totals-card-list>.s-order-totals-card-row{border-bottom-width:1px}.s-order-totals-card-list>.s-order-totals-card-row:last-child{border-bottom-width:0px}.s-order-totals-card-row{display:block}.s-order-totals-card-row-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1.25rem;padding-bottom:1.25rem}.s-order-totals-card-label{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-order-totals-card-value{font-weight:500}.s-order-totals-card-discount{--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-order-totals-card-tax-value{font-weight:500;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-order-totals-card-total{margin-left:-1.5rem;margin-right:-1.5rem;border-radius:0.375rem;background-color:var(--color-border);padding-left:1.5rem;padding-right:1.5rem}.s-order-totals-card-total-label{font-size:1rem;line-height:1.5rem;font-weight:500}.s-order-totals-card-total-value{font-size:1rem;line-height:1.5rem;font-weight:500}.s-order-totals-card-refund{margin-left:-1.5rem;margin-right:-1.5rem;border-left-width:4px;--tw-border-opacity:1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1));padding-left:1.5rem;padding-right:1.5rem}.s-order-totals-card-refund:where([dir="rtl"],[dir="rtl"] *){border-left-width:0px;border-right-width:4px}.s-order-totals-card-refund-label{display:flex;align-items:center;gap:0.5rem;--tw-text-opacity:1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.s-order-totals-card-refund-icon{font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-order-totals-card-refund-value{font-weight:500;--tw-text-opacity:1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}';export{o as salla_order_totals_card}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Crafted with ❤ by Salla
|
|
3
|
-
*/
|
|
4
|
-
import{r as i,h as s,H as t,a}from"./p-CtoXzf1y.js";import{g as e,a as l,b as r,i as n}from"./p-CnTwkF6y.js";const h=class{constructor(s){i(this,s),this.fromProductCard=!1,this.showFreeShipping=!1,this.isFree=!1,this.timerHidden=!1,this.label=""}disconnectedCallback(){this.unsubscribe?.()}refreshTimer(){this.timerHidden=!1===e()?.visible}async componentWillLoad(){try{await salla.onReady(),await salla.lang.onLoaded();const i="en"===salla.lang.getLocale?.()?"Free shipping":"شحن مجاني";l()&&(this.unsubscribe=r((()=>this.refreshTimer()))),this.refreshTimer(),this.label=salla.lang.getWithDefault?.("pages.products.free_shipping",i)||i,this.fromProductCard?this.isFree=this.showFreeShipping:this.productId&&(this.isFree=await n(this.productId))}catch(i){salla?.logger?.warn?.("salla-free-shipping-tag: init failed",i)}}render(){return!this.isFree||this.timerHidden?null:s(t,null,s("div",{class:"s-free-shipping-tag"},s("svg",{viewBox:"0 0 24 24","aria-hidden":"true"},s("path",{d:"M3 6.5h11v9H3zM14 9.5h3.6l2.9 3.2v2.8H14"}),s("circle",{cx:"7.5",cy:"17",r:"1.8"}),s("circle",{cx:"17",cy:"17",r:"1.8"})),s("span",{class:"s-free-shipping-tag-label"},this.label)))}get host(){return a(this)}};h.style="/*!twlt*/salla-free-shipping-tag{display:block}.s-free-shipping-tag{display:inline-flex;align-items:center;gap:6px;margin-block-start:0.5rem;margin-bottom:1.25rem;padding:4px 10px;border-radius:8px;font-size:13px;line-height:1.4;color:#7a4b0c;background:rgba(245, 158, 11, 0.14)}.s-free-shipping-tag svg{inline-size:16px;block-size:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.visible{visibility:visible}.hidden{display:none}";export{h as salla_free_shipping_tag}
|