{"version":3,"file":"Blocker5.CSvAaMgO.mjs","names":["React.useRef","React.useState","__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/wFEef6TUhAwbcfcfuwnO/JOHeMDLpTvt9gvHyxWX9/Blocker5.js"],"sourcesContent":["// HideAfterCutoffWithDays.tsx\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";/** Parse YYYY-MM-DD to a local midnight Date. */function parseLocalISODateMidnight(iso){// Expect exactly YYYY-MM-DD\nconst m=/^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(iso);if(!m)return null;const y=Number(m[1]);const mo=Number(m[2])-1// 0-based\n;const d=Number(m[3]);const dt=new Date(y,mo,d);dt.setHours(0,0,0,0);return dt;}/** Build a local midnight Date. Month is 0-based. */function localMidnight(y,m,d){const dt=new Date(y,m,d);dt.setHours(0,0,0,0);return dt;}/** Default cutoff if no data attribute is provided. (Dec 4, 2025) */const DEFAULT_CUTOFF=localMidnight(2025,11,5);const MS_DAY=24*60*60*1e3;/** Exclusive days-left by calendar day (UTC-normalized to avoid early flips). */function daysUntilExclusive(targetLocalMidnight){const now=new Date;const todayUTC=Date.UTC(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate());const t=targetLocalMidnight;const targetUTC=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate());return Math.max(0,Math.floor((targetUTC-todayUTC)/MS_DAY));}/** Today >= target? (by calendar day; UTC-normalized) */function isOnOrAfter(targetLocalMidnight){const now=new Date;const todayUTC=Date.UTC(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate());const t=targetLocalMidnight;const targetUTC=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate());return todayUTC>=targetUTC;}export function HideAfterCutoffWithDays(){const ref=React.useRef(null);const[hidden,setHidden]=React.useState(()=>{// init from default; we'll recompute with data attribute on mount\nreturn isOnOrAfter(DEFAULT_CUTOFF);});// Read data attributes once we have a DOM node\nconst[cutoff,setCutoff]=React.useState(DEFAULT_CUTOFF);const[hideLevels,setHideLevels]=React.useState(1);React.useEffect(()=>{const el=ref.current;if(!el)return;// data-cutoff=\"YYYY-MM-DD\"\nconst attrDate=el.getAttribute(\"data-cutoff\");let cutoffDate=DEFAULT_CUTOFF;if(attrDate){const parsed=parseLocalISODateMidnight(attrDate);if(parsed)cutoffDate=parsed;}setCutoff(cutoffDate);// data-hide-levels=\"2\" (how many ancestors to hide; default 1)\nconst levelsAttr=el.getAttribute(\"data-hide-levels\");const n=levelsAttr?Number(levelsAttr):1;setHideLevels(Number.isFinite(n)&&n>0?n:1);// compute initial hidden state from the resolved cutoff\nsetHidden(isOnOrAfter(cutoffDate));},[]);// Recompute hidden state at a steady cadence (minutely) to avoid setTimeout edge cases.\nReact.useEffect(()=>{const tick=()=>setHidden(isOnOrAfter(cutoff));tick();const id=setInterval(tick,6e4);return()=>clearInterval(id);},[cutoff]);// Update the <mark> inside \"DaysToGo\" (and force opacity to 1)\nReact.useEffect(()=>{if(hidden)return;const el=ref.current;if(!el)return;const update=()=>{const diff=daysUntilExclusive(cutoff);const mark=el.querySelector('[data-framer-name=\"DaysToGo\"] mark')??el.querySelector(\"mark\");if(mark)mark.textContent=String(diff);const daysToGoEl=el.querySelector('[data-framer-name=\"DaysToGo\"]');if(daysToGoEl)daysToGoEl.style.opacity=\"1\";};update();const id=setInterval(update,6e4);return()=>clearInterval(id);},[hidden,cutoff]);// Hide N ancestors (default 1 = immediate parent) when hidden\nReact.useLayoutEffect(()=>{const el=ref.current;if(!el)return;let node=el;const chain=[];for(let i=0;i<hideLevels;i++){node=node?.parentElement??null;if(!node)break;chain.push(node);}if(hidden){chain.forEach(n=>{n.style.display=\"none\";n.style.pointerEvents=\"none\";n.setAttribute(\"aria-hidden\",\"true\");});}else{chain.forEach(n=>{n.style.display=\"\";n.style.pointerEvents=\"\";n.removeAttribute(\"aria-hidden\");});}// cleanup on unmount\nreturn()=>{chain.forEach(n=>{n.style.display=\"\";n.style.pointerEvents=\"\";n.removeAttribute(\"aria-hidden\");});};},[hidden,hideLevels]);// Remove this layer from the layout/hit-testing once hidden\nreturn hidden?{ref,visible:false,style:{display:\"none\",pointerEvents:\"none\",opacity:0}}:{ref};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withHideAfterCutoffWithDays(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...HideAfterCutoffWithDays(props)});};}withHideAfterCutoffWithDays.displayName=\"HideAfterCutoffWithDays\";\nexport const __FramerMetadata__ = {\"exports\":{\"withHideAfterCutoffWithDays\":{\"type\":\"reactHoc\",\"name\":\"withHideAfterCutoffWithDays\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HideAfterCutoffWithDays\":{\"type\":\"override\",\"name\":\"HideAfterCutoffWithDays\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Blocker5.map"],"mappings":"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"}