{"version":3,"file":"Live_pricing_store.p9wAnO2F.mjs","names":["e","t","r","n","c","o","a","s","useState","e","create","e"],"sources":["https:/framerusercontent.com/modules/ieMSnIJVCiFKJmsg1OmM/KWFJj6n258MVreTmJoNk/Zustand.js","https:/framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js","https:/framerusercontent.com/modules/TgekT24FCXsp3m1M9KnX/51KiLjOfRPpzwxhbKXBD/Get_shopify_config.js","https:/framerusercontent.com/modules/c5gtsBimYk7u4sSXwOlt/qYF6ekN6aOwuxUWbCTWd/Shopify_client.js","https:/framerusercontent.com/modules/rf7AA1DfRPDSrhfmrmpj/dKau7FhYy42WCs2fsPCY/Live_pricing_config.js","https:/framerusercontent.com/modules/we4CziCpeycopbrILvTY/EVa1LORMEgcp0AY9EZq8/Live_pricing_service.js","https:/framerusercontent.com/modules/CyNT4Zo4FfF9Gv96WuEJ/2uJZkLBTWEMjZMRXEI9e/Live_pricing_cache.js","https:/framerusercontent.com/modules/3C9wF5reOoO0EZmRXDu0/ygnGnGXVxi5aqDsPa5BS/Live_pricing_store.js"],"sourcesContent":["import e from\"react\";var t,r={},n={};function c(){if(t)return n;t=1;const e=e=>{let t;const r=new Set,n=(e,n)=>{const c=\"function\"==typeof e?e(t):e;if(!Object.is(c,t)){const e=t;t=(null!=n?n:\"object\"!=typeof c||null===c)?c:Object.assign({},t,c),r.forEach(r=>r(t,e));}},c=()=>t,o={setState:n,getState:c,getInitialState:()=>a,subscribe:e=>(r.add(e),()=>r.delete(e))},a=t=e(n,c,o);return o;};return n.createStore=t=>t?e(t):e,n;}var o,a,u={};function s(){if(o)return u;o=1;var t=e,r=c();const n=e=>e;function a(e,r=n){const c=t.useSyncExternalStore(e.subscribe,t.useCallback(()=>r(e.getState()),[e,r]),t.useCallback(()=>r(e.getInitialState()),[e,r]));return t.useDebugValue(c),c;}const s=e=>{const t=r.createStore(e),n=e=>a(t,e);return Object.assign(n,t),n;};return u.create=e=>e?s(e):s,u.useStore=a,u;}function i(){return a||(a=1,function(e){var t=c(),r=s();Object.keys(t).forEach(function(r){\"default\"===r||Object.prototype.hasOwnProperty.call(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[r];}});}),Object.keys(r).forEach(function(t){\"default\"===t||Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[t];}});});}(r)),r;}var f=i().create;export{f as create};\nexport const __FramerMetadata__ = {\"exports\":{\"create\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Zustand.map","import{RenderTarget}from\"framer\";import{useEffect,useState}from\"react\";export function isOnFramerCanvasFn(){return RenderTarget.hasRestrictions();}export function isBrowserFn(){return typeof window!==\"undefined\";}export function useIsInFramerPreview(){const[isInFramerPreview,setIsInFramerPreview]=useState(false);useEffect(()=>{if(typeof window==\"undefined\")return;const currrentUrl=window.location.href;const isInFramerPreview=currrentUrl.includes(\"framercanvas.com\");setIsInFramerPreview(isInFramerPreview);},[]);return isInFramerPreview;}\nexport const __FramerMetadata__ = {\"exports\":{\"isBrowserFn\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isOnFramerCanvasFn\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsInFramerPreview\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Framer_utils.map","import{isBrowserFn}from\"https://framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js\";let _cfg=null;export function getShopifyConfig(){const isBrowser=isBrowserFn();if(!isBrowser)return null;if(_cfg)return _cfg;// 1) JSON script\nconst el=document.getElementById(\"frameship-shopify-config\");if(el?.textContent){try{_cfg=JSON.parse(el.textContent);if(_cfg?.shop&&_cfg?.storefrontToken)return _cfg;}catch(error){console.error(\"Error parsing Shopify config:\",error);return null;}}// throw new Error(\"Frameship Shopify config not found on page.\");\nreturn null;}export function getLicenseId(){const config=getShopifyConfig();return config?.licenseId||null;}export function getIncludeSellingPlansFlag(){const config=getShopifyConfig();return config?.ff_include_selling_plans===true;}\nexport const __FramerMetadata__ = {\"exports\":{\"getLicenseId\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getIncludeSellingPlansFlag\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getShopifyConfig\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Get_shopify_config.map","import{getShopifyConfig}from\"https://framerusercontent.com/modules/TgekT24FCXsp3m1M9KnX/51KiLjOfRPpzwxhbKXBD/Get_shopify_config.js\";export async function shopifyClient({query,variables}){try{const config=getShopifyConfig();// Early return if config is null or missing required fields\nif(!config||!config.shop||!config.storefrontToken){return{data:null,errors:[{message:\"Shopify configuration is not available. Make sure the frameship-shopify-config script is present on the page.\"}]};}// Construct the Shopify GraphQL endpoint URL\nconst endpoint=`https://${config.shop}/api/${config.apiVersion}/graphql.json`;// Prepare the request body\nconst requestBody={query,...variables&&{variables}};// Make the fetch request\nconst response=await fetch(endpoint,{method:\"POST\",headers:{\"Content-Type\":\"application/json\",\"X-Shopify-Storefront-Access-Token\":config.storefrontToken},body:JSON.stringify(requestBody)});// Check if the response is ok\nif(!response.ok){return{data:null,errors:[{message:`Shopify API request failed: ${response.status} ${response.statusText}`}]};}// Parse the JSON response\nconst result=await response.json();// Check for GraphQL errors\nif(result.errors&&result.errors.length>0){const errorMessages=result.errors.map(error=>error.message).join(\", \");// throw new Error(`GraphQL errors: ${errorMessages}`);\nreturn{data:null,errors:[{message:`GraphQL errors: ${errorMessages}`}]};}// Return the data if everything is successful\nreturn{data:result.data,errors:[]};}catch(error){return{data:null,errors:[{message:`Unexpected error occurred: ${String(error)}`}]};}}\nexport const __FramerMetadata__ = {\"exports\":{\"shopifyClient\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","export const LIVE_PRICING_CONFIG={CACHE_TTL_MINUTES:10,DEFAULT_CURRENCY:\"USD\",MAX_PRODUCTS_PER_QUERY:250,ENABLE_LIVE_PRICING:true};\nexport const __FramerMetadata__ = {\"exports\":{\"LIVE_PRICING_CONFIG\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Live_pricing_config.map","import{shopifyClient}from\"https://framerusercontent.com/modules/c5gtsBimYk7u4sSXwOlt/qYF6ekN6aOwuxUWbCTWd/Shopify_client.js\";import{LIVE_PRICING_CONFIG}from\"https://framerusercontent.com/modules/rf7AA1DfRPDSrhfmrmpj/dKau7FhYy42WCs2fsPCY/Live_pricing_config.js\";const LIVE_PRICING_QUERY=`#graphql\n  query GetLivePricing($country: CountryCode, $first: Int!, $after: String) \n    @inContext(country: $country) {\n    products(first: $first, after: $after) {\n      edges {\n        node {\n          id\n          variants(first: 100) {\n            edges {\n              node {\n                id\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`;/**\n * Normalize pricing data from GraphQL response to flat map\n */function normalizePricingData(products){const normalized={};for(const product of products){for(const{node:variant}of product.variants.edges){// Strip GID prefix if present\nconst variantId=variant.id.replace(\"gid://shopify/ProductVariant/\",\"\");normalized[variantId]={price:variant.price,compareAtPrice:variant.compareAtPrice};}}return normalized;}/**\n * Fetch all pages of live pricing data recursively\n */async function fetchAllPagesLivePricing(country,after,accumulatedProducts=[]){const variables={first:LIVE_PRICING_CONFIG.MAX_PRODUCTS_PER_QUERY,after,...country&&{country}};const result=await shopifyClient({query:LIVE_PRICING_QUERY,variables});// Handle errors\nif(result.errors.length>0){return{data:null,errors:result.errors};}if(!result.data||!result.data.products){return{data:null,errors:[{message:\"No products data in response\"}]};}// Accumulate products from this page\nconst products=result.data.products.edges.map(e=>e.node);const allProducts=[...accumulatedProducts,...products];// Check if there are more pages\nif(result.data.products.pageInfo.hasNextPage&&result.data.products.pageInfo.endCursor){// Recursively fetch next page\nreturn fetchAllPagesLivePricing(country,result.data.products.pageInfo.endCursor,allProducts);}// All pages fetched, normalize and return\nconst normalized=normalizePricingData(allProducts);return{data:normalized,errors:[]};}/**\n * Main function to fetch live pricing for all products\n * @param country - Country code for market-specific pricing (e.g., \"US\", \"GB\")\n * @returns Normalized pricing data keyed by variant ID\n */export async function fetchLivePricing(country){try{const result=await fetchAllPagesLivePricing(country);return result;}catch(error){console.error(\"[Live Pricing] Error fetching live pricing:\",error);return{data:null,errors:[{message:error instanceof Error?error.message:\"Unknown error fetching live pricing\"}]};}}\nexport const __FramerMetadata__ = {\"exports\":{\"fetchLivePricing\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NormalizedLivePricing\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Live_pricing_service.map","import{LIVE_PRICING_CONFIG}from\"https://framerusercontent.com/modules/rf7AA1DfRPDSrhfmrmpj/dKau7FhYy42WCs2fsPCY/Live_pricing_config.js\";const CACHE_KEY=\"frameship_live_pricing_cache\";/**\n * Get live pricing data from localStorage cache\n */export function getLivePricingFromCache(){try{const cached=localStorage.getItem(CACHE_KEY);if(!cached)return null;const parsed=JSON.parse(cached);return parsed;}catch(error){console.error(\"Error reading live pricing cache:\",error);return null;}}/**\n * Save live pricing data to localStorage cache\n */export function saveLivePricingToCache(data,market){try{const cacheData={data,timestamp:Date.now(),market,defaultCurrency:LIVE_PRICING_CONFIG.DEFAULT_CURRENCY};localStorage.setItem(CACHE_KEY,JSON.stringify(cacheData));}catch(error){console.error(\"Error saving live pricing cache:\",error);}}/**\n * Check if cache is still valid (not expired)\n */export function isCacheValid(cache,ttlMinutes=LIVE_PRICING_CONFIG.CACHE_TTL_MINUTES){if(!cache)return false;const ageMinutes=(Date.now()-cache.timestamp)/1e3/60;return ageMinutes<ttlMinutes;}/**\n * Determine if live pricing should be fetched\n * Fetch if:\n * 1. No cache exists\n * 2. Cache expired (> TTL)\n * 3. Market changed (different country code)\n */export function shouldFetchLivePricing(currentMarket){const cache=getLivePricingFromCache();// No cache exists - need to fetch\nif(!cache){return true;}// Cache expired - need to fetch\nif(!isCacheValid(cache)){return true;}// Market changed - need to fetch\nif(currentMarket&&cache.market!==currentMarket){return true;}return false;}/**\n * Clear live pricing cache\n */export function clearLivePricingCache(){try{localStorage.removeItem(CACHE_KEY);}catch(error){console.error(\"Error clearing live pricing cache:\",error);}}\nexport const __FramerMetadata__ = {\"exports\":{\"shouldFetchLivePricing\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getLivePricingFromCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"saveLivePricingToCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LivePricingCacheData\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clearLivePricingCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isCacheValid\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Live_pricing_cache.map","import{create}from\"https://framerusercontent.com/modules/ieMSnIJVCiFKJmsg1OmM/KWFJj6n258MVreTmJoNk/Zustand.js\";import{fetchLivePricing}from\"https://framerusercontent.com/modules/we4CziCpeycopbrILvTY/EVa1LORMEgcp0AY9EZq8/Live_pricing_service.js\";import{getLivePricingFromCache,saveLivePricingToCache,shouldFetchLivePricing,clearLivePricingCache}from\"https://framerusercontent.com/modules/CyNT4Zo4FfF9Gv96WuEJ/2uJZkLBTWEMjZMRXEI9e/Live_pricing_cache.js\";import{LIVE_PRICING_CONFIG}from\"https://framerusercontent.com/modules/rf7AA1DfRPDSrhfmrmpj/dKau7FhYy42WCs2fsPCY/Live_pricing_config.js\";export const useLivePricingStore=create((set,get)=>{// Initialize from cache on store creation\nconst cachedData=getLivePricingFromCache();const initialData=cachedData?.data||null;return{livePricing:initialData,isLoading:false,isFetching:false,error:null,setLivePricing:data=>{set({livePricing:data,error:null});},fetchLivePricingData:async(market,force)=>{// Check if feature is enabled\nif(!LIVE_PRICING_CONFIG.ENABLE_LIVE_PRICING){return;}// Check if we should fetch\nif(!force&&!shouldFetchLivePricing(market)){return;}const currentData=get().livePricing;const hasExistingData=currentData!==null;// Set appropriate loading state\nif(hasExistingData){// Background refresh - use isFetching\nset({isFetching:true,error:null});}else{// Initial load - use isLoading\nset({isLoading:true,error:null});}try{const result=await fetchLivePricing(market);if(result.errors.length>0){const errorMsg=result.errors.map(e=>e.message).join(\", \");console.error(\"[Live Pricing] Fetch errors:\",errorMsg);set({error:errorMsg,isLoading:false,isFetching:false});return;}if(result.data){// Update store\nset({livePricing:result.data,error:null,isLoading:false,isFetching:false});// Save to cache\nsaveLivePricingToCache(result.data,market||\"default\");}else{set({error:\"No data received\",isLoading:false,isFetching:false});}}catch(error){const errorMsg=error instanceof Error?error.message:\"Unknown error\";console.error(\"[Live Pricing] Unexpected error:\",errorMsg);set({error:errorMsg,isLoading:false,isFetching:false});}},getLivePrice:variantId=>{const{livePricing}=get();if(!livePricing)return null;// Strip GID prefix if present in the variant ID\nconst cleanVariantId=variantId.replace(\"gid://shopify/ProductVariant/\",\"\");return livePricing[cleanVariantId]||null;},clearLivePricing:()=>{clearLivePricingCache();set({livePricing:null,error:null,isLoading:false,isFetching:false});}};});\nexport const __FramerMetadata__ = {\"exports\":{\"useLivePricingStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Live_pricing_store.map"],"mappings":"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"}