{"version":3,"file":"Add_to_cart_button.BHeUJyla.mjs","names":["create"],"sources":["https:/framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/yNIABzdTP3fu4mWtyAdp/Product_selection_store.js","https:/framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/Uam6NjjQgBdbM2uxwvNZ/Parse_shopify_data.js","https:/framerusercontent.com/modules/iUgN6EtVE5IGf92CQax3/JYuO7sW04W95n6AuZjyD/Add_to_cart_button.js"],"sourcesContent":["import{create}from\"https://framerusercontent.com/modules/ieMSnIJVCiFKJmsg1OmM/KWFJj6n258MVreTmJoNk/Zustand.js\";const sanitizeQuantity=value=>{if(!Number.isFinite(value))return 1;const rounded=Math.floor(value);return Math.max(1,rounded);};export const useProductSelectionStore=create((set,get)=>({quantitiesByVariantId:{},selectedVariantByProductId:{},getQuantity:variantId=>{const value=get().quantitiesByVariantId[variantId];return typeof value===\"number\"?value:1;},setQuantity:(variantId,quantity)=>{const next=sanitizeQuantity(quantity);set(state=>({quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}}));},increment:(variantId,step=1)=>{set(state=>{const current=state.quantitiesByVariantId[variantId]??1;const next=sanitizeQuantity(current+step);return{quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}};});},decrement:(variantId,step=1)=>{set(state=>{const current=state.quantitiesByVariantId[variantId]??1;const next=sanitizeQuantity(current-step);return{quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}};});},resetQuantity:variantId=>{set(state=>({quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:1}}));},getSelectedVariant:(productId,variants)=>{const selectedVariantId=get().selectedVariantByProductId[productId];if(selectedVariantId&&variants.some(v=>v.id===selectedVariantId)){return selectedVariantId;}// Default to first variant if no selection or invalid selection\n    return variants[0]?.id||\"\";},setSelectedVariant:(productId,variantId)=>{set(state=>({selectedVariantByProductId:{...state.selectedVariantByProductId,[productId]:variantId}}));},clearAll:()=>set({quantitiesByVariantId:{},selectedVariantByProductId:{}})}));\nexport const __FramerMetadata__ = {\"exports\":{\"useProductSelectionStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Product_selection_store.map","export const parseShopifyData=shopifyData=>{const parsedShopifyData=shopifyData?JSON.parse(shopifyData):EXAMPLE_DATA;return parsedShopifyData;};const EXAMPLE_DATA={id:\"15176683880773\",variants:[{id:\"55218501157189\",title:\"Variant Title\",price:{amount:\"99\",currencyCode:\"USD\"},priceByMarket:{US:{amount:\"99\",currencyCode:\"USD\"},GB:{amount:\"79\",currencyCode:\"GBP\"},CA:{amount:\"129\",currencyCode:\"CAD\"},EU:{amount:\"89\",currencyCode:\"EUR\"},AU:{amount:\"139\",currencyCode:\"AUD\"}},compareAtPriceByMarket:{US:{amount:\"120\",currencyCode:\"USD\"},GB:{amount:\"95\",currencyCode:\"GBP\"},CA:{amount:\"155\",currencyCode:\"CAD\"},EU:{amount:\"109\",currencyCode:\"EUR\"},AU:{amount:\"169\",currencyCode:\"AUD\"}},weight:0,weightUnit:\"KILOGRAMS\",availableForSale:true,sku:\"sku-untracked-1\",image:{id:\"gid://shopify/ProductImage/77445152801093\",url:\"https://cdn.shopify.com/s/files/1/0967/3896/7877/files/snowboard_purple_hydrogen.png?v=1753365380\",altText:\"Top and bottom view of a snowboard. The top view shows a centred hexagonal logo for Hydrogen that\\n          appears to radiate outwards, as well as some overlapping hexagons at the bottom. The bottom view shows an\\n          abstract angular grid in purples.\",width:3097,height:3908}}]};\nexport const __FramerMetadata__ = {\"exports\":{\"parseShopifyData\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Parse_shopify_data.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useCart}from\"https://framerusercontent.com/modules/qNwuWLbXbcYKugmCfVBu/lJRSRZl0egQQcZWwbvLC/Use_cart.js\";import{useProductSelectionStore}from\"https://framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/yNIABzdTP3fu4mWtyAdp/Product_selection_store.js\";import{parseShopifyData}from\"https://framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/Uam6NjjQgBdbM2uxwvNZ/Parse_shopify_data.js\";import{createVariantGid}from\"https://framerusercontent.com/modules/tzN8qHzrVYThnxhKObeP/oWpbtfeZjvritjXviKiH/Shopify_utils.js\";import{QueryClientWrapper}from\"https://framerusercontent.com/modules/zParpRuqXNNcrHNZHUCA/qIi3gTU5Kf3ikBUxIit5/Query_client_wrapper.js\";import{OPEN_CART_EVENT}from\"https://framerusercontent.com/modules/ULfRcpFPm40RheG8xy3S/Pfxgjc633U68bx2ecZz0/Shared_config.js\";import PresetButton from\"https://framerusercontent.com/modules/a6C1Qq7kxeKULOsvIpdv/tPAd3RAGxQdbicMYlPZq/Preset_button.js\";import CustomButtonWrapper from\"https://framerusercontent.com/modules/KkMHEXBTzNGLCAGsRLrm/6SkMdiv3T9lXNoUXujQ9/Custom_button_wrapper.js\";import CartSvg from\"https://framerusercontent.com/modules/qGSs7SULtHSo8Msf1WUy/vraFd5f3jmKFoHJ9xWa7/Cart.js\";import{PresetPrimaryButtonStyleControls,PresetButtonContentControls,CustomButtonControls,overrideControlDefaults,useInventoryDisabled,OutOfStockStyleControls}from\"https://framerusercontent.com/modules/jSzgfFOp8vV7JiKIMM1a/v3OEw29gw3h4dfbsV2S5/Shared_button_props.js\";import{SHOPIFY_DATA_DESCRIPTION,SUPPORT_CONTROL}from\"https://framerusercontent.com/modules/G9UZNzEc4NZQrMJzPvWx/tl22i1lNtmmpBOq8EDe4/Shared_props.js\";import{isOnFramerCanvasFn}from\"https://framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js\";import{useCurrentLocation}from\"https://framer.com/m/UseCurrentLocation-oZyA.js@1l8XdClJld0xwptzsD73\";// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\nfunction AddToCartButtonContent(props){const isOnFramerCanvas=isOnFramerCanvasFn();const{addToCart,isLoading:isCartLoading}=useCart();const shopifyData=parseShopifyData(props.shopifyData);const selectedVariantId=useProductSelectionStore(state=>state.getSelectedVariant(shopifyData.id,shopifyData.variants));const[,setCurrentLocation]=useCurrentLocation();const{isDisabled}=useInventoryDisabled(shopifyData.id,selectedVariantId,props.disableWhenOutOfStock);const handleAddToCart=async()=>{if(isDisabled||isCartLoading)return;const finalVariantIdString=createVariantGid(selectedVariantId);const qty=useProductSelectionStore.getState().getQuantity(selectedVariantId);try{// Using the sync version\naddToCart(finalVariantIdString,qty);if(props.openCartOnAddToCart===\"cartOverlay\"){// delau\nsetTimeout(()=>{document.dispatchEvent(new Event(OPEN_CART_EVENT));},300);}else if(props.openCartOnAddToCart===\"cartPage\"){setCurrentLocation(props.cartPage);}}catch(error){console.error(\"Error adding to cart:\",error);}};// Determine if button should be disabled\nconst isButtonDisabled=isDisabled;const finalDisabled=isOnFramerCanvas?props.previewType===\"disabled\":isButtonDisabled;// Update button text if cart is loading\nconst displayText=props.text;// ---------------- BUTTON STYLES ---------------- //\nconst buttonText=finalDisabled?props.outOfStockStyle.text:displayText;const buttonOpacity=finalDisabled?props.outOfStockStyle.opacity:undefined;const disabledStyle={alignItems:props.presetButtonStyle.alignItems,justifyContent:props.presetButtonStyle.justifyContent,gap:props.presetButtonStyle.gap,padding:props.presetButtonStyle.padding,border:props.outOfStockStyle.border,borderRadius:props.presetButtonStyle.borderRadius,textColor:props.outOfStockStyle.textColor,backgroundColor:props.outOfStockStyle.backgroundColor,shadow:props.outOfStockStyle.shadow,tapScale:props.presetButtonStyle.tapScale,font:props.presetButtonStyle.font};if(props.buttonType===\"custom\"){return /*#__PURE__*/_jsx(CustomButtonWrapper,{onClick:handleAddToCart,customButtonSize:props.customButtonSize,disabled:finalDisabled,children:props.customButton});}return /*#__PURE__*/_jsx(PresetButton,{onClick:handleAddToCart,leftIcon:props.showDefaultIcon?/*#__PURE__*/_jsx(CartSvg,{}):props.leftIcon?.[0],rightIcon:props.rightIcon?.[0],text:buttonText,font:props.presetButtonStyle.font,presetButtonStyle:props.presetButtonStyle,disabledStyle:disabledStyle,disabled:finalDisabled,style:{opacity:buttonOpacity}});}// ------------------------------------------------------------ //\n// EXPORT WITH QUERY CLIENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 40\n * @framerDisableUnlink\n */export default function AddToCartButton(props){return /*#__PURE__*/_jsx(QueryClientWrapper,{children:/*#__PURE__*/_jsx(AddToCartButtonContent,{...props})});}// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\naddPropertyControls(AddToCartButton,{shopifyData:{type:ControlType.String,description:SHOPIFY_DATA_DESCRIPTION},openCartOnAddToCart:{type:ControlType.Enum,title:\"Open Cart\",options:[\"cartOverlay\",\"cartPage\",\"none\"],optionTitles:[\"Cart Overlay\",\"Cart Page\",\"None\"],defaultValue:\"cartOverlay\",description:\"Action to take when adding to cart.\"},cartPage:{type:ControlType.Link,title:\"Cart Page\",defaultValue:\"/cart\",hidden:props=>props.openCartOnAddToCart!==\"cartPage\"},disableWhenOutOfStock:{type:ControlType.Boolean,title:\"Disable Out-of-Stock\",defaultValue:true,description:\"Disable if selected variant is out-of-stock\"},...OutOfStockStyleControls,...CustomButtonControls,...overrideControlDefaults(PresetPrimaryButtonStyleControls,{\"presetButtonStyle.tapScale\":.995}),...overrideControlDefaults(PresetButtonContentControls,{text:\"Add to Cart\",\"showDefaultIcon.hidden\":props=>props.buttonType===\"custom\"}),previewType:{type:ControlType.Enum,title:\"Preview\",options:[\"default\",\"disabled\"],optionTitles:[\"Default\",\"Out of Stock\"],defaultValue:\"default\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},...SUPPORT_CONTROL});AddToCartButton.displayName=\"Add To Cart Button\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AddToCartButton\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"40\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}