index.js
10 lines
| 1 | import*as t from"@wordpress/interactivity";var e,n,o={d:function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}},r=(e={getContext:function(){return t.getContext},getElement:function(){return t.getElement},store:function(){return t.store},withSyncEvent:function(){return t.withSyncEvent}},n={},o.d(n,e),n);const{__,sprintf:i,_n}=wp.i18n,c="surecart-local-storage";let u=null;const s=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"live",e=arguments.length>1?arguments[1]:void 0;const n=localStorage.getItem(c),o={live:{},test:{}},r=(JSON.parse(n)||o)[t];return r?.[e]||o},a=t=>"keydown"===t.type&&"Enter"!==t.key&&" "!==t.key,l=t=>{const e=document.querySelector?.(t)||null;e&&setTimeout((()=>{e.focus()}),0)},{state:m,actions:d}=(0,r.store)("surecart/checkout",{state:{loading:!1,error:null,promotionCode:"",checkout:{},oldCheckout:{},get itemsCount(){return m.cartLineItems.length},get hasItems(){return m.itemsCount>0},get discountIsRedeemable(){return"redeemable"===m?.checkout?.discount?.redeemable_status},get lineItemHasScratchAmount(){const{line_item:t}=(0,r.getContext)();return!(t?.ad_hoc_amount||!t?.scratch_display_amount)&&t.scratch_amount!==t.subtotal_amount},get lineItemNote(){const{line_item:t}=(0,r.getContext)();return t?.display_note||""},get isDiscountApplied(){return!!m?.checkout?.discount?.promotion?.code},get hasDiscountAmount(){return!!m?.checkout?.discount_amount},get hasSubtotalScratchAmount(){return!!m?.checkout?.has_subtotal_scratch_amount},get subtotalScratchAriaLabel(){const t=m?.checkout?.subtotal_scratch_display_amount;return t?`${__("Original price:","surecart")} ${t}`:""},get checkoutLineItems(){return(m?.checkout?.line_items?.data||[]).sort(((t,e)=>{const n=t?.price?.current_swap||t?.swap?1:0;return(e?.price?.current_swap||e?.swap?1:0)-n}))},get cartLineItems(){return m.checkoutLineItems.filter((t=>!t.component_line_item))},get isBundleParent(){const{line_item:t}=(0,r.getContext)();return!t?.component_line_item&&!!t?.price?.product?.bundle},get bundleComponents(){const t=(0,r.getContext)(),{line_item:e}=t;if(!e?.price?.product?.bundle)return[];const n=[...e?.component_line_items?.data||[]].sort(((t,e)=>(t?.position??0)-(e?.position??0)));return!0!==t?.showBundleVariantsOnly?n:n.filter((t=>{const e=(t?.variant_display_options||"").trim(),n=(t?.variant_options||[]).filter(Boolean);return!!e||n.length>0}))},get bundleComponentsCount(){return m.bundleComponents.length},get lineItemBundleCount(){if(!m.isBundleParent)return"";const t=m.bundleComponentsCount;return t>0?i("(%d)",t):""},get hasBundleComponents(){return m.bundleComponentsCount>0},get hasLineItemDetails(){return!!m.lineItemVariant||m.hasBundleComponents},get lineItemBundleComponentName(){const{bundle_component:t}=(0,r.getContext)();return t?.price?.product?.name||""},get lineItemBundleComponentVariant(){const t=(0,r.getContext)(),{bundle_component:e}=t;if(!e)return"";const n=(t?.bundleSeparator||"·").trim()||"·",o=(e?.variant_options||[]).filter(Boolean),i=o.length?o.join(` ${n} `):(e?.variant_display_options||"").trim();return i?`${n} ${i}`:""},get lineItemBundleComponentQty(){const{line_item:t,bundle_component:e}=(0,r.getContext)(),n=Math.max(Number(e?.quantity)||1,1),o=Math.max(Number(t?.quantity)||1,1),i=Math.max(Math.round(n/o),1);return i>1?`${i} ×`:""},get bundleComponentsLabel(){const t=m.bundleComponentsCount;return t>0?i(_n("Includes %d item","Includes %d items",t,"surecart"),t):""},get detailsToggleLabel(){const t=(0,r.getContext)("surecart/line-item-details");if(t?.detailsExpanded)return __("Show less","surecart");const e=Math.max(Number(t?.hiddenCount)||0,0);return e>0?i(/* translators: %d: number of hidden bundle items */ |
| 2 | __("+%d more","surecart"),e):__("Show more","surecart")},get lineItemFees(){const{line_item:t}=(0,r.getContext)();return t?.fees?.data||[]},get isEditable(){const{line_item:t}=(0,r.getContext)();return!t?.price?.ad_hoc&&!t?.bump_amount},get hasSubscription(){return(m.checkout?.line_items?.data||[]).some((t=>"month"===t?.price?.recurring_interval&&!!t?.price?.recurring_interval&&!t?.price?.recurring_period_count))},get hasRecurring(){return m?.checkout?.line_items?.data?.some((t=>t?.price?.recurring_interval))},get swap(){const{line_item:t}=(0,r.getContext)();return t?.swap||t?.price?.current_swap},get swapDisplayAmount(){return m?.swap?.swap_price?.display_amount},get swapIntervalText(){return m?.swap?.swap_price?.short_interval_text},get swapIntervalCountText(){return m?.swap?.swap_price?.short_interval_count_text},get errorTitle(){return m.error?.title||m.error||""},get errorMessage(){return m.error?.message||""},get lineItemPermalink(){const{line_item:t}=(0,r.getContext)(),e=t?.price?.product;return e?.is_published?e?.permalink:null},get additionalErrors(){return(m?.error?.additional_errors||[]).map((t=>t.message))},get showCartMenuIcon(){const{cartMenuAlwaysShown:t}=(0,r.getContext)();return m.itemsCount>0||t},get itemsCountAriaLabel(){const t=m.itemsCount;return i(_n(/* translators: %d: number of items in the cart */ |
| 3 | "Total of %d item in your cart","Total of %d items in your cart",t,"surecart"),t)},get lineItemAriaLabel(){const{line_item:t}=(0,r.getContext)("surecart/checkout");return i(__("Cart item: %s. Quantity %d. Total price %s.","surecart"),t?.price?.product?.name,t?.quantity,t?.subtotal_display_amount)},get removeItemAriaLabel(){const{line_item:t}=(0,r.getContext)("surecart/checkout");return i(__("Remove %s from your cart.","surecart"),t?.price?.product?.name)},get increaseQuantityAriaLabel(){const{line_item:t}=(0,r.getContext)("surecart/checkout");return i(/* translators: %s: product name */ |
| 4 | __("Increase quantity for %s.","surecart"),t?.price?.product?.name)},get decreaseQuantityAriaLabel(){const{line_item:t}=(0,r.getContext)("surecart/checkout");return i(/* translators: %s: product name */ |
| 5 | __("Decrease quantity for %s.","surecart"),t?.price?.product?.name)},get quantityInputAriaLabel(){const{line_item:t}=(0,r.getContext)("surecart/checkout");return i(/* translators: %s: product name */ |
| 6 | __("Quantity for %s.","surecart"),t?.price?.product?.name)},get lineItemVariant(){const{line_item:t}=(0,r.getContext)();return(t?.variant_options||[]).filter(Boolean).join(" / ")||null},get hasLineItemVariantContent(){return!!m.lineItemVariant||m.hasBundleComponents},get lineItemPriceName(){const{line_item:t}=(0,r.getContext)();return t?.price?.name??""},get showLineItemsCount(){const{line_item:t}=(0,r.getContext)();return t?.quantity>1},get isQuantityDisabled(){return!!m.loading},get isQuantityIncreaseDisabled(){const{line_item:t}=(0,r.getContext)("surecart/checkout");return m.isQuantityDisabled||t?.max&&t?.quantity>=t?.max},get isQuantityDecreaseDisabled(){const{line_item:t}=(0,r.getContext)("surecart/checkout");return m.isQuantityDisabled||t?.quantity<=(t?.min||1)}},callbacks:{getState(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return null===t?(0,r.getContext)():(0,r.getContext)()?.[t]||!1},init(){const{mode:t,formId:e}=(0,r.getContext)(),n=s(t,e);d.setCheckout(n,t,e)},syncTabs(t){if(t?.key!==c)return;const{mode:e,formId:n}=(0,r.getContext)(),o=s(e,n);d.setCheckout(o,e,n)},onChangeCheckout:function*(){const{checkout:t,oldCheckout:e}=m;if(JSON.stringify(t?.line_items?.data||[])===JSON.stringify(e?.line_items?.data||[]))return;const{processCheckoutEvents:n}=yield import("@surecart/checkout-events");n(t,e)}},actions:{fetch:function*(){const{mode:t,formId:e}=(0,r.getContext)()??{};if(!m.checkout?.id||!t||!e)return;const{fetchCheckout:n}=yield import("@surecart/checkout-service");try{const o=yield*n({id:m.checkout?.id});d.setCheckout(o,t,e)}catch(t){console.error(t),"checkout.not_found"===t?.code&&d.clearCheckouts()}},toggleDiscountInput:(0,r.withSyncEvent)((function(t){if(a(t))return!0;t.preventDefault();const e=(0,r.getContext)();e.discountInputOpen=!e.discountInputOpen;const{ref:n}=(0,r.getElement)(),o=n?.parentElement?.querySelector?.("input");o&&setTimeout((()=>o.focus()),0)})),toggleSwap:function*(){const{line_item:t,mode:e,formId:n}=(0,r.getContext)(),{toggleSwap:o}=yield import("@surecart/checkout-service"),i=yield*o({id:t?.id,action:t?.swap?"unswap":"swap"});d.setCheckout(i,e,n)},setPromotionCode(t){m.promotionCode=t?.target?.value||""},maybeApplyDiscountOnKeyChange:(0,r.withSyncEvent)((function(t){if("Escape"!==t.key&&"Enter"!==t.key||(t.preventDefault(),t.stopPropagation()),"Escape"===t.key)return(0,r.getContext)().discountInputOpen=!1,void l("#sc-coupon-trigger");"Enter"===t.key&&d.applyDiscount(t),d.setPromotionCode(t)})),applyDiscount:(0,r.withSyncEvent)((function*(t){if(t.preventDefault(),t.stopPropagation(),!m.promotionCode)return;const{mode:e,formId:n}=(0,r.getContext)(),{speak:o}=yield import("@wordpress/a11y");o(__("Applying promotion code.","surecart"),"assertive");const{handleCouponApply:c}=yield import("@surecart/checkout-service"),u=yield*c(m.promotionCode);u&&(o(i(/* translators: %s: promotion code */ |
| 7 | __("Promotion code %s has been applied.","surecart"),m.promotionCode),"assertive"),m.error="",d.setCheckout(u,e,n),d.announceLatestCheckout(),l("#sc-coupon-remove-discount"))})),removeDiscount:function*(){const t=(0,r.getContext)(),{mode:e,formId:n}=t,{speak:o}=yield import("@wordpress/a11y");o(__("Removing promotion code.","surecart"),"assertive");const{handleCouponApply:i}=yield import("@surecart/checkout-service"),c=yield*i(null);c&&(m.promotionCode="",t.discountInputOpen=!1,d.setCheckout(c,e,n),o(__("Promotion code has been removed.","surecart"),"assertive"),d.announceLatestCheckout(),l("#sc-coupon-trigger"))},closeCouponOnClickOutside:t=>{const e=(0,r.getContext)();t&&t.target.closest(".sc-coupon-form")||e.discountInputOpen&&(e.discountInputOpen=!1)},clearCheckouts(){let t=JSON.parse(localStorage.getItem(c));t={live:{},test:{}},localStorage.setItem(c,JSON.stringify(t)),m.checkout={}},setCheckout(t,e,n){let o=s(e,n);if(!o)return;m.oldCheckout=o;let r=JSON.parse(localStorage.getItem(c));r||(r={live:{},test:{}}),e&&t?.live_mode===("live"===e)&&(r={...r,[e]:{...r[e],[n]:t}},localStorage.setItem(c,JSON.stringify(r)),m.checkout=s(e,n))},onQuantityIncrease:function*(t){if(a(t))return!0;const{line_item:e}=(0,r.getContext)(),n=e?.quantity+1,{speak:o}=yield import("@wordpress/a11y");o(__("Updating quantity.","surecart"),"assertive"),yield d.updateLineItem({quantity:n}),o(i(/* translators: %d: quantity */ |
| 8 | __("Quantity increased to %d.","surecart"),n),"assertive"),d.announceLatestCheckout()},onQuantityDecrease:function*(t){if(a(t))return!0;const{line_item:e}=(0,r.getContext)(),n=e?.quantity-1;if(n<1)return;const{speak:o}=yield import("@wordpress/a11y");o(__("Updating quantity.","surecart"),"assertive"),yield d.updateLineItem({quantity:n}),o(i(/* translators: %d: quantity */ |
| 9 | __("Quantity decreased to %d.","surecart"),n),"assertive"),d.announceLatestCheckout()},onQuantityChange:function*(t){const e=parseInt(t.target.value||"");yield d.updateLineItem({quantity:e});const{speak:n}=yield import("@wordpress/a11y");n(i(/* translators: %d: quantity */ |
| 10 | __("Quantity changed to %d.","surecart"),e),"assertive"),d.announceLatestCheckout()},updateLineItem:function*(t){m.loading=!0;const{line_item:e,mode:n,formId:o}=(0,r.getContext)(),{updateCheckoutLineItem:i}=yield import("@surecart/checkout-service"),c=yield*i({id:e?.id,data:t});d.setCheckout(c,n,o),m.loading=!1},removeLineItem:(0,r.withSyncEvent)((function*(t){if(a(t))return!0;t.preventDefault(),m.loading=!0;const{line_item:e,mode:n,formId:o}=(0,r.getContext)(),c=e?.price?.product?.name||__("item","surecart"),{speak:u}=yield import("@wordpress/a11y");u(i(__("Removing %s from your cart.","surecart"),c),"assertive");const{removeCheckoutLineItem:s}=yield import("@surecart/checkout-service"),l=yield*s(e?.id);d.setCheckout(l,n,o),m.loading=!1,u(i(__("Removed %s from your cart.","surecart"),c),"assertive"),d.announceLatestCheckout(),requestAnimationFrame((()=>{const t=document.querySelector(".wp-block-surecart-cart-line-item-remove, .sc-product-line-item__remove-button")||document.querySelector(".wp-block-surecart-cart-close-button");t?.focus()}))})),updateCheckout(t){const{checkout:e,mode:n,formId:o}=t.detail;d.setCheckout(e,n,o)},announceLatestCheckout:function*(){const{speak:t}=yield import("@wordpress/a11y");clearTimeout(u),u=setTimeout((()=>{t(i(__("Checkout updated. The subtotal is %1$s.","surecart"),m?.checkout?.subtotal_display_amount),"polite")}),1e3)}}});addEventListener("scCheckoutUpdated",(t=>{document.querySelector("sc-checkout")||d.updateCheckout(t)})); |