FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
surecart
/
packages
/
blocks-next
/
build
/
scripts
/
order-bumps
Edit File: index.js
import*as e from"@wordpress/interactivity";var t,r,n={d:function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},o=(t={getContext:function(){return e.getContext},getElement:function(){return e.getElement},store:function(){return e.store}},r={},n.d(r,t),r);const{__,sprintf:u}=wp.i18n,{state:a,actions:c}=(0,o.store)("surecart/checkout"),s=e=>(a?.checkout?.line_items?.data||[]).some((t=>t.bump===e?.id));let l=null;const{state:i,actions:d}=(0,o.store)("surecart/order-bumps",{state:{currentIndex:0,get orderBumps(){const e=(0,o.getContext)(),t=e?.hideAddedItems??!0,r=(a?.checkout?.recommended_bumps?.data||[]).filter((e=>{const r=e?.price?.product;return!(r?.variants?.pagination?.count||t&&s(e))}));return null!==l&&l!==r.length&&(i.currentIndex=0,requestAnimationFrame((()=>{requestAnimationFrame((()=>{document.querySelector(".wp-block-surecart-cart-order-bump-template")?.scrollTo({left:0,behavior:"instant"})}))}))),l=r.length,r},get hasOrderBumps(){return i.orderBumps.length>0},get hasMultipleBumps(){return i.orderBumps.length>1},get hasPreviousPage(){return i.currentIndex>0},get hasNextPage(){return i.currentIndex<i.orderBumps.length-1},get showPagination(){return i.orderBumps.length>1},get bumpHasDiscount(){const{bump:e}=(0,o.getContext)();return e?.percent_off>0||e?.amount_off>0},get bumpDiscountText(){const{bump:e}=(0,o.getContext)();return e?.percent_off?`-${e.percent_off}%`:e?.amount_off?`-${e.amount_off_display_amount}`:""},get isBumpInCart(){const{bump:e}=(0,o.getContext)();return s(e)},get bumpImage(){const{bump:e}=(0,o.getContext)();return e?.price?.product?.line_item_image||null},get bumpName(){const{bump:e}=(0,o.getContext)();return e?.name||e?.price?.product?.name||""},get bumpCta(){const{bump:e}=(0,o.getContext)();return e?.metadata?.cta||""},get orderBumpsListAriaLabel(){return i.hasMultipleBumps?__("Order bumps carousel. Use left and right arrow keys to navigate.","surecart"):__("Order bump","surecart")},get addButtonAriaLabel(){const{bump:e}=(0,o.getContext)(),t=e?.name||e?.price?.product?.name||"";return i.isBumpInCart?u(__("%s added to cart","surecart"),t):u(__("Add %s to cart","surecart"),t); // translators: %s: product name }},actions:{handleAddButtonKeydown:function*(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),yield*d.addBumpToCart(e))},previousPage:function*(e){e?.preventDefault(),i.hasPreviousPage&&(i.currentIndex--,d.scrollToCurrentItem(e))},nextPage:function*(e){e?.preventDefault(),i.hasNextPage&&(i.currentIndex++,d.scrollToCurrentItem(e))},handlePreviousKeydown(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d.previousPage(e))},handleNextKeydown(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d.nextPage(e))},handleCarouselKeydown(e){"ArrowLeft"!==e.key&&"ArrowRight"!==e.key||(e.preventDefault(),"ArrowLeft"===e.key?d.previousPage(e):"ArrowRight"===e.key&&d.nextPage(e))},addBumpToCart:function*(e){e?.preventDefault();const t=(0,o.getContext)(),{bump:r}=t,n=t.mode||(a?.checkout?.live_mode?"live":"test"),u=t.formId;if(!r||i.isBumpInCart)return;const{addCheckoutLineItem:s}=yield import("@surecart/checkout-service"),{speak:l}=yield import("@wordpress/a11y");try{a.loading=!0;const e=yield*s({price:r?.price?.id,quantity:1,bump:r?.id});e&&(a.checkout=e,n&&u&&c.setCheckout(e,n,u),l(__("Item added to cart.","surecart"),"assertive"))}catch(e){console.error(e),a.error=e}finally{a.loading=!1}},scrollToCurrentItem(e){const t=e?.target;if(!t)return;const r=t.closest(".wp-block-surecart-cart-order-bumps");r&&d.scrollCarouselToIndex(r,i.currentIndex)},scrollCarouselToIndex(e,t){const r=e?.querySelector(".wp-block-surecart-cart-order-bump-template"),n=r?.querySelectorAll(".sc-cart-order-bump-item");n&&n[t]&&n[t].scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}},callbacks:{init(){i.currentIndex=0},onCarouselScroll(){const{ref:e}=(0,o.getElement)();if(!e)return;const t=e.querySelectorAll(".sc-cart-order-bump-item");if(!t.length)return;const r=e.scrollLeft,n=t[0].offsetWidth,u=parseFloat(getComputedStyle(e).gap)||0,a=Math.round(r/(n+u)),c=Math.max(0,Math.min(a,t.length-1));i.currentIndex!==c&&(i.currentIndex=c)}}});
Save
Back