{"version":3,"file":"PriceText.CC5V4TSp.mjs","names":["React.useMemo","p","React.useState"],"sources":["https:/framerusercontent.com/modules/KY8ovaunBmgpMc87dGld/KJZ5DfLJCVMfmcoFiFdm/PriceText.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{PRICING}from\"https://framerusercontent.com/modules/lFU1IUaM1wwiqPxQqREm/fARJIq2QWH1IuD1IvIQ8/pricing.js\";// -------- helpers --------\nfunction fmtNumber(amount,decimals){return new Intl.NumberFormat(\"en-GB\",{minimumFractionDigits:decimals,maximumFractionDigits:decimals}).format(amount);}function findTierPricePerPerson(tiers,headcount){for(const t of tiers){if(headcount>=t.min&&headcount<=t.max)return t.pricePerPersonJOD;}return null;}export default function PriceText(props){const{category,surchargeKey,stayType,stayHeadcount,packageId,packageHeadcount,tourId,tourHeadcount,extraKey,extraHeadcount,outputCurrency,decimals,refreshHours,prefix,suffix,showCurrencyCode,font,color}=props;// -------- compute base JOD value from UI selection --------\nconst valueJOD=React.useMemo(()=>{try{if(!PRICING)return null;if(category===\"surcharge\"){const v=PRICING?.surcharges?.[surchargeKey];return typeof v===\"number\"?v:null;}if(category===\"stay\"){const stay=PRICING?.stayPricingPerNight?.[stayType];if(!stay?.tiers)return null;const v=findTierPricePerPerson(stay.tiers,Number(stayHeadcount||1));return typeof v===\"number\"?v:null;}if(category===\"package\"){const pkg=PRICING?.packages?.find(p=>p.id===packageId);if(!pkg?.tiers)return null;const v=findTierPricePerPerson(pkg.tiers,Number(packageHeadcount||1));return typeof v===\"number\"?v:null;}if(category===\"tour\"){const tour=PRICING?.tours?.[tourId];if(!tour?.tiers)return null;const v=findTierPricePerPerson(tour.tiers,Number(tourHeadcount||1));return typeof v===\"number\"?v:null;}if(category===\"extra\"){if(extraKey===\"balloon_adult\"){const v=PRICING?.extras?.balloon?.adultPriceJOD;return typeof v===\"number\"?v:null;}if(extraKey===\"balloon_child\"){const v=PRICING?.extras?.balloon?.childPriceJOD;return typeof v===\"number\"?v:null;}if(extraKey===\"camel_per_hour\"){const tiers=PRICING?.extras?.camelRide?.pricePerPersonPerHourJOD;if(!Array.isArray(tiers))return null;const hc=Number(extraHeadcount||1);const tier=tiers.find(t=>hc>=t.min&&hc<=t.max);return typeof tier?.price===\"number\"?tier.price:null;}}return null;}catch{return null;}},[category,surchargeKey,stayType,stayHeadcount,packageId,packageHeadcount,tourId,tourHeadcount,extraKey,extraHeadcount]);// If nothing matches (wrong IDs, pricing missing, etc.)\nif(valueJOD==null){return /*#__PURE__*/_jsx(\"span\",{style:{...font,color,display:\"inline-block\"},children:\"—\"});}// -------- FX (only if outputCurrency === EUR) --------\nconst[rate,setRate]=React.useState(0);const[rateStatus,setRateStatus]=React.useState(\"idle\");React.useEffect(()=>{if(outputCurrency!==\"EUR\")return;let cancelled=false;const cacheKey=\"jod_eur_rate_cache_v1\";async function run(){try{setRateStatus(\"loading\");const cachedRaw=localStorage.getItem(cacheKey);if(cachedRaw){const cached=JSON.parse(cachedRaw);const ageMs=Date.now()-cached.ts;const maxAgeMs=refreshHours*60*60*1e3;if(cached?.rate&&ageMs<maxAgeMs){if(!cancelled){setRate(cached.rate);setRateStatus(\"ok\");}return;}}const res=await fetch(\"https://open.er-api.com/v6/latest/JOD\");if(!res.ok)throw new Error(\"Rate fetch failed\");const data=await res.json();const r=data?.rates?.EUR;if(!r||typeof r!==\"number\")throw new Error(\"Invalid rate response\");localStorage.setItem(cacheKey,JSON.stringify({rate:r,ts:Date.now()}));if(!cancelled){setRate(r);setRateStatus(\"ok\");}}catch{if(!cancelled)setRateStatus(\"error\");}}run();return()=>{cancelled=true;};},[outputCurrency,refreshHours]);const amount=outputCurrency===\"EUR\"?rateStatus===\"ok\"&&rate>0?valueJOD*rate:null:valueJOD;const currencyCode=outputCurrency===\"EUR\"?PRICING?.currencySecondary||\"EUR\":PRICING?.currencyPrimary||\"JOD\";const text=amount==null?outputCurrency===\"EUR\"?\"≈… EUR\":\"—\":`${prefix||\"\"}${fmtNumber(amount,decimals)}${showCurrencyCode?` ${currencyCode}`:\"\"}${suffix||\"\"}`;return /*#__PURE__*/_jsx(\"span\",{style:{...font,color,display:\"inline-block\",whiteSpace:\"nowrap\"},children:text});}// -------- Framer Controls --------\nconst PACKAGE_IDS=PRICING?.packages?.map(p=>p.id)??[];const PACKAGE_LABELS=PRICING?.packages?.map(p=>p.name)??[];const TOUR_IDS=Object.keys(PRICING?.tours??{});const TOUR_LABELS=TOUR_IDS.map(id=>PRICING.tours?.[id]?.label??id);addPropertyControls(PriceText,{category:{type:ControlType.Enum,title:\"Category\",options:[\"surcharge\",\"package\",\"tour\",\"extra\",\"stay\"],optionTitles:[\"Surcharge\",\"Package\",\"Tour\",\"Extra\",\"Stay (per night)\"],defaultValue:\"surcharge\"},// stay\nstayType:{type:ControlType.Enum,title:\"Stay type\",options:[\"camp_house\",\"tent\"],optionTitles:[\"Camp house\",\"Desert tent\"],defaultValue:\"camp_house\",hidden:p=>p.category!==\"stay\"},stayHeadcount:{type:ControlType.Number,title:\"Headcount\",defaultValue:2,min:1,max:20,hidden:p=>p.category!==\"stay\"},// surcharge\nsurchargeKey:{type:ControlType.Enum,title:\"Surcharge\",options:[\"lunchPerPersonJOD\",\"privateJeepFlatJOD\",\"privateSpecialTourFlatJOD\"],optionTitles:[\"Lunch / person\",\"Private Jeep (flat)\",\"Private Specials (flat)\"],defaultValue:\"lunchPerPersonJOD\",hidden:p=>p.category!==\"surcharge\"},// package\npackageId:{type:ControlType.Enum,title:\"Package\",options:PACKAGE_IDS.length?PACKAGE_IDS:[\"(none)\"],optionTitles:PACKAGE_LABELS.length?PACKAGE_LABELS:[\"No packages\"],defaultValue:PACKAGE_IDS[0]??\"(none)\",hidden:p=>p.category!==\"package\"},packageHeadcount:{type:ControlType.Number,title:\"Headcount\",defaultValue:2,min:1,max:20,hidden:p=>p.category!==\"package\"},// tour\ntourId:{type:ControlType.Enum,title:\"Tour\",options:TOUR_IDS.length?TOUR_IDS:[\"(none)\"],optionTitles:TOUR_LABELS.length?TOUR_LABELS:[\"No tours\"],defaultValue:TOUR_IDS[0]??\"(none)\",hidden:p=>p.category!==\"tour\"},tourHeadcount:{type:ControlType.Number,title:\"Headcount\",defaultValue:2,min:1,max:20,hidden:p=>p.category!==\"tour\"},// extra\nextraKey:{type:ControlType.Enum,title:\"Extra\",options:[\"balloon_adult\",\"balloon_child\",\"camel_per_hour\"],optionTitles:[\"Balloon (adult)\",\"Balloon (child)\",\"Camel ride (per hour)\"],defaultValue:\"balloon_adult\",hidden:p=>p.category!==\"extra\"},extraHeadcount:{type:ControlType.Number,title:\"Headcount\",defaultValue:2,min:1,max:50,hidden:p=>p.category!==\"extra\"},// output currency selector\noutputCurrency:{type:ControlType.Enum,title:\"Show in\",options:[\"JOD\",\"EUR\"],defaultValue:\"JOD\"},refreshHours:{type:ControlType.Number,title:\"FX Refresh (h)\",defaultValue:12,min:1,max:168,hidden:p=>p.outputCurrency!==\"EUR\"},decimals:{type:ControlType.Number,title:\"Decimals\",defaultValue:0,min:0,max:4},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\"},showCurrencyCode:{type:ControlType.Boolean,title:\"Show code\",defaultValue:true},// styling\nfont:{type:ControlType.Font,title:\"Text Style\",controls:\"extended\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PriceText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}