{"version":3,"file":"useStoreCheckoutEnabled.Cbw0CK-R.mjs","names":["useState","useState","__esmMin","init_npm_react_18_3_1","window","init_ssg_sandbox_shims","ce","le","_e","useLocaleCode","init_framer_J2N2IBQG","chargebackFeeFallbackByCurrency","getFallbackCurrency","init_Helpers","getCountryCodeFromUrl","formatConditionalDecimalPrice","init_currency","getCurrencyFromCountryCode","usePricingData","init_plansStore","teyaNameOf","model","MODEL_TEYA_NAME","findByTeyaName","items","modelOf","item","name","teyaNameFromLabel","label","words","getProMachineModel","PRO_MACHINE_MODEL_BY_COUNTRY","countryCode","isTapMachine","upperApi","apiName","upperProp","propName","getCheckoutBaseUrl","appendMarketingParams","currentParams","value","key","url","appendAmplitudeDeviceId","deviceId","err","catalogueFrom","offers","offer","id","machines","machine","buildCheckoutHref","request","market","STORE_MARKETS","origin","offerId","sellable","warnedCheckoutLinks","pricing","buildMachineCheckoutUrl","tap","options","init_machines","pct","getHeadlineFee","cardPresentRate","r","consumerCredit","f","defaultRate","defaultFee","getChargebackFee","flatFee","parsePromoFromCustomOfferId","raw","customOfferId","upper","parts","discountLength","originalMonthlyPlan","useGetPricing","dataStore","setDataStore","localeCode","region","useGetPricingResponses","tapMachine","isOfferLoading","displayableTerminals","getDisplayableTerminals","terminals","premiumTerminalPrice","getPremiumTerminalPrice","plans","mapToOffer","stored","storedStillExists","p","defaultType","selectedPlan","plan","selectedOffer","o","mapToTerminal","terminal","isTerminalLoading","clickSubtype","el","subtype","tryRestoreFromSession","saved","parsed","getPreferredOrder","trySelectInOrder","order","runSelection","obs","kill","getPricingApiUrl","hostname","PRICING_API_ORIGIN","parsePricingResponse","isRecord","isApiTerminal","isApiOffer","loadPricing","pending","pricingRequests","response","setOffers","setTerminals","setIsOfferLoading","setIsTerminalLoading","error","setError","cancelled","result","message","validOfferTypes","validMachineModels","hiddenMachineModels","isDisplayableTerminal","discountPercentageByPlan","getMachineName","getMachineDisplayName","getTranslatedMonthlyPlan","getTranslatedFeeDescription","getTranslatedSaveUpToPrice","getTranslatedDiscountedMonthlyPlan","getTranslatedOriginalMonthlyPlan","emptyOffer","emptyTerminal","init_useGetPricing","prices","price","fullPrice","originalMachinePrice","planType","matched","d","discountedPrice","safeDiscountedPrice","machinePrice","showOriginalPrice","isICPP","isBlended","cardRate","vatRate","highlightedText","devicePromotion","fee","feeDescription","lowerText","subType","fees","details","discountedPlanDisplay","originalPlanDisplay","mappedName","formattedPlan","monthlyPlan","fullCopies","feePercentage","formattedPrice","formatted","readStoreCheckoutEnabled","storeCheckoutFlag","body","useStoreCheckoutEnabled","enabled","setEnabled","active","init_useStoreCheckoutEnabled"],"sources":["https:/framerusercontent.com/modules/njEUtIxWcfiOZY8vuI62/9cWFGXA8RZSk5BdXMhrO/machines.js","https:/framerusercontent.com/modules/CCKA4V5KkQJEwSFaKAMZ/tSktcaqWgP5nlfJNcrzn/useGetPricing.js","https:/framerusercontent.com/modules/VltIFcZeP10ndbJgzFbh/nRBGObtaHZa7PP6wH71k/useStoreCheckoutEnabled.js"],"sourcesContent":["/**\n * The product each model code is sold as, mirroring CARD_MACHINES in the\n * marketing site (src/lib/pricing.ts). Teya Pro is a Verifone in GB, ES, IT and\n * HU, a PAX in PT, SK and CZ, and a Sunmi in HR, so code that wants a machine\n * asks for a name and lets the market's terminals supply the hardware.\n */export const MODEL_TEYA_NAME={VERIFONE_VP101:\"Teya Pro\",PAX_A920_PRO:\"Teya Pro\",SUNMI_P2_PRO:\"Teya Pro\",PAX_A77:\"Teya Go\",NEXGO_N6_PRO_LITE:\"Teya Go\",VERIFONE_VN112:\"Teya Lite\",PAX_A920:\"Teya Essential\"};export function teyaNameOf(model){return model?MODEL_TEYA_NAME[model]??null:null;}/** The first item whose model is sold under the given name, if the market sells it. */export function findByTeyaName(items,name,modelOf){return items?.find(item=>teyaNameOf(modelOf(item))===name);}/** Reads a machine name from a card variant or label, e.g. \"Pro\", \"Go Mobile\", \"Teya Lite\". */export function teyaNameFromLabel(label){if(typeof label!==\"string\")return null;const words=label.toUpperCase().split(/[^A-Z]+/);if(words.includes(\"PRO\"))return\"Teya Pro\";if(words.includes(\"GO\"))return\"Teya Go\";if(words.includes(\"LITE\"))return\"Teya Lite\";if(words.includes(\"ESSENTIAL\"))return\"Teya Essential\";return null;}const PRO_MACHINE_MODEL_BY_COUNTRY={GB:\"VERIFONE_VP101\",IS:\"VERIFONE_VP101\",IT:\"VERIFONE_VP101\",ES:\"VERIFONE_VP101\",HU:\"VERIFONE_VP101\",PT:\"PAX_A920_PRO\",CZ:\"PAX_A920_PRO\",SK:\"PAX_A920_PRO\"};/**\n * Replaces legacy Sunmi Pro selections only for the requested countries.\n * All other countries keep the existing Sunmi behavior.\n */export function getProMachineModel(countryCode){return PRO_MACHINE_MODEL_BY_COUNTRY[countryCode.toUpperCase()]??\"SUNMI_P2_PRO\";}/**\n * Detects whether a machine should be treated as TAP.\n * Name can come from the machine card or props override.\n */export function isTapMachine(apiName,propName){const upperApi=apiName?.toUpperCase()||\"\";const upperProp=propName?.toUpperCase()||\"\";return upperApi.includes(\"TAP\")||upperProp.includes(\"TAP\");}/**\n * Returns the correct checkout base URL depending on environment.\n * Production uses business.teya.com, preview/local uses business.teya.xyz.\n */export function getCheckoutBaseUrl(){if(typeof window===\"undefined\")return\"\";const host=window.location.hostname;const isProd=host.includes(\"teya.com\");return isProd?\"https://business.teya.com/checkout\":\"https://business.teya.xyz/checkout\";}/**\n * Appends marketing query params (UTM, ad click IDs, etc.)\n * from the current page to a target URL.\n */export function appendMarketingParams(url){if(typeof window===\"undefined\")return;const currentParams=new URLSearchParams(window.location.search);const marketingKeys=[\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"utm_id\",\"gclid\",\"fbclid\",\"msclkid\",\"ttclid\",\"yclid\"];marketingKeys.forEach(key=>{const value=currentParams.get(key);if(value)url.searchParams.set(key,value);});}/**\n * Attempts to append Amplitude Device ID to the checkout URL.\n */export function appendAmplitudeDeviceId(url){try{const deviceId=globalThis.amplitude?.getDeviceId?.();if(deviceId)url.searchParams.set(\"deviceId\",deviceId);}catch(err){console.warn(\"[machines.ts] Could not append amplitude deviceId:\",err);}}export const TAP_MODEL=\"TAP\";/** Each store market's URL prefix on teya.com and the locale its checkout runs in. */const STORE_MARKETS={GB:{prefix:\"\",locale:\"en-GB\"},IS:{prefix:\"/is\",locale:\"is-IS\"},HU:{prefix:\"/hu\",locale:\"hu-HU\"},HR:{prefix:\"/hr\",locale:\"hr-HR\"},CZ:{prefix:\"/cz\",locale:\"cs-CZ\"},PT:{prefix:\"/pt\",locale:\"pt-PT\"},SK:{prefix:\"/sk\",locale:\"sk-SK\"},IT:{prefix:\"/it\",locale:\"it-IT\"},ES:{prefix:\"/es\",locale:\"es-ES\"}};/** Works on API offers and terminals and on the mapped plans and machines in the stores. */export function catalogueFrom(offers,machines){return{offerIds:(offers??[]).map(offer=>offer.id).filter(id=>Boolean(id)),models:(machines??[]).map(machine=>machine.model??machine.id).filter(model=>Boolean(model)&&model!==TAP_MODEL)};}const warnedCheckoutLinks=new Set;/**\n * Where a Buy button goes, mirroring buildCheckoutUrl in the marketing site\n * (src/lib/pricing.ts): the site's own /store/checkout while it is switched on,\n * the merchant portal's checkout while it is off. A link that cannot name an\n * offer and a machine the market sells goes to the market's pricing page\n * instead, because the checkout 404s on anything else.\n */export function buildCheckoutHref(request){const countryCode=request.countryCode.toUpperCase();const market=STORE_MARKETS[countryCode];const origin=typeof window===\"undefined\"?\"https://www.teya.com\":window.location.origin;const offerId=request.offerId==null?\"\":String(request.offerId);const model=request.machineModel??\"\";const sellable=request.catalogue.offerIds.includes(offerId)&&(model===TAP_MODEL||request.catalogue.models.includes(model));if(!market||!sellable){const key=`${countryCode}|${offerId}|${model}`;if(request.catalogue.offerIds.length&&!warnedCheckoutLinks.has(key)){warnedCheckoutLinks.add(key);console.warn(`[checkout] no sellable offer and machine for ${key}; linking to the pricing page`);}const pricing=new URL(`${origin}${market?.prefix??\"\"}/pricing`);appendMarketingParams(pricing);return pricing.href;}const url=request.storeCheckoutEnabled?new URL(`${origin}${market.prefix}/store/checkout`):new URL(getCheckoutBaseUrl()||\"https://business.teya.com/checkout\");url.searchParams.set(\"offerId\",offerId);url.searchParams.set(\"machineModel\",model);url.searchParams.set(\"countryCode\",countryCode);url.searchParams.set(\"locale\",market.locale);appendMarketingParams(url);// The portal needs the Amplitude device id; the site's own checkout shares the session.\nif(!request.storeCheckoutEnabled)appendAmplitudeDeviceId(url);return url.href;}/**\n * Builds the checkout URL for a machine card: the card's machine, or TAP,\n * with the selected plan. See buildCheckoutHref for where it points.\n */export function buildMachineCheckoutUrl(options){const tap=isTapMachine(options.machineApiName,options.machinePropName);return new URL(buildCheckoutHref({offerId:options.selectedPlanId,machineModel:tap?TAP_MODEL:options.machineId,countryCode:options.countryCode,catalogue:options.catalogue,storeCheckoutEnabled:options.storeCheckoutEnabled}));}\nexport const __FramerMetadata__ = {\"exports\":{\"isTapMachine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"teyaNameFromLabel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MarketCatalogue\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"buildMachineCheckoutUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"catalogueFrom\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CheckoutRequest\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getProMachineModel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCheckoutBaseUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"teyaNameOf\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"buildCheckoutHref\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"appendMarketingParams\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"findByTeyaName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TAP_MODEL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"appendAmplitudeDeviceId\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MODEL_TEYA_NAME\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./machines.map","import{useEffect,useState,useLayoutEffect}from\"react\";import{usePricingData}from\"https://framerusercontent.com/modules/Z0Bhc0D6PskV0ZIHIkgR/DGk1tqkKXH9SwZtirnZw/plansStore.js\";import{formatConditionalDecimalPrice,chargebackFeeFallbackByCurrency,getFallbackCurrency,getCountryCodeFromUrl}from\"https://framerusercontent.com/modules/RRKeJWRObO6zvJYvvGR6/zKEzNyBZRUbMhkuSdoOC/Helpers.js\";import{useLocaleCode}from\"framer\";import{getCurrencyFromCountryCode}from\"https://framerusercontent.com/modules/GDHDiU0mfse2HCtFZ7EF/ItV3iZwATv4gUQ7ZhrjM/currency.js\";import{teyaNameOf}from\"https://framerusercontent.com/modules/njEUtIxWcfiOZY8vuI62/9cWFGXA8RZSk5BdXMhrO/machines.js\";/* -------------------------------------------------\n   Percentages: empty when the API omits a value,\n   never \"undefined%\" or a throw on null\n------------------------------------------------- */function pct(value){return typeof value===\"number\"&&Number.isFinite(value)?`${value.toFixed(2)}%`:\"\";}/* -------------------------------------------------\n   Unified headline fee extraction\n------------------------------------------------- */function getHeadlineFee(offer){const cardPresentRate=offer.rates?.find(r=>r.type===\"CARD_PRESENT\");const consumerCredit=pct(cardPresentRate?.fees?.find(f=>f.type===\"CONSUMER_CREDIT\")?.feePercentage);if(consumerCredit)return consumerCredit;const defaultRate=offer.rates?.find(r=>r.type===\"DEFAULT\");const defaultFee=pct(defaultRate?.fees?.find(f=>f.type===\"DEFAULT\")?.feePercentage);if(defaultFee)return`${defaultFee}${offer.type===\"ICPP\"?\"+\":\"\"}`;return pct(offer.rates?.[0]?.fees?.find(f=>typeof f.feePercentage===\"number\")?.feePercentage);}/* -------------------------------------------------\n   Chargeback: the offer's flat fee, else the\n   market's standard amount\n------------------------------------------------- */function getChargebackFee(offer,countryCode){const flatFee=offer.additionalFees?.find(f=>f.type===\"CHARGEBACK\")?.flatFee;return flatFee?formatConditionalDecimalPrice(flatFee,countryCode):chargebackFeeFallbackByCurrency[getFallbackCurrency(countryCode)]??\"€20\";}/* -------------------------------------------------\n   Promo detail extraction\n------------------------------------------------- */function parsePromoFromCustomOfferId(customOfferId){const raw=String(customOfferId??\"\");const upper=raw.toUpperCase();const isPromo=(upper.includes(\"XMAS\")||upper.includes(\"TRIAL\"))&&raw.includes(\";\");if(!isPromo){return{discountLength:0,originalMonthlyPlan:null};}const parts=raw.split(\";\");const discountLength=parts.length>1?parseInt(parts[1],10):0;const originalMonthlyPlan=parts.length>2?parseFloat(parts[2]):null;return{discountLength:Number.isFinite(discountLength)?discountLength:0,originalMonthlyPlan:Number.isFinite(originalMonthlyPlan)?originalMonthlyPlan:null};}/* -------------------------------------------------\n   Main hook\n------------------------------------------------- */export default function useGetPricing(mapper=item=>item){const[dataStore,setDataStore]=usePricingData();const localeCode=useLocaleCode();let countryCode=getCountryCodeFromUrl().toUpperCase();// Only use Framer's internal locale when in editor\nif(typeof window!==\"undefined\"&&window.location.hostname===\"framer.com\"){if(localeCode){const region=localeCode.split(\"-\")[1]?.toUpperCase();if(region)countryCode=region;}}const{offers,terminals,isOfferLoading,isTerminalLoading}=useGetPricingResponses({countryCode});const tapMachine={id:\"TAP\",machineName:\"Teya Tap\",machinePrice:\"Free\",originalMachinePrice:\"Free\",showOriginalPrice:false};useEffect(()=>{if(isOfferLoading||!offers.length)return;const displayableTerminals=getDisplayableTerminals(terminals);const premiumTerminalPrice=getPremiumTerminalPrice(displayableTerminals);/* -------------------------------------------------\n           Map raw API offers → plan objects\n        ------------------------------------------------- */const plans=offers.map(offer=>mapToOffer(offer,premiumTerminalPrice,countryCode)).filter(Boolean);if(!plans.length)return;const stored=dataStore?.selectedPlan;const storedStillExists=stored?.id&&plans.some(p=>p.id===stored.id);// default plan type per country\nconst defaultType=countryCode===\"GB\"?\"BOOST\":countryCode===\"ES\"?\"START\":\"THRIVE\";const selectedPlan=(storedStillExists?stored:null)||plans.find(plan=>plan.type===\"BESPOKE\")||plans.find(plan=>plan.type===defaultType)||plans.find(plan=>plan.type===\"THRIVE\")||plans.find(plan=>plan.type===\"BOOST\")||plans.find(plan=>plan.type===\"START\")||plans[0];const selectedOffer=offers.find(o=>o.id===selectedPlan.id)??offers[0];const machines=[...displayableTerminals.map(terminal=>mapToTerminal(terminal,selectedOffer,countryCode)).filter(Boolean),tapMachine];setDataStore({...dataStore,selectedPlan,isMachineLoading:isTerminalLoading,isPlanLoading:isOfferLoading,plans,machines});},[isOfferLoading,isTerminalLoading,offers,terminals,dataStore.selectedPlan]);/* -------------------------------------------------\n       Automatically select a default visible plan\n       after DOM is ready (BESPOKE - THRIVE - BOOST - START)\n    ------------------------------------------------- *//* -------------------------------------------------\n   Automatically select a default visible plan\n   after DOM is ready:\n   1) Any XMAS plan\n   2) THRIVE\n   3) BOOST\n   4) START\n------------------------------------------------- */useLayoutEffect(()=>{if(typeof document===\"undefined\")return;const clickSubtype=subtype=>{const el=document.querySelector(`button[subtype=\"${subtype}\"]`);if(!el)return false;el.click();return true;};const tryRestoreFromSession=()=>{try{const saved=sessionStorage.getItem(\"selectedPlan\");if(!saved)return false;const parsed=JSON.parse(saved);if(!parsed?.subType)return false;return clickSubtype(parsed.subType);}catch{return false;}};const getPreferredOrder=()=>{if(countryCode===\"GB\")return[\"BOOST\",\"THRIVE\",\"START\"];if(countryCode===\"ES\")return[\"START\",\"BOOST\",\"THRIVE\"];return[\"THRIVE\",\"BOOST\",\"START\"];};const trySelectInOrder=order=>{for(const subtype of order){if(clickSubtype(subtype))return true;}return false;};const runSelection=()=>{// Keep session restore first (remove this if you *always* want fresh defaults)\nif(tryRestoreFromSession())return true;return trySelectInOrder(getPreferredOrder());};// Try now\nif(runSelection())return;// If buttons aren’t mounted yet, observe briefly then try again\nconst obs=new MutationObserver(()=>{if(runSelection())obs.disconnect();});obs.observe(document.body,{childList:true,subtree:true});const kill=window.setTimeout(()=>obs.disconnect(),2e3);return()=>{window.clearTimeout(kill);obs.disconnect();};},[countryCode,offers]);return{};}/* -------------------------------------------------\n   Fetch pricing data\n\n   Read from the marketing site's /api/pricing, the same\n   PES data the CMS pricing pages and /store/checkout use,\n   so prices and offer ids agree with the checkout. It\n   allows any origin, and a plain GET with no headers\n   stays a simple CORS request from framer.app previews.\n------------------------------------------------- */const PRICING_API_ORIGIN={prod:\"https://www.teya.com\",dev:\"https://www.teya.xyz\"};export function getPricingApiUrl(hostname,countryCode){const origin=hostname.includes(\"teya.com\")?PRICING_API_ORIGIN.prod:PRICING_API_ORIGIN.dev;return`${origin}/api/pricing?countryCode=${encodeURIComponent(countryCode)}`;}const isRecord=value=>typeof value===\"object\"&&value!==null&&!Array.isArray(value);const isApiTerminal=value=>isRecord(value)&&typeof value.model===\"string\";const isApiOffer=value=>isRecord(value)&&typeof value.id===\"string\";export function parsePricingResponse(value){if(!isRecord(value))return null;const{terminals,offers}=value;return{terminals:Array.isArray(terminals)?terminals.filter(isApiTerminal):[],offers:Array.isArray(offers)?offers.filter(isApiOffer):[]};}// One request per URL for the whole page: several overrides read pricing.\nconst pricingRequests=new Map;function loadPricing(url){const pending=pricingRequests.get(url);if(pending)return pending;const request=fetch(url).then(async response=>{if(!response.ok)throw new Error(`HTTP ${response.status}`);const parsed=parsePricingResponse(await response.json());if(!parsed)throw new Error(\"unexpected response body\");return parsed;});pricingRequests.set(url,request);// Forget a failed request so the next mount retries it.\nrequest.catch(()=>pricingRequests.delete(url));return request;}export function useGetPricingResponses({countryCode=\"GB\"}){const[offers,setOffers]=useState([]);const[terminals,setTerminals]=useState([]);const[isOfferLoading,setIsOfferLoading]=useState(true);const[isTerminalLoading,setIsTerminalLoading]=useState(true);const[error,setError]=useState(\"\");useEffect(()=>{let cancelled=false;const hostname=typeof window!==\"undefined\"?window.location.hostname:\"\";const url=getPricingApiUrl(hostname,countryCode);loadPricing(url).then(result=>{if(cancelled)return;if(!result.offers.length)console.warn(`[pricing] ${url} returned no offers`);setOffers(result.offers);setTerminals(result.terminals);}).catch(err=>{if(cancelled)return;const message=err instanceof Error?err.message:String(err);console.warn(`[pricing] ${url} failed: ${message}`);setError(message);}).finally(()=>{if(cancelled)return;setIsOfferLoading(false);setIsTerminalLoading(false);});return()=>{cancelled=true;};},[countryCode]);return{offers,terminals,isOfferLoading,isTerminalLoading,error};}/* -------------------------------------------------\n   Mapping functions\n------------------------------------------------- */export const validOfferTypes=[\"START\",\"BOOST\",\"THRIVE\",\"HOLIDAY_SPECIAL\",\"BESPOKE\"];export const validMachineModels=[\"PAX_A77\",\"PAX_A920_PRO\",\"SUNMI_P2_PRO\",\"VERIFONE_VP101\",\"VERIFONE_VN112\",\"NEXGO_N6_PRO_LITE\"];export const hiddenMachineModels=[\"VERIFONE_VICTA_FF_BASE\"];export const isDisplayableTerminal=terminal=>{if(!terminal||!terminal.model)return false;if(hiddenMachineModels.includes(terminal.model))return false;return validMachineModels.includes(terminal.model);};export const getDisplayableTerminals=(terminals=[])=>terminals.filter(isDisplayableTerminal);export const getPremiumTerminalPrice=(terminals=[])=>{const prices=terminals.map(terminal=>terminal.payOnce?.priceInLc).filter(price=>typeof price===\"number\");return prices.length>0?Math.max(...prices):0;};export const mapToTerminal=(terminal,selectedPlan,countryCode)=>{if(!isDisplayableTerminal(terminal))return null;const fullPrice=typeof terminal.payOnce?.priceInLc===\"number\"?terminal.payOnce.priceInLc:0;const originalMachinePrice=formatConditionalDecimalPrice(fullPrice,countryCode);const planType=selectedPlan?.type;const discounts=selectedPlan?.terminalsDiscount??[];/* -------------------------------------------------\n       1️) Try to find discounted price from API\n    ------------------------------------------------- */const matched=discounts.find(d=>d.model===terminal.model);let discountedPrice=matched?.payOnce?.priceInLc;/* -------------------------------------------------\n       2️) If no API discount exists, fall back to old % rules\n    ------------------------------------------------- */if(discountedPrice==null){const fallbackDiscountPct=discountPercentageByPlan[planType??\"\"]??0;discountedPrice=fullPrice*(1-fallbackDiscountPct/100);}const safeDiscountedPrice=typeof discountedPrice===\"number\"?discountedPrice:0;const machinePrice=formatConditionalDecimalPrice(safeDiscountedPrice,countryCode);/* -------------------------------------------------\n       Show original price ONLY if a discount exists\n    ------------------------------------------------- */const showOriginalPrice=matched!=null&&typeof matched?.payOnce?.priceInLc===\"number\";return{id:terminal.model,machineName:getMachineDisplayName(terminal),machinePrice,originalMachinePrice,showOriginalPrice,numericPrice:safeDiscountedPrice,currency:getCurrencyFromCountryCode(countryCode)};};export const mapToOffer=(offer,premiumTerminalPrice,countryCode)=>{const planType=offer?.planType?.toUpperCase();if(!planType||!validOfferTypes.includes(planType))return null;const isICPP=offer.type===\"ICPP\";const isBlended=offer.type===\"BLENDED\";const cardRate=offer.rates?.find(r=>r.type===\"CARD_PRESENT\"||r.type===\"DEFAULT\")??{};const id=offer.id;const vatRate=offer.vatRate;const highlightedText=offer.highlightedText??offer.planType;const devicePromotion=offer.description??\"\";const fee=getHeadlineFee(offer);const feeDescription=getTranslatedFeeDescription(fee,countryCode);// Handles localized Holiday Special)\nconst lowerText=highlightedText?.toLowerCase()||\"\";let subType=planType;if(lowerText.includes(\"holiday\")||lowerText.includes(\"blagd\")){subType=\"HOLIDAY_SPECIAL\";}else if(planType===\"THRIVE\"){subType=\"THRIVE\";}// Fee mapping\nlet fees={};if(isICPP){fees={transaction:pct(cardRate?.fees?.[0]?.feePercentage),subheading:\"+ Scheme and Interchange fees\",amex:pct(cardRate?.amexFeePercentage)||pct(offer.rates?.[0]?.amexFeePercentage),chargeback:getChargebackFee(offer,countryCode)};}else if(isBlended){fees={transaction:pct(cardRate?.fees?.[0]?.feePercentage),amex:pct(cardRate?.amexFeePercentage)||pct(offer.rates?.[0]?.amexFeePercentage),chargeback:getChargebackFee(offer,countryCode)};}else{fees={debit:pct(cardRate?.fees?.find(f=>f.type===\"CONSUMER_DEBIT\")?.feePercentage),credit:pct(cardRate?.fees?.find(f=>f.type===\"CONSUMER_CREDIT\"||f.type===\"DEFAULT\")?.feePercentage),business:pct(cardRate?.fees?.find(f=>f.type===\"BUSINESS_OR_INTER\")?.feePercentage),amex:pct(cardRate?.amexFeePercentage)||pct(offer.rates?.[0]?.amexFeePercentage),chargeback:getChargebackFee(offer,countryCode)};}const offers={START:{showPlusVat:false,monthlyPlan:getTranslatedMonthlyPlan(0,countryCode),saveUpToPrice:getTranslatedSaveUpToPrice(0,countryCode)},BOOST:{showPlusVat:true,monthlyPlan:getTranslatedMonthlyPlan(offer.monthlyPlan,countryCode),saveUpToPrice:getTranslatedSaveUpToPrice(premiumTerminalPrice/2,countryCode)},THRIVE:{showPlusVat:true,monthlyPlan:getTranslatedMonthlyPlan(offer.monthlyPlan,countryCode),saveUpToPrice:getTranslatedSaveUpToPrice(premiumTerminalPrice,countryCode)},BESPOKE:{showPlusVat:true,monthlyPlan:getTranslatedMonthlyPlan(offer.monthlyPlan,countryCode),saveUpToPrice:getTranslatedSaveUpToPrice(premiumTerminalPrice,countryCode)}};const details=offers[planType]??offers.START;// -------------------------------------------------\n// customOfferId parsing (XMAS / TRIAL)\n// -------------------------------------------------\nconst customOfferId=offer.customOfferId??\"\";const{discountLength,originalMonthlyPlan}=parsePromoFromCustomOfferId(customOfferId);// now compute LOCALIZED display versions\nlet discountedPlanDisplay=null;let originalPlanDisplay=null;if(discountLength>0){discountedPlanDisplay=getTranslatedDiscountedMonthlyPlan(offer.monthlyPlan,discountLength,countryCode);}if(originalMonthlyPlan!=null){originalPlanDisplay=getTranslatedOriginalMonthlyPlan(originalMonthlyPlan,countryCode);}return{id,type:planType,subType,offerType:offer.type,vatRate,highlightedText,fee,devicePromotion,feeDescription,fees,isICPP,customOfferId,originalMonthlyPlan,discountLength,discountedPlanDisplay,originalPlanDisplay,monthlyPlanRaw:offer.monthlyPlan,...details};};/* -------------------------------------------------\n   Helpers\n------------------------------------------------- */const discountPercentageByPlan={START:0,BOOST:50,THRIVE:100,BESPOKE:100};export const getMachineName=model=>teyaNameOf(model)??\"\";export const getMachineDisplayName=terminal=>{const mappedName=getMachineName(terminal.model);if(terminal.model===\"VERIFONE_VN112\"){const apiName=terminal.name?.trim();return apiName||mappedName||\"Teya Lite\";}return mappedName;};export const getTranslatedMonthlyPlan=(monthlyPlan,countryCode)=>{const formattedPlan=formatConditionalDecimalPrice(monthlyPlan,countryCode);const fullCopies={GB:{paid:`${formattedPlan}/ month`},CZ:{paid:`${formattedPlan}/ měs\\xedc`},ES:{paid:`${formattedPlan}/ mes`},HR:{paid:`${formattedPlan}/ mjesečno`},HU:{paid:`${formattedPlan}/ h\\xf3`},IS:{paid:`${formattedPlan}/ m\\xe1nu\\xf0i`},IT:{paid:`${formattedPlan}/ mese`},PT:{paid:`${formattedPlan}/ m\\xeas`},SK:{paid:`${formattedPlan}/ mesiac`}};// If price is 0 show just \"£0\" (localised)\nif(monthlyPlan===0)return formattedPlan;// Otherwise show localized \"per month\" version\nreturn fullCopies[countryCode]?.paid??`${formattedPlan}/ month`;};export const getTranslatedFeeDescription=(fee,countryCode)=>{if(!fee)return\"\";const feePercentage=fee.toString().includes(\"%\")?fee:`${fee}%`;// TODO: Missing IS\nconst fullCopies={GB:`${feePercentage} for consumer cards`,CZ:`${feePercentage} u spotřebitelsk\\xfdch karet`,ES:`${feePercentage} para tarjetas`,HR:`${feePercentage} za potrošačke kartice`,HU:`${feePercentage} lakoss\\xe1gi k\\xe1rty\\xe1kra`,IS:`${feePercentage}`,IT:`${feePercentage} per carte al consumatore`,PT:`${feePercentage} para cart\\xf5es de consumidor`,SK:`${feePercentage} na spotrebiteľsk\\xe9 karty`};// Default in English\nreturn fullCopies[countryCode]??`${feePercentage} for consumer cards`;};export const getTranslatedSaveUpToPrice=(price,countryCode)=>{const formattedPrice=formatConditionalDecimalPrice(price,countryCode);const fullCopies={GB:{fullPrice:\"Buy up to 4 machines\",discounted:`Save up to ${formattedPrice}`},CZ:{fullPrice:\"Kupte až 4 termin\\xe1ly\",discounted:`Ušetřete až ${formattedPrice}`},ES:{fullPrice:\"Compra hasta 4 terminales\",discounted:`Ahorra hasta ${formattedPrice}`},HR:{fullPrice:\"Kupite do 4 terminala\",discounted:`Uštedite do ${formattedPrice}`},HU:{fullPrice:\"Ak\\xe1r 4 termin\\xe1lt v\\xe1s\\xe1rolhat\",discounted:`Ak\\xe1r ${formattedPrice} kedvezm\\xe9ny`},IS:{fullPrice:\"Kauptu allt a\\xf0 4 t\\xe6ki\",discounted:`Spara\\xf0u allt a\\xf0 ${formattedPrice}`},IT:{fullPrice:\"Fino a 4 terminali\",discounted:`Risparmia fino a ${formattedPrice}`},PT:{fullPrice:\"Compre at\\xe9 4 terminais\",discounted:`Poupe at\\xe9 ${formattedPrice}`},SK:{fullPrice:\"K\\xfapte až 4 termin\\xe1ly\",discounted:`Ušetrite až ${formattedPrice}`}};if(price===0)return fullCopies[countryCode]?.fullPrice??\"\";return fullCopies[countryCode]?.discounted??\"\";};export const getTranslatedDiscountedMonthlyPlan=(monthlyPlan,discountLength,countryCode)=>{const formattedPlan=formatConditionalDecimalPrice(monthlyPlan,countryCode);const copies={GB:`${formattedPlan}/ ${discountLength} months`,CZ:`${formattedPlan}/ ${discountLength} měs\\xedců`,ES:`${formattedPlan}/ ${discountLength} meses`,HR:`${formattedPlan}/ ${discountLength} mjeseca`,HU:`${formattedPlan}/ ${discountLength} h\\xf3nap`,IS:`${formattedPlan}/ ${discountLength} m\\xe1nu\\xf0ir`,IT:`${formattedPlan}/ ${discountLength} mesi`,PT:`${formattedPlan}/ ${discountLength} meses`,SK:`${formattedPlan}/ ${discountLength} mesiacov`};return copies[countryCode]??`${formattedPlan}/ ${discountLength} months`;};export const getTranslatedOriginalMonthlyPlan=(originalMonthlyPlan,countryCode)=>{if(originalMonthlyPlan==null)return\"\";const formatted=formatConditionalDecimalPrice(originalMonthlyPlan,countryCode);const copies={GB:`then ${formatted}/ month + VAT`,CZ:`pot\\xe9 ${formatted}/ měs\\xedc + DPH`,ES:`luego ${formatted}/ mes + IVA`,HR:`zatim ${formatted}/ mjesečno Plus PDV`,HU:`ut\\xe1na ${formatted}/ h\\xf3 + \\xc1FA`,IS:`s\\xed\\xf0an ${formatted}/ m\\xe1nu\\xf0i`,IT:`poi ${formatted}/ mese + IVA`,PT:`depois ${formatted}/ m\\xeas + IVA`,SK:`potom ${formatted}/ mesiac + PDH`};return copies[countryCode]??`then ${formatted}/ month`;};/* -------------------------------------------------\n   Empty fallback values\n------------------------------------------------- */export const emptyOffer={id:\"\",type:\"\",subType:\"\",highlightedText:\"\",monthlyPlan:\"\",monthlyTpvRange:\"\",fee:\"\",feeDescription:\"\",fees:{debit:\"\",credit:\"\",business:\"\",amex:\"\",chargeback:\"\"},devicePromotion:\"\",saveUpToPrice:\"\",showPlusVat:false};export const emptyTerminal={id:\"\",machineName:\"\",machinePrice:\"\"};\nexport const __FramerMetadata__ = {\"exports\":{\"parsePricingResponse\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mapToTerminal\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isDisplayableTerminal\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"validMachineModels\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getTranslatedDiscountedMonthlyPlan\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getDisplayableTerminals\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getPremiumTerminalPrice\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getTranslatedSaveUpToPrice\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyOffer\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getPricingApiUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getTranslatedOriginalMonthlyPlan\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getTranslatedFeeDescription\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mapToOffer\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getMachineName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useGetPricingResponses\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getTranslatedMonthlyPlan\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hiddenMachineModels\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"validOfferTypes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyTerminal\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getMachineDisplayName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useGetPricing.map","import{useEffect,useState}from\"react\";let storeCheckoutFlag=null;/**\n * Whether the marketing site's own /store/checkout is switched on, read from\n * its route manifest: the same flag the site's own Buy buttons follow. The\n * request is same-origin, so on framer.app and in the editor it fails and reads\n * as off, which is right because there is no local checkout there.\n */export function readStoreCheckoutEnabled(){if(typeof window===\"undefined\")return Promise.resolve(false);if(!storeCheckoutFlag){storeCheckoutFlag=fetch(\"/api/route-manifest\",{credentials:\"omit\"}).then(response=>response.ok?response.json():null).then(body=>typeof body===\"object\"&&body!==null&&\"storeCheckoutEnabled\"in body&&body.storeCheckoutEnabled===true).catch(()=>false);}return storeCheckoutFlag;}/** False until the manifest answers, then the flag. */export function useStoreCheckoutEnabled(){const[enabled,setEnabled]=useState(false);useEffect(()=>{let active=true;readStoreCheckoutEnabled().then(value=>{if(active)setEnabled(value);});return()=>{active=false;};},[]);return enabled;}\nexport const __FramerMetadata__ = {\"exports\":{\"readStoreCheckoutEnabled\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useStoreCheckoutEnabled\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useStoreCheckoutEnabled.map"],"mappings":"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"}