{"version":3,"file":"WithDataLoggedOut.C5N7prGN.mjs","names":["useState","get","useMemo","isCurrencySymbolSameAsCode","getLocaleFromCountry","useState","get","useMemo","withDataAuthenticated"],"sources":["https:/framerusercontent.com/modules/N07JJZfuMtyHijtiRRgH/WxKb8BNVAs4oPsnCv1Q7/FC_ProductPrice.js","https:/framerusercontent.com/modules/ZipJAXrtSkBsdbTSry5q/aqPGQU02MFJKrb8VkmIw/FC_ProductPriceCompare.js","https:/framerusercontent.com/modules/yiRfl1JCGhIBUL31WVDk/wupS2XmBAHu1kBQNv9pi/mutations_v2.js","https:/framerusercontent.com/modules/kxLHRBjsPoLQHrhL024Z/GSIYBGIFNlZcj7zO9LOp/WithDataLoggedIn.js","https:/framerusercontent.com/modules/bDVGKeNQ7AtPyj20xb80/93IV63xXloXqj6GQEEQ9/WithDataLoggedOut.js"],"sourcesContent":["/*\n * Framer Commerce\n * Confidential and Proprietary - All Rights Reserved\n * Unauthorized use, reproduction, distribution, or disclosure of this\n * source code or any related information is strictly prohibited.\n *\n * This software is the exclusive property of Framer Commerce (\"Company\").\n * It is considered highly confidential and proprietary information.\n *\n * Any use, copying, modification, distribution, or sharing of this software,\n * in whole or in part, without the express written permission of the Company\n * is strictly prohibited and may result in legal action.\n *\n * DISCLAIMER: This software does not provide any express or\n * implied warranties, including, but not limited to, the implied warranties\n * of merchantability and fitness for a particular purpose. In no event shall\n * Framer Commerce be liable for any direct, indirect, incidental, special,\n * exemplary, or consequential damages (including, but not limited to, procurement\n * of substitute goods or services; loss of use, data, or profits; or business\n * interruption) however caused and on any theory of liability, whether in\n * contract, strict liability, or tort (including negligence or otherwise)\n * arising in any way out of the use of this software, even if advised of\n * the possibility of such damage.\n *\n * Any unauthorized possession, use, copying, distribution, or dissemination\n * of this software will be considered a breach of confidentiality and may\n * result in legal action.\n *\n * For inquiries, contact:\n * Framer Commerce\n * Email: hello@framercommerce.com\n *\n * © 2025 Butter Supply Inc. All Rights Reserved.\n */import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useMemo,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{get}from\"lodash-es\";import{useIsBrowser}from\"https://framerusercontent.com/modules/ncBs5KPMI9I5GEta13fn/zGXDjuZapa1SGy6D8P5e/IsBrowser.js\";import{knownCurrenciesWithCodeAsSymbol}from\"https://framerusercontent.com/modules/k9s4cejdkBGDjmzudhzM/18cq93eooqM4YmdbL7E2/currencyMaps.js\";import{getLocaleFromCountry}from\"https://framerusercontent.com/modules/vC6fzbfO83MgBPIhn5zl/N2GIWD1ik8HES3ASBGeD/locales.js\";// Helper function to check if a currency's symbol is the same as its code\nconst isCurrencySymbolSameAsCode=currencyCode=>{// For some currencies like CHF, the browser might use the code as the symbol\nif(!currencyCode)return false;if(knownCurrenciesWithCodeAsSymbol.includes(currencyCode)){return true;}try{const formatted=new Intl.NumberFormat(undefined,{style:\"currency\",currency:currencyCode,currencyDisplay:\"narrowSymbol\"}).format(0);// Remove digits, decimal points, and common formatting characters\nconst cleanFormatted=formatted.replace(/[0-9.,\\s]/g,\"\");// Check if what remains is the currency code\nreturn cleanFormatted===currencyCode;}catch(e){return false;}};/**\n * @framerDisableUnlink\n */export default function FC_ProductPrice(props){const{shopifyProductID,canvasPrice,format:{showCurrency,showSymbol,showDecimals,currencyCode}={}}=props;const isBrowser=useIsBrowser();const[product,setProduct]=useState();const[activeVariant,setActiveVariant]=useState();const[subscriptionPrice,setSubscriptionPrice]=useState(null);const[selectedCurrency,setSelectedCurrency]=useState(\"\");const[selectedCountryCode,setSelectedCountryCode]=useState(\"\");const[selectedCountry,setSelectedCountry]=useState(\"\");const[isLoadingPrice,setIsLoadingPrice]=useState(false);// Initialize currency and country code on page load\nuseEffect(()=>{if(!isBrowser)return;const storedCurrency=localStorage.getItem(\"selectedCurrency\");const storedCountryCode=localStorage.getItem(\"selectedCountryCode\");const storedCountry=localStorage.getItem(\"selectedCountry\");setSelectedCurrency(storedCurrency||\"USD\");setSelectedCountryCode(storedCountryCode||\"US\");setSelectedCountry(storedCountry||\"United States\");},[isBrowser]);// Handle variant changes\nconst handleVariantChange=async e=>{if(!e.detail||e.detail.productId!==`gid://shopify/Product/${shopifyProductID}`){return;}console.log(\"handleVariantChange\",e.detail);setIsLoadingPrice(true);try{// Get products from shopXtools storage\nconst products=window.shopXtools?.products||[];const _matchingProduct=products.find(({node:_product})=>_product.id===`gid://shopify/Product/${shopifyProductID}`);if(_matchingProduct){setProduct(_matchingProduct.node);// Find the matching variant in the current product data\nconst matchingVariant=_matchingProduct.node?.variants?.edges?.find(({node})=>node.selectedOptions.every(option=>e.detail.selectedOptions.find(detailOption=>detailOption.name===option.name&&detailOption.value===option.value)));if(matchingVariant){setActiveVariant(matchingVariant.node);}}}catch(error){// Fallback to using the event detail directly\nsetActiveVariant(e.detail);}finally{setIsLoadingPrice(false);}};// Listen for currency changes\nuseEffect(()=>{if(!isBrowser)return;const handleCurrencyChange=event=>{setIsLoadingPrice(true);const{currency,countryCode,country}=event.detail;setSelectedCurrency(currency);setSelectedCountryCode(countryCode);setSelectedCountry(country);try{// Get products from shopXtools storage\nconst products=window.shopXtools?.products||[];const _matchingProduct=products.find(({node:_product})=>_product.id===`gid://shopify/Product/${shopifyProductID}`);if(_matchingProduct){setProduct(_matchingProduct.node);// Preserve active variant selection if possible\nif(activeVariant){const matchingVariant=_matchingProduct.node.variants?.edges.find(({node})=>node.selectedOptions.every(option=>activeVariant.selectedOptions.find(activeOption=>activeOption.name===option.name&&activeOption.value===option.value)));if(matchingVariant){setActiveVariant(matchingVariant.node);}}}}catch(error){// Error handling\n}finally{setIsLoadingPrice(false);}};window.addEventListener(\"currency_changed\",handleCurrencyChange);return()=>{window.removeEventListener(\"currency_changed\",handleCurrencyChange);};},[isBrowser,shopifyProductID,activeVariant,selectedCurrency,selectedCountryCode]);// Initial product load\nuseEffect(()=>{if(!isBrowser)return;const handleProductsReady=async e=>{if(Array.isArray(e.detail.products)){const _matchingProduct=e.detail.products.find(({node:_product})=>_product.id===`gid://shopify/Product/${shopifyProductID}`);if(_matchingProduct){setProduct(_matchingProduct.node);if(_matchingProduct.node?.variants?.edges?.length===1){setActiveVariant(_matchingProduct.node.variants.edges[0].node);}setActiveVariant(_matchingProduct.node?.variants?.edges[0].node);}}};const loadProduct=async()=>{try{// Get products from shopXtools storage\nconst products=window.shopXtools?.products||[];const _matchingProduct=products.find(({node:_product})=>_product.id===`gid://shopify/Product/${shopifyProductID}`);if(_matchingProduct){setProduct(_matchingProduct.node);if(_matchingProduct.node?.variants?.edges?.length===1){setActiveVariant(_matchingProduct.node.variants.edges[0].node);}setActiveVariant(_matchingProduct.node?.variants?.edges[0].node);}}catch(error){// Error handling\n}finally{setIsLoadingPrice(false);}};loadProduct();// Add event listeners\ndocument.addEventListener(\"product__active-variant__changed\",handleVariantChange);document.addEventListener(\"data__products-ready\",handleProductsReady);// Cleanup\nreturn()=>{document.removeEventListener(\"product__active-variant__changed\",handleVariantChange);document.removeEventListener(\"data__products-ready\",handleProductsReady);};},[isBrowser,shopifyProductID,selectedCurrency,selectedCountryCode]);// Add subscription price listener\nuseEffect(()=>{if(!isBrowser)return;const handleSubscriptionPriceUpdate=e=>{if(e.detail?.productId===shopifyProductID&&e.detail?.price){//console.log(\"selling plan event\", e.detail)\nsetSubscriptionPrice(e.detail.price);}else{setSubscriptionPrice(null);}};document.addEventListener(\"subscription__price-update\",handleSubscriptionPriceUpdate);return()=>{document.removeEventListener(\"subscription__price-update\",handleSubscriptionPriceUpdate);};},[isBrowser]);// Get currency formatting options at component level\nconst _currencyCode=useMemo(()=>{const variantCurrency=get(activeVariant,\"price.currencyCode\");const productCurrency=get(product,\"priceRange.minVariantPrice.currencyCode\");return variantCurrency||productCurrency||\"USD\";},[activeVariant,product]);const showMockValues=useMemo(()=>RenderTarget.current()===RenderTarget.canvas||isBrowser&&window.location.origin.endsWith(\"framercanvas.com\"),[isBrowser]);// Common function to format price based on options\nconst formatPriceWithOptions=(numericPrice,currCode)=>{const symbolSameAsCode=isCurrencySymbolSameAsCode(currCode);// Get locale from selected country code\nconst locale=getLocaleFromCountry(selectedCountryCode);// Log browser user agent for debugging iOS-specific issues\n// if (isBrowser) {\n//     console.log(\"[FC_ProductPrice] Format debug:\", {\n//         userAgent: navigator.userAgent,\n//         isCurrencySymbolSameAsCode: symbolSameAsCode,\n//         currencyCode: currCode,\n//         selectedCountryCode,\n//         locale,\n//         showSymbol,\n//         showCurrency,\n//         showDecimals,\n//     })\n// }\n// Determine if we should show decimals based on the setting\nconst shouldShowDecimals=()=>{if(showDecimals===\"Always show\")return true;if(showDecimals===\"Never show\")return false;if(showDecimals===\"Hide when .00\"){// Check if the decimal part is zero\nreturn numericPrice%1!==0;}return true// Default fallback\n;};const decimalDigits=shouldShowDecimals()?2:0;// If showing neither symbol nor code, just format the number\nif(!showSymbol&&!showCurrency){const formattedNumber=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);return formattedNumber;}// Special case for USD to prevent \"US$\" display in Safari iOS\nif(currCode===\"USD\"&&showSymbol){// Check if running on iOS device\nconst isIOS=isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream;// Format USD manually to avoid the iOS \"US$\" prefix\nif(isIOS){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);if(!showCurrency){return`$${number}`// Just \"$50\" format\n;}else{return`$${number} USD`// \"$50 USD\" format\n;}}else{// For non-iOS devices, continue with normal formatting but use\n// a more controlled approach to ensure consistency\nif(!showCurrency){return new Intl.NumberFormat(locale,{style:\"currency\",currency:\"USD\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits,currencyDisplay:\"narrowSymbol\"}).format(numericPrice);}else{const withSymbol=new Intl.NumberFormat(locale,{style:\"currency\",currency:\"USD\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits,currencyDisplay:\"narrowSymbol\"}).format(numericPrice);return`${withSymbol} USD`;}}}// For currencies where symbol is same as code (like CHF)\nif(symbolSameAsCode){// If showing currency code, always use code-first format and ignore symbol\nif(showCurrency&&!showSymbol){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);const output=`${currCode} ${number}`;return output;}if(showSymbol&&!showCurrency){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);const output=`${currCode} ${number}`;return output;}if(showCurrency&&showSymbol){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);return`${currCode} ${number}`;}}// For currencies with distinct symbols (like USD with $)\n// If showing only the code (no symbol)\nif(!showSymbol&&showCurrency){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);// For normal currencies, show code after the number\nreturn`${number} ${currCode}`;}// If showing only the symbol (no code)\nif(showSymbol&&!showCurrency){return new Intl.NumberFormat(locale,{style:\"currency\",currency:currCode,minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits,currencyDisplay:\"narrowSymbol\"}).format(numericPrice);}// If showing both symbol and code\nconst withSymbol=new Intl.NumberFormat(locale,{style:\"currency\",currency:currCode,minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits,currencyDisplay:\"narrowSymbol\"}).format(numericPrice);return`${withSymbol} ${currCode}`;};const text=useMemo(()=>{if(!isBrowser)return\"\";// For canvas view, handle the display options directly\nif(typeof RenderTarget!==\"undefined\"&&(RenderTarget.current()===RenderTarget.canvas||showMockValues)){const price=canvasPrice||\"50.00\";const numericPrice=parseFloat(price);const currentCurrencyCode=currencyCode||\"USD\";return formatPriceWithOptions(numericPrice,currentCurrencyCode);}// For live view, use the selected currency or preview currency\nconst amount=subscriptionPrice||(activeVariant?get(activeVariant,\"price.amount\"):get(product,\"priceRange.minVariantPrice.amount\"));// console.log(\"subscriptionPrice\", subscriptionPrice)\n//console.log(\"amount\", amount)\nif(!amount)return\"\";const numericPrice=parseFloat(amount);if(isNaN(numericPrice))return\"\";const currentCurrencyCode=selectedCurrency||currencyCode||\"USD\";return formatPriceWithOptions(numericPrice,currentCurrencyCode);},[isBrowser,showMockValues,activeVariant,product,canvasPrice,showCurrency,showSymbol,currencyCode,showDecimals,selectedCurrency,subscriptionPrice,props.format]);const compareAtPrice=useMemo(()=>{const amount=activeVariant?get(activeVariant,\"compareAtPrice.amount\"):get(product,\"compareAtPriceRange.minVariantPrice.amount\");if(!amount)return\"\";const numericPrice=parseFloat(amount);if(isNaN(numericPrice))return\"\";const currentCurrencyCode=selectedCurrency||currencyCode||\"USD\";// Use the same formatting function as the main price\nreturn formatPriceWithOptions(numericPrice,currentCurrencyCode);},[activeVariant,product,currencyCode,showCurrency,showSymbol,showDecimals,selectedCurrency,showMockValues,props.format]);const numericValue=useMemo(()=>parseFloat(compareAtPrice.replace(/[^\\d.-]/g,\"\")),[compareAtPrice]);const hasValidCompareAtPrice=!isNaN(numericValue)&&numericValue>0;const shouldDisplay=useMemo(()=>{if(showMockValues)return true;if(!text)return false;const value=parseFloat(text.replace(/[^\\d.-]/g,\"\"));return!isNaN(value)&&value>0;},[text,showMockValues]);const computedStyles=useMemo(()=>{const baseStyles={margin:0,padding:0,lineHeight:1,whiteSpace:\"nowrap\",display:\"inline-block\",width:\"auto\"};const priceStyles=hasValidCompareAtPrice?props.saleFont:props.regularFont;const priceColor=hasValidCompareAtPrice?props.saleColor:props.regularColor;return{...baseStyles,...priceStyles,color:priceColor};},[hasValidCompareAtPrice,props.saleFont,props.regularFont,props.saleColor,props.regularColor]);//console.log(\"Text\", text)\n// Price calculation logging\n// useEffect(() => {\n//     console.log(\"[FC_ProductPrice] Price State Update:\", {\n//         activeVariant,\n//         product,\n//         selectedCurrency,\n//         subscriptionPrice,\n//     })\n// }, [activeVariant, product, selectedCurrency, subscriptionPrice])\n// useEffect(() => {\n//     console.log(\"Active variant updated:\", activeVariant);\n// }, [activeVariant]);\n// Return placeholder during SSR\nif(!isBrowser){return /*#__PURE__*/_jsx(\"div\",{style:{display:\"none\"}});}return /*#__PURE__*/_jsx(\"div\",{style:{display:\"inline-block\",maxWidth:\"100%\",width:\"auto\",whiteSpace:\"nowrap\",overflow:\"visible\",transform:\"none\",transition:\"none\",animation:\"none\",willChange:\"auto\"},children:/*#__PURE__*/_jsx(\"p\",{style:{...computedStyles,transform:\"none\",transition:\"none\",animation:\"none\",willChange:\"auto\"},children:text})});}// Property controls remain the same\nFC_ProductPrice.defaultProps={shopifyProductID:\"\",canvasPrice:\"50.00\",format:{showCurrency:true,showSymbol:true,currencyCode:\"USD\",showDecimals:\"Always show\"}};addPropertyControls(FC_ProductPrice,{shopifyProductID:{type:ControlType.String,title:\"Product ID\",description:\"Connect to CMS\"},canvasPrice:{type:ControlType.String,title:\"Price\",description:\"Connect to CMS for canvas preview.\",defaultValue:\"50.00\"},format:{type:ControlType.Object,title:\"Format\",controls:{showSymbol:{type:ControlType.Boolean,title:\"Symbol\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"$, \\xa3, €, etc.\"},showCurrency:{type:ControlType.Boolean,title:\"Code\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"USD, EUR, CHF, etc.\"},showDecimals:{type:ControlType.Enum,title:\"Decimals\",defaultValue:\"Always show\",options:[\"Always show\",\"Never show\",\"Hide when .00\"],optionTitles:[\"Always show\",\"Never show\",\"Hide when .00\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},currencyCode:{type:ControlType.Enum,title:\"Preview\",defaultValue:\"USD\",options:[\"USD\",\"EUR\",\"GBP\",\"CHF\",\"JPY\",\"CAD\",\"AUD\",\"CNY\",\"HKD\",\"NZD\",\"SEK\",\"KRW\",\"SGD\",\"NOK\",\"MXN\",\"INR\",\"RUB\",\"ZAR\",\"TRY\",\"BRL\",\"TWD\",\"DKK\",\"PLN\",\"THB\",\"IDR\",\"HUF\",\"CZK\",\"ILS\",\"CLP\",\"PHP\",\"AED\",\"COP\",\"SAR\",\"MYR\",\"RON\"],description:\"Currency is for canvas preview only.\"}}},/** Font and Color Controls */regularFont:{type:ControlType.Font,title:\"Regular\",controls:\"extended\"},regularColor:{type:ControlType.Color,title:\"Regular\",defaultValue:\"#000\"},saleFont:{type:ControlType.Font,title:\"Sale\",controls:\"extended\"},saleColor:{type:ControlType.Color,title:\"Sale\",defaultValue:\"#FF0000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FC_ProductPrice\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FC_ProductPrice.map","/*\n * Framer Commerce\n * Confidential and Proprietary - All Rights Reserved\n * Unauthorized use, reproduction, distribution, or disclosure of this\n * source code or any related information is strictly prohibited.\n *\n * This software is the exclusive property of Framer Commerce (\"Company\").\n * It is considered highly confidential and proprietary information.\n *\n * Any use, copying, modification, distribution, or sharing of this software,\n * in whole or in part, without the express written permission of the Company\n * is strictly prohibited and may result in legal action.\n *\n * DISCLAIMER: This software does not provide any express or\n * implied warranties, including, but not limited to, the implied warranties\n * of merchantability and fitness for a particular purpose. In no event shall\n * Framer Commerce be liable for any direct, indirect, incidental, special,\n * exemplary, or consequential damages (including, but not limited to, procurement\n * of substitute goods or services; loss of use, data, or profits; or business\n * interruption) however caused and on any theory of liability, whether in\n * contract, strict liability, or tort (including negligence or otherwise)\n * arising in any way out of the use of this software, even if advised of\n * the possibility of such damage.\n *\n * Any unauthorized possession, use, copying, distribution, or dissemination\n * of this software will be considered a breach of confidentiality and may\n * result in legal action.\n *\n * For inquiries, contact:\n * Framer Commerce\n * Email: hello@framercommerce.com\n *\n * © 2025 Butter Supply Inc. All Rights Reserved.\n */import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useMemo,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{get}from\"lodash-es\";import{useIsBrowser}from\"https://framerusercontent.com/modules/ncBs5KPMI9I5GEta13fn/zGXDjuZapa1SGy6D8P5e/IsBrowser.js\";import{knownCurrenciesWithCodeAsSymbol}from\"https://framerusercontent.com/modules/k9s4cejdkBGDjmzudhzM/18cq93eooqM4YmdbL7E2/currencyMaps.js\";// Helper function to map country code to appropriate locale\nconst getLocaleFromCountry=countryCode=>{// Default fallback locale\nif(!countryCode)return undefined;// Common country code to locale mappings\nconst countryToLocale={// North America\nUS:\"en-US\",CA:\"en-CA\",QC:\"fr-CA\",// Europe\nGB:\"en-GB\",FR:\"fr-FR\",DE:\"de-DE\",IT:\"it-IT\",ES:\"es-ES\",PT:\"pt-PT\",NL:\"nl-NL\",BE:\"fr-BE\",LU:\"fr-LU\",CH:\"de-CH\",AT:\"de-AT\",SE:\"sv-SE\",NO:\"nb-NO\",DK:\"da-DK\",FI:\"fi-FI\",PL:\"pl-PL\",CZ:\"cs-CZ\",HU:\"hu-HU\",RU:\"ru-RU\",// Asia Pacific\nCN:\"zh-CN\",JP:\"ja-JP\",KR:\"ko-KR\",IN:\"en-IN\",AU:\"en-AU\",NZ:\"en-NZ\",// Latin America\nMX:\"es-MX\",BR:\"pt-BR\",AR:\"es-AR\",CL:\"es-CL\",CO:\"es-CO\",PE:\"es-PE\",// Middle East & Africa\nAE:\"ar-AE\",SA:\"ar-SA\",ZA:\"en-ZA\",IL:\"he-IL\"};return countryToLocale[countryCode]||undefined;};// Helper function to check if a currency's symbol is the same as its code\nconst isCurrencySymbolSameAsCode=currencyCode=>{// For some currencies like CHF, the browser might use the code as the symbol\nif(!currencyCode)return false;if(knownCurrenciesWithCodeAsSymbol.includes(currencyCode)){return true;}try{const formatted=new Intl.NumberFormat(undefined,{style:\"currency\",currency:currencyCode,currencyDisplay:\"narrowSymbol\"}).format(0);// Remove digits, decimal points, and common formatting characters\nconst cleanFormatted=formatted.replace(/[0-9.,\\s]/g,\"\");// Check if what remains is the currency code\nreturn cleanFormatted===currencyCode;}catch(e){return false;}};/**\n * @framerDisableUnlink\n */export default function FC_ProductPriceCompare(props){const{shopifyProductID,canvasPrice,format:{showCurrency,showSymbol,showDecimals,currencyCode}={},strikethrough,strikethroughColor,strikethroughSize,font,color}=props;const[product,setProduct]=useState();const[activeVariant,setActiveVariant]=useState();const[selectedCurrency,setSelectedCurrency]=useState(\"\");const[selectedCountryCode,setSelectedCountryCode]=useState(\"\");const[selectedCountry,setSelectedCountry]=useState(\"\");const isBrowser=useIsBrowser();// Initialize currency from localStorage on page load\nuseEffect(()=>{if(!isBrowser)return;const storedCurrency=localStorage.getItem(\"selectedCurrency\");const storedCountryCode=localStorage.getItem(\"selectedCountryCode\");const storedCountry=localStorage.getItem(\"selectedCountry\");setSelectedCurrency(storedCurrency||\"USD\");setSelectedCountryCode(storedCountryCode);setSelectedCountry(storedCountry);},[isBrowser]);const _currencyCode=useMemo(()=>{const variantCurrency=get(activeVariant,\"price.currencyCode\");const productCurrency=get(product,\"priceRange.minVariantPrice.currencyCode\");return variantCurrency||productCurrency||\"USD\";},[activeVariant,product]);const showMockValues=useMemo(()=>typeof RenderTarget!==\"undefined\"&&(RenderTarget.current()===RenderTarget.canvas||isBrowser&&window.location.origin.endsWith(\"framercanvas.com\")),[isBrowser]);// Common function to format price based on options\nconst formatPriceWithOptions=(numericPrice,currCode)=>{const symbolSameAsCode=isCurrencySymbolSameAsCode(currCode);// Get locale from selected country code\nconst locale=getLocaleFromCountry(selectedCountryCode);// Determine if we should show decimals based on the setting\nconst shouldShowDecimals=()=>{if(showDecimals===\"Always show\")return true;if(showDecimals===\"Never show\")return false;if(showDecimals===\"Hide when .00\"){// Check if the decimal part is zero\nreturn numericPrice%1!==0;}return true// Default fallback for boolean value\n;};const decimalDigits=shouldShowDecimals()?2:0;// If showing neither symbol nor code, just format the number\nif(!showSymbol&&!showCurrency){return new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);}// Special case for USD to prevent \"US$\" display in Safari iOS\nif(currCode===\"USD\"&&showSymbol){// Check if running on iOS device\nconst isIOS=isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!(\"MSStream\"in window);// Format USD manually to avoid the iOS \"US$\" prefix\nif(isIOS){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);if(!showCurrency){return`$${number}`// Just \"$50\" format\n;}else{return`$${number} USD`// \"$50 USD\" format\n;}}else{// For non-iOS devices, continue with normal formatting but use\n// a more controlled approach to ensure consistency\nif(!showCurrency){return new Intl.NumberFormat(locale,{style:\"currency\",currency:\"USD\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits,currencyDisplay:\"narrowSymbol\"}).format(numericPrice);}else{const withSymbol=new Intl.NumberFormat(locale,{style:\"currency\",currency:\"USD\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits,currencyDisplay:\"narrowSymbol\"}).format(numericPrice);return`${withSymbol} USD`;}}}// For currencies where symbol is same as code (like CHF)\nif(symbolSameAsCode){// If showing currency code, always use code-first format and ignore symbol\nif(showCurrency&&!showSymbol){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);const output=`${currCode} ${number}`;return output;}if(showSymbol&&!showCurrency){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);const output=`${currCode} ${number}`;return output;}if(showCurrency&&showSymbol){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);return`${currCode} ${number}`;}}// For currencies with distinct symbols (like USD with $)\n// If showing only the code (no symbol)\nif(!showSymbol&&showCurrency){const number=new Intl.NumberFormat(locale,{style:\"decimal\",minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits}).format(numericPrice);// For normal currencies, show code after the number\nreturn`${number} ${currCode}`;}// If showing only the symbol (no code)\nif(showSymbol&&!showCurrency){return new Intl.NumberFormat(locale,{style:\"currency\",currency:currCode,minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits,currencyDisplay:\"narrowSymbol\"}).format(numericPrice);}// If showing both symbol and code\nconst withSymbol=new Intl.NumberFormat(locale,{style:\"currency\",currency:currCode,minimumFractionDigits:decimalDigits,maximumFractionDigits:decimalDigits,currencyDisplay:\"narrowSymbol\"}).format(numericPrice);return`${withSymbol} ${currCode}`;};const text=useMemo(()=>{if(!isBrowser)return\"\";// console.log('[ComparePrice] Debug:', {\n//     activeVariant,\n//     compareAtPrice: activeVariant ? get(activeVariant, 'compareAtPrice.amount') : null,\n//     productComparePrice: get(product, 'compareAtPriceRange.minVariantPrice.amount'),\n//     showMockValues,\n//     selectedCurrency\n// })\n// For canvas view, handle the display options directly\nif(typeof RenderTarget!==\"undefined\"&&(RenderTarget.current()===RenderTarget.canvas||showMockValues)){const price=canvasPrice||\"75.00\";const numericPrice=parseFloat(price);const currentCurrencyCode=currencyCode||\"USD\";return formatPriceWithOptions(numericPrice,currentCurrencyCode);}// For live view, get the compare at price\nconst amount=activeVariant?get(activeVariant,\"compareAtPrice.amount\"):get(product,\"compareAtPriceRange.minVariantPrice.amount\");if(!amount)return\"\";const numericPrice=parseFloat(amount);if(isNaN(numericPrice))return\"\";const currentCurrencyCode=selectedCurrency||currencyCode||\"USD\";return formatPriceWithOptions(numericPrice,currentCurrencyCode);},[isBrowser,showMockValues,activeVariant,product,canvasPrice,showCurrency,showSymbol,currencyCode,showDecimals,selectedCurrency,props.format]);const numericValue=useMemo(()=>{if(!text)return 0;const value=parseFloat(text.replace(/[^\\d.-]/g,\"\"));return isNaN(value)?0:value;},[text]);const showComparePrice=useMemo(()=>{if(showMockValues){return canvasPrice&&canvasPrice.trim()!==\"\";}return numericValue>0;},[showMockValues,canvasPrice,numericValue]);// Listen for currency changes\nuseEffect(()=>{if(!isBrowser)return;const handleCurrencyChange=event=>{// console.log('[ComparePrice] Currency changed:', {\n//     newCurrency: event.detail.currency,\n//     newCountryCode: event.detail.countryCode\n// })\nconst{currency,countryCode,country}=event.detail;setSelectedCurrency(currency);setSelectedCountryCode(countryCode);setSelectedCountry(country);try{// Get products from shopXtools storage\nconst products=window.shopXtools?.products||[];const _matchingProduct=products.find(({node:_product})=>_product.id===`gid://shopify/Product/${shopifyProductID}`);if(_matchingProduct){setProduct(_matchingProduct.node);// Preserve active variant selection if possible\nif(activeVariant){const matchingVariant=_matchingProduct.node.variants?.edges.find(({node})=>node.selectedOptions.every(option=>activeVariant.selectedOptions.find(activeOption=>activeOption.name===option.name&&activeOption.value===option.value)));if(matchingVariant){setActiveVariant(matchingVariant.node);}}}}catch(error){// Error handling\n}};window.addEventListener(\"currency_changed\",handleCurrencyChange);return()=>{window.removeEventListener(\"currency_changed\",handleCurrencyChange);};},[isBrowser,shopifyProductID,activeVariant,selectedCurrency,selectedCountryCode]);useEffect(()=>{if(!isBrowser)return;const handleVariantChange=e=>{// console.log('[ComparePrice] Variant changed:', {\n//     detail: e.detail,\n//     expectedProductId: `gid://shopify/Product/${shopifyProductID}`\n// })\ntry{if(e.detail){const expectedProductId=`gid://shopify/Product/${shopifyProductID}`;if(!e.detail.productId||e.detail.productId!==expectedProductId){return;}}// Get products from shopXtools storage\nconst products=window.shopXtools?.products||[];const _matchingProduct=products.find(({node:_product})=>_product.id===`gid://shopify/Product/${shopifyProductID}`);if(_matchingProduct){setProduct(_matchingProduct.node);// Find the matching variant in the current product data\nconst matchingVariant=_matchingProduct.node?.variants?.edges?.find(({node})=>node.selectedOptions.every(option=>e.detail.selectedOptions.find(detailOption=>detailOption.name===option.name&&detailOption.value===option.value)));if(matchingVariant){setActiveVariant(matchingVariant.node);}else{setActiveVariant(e.detail);}}}catch(error){// Error handling without console.error\nsetActiveVariant(e.detail);}};const handleProductsReady=e=>{if(Array.isArray(e.detail.products)){const _matchingProduct=e.detail.products.find(({node:_product})=>_product.id===`gid://shopify/Product/${shopifyProductID}`);setProduct(_matchingProduct?_matchingProduct.node:\"404\");// If there's only one variant, set it as active\nif(_matchingProduct?.node?.variants?.edges?.length===1){setActiveVariant(_matchingProduct.node.variants.edges[0].node);}}// Invalid products data structure - silently handle\n};// Initial product load function\nconst loadProduct=async()=>{try{// Get products from shopXtools storage\nconst products=window.shopXtools?.products||[];const _matchingProduct=products.find(({node:_product})=>_product.id===`gid://shopify/Product/${shopifyProductID}`);if(_matchingProduct){setProduct(_matchingProduct.node);if(_matchingProduct.node?.variants?.edges?.length===1){setActiveVariant(_matchingProduct.node.variants.edges[0].node);}setActiveVariant(_matchingProduct.node?.variants?.edges[0].node);}}catch(error){// Error handling without console.error\n}};// Call loadProduct on mount\nloadProduct();// Initial check for existing products\nif(window[\"shopXtools\"]?.products){const products=window[\"shopXtools\"].products;if(Array.isArray(products)&&products.length>0){const _matchingProduct=products.find(({node:_product})=>_product?.id===`gid://shopify/Product/${shopifyProductID}`);if(_matchingProduct?.node){setProduct(_matchingProduct.node);if(_matchingProduct.node?.variants?.edges?.length===1){setActiveVariant(_matchingProduct.node.variants.edges[0].node);}setActiveVariant(_matchingProduct.node?.variants?.edges[0].node);}else{setProduct(\"404\");}}}// Add event listeners\ndocument.addEventListener(\"data__products-ready\",handleProductsReady);document.addEventListener(\"product__active-variant__changed\",handleVariantChange);// Cleanup\nreturn()=>{document.removeEventListener(\"data__products-ready\",handleProductsReady);document.removeEventListener(\"product__active-variant__changed\",handleVariantChange);};},[isBrowser,shopifyProductID,selectedCurrency]);// Return empty div during SSR\nif(!isBrowser){return /*#__PURE__*/_jsx(\"div\",{style:{display:\"none\"}});}// console.log('[ComparePrice] Final render state:', {\n//     showComparePrice,\n//     numericValue,\n//     text,\n//     showMockValues\n// })\n// Always show in canvas view, otherwise only show if there's a compare price\nif(!showComparePrice){return null;}return /*#__PURE__*/_jsx(\"div\",{style:{display:\"inline-block\",maxWidth:\"100%\",width:\"auto\",whiteSpace:\"nowrap\",overflow:\"visible\",transform:\"none\",transition:\"none\",animation:\"none\",willChange:\"auto\"},children:/*#__PURE__*/_jsx(\"p\",{style:{...font,color:color,margin:0,padding:0,lineHeight:1,textDecoration:strikethrough?\"line-through\":\"none\",textDecorationColor:strikethroughColor,textDecorationThickness:strikethrough?`${strikethroughSize}px`:undefined,whiteSpace:\"nowrap\",display:\"inline-block\",width:\"auto\",transform:\"none\",transition:\"none\",animation:\"none\",willChange:\"auto\"},children:text})});}FC_ProductPriceCompare.defaultProps={shopifyProductID:\"\",strikethrough:true,strikethroughColor:\"#000000\",strikethroughSize:1,canvasPrice:\"75.00\",format:{showCurrency:true,showSymbol:true,currencyCode:\"USD\",showDecimals:\"Always show\"}};addPropertyControls(FC_ProductPriceCompare,{shopifyProductID:{type:ControlType.String,title:\"Product ID\",description:\"Connect to CMS (required).\"},canvasPrice:{type:ControlType.String,title:\"Compare Price\",description:\"Connect to CMS (for canvas preview only).\",defaultValue:\"75.00\"},format:{type:ControlType.Object,title:\"Format\",controls:{showSymbol:{type:ControlType.Boolean,title:\"Symbol\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"$, \\xa3, €, etc.\"},showCurrency:{type:ControlType.Boolean,title:\"Code\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"USD, EUR, CHF, etc.\"},showDecimals:{type:ControlType.Enum,title:\"Decimals\",defaultValue:\"Always show\",options:[\"Always show\",\"Never show\",\"Hide when .00\"],optionTitles:[\"Always show\",\"Never show\",\"Hide when .00\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},currencyCode:{type:ControlType.Enum,title:\"Preview\",defaultValue:\"USD\",options:[\"USD\",\"EUR\",\"GBP\",\"CHF\",\"JPY\",\"CAD\",\"AUD\",\"CNY\",\"HKD\",\"NZD\",\"SEK\",\"KRW\",\"SGD\",\"NOK\",\"MXN\",\"INR\",\"RUB\",\"ZAR\",\"TRY\",\"BRL\",\"TWD\",\"DKK\",\"PLN\",\"THB\",\"IDR\",\"HUF\",\"CZK\",\"ILS\",\"CLP\",\"PHP\",\"AED\",\"COP\",\"SAR\",\"MYR\",\"RON\"],description:\"Currency on your site is automatic, this is only shown in canvas preview.\"}}},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000\"},strikethrough:{type:ControlType.Boolean,title:\"Strike\",defaultValue:true},strikethroughSize:{type:ControlType.Number,title:\"Size\",defaultValue:1,min:0,max:8,step:.1,hidden:props=>!props.strikethrough},strikethroughColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\",hidden:props=>!props.strikethrough}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FC_ProductPriceCompare\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FC_ProductPriceCompare.map","//export const createCartMutationWithAttributes = `\n// mutation createCart($lines: [CartLineInput!]!, $attributes: [AttributeInput!]) {\n//   cartCreate(input: { lines: $lines, attributes: $attributes }) {\n//   mutation createCart($lines: [CartLineInput!]!, $attributes: [AttributeInput!], $countryCode: CountryCode) {\n//     cartCreate(input: { lines: $lines, attributes: $attributes, buyerIdentity: { countryCode: $countryCode } }) {\n//       cart {\n//         buyerIdentity {\n//           countryCode\n//         }\n//         id\n//         checkoutUrl\n//         attributes {\n//           key\n//           value\n//         }\n//         cost {\n//           totalAmount {\n//             amount\n//             currencyCode\n//           }\n//         }\n//         lines(first: 100) {\n//           edges {\n//             node {\n//               id\n//               quantity\n//               cost {\n//                 compareAtAmount {\n//                   amount\n//                   currencyCode\n//                 }\n//                 amount {\n//                   amount\n//                   currencyCode\n//                 }\n//               }\n//               merchandise {\n//                 ... on ProductVariant {\n//                   id\n//                 }\n//               }\n//             }\n//           }\n//         }\n//       }\n//       userErrors {\n//         field\n//         message\n//       }\n//     }\n//   }\n// `\nexport const createCartMutationWithAttributes=`\n  mutation createCart($lines: [CartLineInput!]!, $attributes: [AttributeInput!], $countryCode: CountryCode) {\n    cartCreate(input: { lines: $lines, attributes: $attributes, buyerIdentity: { countryCode: $countryCode } }) {\n      cart {\n        id\n        checkoutUrl\n        buyerIdentity {\n          countryCode\n        }\n        lines(first: 50) {\n          edges {\n            node {\n              id\n              quantity\n              cost {\n                totalAmount {\n                  amount\n                  currencyCode\n                }\n              }\n              merchandise {\n                ... on ProductVariant {\n                  title\n                  product {\n                    title\n                  }\n                  id\n                  quantityAvailable\n                }\n              }\n            }\n          }\n        }\n        cost {\n          subtotalAmount {\n            amount\n            currencyCode\n          }\n          totalAmount {\n            amount\n            currencyCode\n          }\n        }\n      }\n      userErrors {\n        code\n        message\n      }\n    }\n  }\n`;export const createCartMutation=`\n  mutation createCart($lines: [CartLineInput!]!, $countryCode: CountryCode) {\n    cartCreate(input: { lines: $lines, buyerIdentity: { countryCode: $countryCode } }) {\n      cart {\n        id\n        checkoutUrl\n        buyerIdentity {\n          countryCode\n        }\n        attributes {\n          key\n          value\n        }\n        lines(first: 100) {\n          edges {\n            node {\n              id\n              quantity\n              cost {\n                totalAmount {\n                  amount\n                  currencyCode\n                }\n              }\n              merchandise {\n                ... on ProductVariant {\n                  id\n                }\n              }\n            }\n          }\n        }\n        cost {\n          subtotalAmount {\n            amount\n            currencyCode\n          }\n          totalAmount {\n            amount\n            currencyCode\n          }\n        }\n      }\n      userErrors {\n        field\n        message\n      }\n    }\n  }\n`;// export const createCartMutation = `\n//   mutation createCart($lines: [CartLineInput!]!) {\n//     cartCreate(input: lines: $lines}) {\n//       cart {\n//         id\n//         checkoutUrl\n//         attributes {\n//           key\n//           value\n//         }\n//         lines(first: 100) {\n//           edges {\n//             node {\n//               id\n//               quantity\n//               merchandise {\n//                 ... on ProductVariant {\n//                   id\n//                 }\n//               }\n//             }\n//           }\n//         }\n//       }\n//       userErrors {\n//         field\n//         message\n//       }\n//     }\n//   }\n// `\nexport const addToCartMutation=`\n  mutation cartLinesAdd($cartId: ID!, $lines: [CartLineInput!]!) {\n    cartLinesAdd(cartId: $cartId, lines: $lines) {\n      cart {\n        id\n        checkoutUrl\n        buyerIdentity {\n          countryCode\n        }\n        attributes {\n          key\n          value\n        }\n        lines(first: 100) {\n          edges {\n            node {\n              id\n              quantity\n              merchandise {\n                ... on ProductVariant {\n                  id\n                  product {\n                    id\n                    title\n                    metafields(\n                      identifiers: [\n                        { namespace: \"custom\", key: \"order_max\" }\n                      ]\n                    ) {\n                      namespace\n                      key\n                      value\n                    }\n                  }\n                  price {\n                    amount\n                    currencyCode\n                  }\n                  image {\n                    url\n                  }\n                  selectedOptions {\n                    name\n                    value\n                  }\n                }\n              }\n              cost {\n                totalAmount {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n          }\n        }\n        cost {\n          totalAmount {\n            amount\n            currencyCode\n          }\n          subtotalAmount {\n            amount\n            currencyCode\n          }\n        }\n      }\n      userErrors {\n        field\n        message\n      }\n    }\n  }\n`;export const updateCartAttributes=`\n  mutation cartAttributesUpdate($cartId: ID!, $attributes: [AttributeInput!]!) {\n    cartAttributesUpdate(cartId: $cartId, attributes: $attributes) {\n      cart {\n        id\n        attributes {\n          key\n          value\n        }\n      }\n      userErrors {\n        field\n        message\n      }\n    }\n  }\n`;// mutation with the selling plans:\nexport const createCartMutationNoPlans=`\nmutation cartCreate($input: CartInput!, $countryCode: CountryCode) {\n  cartCreate(input: $input, buyerIdentity: { countryCode: $countryCode }) {\n    cart {\n      id\n      checkoutUrl\n      buyerIdentity {\n        countryCode\n      }\n      createdAt\n      note\n      attributes {\n        key\n        value\n      }\n      lines(first: 10) {\n        edges {\n          node {\n            id\n            quantity\n            attributes {\n              key\n              value\n            }\n            merchandise {\n              ... on ProductVariant {\n                id\n                title\n                price {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    userErrors {\n      field\n      message\n    }\n  }\n}\n`;export const addToCartMutationNoPlans=`\nmutation cartLinesAdd($cartId: ID!, $lines: [CartLineInput!]!, $attributes: [AttributeInput!]) {\n  cartLinesAdd(cartId: $cartId, lines: $lines) {\n    cart {\n      id\n      checkoutUrl\n      buyerIdentity {\n        countryCode\n      }\n      note\n      attributes {\n        key\n        value\n      }\n      lines(first: 10) {\n        edges {\n          node {\n            id\n            quantity\n            attributes {\n              key\n              value\n            }\n            merchandise {\n              ... on ProductVariant {\n                id\n                title\n                price {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    userErrors {\n      field\n      message\n    }\n  }\n  cartAttributesUpdate(cartId: $cartId, attributes: $attributes) {\n    cart {\n      id\n      note\n      attributes {\n        key\n        value\n      }\n    }\n    userErrors {\n      field\n      message\n    }\n  }\n}\n`;/***\n * Cart Product Card V2 Mutations\n */export const updatelineMutation=`\n  mutation cartLinesUpdate($cartId: ID!, $lines: [CartLineUpdateInput!]!) {\n    cartLinesUpdate(cartId: $cartId, lines: $lines) {\n      cart {\n        id\n        buyerIdentity {\n          countryCode\n        }\n        lines(first: 100) {\n          edges {\n            node {\n              id\n              quantity\n              merchandise {\n                ... on ProductVariant {\n                  id\n                  product {\n                    id\n                    handle\n                    title\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n`;export const removeLineMutation=`mutation cartLinesRemove($cartId: ID!, $lineIds: [ID!]!) {\n      cartLinesRemove(cartId: $cartId, lineIds: $lineIds) {\n          cart {\n              id\n              buyerIdentity {\n                countryCode\n              }\n              lines(first: 250) {\n                  edges {\n                      node {\n                          id\n                          quantity\n                          sellingPlanAllocation{ \n                              checkoutChargeAmount{\n                                  amount\n                                  currencyCode\n                                  }\n                          }\n                          cost {\n                              totalAmount {\n                                  amount\n                                  currencyCode\n                              }\n                              subtotalAmount {\n                                  amount\n                                  currencyCode\n                              }\n                          }\n                          merchandise {\n                              ... on ProductVariant {\n                                  id\n                                  title\n                                  product {\n                                      id\n                                      title\n                                  }\n                                  price {\n                                      amount\n                                      currencyCode\n                                  }\n                                  image {\n                                      url\n                                  }\n                                      selectedOptions\n                            {\n                              name\n                              value\n                            }\n                              }\n                          }\n                      }\n                  }\n              }\n          }\n          userErrors {\n              field\n              message\n          }\n      }\n  }`;export const updatelineMutationNoPlans=`mutation cartLinesUpdate($cartId: ID!, $lines: [CartLineUpdateInput!]!) {\n      cartLinesUpdate(cartId: $cartId, lines: $lines) {\n          cart {\n              id\n              buyerIdentity {\n                countryCode\n              }\n              cost {\n                  totalAmount {\n                      amount\n                      currencyCode\n                  }\n                  subtotalAmount {\n                      amount\n                      currencyCode\n                  }\n              }\n              lines(first: 250) {\n                  edges {\n                      node {\n                          id\n                          quantity\n                          cost {\n                              totalAmount {\n                                  amount\n                                  currencyCode\n                              }\n                              subtotalAmount {\n                                  amount\n                                  currencyCode\n                              }\n                          }\n                          merchandise {\n                              ... on ProductVariant {\n                                  id\n                                  title\n                                  product {\n                                      id\n                                      title\n                                  }\n                                  price {\n                                      amount\n                                      currencyCode\n                                  }\n                                  image {\n                                      url\n                                  }\n                                  selectedOptions\n                                  {\n                              name\n                              value\n                            }\n\n                              }\n                          }\n                      }\n                  }\n              }\n          }\n          userErrors {\n              field\n              message\n          }\n      }\n  }`;export const removeLineMutationNoPlans=`mutation cartLinesRemove($cartId: ID!, $lineIds: [ID!]!) {\n      cartLinesRemove(cartId: $cartId, lineIds: $lineIds) {\n          cart {\n              id\n              buyerIdentity {\n                countryCode\n              }\n              lines(first: 250) {\n                  edges {\n                      node {\n                          id\n                          quantity\n                          cost {\n                              totalAmount {\n                                  amount\n                                  currencyCode\n                              }\n                              subtotalAmount {\n                                  amount\n                                  currencyCode\n                              }\n                          }\n                          merchandise {\n                              ... on ProductVariant {\n                                  id\n                                  title\n                                  product {\n                                      id\n                                      title\n                                  }\n                                  price {\n                                      amount\n                                      currencyCode\n                                  }\n                                  image {\n                                      url\n                                  }\n                                      selectedOptions\n                            {\n                              name\n                              value\n                            }\n                              }\n                          }\n                      }\n                  }\n              }\n          }\n          userErrors {\n              field\n              message\n          }\n      }\n  }`;export const getProducts=`\n  query GetProducts($cursor: String) {\n    products(first: 250, after: $cursor) {\n      edges {\n        node {\n          id\n          title\n          vendor\n          handle\n          images(first: 20) {\n            edges {\n              node {\n                url\n                altText\n                width\n                height\n               }\n              }\n          }\n          totalInventory\n          sellingPlanGroups(first: 1) {\n            edges {\n              node {\n                name\n                options {\n                  name\n                  values\n                }\n                sellingPlans(first: 10) {\n                  edges {\n                    node {\n                      id\n                      name\n                      description\n                      recurringDeliveries\n                      priceAdjustments {\n                        orderCount\n                        adjustmentValue {\n                          __typename\n                          ... on SellingPlanPercentagePriceAdjustment {\n                            adjustmentPercentage\n                          }\n                          ... on SellingPlanFixedAmountPriceAdjustment {\n                            adjustmentAmount {\n                              amount\n                              currencyCode\n                            }\n                          }\n                          ... on SellingPlanFixedPriceAdjustment {\n                            price {\n                              amount\n                              currencyCode\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n          options {\n            id\n            name\n            values\n          }\n          compareAtPriceRange {\n            minVariantPrice {\n              amount\n              currencyCode\n            }\n          }\n          priceRange {\n            minVariantPrice {\n              amount\n              currencyCode\n            }\n          }\n          variants(first: 250) {\n            pageInfo {\n              hasNextPage\n              hasPreviousPage\n              endCursor\n            }\n            edges {\n              node {\n                id\n                image {\n                  url\n                  altText\n                  width\n                  height\n                }\n                title\n                sku\n                availableForSale\n                requiresShipping\n                selectedOptions {\n                  name\n                  value\n                }\n                price {\n                  amount\n                  currencyCode\n                }\n                compareAtPrice {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n          }\n        }\n      }\n      pageInfo {\n        hasNextPage\n        endCursor\n      }\n    }\n  }\n`;export const getProductsBackup=`\n  query GetProductsBackup($cursor: String) {\n    products(first: 250, after: $cursor) {\n      edges {\n        node {\n          id\n          title\n          vendor\n          handle\n          totalInventory\n          images(first: 20) {\n            edges {\n              node {\n                url\n                altText\n                width\n                height\n               }\n              }\n          }\n          options {\n            id\n            name\n            values\n          }\n          compareAtPriceRange {\n            minVariantPrice {\n              amount\n              currencyCode\n            }\n          }\n          priceRange {\n            minVariantPrice {\n              amount\n              currencyCode\n            }\n          }\n          variants(first: 250) {\n            pageInfo {\n              hasNextPage\n              hasPreviousPage\n              endCursor\n            }\n            edges {\n              node {\n                id\n                image {\n                  url\n                  altText\n                  width\n                  height\n                }\n                title\n                sku\n                availableForSale\n                requiresShipping\n                selectedOptions {\n                  name\n                  value\n                }\n                price {\n                  amount\n                  currencyCode\n                }\n                compareAtPrice {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n          }\n        }\n      }\n      pageInfo {\n        hasNextPage\n        endCursor\n      }\n    }\n  }\n`;export const getCartQuery=`\n  query GetCart($cartId: ID!) {\n    cart(id: $cartId) {\n      id\n      createdAt\n      updatedAt\n      checkoutUrl\n      buyerIdentity {\n        countryCode\n      }\n      lines(first: 250) {\n        edges {\n          node {\n            id\n            quantity\n            sellingPlanAllocation { \n              checkoutChargeAmount {\n                amount\n                currencyCode\n              }\n              sellingPlan {\n                id\n                name\n                description\n              }\n            }\n            merchandise {\n              ... on ProductVariant {\n                id\n                title\n                image {\n                  url\n                }\n                selectedOptions {\n                  name\n                  value\n                }\n                product {\n                  title\n                  handle\n                }\n                price {\n                  amount\n                  currencyCode\n                }\n                compareAtPrice {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n            attributes {\n              key\n              value\n            }\n            cost {\n              totalAmount {\n                amount\n                currencyCode\n              }\n              subtotalAmount {\n                amount\n                currencyCode\n              }\n            }\n          }\n        }\n      }\n      attributes {\n        key\n        value\n      }\n      cost {\n        totalAmount {\n          amount\n          currencyCode\n        }\n        subtotalAmount {\n          amount\n          currencyCode\n        }\n      }\n    }\n  }\n`;export const getCartQueryNoPlans=`\n  query GetCart($cartId: ID!) {\n    cart(id: $cartId) {\n      id\n      createdAt\n      updatedAt\n      checkoutUrl\n      buyerIdentity {\n        countryCode\n      }\n      lines(first: 250) {\n        edges {\n          node {\n            id\n            quantity\n            merchandise {\n              ... on ProductVariant {\n                id\n                title\n                image {\n                  url\n                }\n                selectedOptions {\n                  name\n                  value\n                }\n                product {\n                  title\n                  handle\n                }\n                price {\n                  amount\n                  currencyCode\n                }\n                compareAtPrice {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n            attributes {\n              key\n              value\n            }\n            cost {\n              totalAmount {\n                amount\n                currencyCode\n              }\n              subtotalAmount {\n                amount\n                currencyCode\n              }\n            }\n          }\n        }\n      }\n      attributes {\n        key\n        value\n      }\n      cost {\n        totalAmount {\n          amount\n          currencyCode\n        }\n        subtotalAmount {\n          amount\n          currencyCode\n        }\n      }\n    }\n  }\n`;export const cartQuery=`\n  query getCart($cartId: ID!) {\n    cart(id: $cartId) {\n      id\n      checkoutUrl\n      buyerIdentity {\n        countryCode\n      }\n      attributes {\n        key\n        value\n      }\n      lines(first: 100) {\n        edges {\n          node {\n            id\n            quantity\n            attributes {\n              key\n              value\n            }\n            merchandise {\n              ... on ProductVariant {\n                id\n                product {\n                  id\n                  title\n                  metafields(\n                    identifiers: [\n                      { namespace: \"custom\", key: \"order_max\" }\n                    ]\n                  ) {\n                    namespace\n                    key\n                    value\n                  }\n                }\n                price {\n                  amount\n                  currencyCode\n                }\n                image {\n                  url\n                }\n                selectedOptions {\n                  name\n                  value\n                }\n              }\n            }\n            sellingPlanAllocation {\n              sellingPlan {\n                id\n                name\n              }\n              checkoutChargeAmount {\n                amount\n                currencyCode\n              }\n            }\n            cost {\n              totalAmount {\n                amount\n                currencyCode\n              }\n            }\n          }\n        }\n      }\n      cost {\n        totalAmount {\n          amount\n          currencyCode\n        }\n        subtotalAmount {\n          amount\n          currencyCode\n        }\n      }\n    }\n  }\n`;export const getProductMetafields=`\n  query getProductMetafields($handle: String!) {\n    product(handle: $handle) {\n      id\n      metafield_order_max: metafield(namespace: \"custom\", key: \"order_max\") {\n        value\n        type\n      }\n    }\n  }\n`;// Get available currencies from the store\nexport const getAvailableCurrencies=`\n  query getAvailableCurrencies {\n    localization {\n      availableCountries {\n        currency {\n          isoCode\n          name\n          symbol\n        }\n        isoCode\n        name\n        unitSystem\n      }\n      country {\n        currency {\n          isoCode\n          name\n          symbol\n        }\n        isoCode\n        name\n      }\n    }\n  }\n`;// Get products by country\nexport const getProductsQueryByCountry=`\n  query GetProductsByCountry ($cursor: String, $countryCode: CountryCode) @inContext(country: $countryCode) {\n    products(first: 250, after: $cursor) {\n      edges {\n        node {\n          id\n          title\n          vendor\n          handle\n          images(first: 20) {\n            edges {\n              node {\n                url\n                altText\n                width\n                height\n              }\n            }\n          }\n          sellingPlanGroups(first: 1) {\n            edges {\n              node {\n                name\n                options {\n                  name\n                  values\n                }\n                sellingPlans(first: 10) {\n                  edges {\n                    node {\n                      id\n                      name\n                      description\n                      recurringDeliveries\n                      priceAdjustments {\n                        orderCount\n                        adjustmentValue {\n                          __typename\n                          ... on SellingPlanPercentagePriceAdjustment {\n                            adjustmentPercentage\n                          }\n                          ... on SellingPlanFixedAmountPriceAdjustment {\n                            adjustmentAmount {\n                              amount\n                              currencyCode\n                            }\n                          }\n                          ... on SellingPlanFixedPriceAdjustment {\n                            price {\n                              amount\n                              currencyCode\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n          options {\n            id\n            name\n            values\n          }\n          compareAtPriceRange {\n            minVariantPrice {\n              amount\n              currencyCode\n            }\n          }\n          priceRange {\n            minVariantPrice {\n              amount\n              currencyCode\n            }\n          }\n          variants(first: 250) {\n            pageInfo {\n              hasNextPage\n              hasPreviousPage\n              endCursor\n            }\n            edges {\n              node {\n                id\n                image {\n                  url\n                  altText\n                  width\n                  height\n                }\n                title\n                sku\n                quantityAvailable\n                availableForSale\n                requiresShipping\n                selectedOptions {\n                  name\n                  value\n                }\n                price {\n                  amount\n                  currencyCode\n                }\n                compareAtPrice {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n          }\n        }\n      }\n      pageInfo {\n        hasNextPage\n        endCursor\n      }\n    }\n  }\n`;export const updateCartCurrency=`\n  mutation updateCartCurrency($cartId: ID!, $countryCode: CountryCode) {\n    cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: { countryCode: $countryCode }) {\n      cart {\n        id\n        buyerIdentity {\n          countryCode\n        }\n        cost {\n          totalAmount {\n            amount\n            currencyCode\n          }\n        }\n      }\n    }\n  }\n`;\nexport const __FramerMetadata__ = {\"exports\":{\"updateCartAttributes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getProducts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCartQueryNoPlans\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"updatelineMutationNoPlans\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"addToCartMutationNoPlans\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"removeLineMutationNoPlans\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getAvailableCurrencies\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cartQuery\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getProductsBackup\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getProductMetafields\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"updateCartCurrency\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCartQuery\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getProductsQueryByCountry\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"addToCartMutation\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createCartMutationWithAttributes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"updatelineMutation\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createCartMutationNoPlans\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createCartMutation\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"removeLineMutation\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./mutations_v2.map","import{jsx as _jsx}from\"react/jsx-runtime\";export function withDataAuthenticated(Component){return props=>{return /*#__PURE__*/_jsx(Component,{...props,\"data-o-authenticated\":\"1\"});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withDataAuthenticated\":{\"type\":\"reactHoc\",\"name\":\"withDataAuthenticated\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WithDataLoggedIn.map","import{jsx as _jsx}from\"react/jsx-runtime\";export function withDataAuthenticated(Component){return props=>{return /*#__PURE__*/_jsx(Component,{...props,\"data-o-anonymous\":\"1\"});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withDataAuthenticated\":{\"type\":\"reactHoc\",\"name\":\"withDataAuthenticated\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WithDataLoggedOut.map"],"mappings":"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"}