{"version":3,"file":"API.2Bo2Vtk7.mjs","names":["useState","__esmMin","init_ssg_sandbox_shims","te","window","_e","p","ce","init_npm_react_18_3_1","addPropertyControls","ControlType","init_framer_DKWANagr","fetchClassIndexBoardRows","init_ClassIndices","getWeatherRows","weatherCache","WEATHER_TTL","weatherInflight","WEATHER_URL","r","rows","json","resolveMarketsUrl","normalized","apiBase","registry","adoptList","cached","cacheByUrl","LIST_URL","ts","subscribers","fn","mergedTs","current","legacy","known","m","classRows","seedFromRegistry","registryHooked","url","entry","getMarkets","now","cache","TTL","inflight","inflightByUrl","request","useWeatherMarket","icao","WEATHER_STATIONS","slug","row","setRow","alive","load","found","published","firstOfDay","o","delta","id","IndexTicker","props","markets","setMarkets","error","setError","weatherMarket","customSlug","cancelled","e","message","tick","normalizedCustomSlug","targetSlug","selectedMarket","COMING_SOON","showValue","style","unavailableText","displayMarkets","hasFallbackValue","fallbackValue","hasFallbackChange","fallbackChange","hasAnyFallback","fallbackChangeColor","apiBaseMissing","hasSlugMatch","fallbackIsNegative","resolvedFallbackChangeColor","negativeColor","positiveColor","itemGap","verticalPadding","valueFont","valueColor","showPercent","percentFont","showArrow","showBadge","pct","up","showLabel","labelFont","labelColor","displayIndex","index","init_API","init_jsx_runtime","fmt"],"sources":["https:/framerusercontent.com/modules/3q9gXcOrjpOAhrvYD9qj/RRFYz1AWYt2zmk2cM9oc/API.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// @ts-ignore\nimport{fetchClassIndexBoardRows}from\"https://framerusercontent.com/modules/qAxjacaimBLNuk5uqDil/hTMN5SaOhtPVXMYMT0w0/ClassIndices.js\";// User request summary:\n// - Normalize API base URLs so both host roots and direct /api/markets endpoints work.\n// - Keep all markets (do not filter by pq), and make customSlug override enum selection.\n// - Key cache by resolved fetch URL and keep unmatched-slug messaging.\n// - Add convenience enum options for newly added indices.\n// Weather benchmarks live in the same CMS collection but are priced by a different service, so the\n// markets list has no row for them and every cell fell through to the \"—\" placeholder. One call to\n// the weather API serves every weather row on the board.\n// Board rows whose data is withheld for now (2026-09-19). Remove a slug to show its data again.\nconst COMING_SOON=new Set([\"brazil-vix-em\",\"mexico-vix-em\",\"argentina-vix-em\",\"china-vix-em\",\"gpu-h100-rental\",\"gpu-h200-rental\",\"gpu-b200-rental\"]);const WEATHER_STATIONS={\"atlanta-daily-temperature\":\"KATL\",\"austin-daily-temperature\":\"KAUS\",\"boston-daily-temperature\":\"KBOS\",\"charlotte-daily-temperature\":\"KCLT\",\"chicago-daily-temperature\":\"KORD\",\"dallas-daily-temperature\":\"KDFW\",\"denver-daily-temperature\":\"KDEN\",\"detroit-daily-temperature\":\"KDTW\",\"houston-daily-temperature\":\"KHOU\",\"jacksonville-daily-temperature\":\"KJAX\",\"las-vegas-daily-temperature\":\"KLAS\",\"los-angeles-daily-temperature\":\"KLAX\",\"miami-daily-temperature\":\"KMIA\",\"minneapolis-daily-temperature\":\"KMSP\",\"nashville-daily-temperature\":\"KBNA\",\"new-orleans-daily-temperature\":\"KMSY\",\"new-york-daily-temperature\":\"KNYC\",\"oklahoma-city-daily-temperature\":\"KOKC\",\"philadelphia-daily-temperature\":\"KPHL\",\"phoenix-daily-temperature\":\"KPHX\",\"san-antonio-daily-temperature\":\"KSAT\",\"san-francisco-daily-temperature\":\"KSFO\",\"seattle-daily-temperature\":\"KSEA\",\"washington-dc-daily-temperature\":\"KDCA\"};const WEATHER_URL=\"https://api.mecone.trade/api/v1/weather\";const WEATHER_TTL=60*1e3;let weatherCache=null;let weatherInflight=null;async function getWeatherRows(){if(weatherCache&&Date.now()-weatherCache.ts<WEATHER_TTL)return weatherCache.rows;if(weatherInflight)return weatherInflight;weatherInflight=fetch(WEATHER_URL).then(r=>r.ok?r.json():Promise.reject(new Error(String(r.status)))).then(json=>{const rows=Array.isArray(json?.data)?json.data:[];weatherCache={ts:Date.now(),rows};weatherInflight=null;return rows;}).catch(e=>{weatherInflight=null;throw e;});return weatherInflight;}// Percent indices print at two decimals on the board, whatever precision the API's own\n// `index_fmt` carries (MCPI arrives as \"3.700%\", MUNEMP as \"4.2%\"); every other unit keeps the\n// API string. The number comes from `index_now` when present, else from the string itself.\nconst displayIndex=m=>{const fmt=m.index_fmt;const isPct=m.unit===\"%\"||typeof fmt===\"string\"&&/^-?\\d+(?:\\.\\d+)?%$/.test(fmt.trim());if(!isPct)return fmt;const n=typeof m.index_now===\"number\"&&Number.isFinite(m.index_now)?m.index_now:parseFloat(String(fmt));return Number.isFinite(n)?`${n.toFixed(2)}%`:fmt;};// Module-level shared caches keyed by resolved URL.\nconst cacheByUrl=new Map;const inflightByUrl=new Map;const TTL=5*60*1e3// 5 min, matches API update cadence\n;const subscribers=new Set;function resolveMarketsUrl(apiBase){const normalized=(apiBase||\"\").trim().replace(/\\/+$/,\"\");if(normalized.endsWith(\"/api/markets\")||normalized.endsWith(\"/markets\")){return normalized;}return`${normalized}/api/markets`;}// ---- the market store's registry (MarketsLive.tsx) --------------------------------------------\n// The store fetches the list with the page bundle and keeps the last one this browser saw, so a\n// cell's first read is served from it; the class-backed rows are merged in the background exactly\n// as a normal fetch would, and a socket-driven refetch by the store reaches every cell.\nconst LIST_URL=\"https://api.mecone.trade/api/markets\";function registry(){return typeof window!==\"undefined\"?window.__meconeMarkets??null:null;}let registryHooked=false;let mergedTs=0;function adoptList(json,ts){if(!json||!Array.isArray(json.markets))return;const cached=cacheByUrl.get(LIST_URL);if(cached&&cached.ts>=ts)return;cacheByUrl.set(LIST_URL,{data:json,ts});subscribers.forEach(fn=>fn());if(mergedTs===ts)return;mergedTs=ts;fetchClassIndexBoardRows().then(classRows=>{const current=cacheByUrl.get(LIST_URL);if(!current||current.ts!==ts)return;const legacy=Array.isArray(json.markets)?json.markets:[];const known=new Set(legacy.map(m=>m.slug));cacheByUrl.set(LIST_URL,{data:{...json,markets:[...legacy,...classRows.filter(m=>!known.has(m.slug))]},ts});subscribers.forEach(fn=>fn());}).catch(()=>{});}function seedFromRegistry(){const r=registry();if(!r)return;if(!registryHooked){registryHooked=true;r.subscribe((url,entry)=>{if(url===LIST_URL)adoptList(entry.data,entry.ts);});}const entry=r.get(LIST_URL);if(entry)adoptList(entry.data,entry.ts);}async function getMarkets(apiBase){const url=resolveMarketsUrl(apiBase);if(url===LIST_URL)seedFromRegistry();const now=Date.now();const cache=cacheByUrl.get(url);if(cache&&now-cache.ts<TTL)return cache.data;const inflight=inflightByUrl.get(url);if(inflight)return inflight;const request=fetch(url).then(r=>{if(!r.ok)throw new Error(`HTTP ${r.status}`);return r.json();}).then(async json=>{// Class-backed indices (EM-VIX) are listed only on the versioned catalog; their board\n// rows are merged in so the same cell reads them. A catalog failure leaves the legacy\n// list exactly as served — the eight public indices never depend on it.\nconst classRows=await fetchClassIndexBoardRows().catch(()=>[]);const legacy=Array.isArray(json?.markets)?json.markets:[];const known=new Set(legacy.map(m=>m.slug));return{...json,markets:[...legacy,...classRows.filter(m=>!known.has(m.slug))]};}).then(json=>{cacheByUrl.set(url,{data:json,ts:Date.now()});inflightByUrl.delete(url);return json;}).catch(e=>{inflightByUrl.delete(url);throw e;});inflightByUrl.set(url,request);return request;}/**\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 80\n * \n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n *//**\n * A weather row rendered as a Market. The level is the current reading; the change is a delta in °F\n * against the day's first observation — NOT a percentage. A percent change of a Fahrenheit reading\n * is not a meaningful quantity (the zero point is arbitrary), so publishing one would invent a\n * statistic. Everything here is measured, never derived from a normal or a record.\n */function useWeatherMarket(slug){const icao=WEATHER_STATIONS[slug.toLowerCase()]??\"\";const[row,setRow]=useState(null);useEffect(()=>{if(!icao){setRow(null);return;}let alive=true;const load=()=>getWeatherRows().then(rows=>{if(!alive)return;const found=rows.find(r=>r?.icao===icao);if(!found||typeof found.current_f!==\"number\"){setRow(null);return;}// The API publishes its own day-over-day move (change.day_change, measured on\n    // the day high) — the same number the terminal board reads, so the two surfaces\n    // agree. Falling back to the intraday delta keeps the cell populated on any\n    // station that has not been backfilled with a previous day yet.\n    const published=found?.change?.day_change;const obs=Array.isArray(found.observations)?found.observations:[];const firstOfDay=[...obs].reverse().find(o=>typeof o?.temp_f===\"number\");const delta=typeof published===\"number\"?published:firstOfDay&&typeof firstOfDay.temp_f===\"number\"?found.current_f-firstOfDay.temp_f:undefined;setRow({slug,title:found.city,label:found.city,index_fmt:`${found.current_f.toFixed(0)}\\xb0F`,weather:true,delta_f:delta});}).catch(()=>{if(alive)setRow(null);});load();const id=setInterval(load,WEATHER_TTL);return()=>{alive=false;clearInterval(id);};},[icao,slug]);return row;}export default function IndexTicker(props){const{apiBase,positiveColor=\"#1a7f4b\",negativeColor=\"#b23b3b\",labelColor=\"#000000\",valueColor=\"#000000\",itemGap=28,verticalPadding=0,showBadge=true,selectedMarket=\"all\",customSlug=\"\",labelFont,valueFont,percentFont,style,showLabel=true,showValue=true,showPercent=true,showArrow=true,unavailableText=\"—\",fallbackValue=\"\",fallbackChange=\"\",fallbackChangeColor}=props;const[markets,setMarkets]=useState([]);const[error,setError]=useState(null);const weatherMarket=useWeatherMarket((customSlug||\"\").trim());useEffect(()=>{let cancelled=false;async function load(){try{const json=await getMarkets(apiBase);if(!cancelled){startTransition(()=>{setMarkets(json.markets??[]);setError(null);});}}catch(e){if(!cancelled){const message=e instanceof Error?e.message:\"Unknown error\";startTransition(()=>setError(message));}}}load();const tick=()=>load();subscribers.add(tick);const id=setInterval(()=>{cacheByUrl.clear()// force refresh on next call\n;subscribers.forEach(fn=>fn());},TTL);return()=>{cancelled=true;subscribers.delete(tick);clearInterval(id);};},[apiBase]);const normalizedCustomSlug=(customSlug||\"\").trim();const targetSlug=normalizedCustomSlug.length>0?normalizedCustomSlug:selectedMarket===\"custom\"?\"\":selectedMarket;// Indices whose data is withheld from the board for now (2026-09-19): the value column shows the\n// neutral placeholder and the change column stays empty; the trend column carries the board's\n// \"COMING SOON\" tag (see MarketSpark.tsx, same COMING_SOON list).\nif(COMING_SOON.has(targetSlug)){if(!showValue)return /*#__PURE__*/_jsx(\"div\",{style:{...style},\"aria-hidden\":\"true\"});return /*#__PURE__*/_jsx(\"div\",{style:{...style,opacity:.5},children:unavailableText});}const displayMarkets=targetSlug===\"all\"?markets:markets.filter(m=>(m.slug??\"\")===targetSlug);const hasFallbackValue=fallbackValue.trim().length>0;const hasFallbackChange=fallbackChange.trim().length>0;const hasFallbackColor=!!fallbackChangeColor;const hasAnyFallback=hasFallbackValue||hasFallbackChange||hasFallbackColor;const apiBaseMissing=apiBase.trim().length===0;const hasSlugMatch=targetSlug===\"all\"?markets.length>0:displayMarkets.length>0;const liveUnavailable=apiBaseMissing||!!error||markets.length===0||!hasSlugMatch;const shouldUseFallback=liveUnavailable&&hasAnyFallback;if(shouldUseFallback){const fallbackIsNegative=fallbackChange.trim().startsWith(\"-\");const resolvedFallbackChangeColor=fallbackChangeColor||(fallbackIsNegative?negativeColor:positiveColor);return /*#__PURE__*/_jsxs(\"div\",{style:{...style,position:\"relative\",display:\"flex\",gap:itemGap,alignItems:\"baseline\",flexWrap:\"wrap\",padding:`${verticalPadding}px 0`},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:2},children:[showValue&&hasFallbackValue&&/*#__PURE__*/_jsx(\"span\",{style:{...valueFont,fontWeight:600,color:valueColor},children:fallbackValue}),showPercent&&hasFallbackChange&&/*#__PURE__*/_jsxs(\"span\",{style:{...percentFont,fontSize:12,color:resolvedFallbackChangeColor},children:[fallbackChange,showArrow&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"0.95em\",marginLeft:3},children:fallbackIsNegative?\"▼\":\"▲\"})]})]}),showBadge&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:10,letterSpacing:1.5,opacity:.45},children:\"PAPER / SIMULATED\"})]});}// Diagnostics belong in the console, never on the public board: this used to print\n// `⚠︎ …` / `no market matches \"terbium-oxide\"` to visitors on catalogued rows that have no\n// live market yet and no backup value filled in. Degrade to a neutral placeholder instead.\nif(error){console.warn(`[mecone] index feed error for \"${targetSlug}\": ${error}`);return /*#__PURE__*/_jsx(\"div\",{style:{...style,opacity:.5},children:unavailableText});}if(targetSlug!==\"all\"&&markets.length>0&&displayMarkets.length===0&&!weatherMarket){console.warn(`[mecone] no market matches \"${targetSlug}\" — set a Fallback Value on this CMS item`);return /*#__PURE__*/_jsx(\"div\",{style:{...style,opacity:.5},children:unavailableText});}return /*#__PURE__*/_jsxs(\"div\",{style:{...style,position:\"relative\",display:\"flex\",gap:itemGap,alignItems:\"baseline\",flexWrap:\"wrap\",padding:`${verticalPadding}px 0`},children:[(displayMarkets.length?displayMarkets:weatherMarket?[weatherMarket]:[]).map((m,index)=>{const pct=m.change_24h_pct??0;const up=pct>=0;return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:2},children:[showLabel&&/*#__PURE__*/_jsx(\"span\",{style:{...labelFont,letterSpacing:.5,opacity:.55,textTransform:\"uppercase\",color:labelColor},children:m.label}),showValue&&/*#__PURE__*/_jsx(\"span\",{style:{...valueFont,fontWeight:600,color:valueColor},children:displayIndex(m)}),m.weather&&(showPercent||!showValue)&&/*#__PURE__*/_jsxs(\"span\",{style:{...percentFont,fontSize:12,color:(m.delta_f??0)>=0?positiveColor:negativeColor},children:[typeof m.delta_f===\"number\"?`${m.delta_f>=0?\"+\":\"\"}${m.delta_f.toFixed(1)}\\xb0F`:unavailableText,showArrow&&typeof m.delta_f===\"number\"&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"0.95em\",marginLeft:3},children:m.delta_f>=0?\"▲\":\"▼\"})]}),showPercent&&!m.weather&&/*#__PURE__*/_jsxs(\"span\",{style:{...percentFont,fontSize:12,color:up?positiveColor:negativeColor},children:[up?\"+\":\"\",pct.toFixed(2),\"%\",showArrow&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"0.95em\",marginLeft:3},children:up?\"▲\":\"▼\"})]})]},m.slug??m.title??`market-${index}`);}),showBadge&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:10,letterSpacing:1.5,opacity:.45},children:\"PAPER / SIMULATED\"})]});}addPropertyControls(IndexTicker,{apiBase:{type:ControlType.String,title:\"API base\",defaultValue:\"https://api.mecone.trade\"},selectedMarket:{type:ControlType.Enum,title:\"Market\",defaultValue:\"all\",options:[\"all\",\"openai-ipo-closing-market-cap\",\"anthropic-ipo-closing-market-cap-979\",\"us-gdp\",\"us-cpi-yoy\",\"us-unemployment\",\"custom\"],optionTitles:[\"All Markets\",\"OpenAI Valuation\",\"Anthropic Valuation\",\"US GDP\",\"US CPI YoY\",\"US Unemployment\",\"Custom slug…\"]},customSlug:{type:ControlType.String,title:\"Custom Slug\",defaultValue:\"\",hidden(props){return props.selectedMarket!==\"custom\";}},showLabel:{type:ControlType.Boolean,title:\"Show Label\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},showValue:{type:ControlType.Boolean,title:\"Show Value\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},showPercent:{type:ControlType.Boolean,title:\"Show Percent\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},showArrow:{type:ControlType.Boolean,title:\"Show Arrow\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",hidden(props){return!props.showPercent;}},labelFont:{type:ControlType.Font,title:\"Label Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:11},hidden(props){return!props.showLabel;}},valueFont:{type:ControlType.Font,title:\"Value Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{variant:\"Semibold\",fontSize:22},hidden(props){return!props.showValue;}},percentFont:{type:ControlType.Font,title:\"Percent Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:12},hidden(props){return!props.showPercent;}},positiveColor:{type:ControlType.Color,title:\"Positive Color\",defaultValue:\"#1a7f4b\",hidden(props){return!props.showPercent;}},negativeColor:{type:ControlType.Color,title:\"Negative Color\",defaultValue:\"#b23b3b\",hidden(props){return!props.showPercent;}},labelColor:{type:ControlType.Color,title:\"Label Color\",defaultValue:\"#000000\",hidden(props){return!props.showLabel;}},valueColor:{type:ControlType.Color,title:\"Value Color\",defaultValue:\"#000000\",hidden(props){return!props.showValue;}},itemGap:{type:ControlType.Number,title:\"Item Gap\",defaultValue:28,min:8,max:80,step:2,unit:\"px\"},verticalPadding:{type:ControlType.Number,title:\"V Padding\",defaultValue:0,min:0,max:40,step:1,unit:\"px\"},showBadge:{type:ControlType.Boolean,title:\"Show Badge\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},unavailableText:{type:ControlType.String,title:\"Unavailable Text\",description:\"Shown instead of a diagnostic when an index has no live market and no fallback.\",defaultValue:\"—\"},fallbackValue:{type:ControlType.String,title:\"Fallback Value\",defaultValue:\"\"},fallbackChange:{type:ControlType.String,title:\"Fallback Change\",defaultValue:\"\"},fallbackChangeColor:{type:ControlType.Color,title:\"Fallback Change Color\",optional:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"IndexTicker\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./API.map"],"mappings":"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"}