{"version":3,"file":"LocalizedFixedPrice.C4n3fuJD.mjs","names":["React.useMemo","React.useState","cc","resolved"],"sources":["https:/framerusercontent.com/modules/68rYmBMr5rL0mdprQcxn/wSyQDFwXKLh1uxu7V5IZ/LocalizedFixedPrice.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";// LatAm hispanohablante (ajusta si quieres incluir/excluir países)\nconst LATAM_SPANISH=new Set([\"MX\",\"AR\",\"CL\",\"CO\",\"PE\",\"UY\",\"EC\",\"BO\",\"PY\",\"GT\",\"SV\",\"HN\",\"NI\",\"CR\",\"PA\",\"DO\",\"CU\",\"VE\"]);// Moneda por país (puedes ajustarlo)\nconst COUNTRY_TO_CURRENCY={MX:\"MXN\",AR:\"ARS\",CL:\"CLP\",CO:\"COP\",PE:\"PEN\",UY:\"UYU\",EC:\"USD\",BO:\"BOB\",PY:\"PYG\",GT:\"GTQ\",SV:\"USD\",HN:\"HNL\",NI:\"NIO\",CR:\"CRC\",PA:\"USD\",DO:\"DOP\",CU:\"CUP\",VE:\"VES\"};function getStored(key){try{return localStorage.getItem(key);}catch{return null;}}function setStored(key,value){try{localStorage.setItem(key,value);}catch{}}async function detectCountryViaIP(){try{const res=await fetch(\"https://ipapi.co/json/\",{cache:\"no-store\"});if(!res.ok)return null;const json=await res.json();const cc=json?.country_code||json?.country;return cc?cc.toUpperCase():null;}catch{return null;}}function isLatamDiscount(country){if(!country)return false;return LATAM_SPANISH.has(country);}function parsePriceMap(input){// formato esperado: \"MX:499, AR:199, CL:299\"\nconst map={};input.split(\",\").map(s=>s.trim()).filter(Boolean).forEach(pair=>{const[kRaw,vRaw]=pair.split(\":\").map(s=>s.trim());if(!kRaw||!vRaw)return;const k=kRaw.toUpperCase();const v=Number(String(vRaw).replace(\",\",\".\"));if(!Number.isFinite(v))return;map[k]=v;});return map;}function formatMoney(amount,currency){try{// Para monedas típicamente sin decimales (según práctica común)\nconst zeroDecimal=new Set([\"CLP\",\"COP\",\"PYG\",\"USD\"]);return new Intl.NumberFormat(undefined,{style:\"currency\",currency,maximumFractionDigits:zeroDecimal.has(currency)?0:2}).format(amount);}catch{return`${amount} ${currency}`;}}function resolvePricingForCountry(cc,priceMap,eurFallbackAmount){const isLatam=isLatamDiscount(cc);const hasFixed=cc?Number.isFinite(priceMap[cc]):false;// Caso 1: precio fijo por país\nif(cc&&hasFixed){const currency=COUNTRY_TO_CURRENCY[cc]||\"EUR\";return{currency,amount:priceMap[cc],discount:isLatam};}// Caso 2: no hay precio fijo y es LatAm => USD\nif(isLatam){const usd=priceMap[\"DEFAULT_USD\"];return{currency:\"USD\",amount:Number.isFinite(usd)?usd:eurFallbackAmount,discount:true};}// Caso 3: no LatAm => EUR fallback\nreturn{currency:\"EUR\",amount:eurFallbackAmount,discount:false};}export default function LocalizedFixedPrice(props){const{eurFallbackAmount,priceByCountry,discountLatamPercent,showBadge,badgeText,noteText,fontSize,fontWeight,color}=props;const priceMap=React.useMemo(()=>parsePriceMap(priceByCountry),[priceByCountry]);const[country,setCountry]=React.useState(null);const[currency,setCurrency]=React.useState(\"EUR\");const[baseAmount,setBaseAmount]=React.useState(eurFallbackAmount);const[discount,setDiscount]=React.useState(false);React.useEffect(()=>{let mounted=true;(async()=>{// 1) Respeta selección manual si existe\nconst manualCountry=getStored(\"lp_country_manual\");if(manualCountry){const cc=manualCountry.toUpperCase();if(!mounted)return;setCountry(cc);const resolved=resolvePricingForCountry(cc,priceMap,eurFallbackAmount);setCurrency(resolved.currency);setBaseAmount(resolved.amount);setDiscount(resolved.discount);return;}// 2) Usa país detectado almacenado\nconst storedCountry=getStored(\"lp_country_detected\");if(storedCountry){const cc=storedCountry.toUpperCase();if(!mounted)return;setCountry(cc);const resolved=resolvePricingForCountry(cc,priceMap,eurFallbackAmount);setCurrency(resolved.currency);setBaseAmount(resolved.amount);setDiscount(resolved.discount);return;}// 3) Detecta por IP y guarda\nconst cc=await detectCountryViaIP();if(!mounted)return;setCountry(cc);if(cc)setStored(\"lp_country_detected\",cc);const resolved=resolvePricingForCountry(cc,priceMap,eurFallbackAmount);setCurrency(resolved.currency);setBaseAmount(resolved.amount);setDiscount(resolved.discount);})();return()=>{mounted=false;};},[eurFallbackAmount,priceMap]);// Aplica descuento si corresponde\nconst finalAmount=React.useMemo(()=>{const factor=discount?1-discountLatamPercent/100:1;const amt=baseAmount*factor;// Redondeo “amable” para monedas sin decimales\nconst zeroDecimal=new Set([\"CLP\",\"COP\",\"PYG\"]);if(zeroDecimal.has(currency))return Math.round(amt);return Math.round(amt*100)/100;},[baseAmount,discount,discountLatamPercent,currency]);const formatted=formatMoney(finalAmount,currency);return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:8,color},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"baseline\",gap:8},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize,fontWeight,lineHeight:1.1},children:formatted}),showBadge&&discount&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:Math.max(12,Math.round(fontSize*.45)),fontWeight:600,padding:\"4px 8px\",borderRadius:999,background:\"rgba(0,0,0,0.08)\",width:\"fit-content\"},children:badgeText||`-${discountLatamPercent}% LatAm`})]}),noteText?/*#__PURE__*/_jsx(\"div\",{style:{fontSize:Math.max(12,Math.round(fontSize*.32)),opacity:.8},children:noteText}):null]});}addPropertyControls(LocalizedFixedPrice,{eurFallbackAmount:{type:ControlType.Number,title:\"EUR fallback\",defaultValue:209.99},priceByCountry:{type:ControlType.String,title:\"Prices map\",defaultValue:\"MX:4249.99, PE:832.95, DEFAULT_USD:229\"},discountLatamPercent:{type:ControlType.Number,title:\"LatAm %\",defaultValue:15},showBadge:{type:ControlType.Boolean,title:\"Badge\",defaultValue:true},badgeText:{type:ControlType.String,title:\"Badge text\",defaultValue:\"\"},noteText:{type:ControlType.String,title:\"Note\",defaultValue:\"Precio estimado. El cobro final lo procesa Google y puede variar seg\\xfan tu m\\xe9todo de pago.\"},fontSize:{type:ControlType.Number,title:\"Size\",defaultValue:42},fontWeight:{type:ControlType.Number,title:\"Weight\",defaultValue:700},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#111111\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LocalizedFixedPrice\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LocalizedFixedPrice.map"],"mappings":"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"}