{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/F1msxdpcAW9cfgKrg8ff/Okv3z4m5yTtyAuCFQBFa/CartOverrides.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import{useState,useEffect}from\"react\";import{createStore}from\"https://framerusercontent.com/modules/NF27GMRnRQIwaQZ2G9YY/yEILKTPL9l4PImY26MTI/CreateStore.js\";import{formatPrice,useLocale}from\"https://framerusercontent.com/modules/RRKeJWRObO6zvJYvvGR6/P2XL2LCYFC3BKPjCYZhu/Helpers.js\";import{isBrowser}from\"framer\";// DIFFERENT IMPLEMENTATION IDEA\n// Each product has a name, price, and maybe a Q limit (in the CMS? in an external file?)\n// The basket can store an array of product names and quantity values\n// Values can be calculated dynamically for the basket: subtotal, sales tax, shipping, total due\nconst PRICES={essentialCardMachine:179,proCardMachine:89};const MAX_PRODUCT_QTY=4;export const useCartQuantities=createStore({essentialCardMachine:0,proCardMachine:0},{localStorageKey:\"cartContents\"});export const useCartValues=()=>{const[cartQuantities,setCartQuantities]=useCartQuantities();const totalCartQuantity=Number(Object.values(cartQuantities).reduce((acc,key)=>acc+key,0));const subTotal=Object.keys(cartQuantities).reduce((acc,key)=>acc+cartQuantities[key]*PRICES[key],0);const shipping=0;const salesTax=(subTotal+shipping)*.2;const totalDue=subTotal+shipping+salesTax;return{totalCartQuantity,subTotal,shipping,salesTax,totalDue};};export function withQuantity(Component){return props=>{const[cartQuantities,setCartQuantities]=useCartQuantities();const name=props.name||props[\"data-framer-name\"];return /*#__PURE__*/_jsx(Component,{text:String(cartQuantities[name]??0),...props});};}export function withChangeQuantity(Component){return props=>{const[cartQuantities,setCartQuantities]=useCartQuantities();const{totalCartQuantity}=useCartValues();const name=props.name||props[\"data-framer-name\"];const{command,product}=findProductCommand(name)||{};const productQuantity=cartQuantities[product]||0;const handleClick=()=>{if(!command||!product)return null;if(command===\"Increment\"){if(totalCartQuantity<MAX_PRODUCT_QTY){setCartQuantities({...cartQuantities,[product]:productQuantity+1});}}if(command===\"Decrement\"){if(productQuantity>0){setCartQuantities({...cartQuantities,[product]:productQuantity-1});}}};return /*#__PURE__*/_jsx(Component,{onClick:handleClick,...props});};}export function withTotalCartQuantity(Component){return props=>{const{totalCartQuantity}=useCartValues();console.log(\"totalCartQuantity\",totalCartQuantity);return /*#__PURE__*/_jsx(Component,{text:String(totalCartQuantity),...props});};}export function withProductSubTotal(Component){return props=>{const[cartQuantities,setCartQuantities]=useCartQuantities();const product=props.name||props[\"data-framer-name\"];const quantity=cartQuantities[product];const subTotal=quantity*PRICES[product];return /*#__PURE__*/_jsx(Component,{text:formatPrice(subTotal,\"GB\"),...props});};}export function withSubTotal(Component){return props=>{const{subTotal}=useCartValues();return /*#__PURE__*/_jsx(Component,{text:formatPrice(subTotal,\"GB\"),...props});};}export function withSalesTax(Component){return props=>{const{salesTax}=useCartValues();return /*#__PURE__*/_jsx(Component,{text:formatPrice(salesTax,\"GB\"),...props});};}export function withTotalDue(Component){return props=>{const{totalDue}=useCartValues();return /*#__PURE__*/_jsx(Component,{text:formatPrice(totalDue,\"GB\"),...props});};}export function withAddToCart(Component){return props=>{const[cartQuantities,setCartQuantities]=useCartQuantities();const{totalCartQuantity}=useCartValues();const[variant,setVariant]=useState(totalCartQuantity<MAX_PRODUCT_QTY?\"Enabled\":\"Disabled\");useEffect(()=>{setVariant(totalCartQuantity<MAX_PRODUCT_QTY?\"Enabled\":\"Disabled\");},[totalCartQuantity]);const handleSubmit=e=>{e.preventDefault();if(totalCartQuantity>=MAX_PRODUCT_QTY)console.error(\"The cart is already at its max size\");const formData=new FormData(e.target);const product=String(formData.get(\"product\"));const additionalQuantity=Number(formData.get(\"quantity\"));console.log(\"additionalQuantity\",additionalQuantity);const newProductQuantity=Math.min((cartQuantities[product]??0)+additionalQuantity,MAX_PRODUCT_QTY);if(typeof additionalQuantity!==\"number\")console.error(\"Quantity must be a number\");if(!Object.keys(cartQuantities).includes(product))console.error(\"Product name is not recognised\");if(additionalQuantity>MAX_PRODUCT_QTY)console.error(\"Quantity is too large\");setCartQuantities({...cartQuantities,[product]:newProductQuantity});if(isBrowser&&globalThis.dataLayer){window.dataLayer.push({event:\"add_to_cart\"});}e.target.querySelector(\"a\").click();};return /*#__PURE__*/_jsx(\"form\",{onSubmit:e=>handleSubmit(e),children:/*#__PURE__*/_jsx(\"fieldset\",{disabled:variant===\"Disabled\",style:{display:\"flex\",flexDirection:\"column\",width:\"100%\",margin:0,padding:0,border:\"none\",outline:\"none\"},children:/*#__PURE__*/_jsx(Component,{...props,variant:variant})})});};}export function withCartVisibility(Component){return props=>{const[cartQuantities,setCartQuantities]=useCartQuantities();const product=props.name||props[\"data-framer-name\"];if(cartQuantities[product]>0){return /*#__PURE__*/_jsx(Component,{...props});}if(cartQuantities.proCardMachine>0&&cartQuantities.essentialCardMachine>0&&product===\"both\"){return /*#__PURE__*/_jsx(Component,{...props});}if(Object.values(cartQuantities).filter(value=>value>0).length>0){if(product===\"anything\"){return /*#__PURE__*/_jsx(Component,{...props});}}if(Object.values(cartQuantities).filter(value=>value>0).length===0){if(product===\"nothing\"){return /*#__PURE__*/_jsx(Component,{...props});}}return null;};}export function withMaxQtyWarning(Component){return props=>{const{totalCartQuantity}=useCartValues();if(totalCartQuantity===MAX_PRODUCT_QTY){return /*#__PURE__*/_jsx(Component,{...props});}return null;};}export function withPrimaryCTA(Component){return props=>{const{totalCartQuantity}=useCartValues();const locale=useLocale();return /*#__PURE__*/_jsx(Component,{...props,variant:totalCartQuantity>0&&locale===\"GB\"?\"Non-empty\":\"Empty\"});};}const findProductCommand=str=>{const words=str.trim().split(/\\s+/);if(words.length!==2){return undefined;}return{command:words[0],product:words[1]};};\nexport const __FramerMetadata__ = {\"exports\":{\"withCartVisibility\":{\"type\":\"reactHoc\",\"name\":\"withCartVisibility\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTotalCartQuantity\":{\"type\":\"reactHoc\",\"name\":\"withTotalCartQuantity\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCartValues\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withProductSubTotal\":{\"type\":\"reactHoc\",\"name\":\"withProductSubTotal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMaxQtyWarning\":{\"type\":\"reactHoc\",\"name\":\"withMaxQtyWarning\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withQuantity\":{\"type\":\"reactHoc\",\"name\":\"withQuantity\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSubTotal\":{\"type\":\"reactHoc\",\"name\":\"withSubTotal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withChangeQuantity\":{\"type\":\"reactHoc\",\"name\":\"withChangeQuantity\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPrimaryCTA\":{\"type\":\"reactHoc\",\"name\":\"withPrimaryCTA\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSalesTax\":{\"type\":\"reactHoc\",\"name\":\"withSalesTax\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTotalDue\":{\"type\":\"reactHoc\",\"name\":\"withTotalDue\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAddToCart\":{\"type\":\"reactHoc\",\"name\":\"withAddToCart\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCartQuantities\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CartOverrides.map"],
  "mappings": "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",
  "names": ["PRICES", "MAX_PRODUCT_QTY", "useCartQuantities", "createStore", "useCartValues", "cartQuantities", "setCartQuantities", "totalCartQuantity", "acc", "key", "subTotal", "shipping", "salesTax", "totalDue", "withQuantity", "Component", "props", "name", "p", "withChangeQuantity", "command", "product", "findProductCommand", "productQuantity", "withTotalCartQuantity", "withProductSubTotal", "formatPrice", "withSubTotal", "withSalesTax", "withTotalDue", "withAddToCart", "variant", "setVariant", "ye", "ue", "handleSubmit", "e", "formData", "additionalQuantity", "newProductQuantity", "isBrowser", "window", "withCartVisibility", "value", "withMaxQtyWarning", "withPrimaryCTA", "locale", "useLocale", "str", "words"]
}
