{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/F1msxdpcAW9cfgKrg8ff/dZ1qJ13kc7MD0dJOOqBe/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/mYPueK7XmpzLHnu2ODpc/Helpers.js\";import{isBrowser}from\"framer\";import{MAX_PRODUCT_QTY,PRICES}from\"https://framerusercontent.com/modules/o1aeipZQQXsUUIIJuQBL/UvQc91qHAyVAI0j1604n/Constants.js\";// 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\nexport const useCartQuantities=createStore({essentialCardMachine:0,proCardMachine:0,goCardMachine:0});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();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\"));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){globalThis.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&&cartQuantities.goCardMachine>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\"}},\"withSubTotal\":{\"type\":\"reactHoc\",\"name\":\"withSubTotal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withQuantity\":{\"type\":\"reactHoc\",\"name\":\"withQuantity\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSalesTax\":{\"type\":\"reactHoc\",\"name\":\"withSalesTax\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAddToCart\":{\"type\":\"reactHoc\",\"name\":\"withAddToCart\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withProductSubTotal\":{\"type\":\"reactHoc\",\"name\":\"withProductSubTotal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMaxQtyWarning\":{\"type\":\"reactHoc\",\"name\":\"withMaxQtyWarning\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCartValues\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTotalCartQuantity\":{\"type\":\"reactHoc\",\"name\":\"withTotalCartQuantity\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCartQuantities\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withChangeQuantity\":{\"type\":\"reactHoc\",\"name\":\"withChangeQuantity\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPrimaryCTA\":{\"type\":\"reactHoc\",\"name\":\"withPrimaryCTA\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTotalDue\":{\"type\":\"reactHoc\",\"name\":\"withTotalDue\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "qKAIO,IAAMA,EAAkBC,EAAY,CAAC,qBAAqB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,EAAeC,EAAc,IAAI,CAAC,GAAK,CAACC,EAAeC,CAAiB,EAAEJ,EAAkB,EAAQK,EAAkB,OAAO,OAAO,OAAOF,CAAc,EAAE,OAAO,CAACG,EAAIC,IAAMD,EAAIC,EAAI,CAAC,CAAC,EAAQC,EAAS,OAAO,KAAKL,CAAc,EAAE,OAAO,CAACG,EAAIC,IAAMD,EAAIH,EAAeI,CAAG,EAAEE,EAAOF,CAAG,EAAE,CAAC,EAAQG,EAAS,EAAQC,GAAUH,EAASE,GAAU,GAASE,EAASJ,EAASE,EAASC,EAAS,MAAM,CAAC,kBAAAN,EAAkB,SAAAG,EAAS,SAAAE,EAAS,SAAAC,EAAS,SAAAC,CAAQ,CAAE,EAAS,SAASC,EAAaC,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAACZ,EAAeC,CAAiB,EAAEJ,EAAkB,EAAQgB,EAAKD,EAAM,MAAMA,EAAM,kBAAkB,EAAE,OAAoBE,EAAKH,EAAU,CAAC,KAAK,OAAOX,EAAea,CAAI,GAAG,CAAC,EAAE,GAAGD,CAAK,CAAC,CAAE,CAAE,CAAQ,SAASG,EAAmBJ,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAACZ,EAAeC,CAAiB,EAAEJ,EAAkB,EAAO,CAAC,kBAAAK,CAAiB,EAAEH,EAAc,EAAQc,EAAKD,EAAM,MAAMA,EAAM,kBAAkB,EAAO,CAAC,QAAAI,EAAQ,QAAAC,CAAO,EAAEC,EAAmBL,CAAI,GAAG,CAAC,EAAQM,EAAgBnB,EAAeiB,CAAO,GAAG,EAAuT,OAAoBH,EAAKH,EAAU,CAAC,QAAvU,IAAI,CAAC,GAAG,CAACK,GAAS,CAACC,EAAQ,OAAO,KAAQD,IAAU,aAAgBd,EAAkBkB,GAAiBnB,EAAkB,CAAC,GAAGD,EAAe,CAACiB,CAAO,EAAEE,EAAgB,CAAC,CAAC,EAAOH,IAAU,aAAgBG,EAAgB,GAAGlB,EAAkB,CAAC,GAAGD,EAAe,CAACiB,CAAO,EAAEE,EAAgB,CAAC,CAAC,CAAI,EAA0D,GAAGP,CAAK,CAAC,CAAE,CAAE,CAAQ,SAASS,EAAsBV,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAAC,kBAAAV,CAAiB,EAAEH,EAAc,EAAE,OAAoBe,EAAKH,EAAU,CAAC,KAAK,OAAOT,CAAiB,EAAE,GAAGU,CAAK,CAAC,CAAE,CAAE,CAAQ,SAASU,EAAoBX,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAACZ,EAAeC,CAAiB,EAAEJ,EAAkB,EAAQoB,EAAQL,EAAM,MAAMA,EAAM,kBAAkB,EAA+CP,EAA9BL,EAAeiB,CAAO,EAA0BX,EAAOW,CAAO,EAAE,OAAoBH,EAAKH,EAAU,CAAC,KAAKY,EAAYlB,EAAS,IAAI,EAAE,GAAGO,CAAK,CAAC,CAAE,CAAE,CAAQ,SAASY,EAAab,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAAC,SAAAP,CAAQ,EAAEN,EAAc,EAAE,OAAoBe,EAAKH,EAAU,CAAC,KAAKY,EAAYlB,EAAS,IAAI,EAAE,GAAGO,CAAK,CAAC,CAAE,CAAE,CAAQ,SAASa,EAAad,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAAC,SAAAJ,CAAQ,EAAET,EAAc,EAAE,OAAoBe,EAAKH,EAAU,CAAC,KAAKY,EAAYf,EAAS,IAAI,EAAE,GAAGI,CAAK,CAAC,CAAE,CAAE,CAAQ,SAASc,EAAaf,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAAC,SAAAH,CAAQ,EAAEV,EAAc,EAAE,OAAoBe,EAAKH,EAAU,CAAC,KAAKY,EAAYd,EAAS,IAAI,EAAE,GAAGG,CAAK,CAAC,CAAE,CAAE,CAAQ,SAASe,EAAchB,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAACZ,EAAeC,CAAiB,EAAEJ,EAAkB,EAAO,CAAC,kBAAAK,CAAiB,EAAEH,EAAc,EAAO,CAAC6B,EAAQC,CAAU,EAAEC,EAAS5B,EAAkBkB,EAAgB,UAAU,UAAU,EAAEW,EAAU,IAAI,CAACF,EAAW3B,EAAkBkB,EAAgB,UAAU,UAAU,CAAE,EAAE,CAAClB,CAAiB,CAAC,EAAE,IAAM8B,EAAaC,GAAG,CAACA,EAAE,eAAe,EAAK/B,GAAmBkB,GAAgB,QAAQ,MAAM,qCAAqC,EAAE,IAAMc,EAAS,IAAI,SAASD,EAAE,MAAM,EAAQhB,EAAQ,OAAOiB,EAAS,IAAI,SAAS,CAAC,EAAQC,EAAmB,OAAOD,EAAS,IAAI,UAAU,CAAC,EAAQE,EAAmB,KAAK,KAAKpC,EAAeiB,CAAO,GAAG,GAAGkB,EAAmBf,CAAe,EAAK,OAAOe,GAAqB,UAAS,QAAQ,MAAM,2BAA2B,EAAM,OAAO,KAAKnC,CAAc,EAAE,SAASiB,CAAO,GAAE,QAAQ,MAAM,gCAAgC,EAAKkB,EAAmBf,GAAgB,QAAQ,MAAM,uBAAuB,EAAEnB,EAAkB,CAAC,GAAGD,EAAe,CAACiB,CAAO,EAAEmB,CAAkB,CAAC,EAAKC,GAAW,WAAW,WAAW,WAAW,UAAU,KAAK,CAAC,MAAM,aAAa,CAAC,EAAGJ,EAAE,OAAO,cAAc,GAAG,EAAE,MAAM,CAAE,EAAE,OAAoBnB,EAAK,OAAO,CAAC,SAASmB,GAAGD,EAAaC,CAAC,EAAE,SAAsBnB,EAAK,WAAW,CAAC,SAASc,IAAU,WAAW,MAAM,CAAC,QAAQ,OAAO,cAAc,SAAS,MAAM,OAAO,OAAO,EAAE,QAAQ,EAAE,OAAO,OAAO,QAAQ,MAAM,EAAE,SAAsBd,EAAKH,EAAU,CAAC,GAAGC,EAAM,QAAQgB,CAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAE,CAAQ,SAASU,EAAmB3B,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAACZ,EAAeC,CAAiB,EAAEJ,EAAkB,EAAQoB,EAAQL,EAAM,MAAMA,EAAM,kBAAkB,EAAE,OAAGZ,EAAeiB,CAAO,EAAE,EAAuBH,EAAKH,EAAU,CAAC,GAAGC,CAAK,CAAC,EAAMZ,EAAe,eAAe,GAAGA,EAAe,qBAAqB,GAAGA,EAAe,cAAc,GAAGiB,IAAU,OAA4BH,EAAKH,EAAU,CAAC,GAAGC,CAAK,CAAC,EAAM,OAAO,OAAOZ,CAAc,EAAE,OAAOuC,GAAOA,EAAM,CAAC,EAAE,OAAO,GAAMtB,IAAU,WAAgCH,EAAKH,EAAU,CAAC,GAAGC,CAAK,CAAC,EAAO,OAAO,OAAOZ,CAAc,EAAE,OAAOuC,GAAOA,EAAM,CAAC,EAAE,SAAS,GAAMtB,IAAU,UAA+BH,EAAKH,EAAU,CAAC,GAAGC,CAAK,CAAC,EAAW,IAAK,CAAE,CAAQ,SAAS4B,EAAkB7B,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAAC,kBAAAV,CAAiB,EAAEH,EAAc,EAAE,OAAGG,IAAoBkB,EAAqCN,EAAKH,EAAU,CAAC,GAAGC,CAAK,CAAC,EAAU,IAAK,CAAE,CAAQ,SAAS6B,EAAe9B,EAAU,CAAC,OAAOC,GAAO,CAAC,GAAK,CAAC,kBAAAV,CAAiB,EAAEH,EAAc,EAAQ2C,EAAOC,EAAU,EAAE,OAAoB7B,EAAKH,EAAU,CAAC,GAAGC,EAAM,QAAQV,EAAkB,GAAGwC,IAAS,KAAK,YAAY,OAAO,CAAC,CAAE,CAAE,CAAC,IAAMxB,EAAmB0B,GAAK,CAAC,IAAMC,EAAMD,EAAI,KAAK,EAAE,MAAM,KAAK,EAAE,GAAGC,EAAM,SAAS,EAAqB,MAAM,CAAC,QAAQA,EAAM,CAAC,EAAE,QAAQA,EAAM,CAAC,CAAC,CAAE",
  "names": ["useCartQuantities", "createStore", "useCartValues", "cartQuantities", "setCartQuantities", "totalCartQuantity", "acc", "key", "subTotal", "PRICES", "shipping", "salesTax", "totalDue", "withQuantity", "Component", "props", "name", "p", "withChangeQuantity", "command", "product", "findProductCommand", "productQuantity", "MAX_PRODUCT_QTY", "withTotalCartQuantity", "withProductSubTotal", "formatPrice", "withSubTotal", "withSalesTax", "withTotalDue", "withAddToCart", "variant", "setVariant", "ye", "ue", "handleSubmit", "e", "formData", "additionalQuantity", "newProductQuantity", "isBrowser", "withCartVisibility", "value", "withMaxQtyWarning", "withPrimaryCTA", "locale", "useLocale", "str", "words"]
}
