{"version":3,"file":"FilteredCollection.CD4FEnPS.mjs","names":["useState","useRef","Children"],"sources":["https:/framerusercontent.com/modules/SSSXjSwAddBsJvVpPLND/WvWwT8y8vM6vdEFUD3UP/FilteredCollection.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef,Children,isValidElement}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// --- Helpers -----------------------------------------------------------------\n/**\n * The real instant (epoch ms) a CMS END or EXPIRY date is over. Event dates are stored as\n * MOUNTAIN WALL-CLOCK with a \"Z\" suffix (a 5:00 PM event is \"2026-10-07T17:00:00.000Z\"), so\n * the digits are the Mountain time. Reading them in the browser's zone hid date-only Expired\n * Dates a day early and made the answer depend on the visitor's zone (fixed 2026-09-26).\n * A value with no time (00:00, what Framer stores for a date picked without a time) runs\n * through that Mountain day, so it is over at the next day's 00:00 (rule B, 2026-09-26); any\n * other time is exact (43INC, end 8:00 PM MDT, is over at 8:00 PM). Mirrors\n * src/lib/event-time.ts storedEndToInstantMs, the instant the hourly sync sets Expired at\n * (its Primary stays exact while the Primary grids filter End Time against Today). NaN when\n * absent or unparseable.\n */function storedEndMs(raw){if(!raw)return NaN;const m=raw instanceof Date?null:/^(\\d{4})-(\\d{2})-(\\d{2})(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?)?/.exec(String(raw).trim());let f;if(m){f=[Number(m[1]),Number(m[2])-1,Number(m[3]),Number(m[4]??0),Number(m[5]??0),Number(m[6]??0),m[7]?Number(m[7].padEnd(3,\"0\")):0];}else{const d=raw instanceof Date?raw:new Date(String(raw));if(isNaN(d.getTime()))return NaN;f=[d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),d.getUTCMilliseconds()];}// No time: over at the next day's 00:00 (Date.UTC rolls the month and year over).\nif(f[3]===0&&f[4]===0&&f[5]===0&&f[6]===0)f[2]+=1;const wall=Date.UTC(f[0],f[1],f[2],f[3],f[4],f[5],f[6]);if(!Number.isFinite(wall))return NaN;let utc=wall;for(let i=0;i<2;i++)utc=wall-mountainOffsetMs(utc);return utc;}let mountainFormat=null;/** Mountain wall-clock minus UTC (ms) at a real instant: -6 h in MDT, -7 h in MST. */function mountainOffsetMs(at){if(!mountainFormat)mountainFormat=new Intl.DateTimeFormat(\"en-US\",{timeZone:\"America/Boise\",hourCycle:\"h23\",year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\"});const parts=mountainFormat.formatToParts(new Date(at));const get=type=>Number(parts.find(p=>p.type===type)?.value??0);const whole=at-(at%1e3+1e3)%1e3;return Date.UTC(get(\"year\"),get(\"month\")-1,get(\"day\"),get(\"hour\")%24,get(\"minute\"),get(\"second\"))-whole;}/** Is the date over (see storedEndMs)? null when there is no usable date. */function isPastDate(raw,now){const ms=storedEndMs(raw);return Number.isFinite(ms)?ms<now.getTime():null;}function getRawEndDate(props){return props.endDate??props.$endDate??props.endTime??props.$endTime??props.EndDate??props.$EndDate??props.EndTime??props.$EndTime??props[\"End Date\"]??props[\"$End Date\"]??props[\"End Time\"]??props[\"$End Time\"]??props.nElH67FQf;}function getRawExpiredDate(props){return props.expiredDate??props.$expiredDate??props.ExpiredDate??props.$ExpiredDate??props[\"Expired Date\"]??props[\"$Expired Date\"]??props[\"Invisible Date\"]??props[\"$Invisible Date\"]??props.z0mGdijOy;}const badgeStyle={position:\"absolute\",top:8,right:8,background:\"rgba(0,0,0,0.7)\",color:\"#fff\",fontSize:11,fontWeight:600,padding:\"2px 8px\",borderRadius:4,zIndex:9999,pointerEvents:\"none\",letterSpacing:\"0.5px\"};// --- Visibility registry -----------------------------------------------------\n// Each withDateCardFilter item registers itself. Section-level overrides\n// (withHideWhenAllFiltered, withDateCardPlaceholder) check the registry\n// to know when all items are filtered out.\nconst DATECARD_EVENT=\"datecard-visibility-update\";function getDateCardRegistry(){const w=window;if(!w.__dateCardRegistry){w.__dateCardRegistry={all:new Set,visible:new Set};}return w.__dateCardRegistry;}/**\n * Item-level filter for DateCards or EventCards in a CMS Collection List.\n * Apply directly to the DateCard or EventCard component.\n *\n * Used on program pages and on each event's own date list (DateCard).\n *\n * Hides items where:\n *   1. End Date has passed (Mountain time)\n *   2. Expired Date has passed (Mountain time)\n * One end rule with the hourly sync and /events (rule B, see storedEndMs):\n *   - a TIMED end hides at that exact time. 43INC (end 8:00 PM MDT) leaves this\n *     list at 8:00 PM; the sync sets Expired / clears Primary at its first hourly\n *     run after 8:00 PM, which takes it off /events.\n *   - a NO-TIME end is listed through that whole Mountain day. The Big Read (end\n *     Dec 31) is listed through 11:59 PM MST Dec 31.\n *\n * Tracks visibility so withHideWhenAllFiltered and withDateCardPlaceholder\n * know when all items are filtered out.\n *\n * Canvas: Filtered items are dimmed (0.35 opacity) with a badge.\n * Preview/Publish: Filtered items are hidden (return null).\n */export function withDateCardFilter(Component){return props=>{const[now,setNow]=useState(()=>new Date);const idRef=useRef(Math.random().toString(36).slice(2));const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{const interval=setInterval(()=>setNow(new Date),6e4);return()=>clearInterval(interval);},[]);const rawEnd=getRawEndDate(props);const past=isPastDate(rawEnd,now);const hasExpired=isPastDate(getRawExpiredDate(props),now);const isVisible=past!==true&&hasExpired!==true;useEffect(()=>{const id=idRef.current;const reg=getDateCardRegistry();reg.all.add(id);if(isVisible){reg.visible.add(id);}else{reg.visible.delete(id);}window.dispatchEvent(new CustomEvent(DATECARD_EVENT));return()=>{reg.all.delete(id);reg.visible.delete(id);window.dispatchEvent(new CustomEvent(DATECARD_EVENT));};},[isVisible]);if(isCanvas){const label=hasExpired===true?\"EXPIRED\":past===true?\"PAST\":\"VISIBLE\";const bg=!isVisible?\"rgba(220,38,38,0.85)\":\"rgba(22,163,74,0.85)\";return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{...badgeStyle,background:bg,top:4,right:4,fontSize:10,padding:\"2px 6px\"},children:[label,rawEnd?` \\xb7 ${String(rawEnd).slice(0,16)}`:\"\"]}),/*#__PURE__*/_jsx(Component,{...props,style:{...props.style,...!isVisible?{opacity:.35}:{}}})]});}if(!isVisible)return null;return /*#__PURE__*/_jsx(Component,{...props});};}/**\n * Shows its component only when all DateCards/EventCards have been filtered\n * out by withDateCardFilter. Use this on a text or frame element to display\n * a \"no upcoming dates\" placeholder message.\n *\n * Canvas: Always visible with a badge. Green = would be visible on site.\n * Preview/Publish: Only visible when all items are filtered out.\n */export function withDateCardPlaceholder(Component){return props=>{const[shouldShow,setShouldShow]=useState(false);const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{const check=()=>{const reg=getDateCardRegistry();setShouldShow(reg.all.size>0&&reg.visible.size===0);};window.addEventListener(DATECARD_EVENT,check);const timer=setTimeout(check,100);return()=>{window.removeEventListener(DATECARD_EVENT,check);clearTimeout(timer);};},[]);if(isCanvas){return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{...badgeStyle,background:shouldShow?\"rgba(22,163,74,0.85)\":\"rgba(120,120,120,0.85)\",top:4,right:4,fontSize:10,padding:\"2px 6px\"},children:[\"PLACEHOLDER\",shouldShow?\" \\xb7 ACTIVE\":\" \\xb7 HIDDEN ON SITE\"]}),/*#__PURE__*/_jsx(Component,{...props,style:{...props.style,...shouldShow?{}:{opacity:.4}}})]});}return /*#__PURE__*/_jsx(Component,{...props,style:{...props.style,...shouldShow?{}:{display:\"none\"}}});};}/**\n * Hides the entire section/component when there are no visible\n * DateCards or EventCards — either because all were filtered out\n * by withDateCardFilter (all past/expired) or because the CMS\n * Collection List is empty (no event dates for this program).\n *\n * Apply this to a parent container (e.g., Section - Program Dates instance)\n * so the whole section disappears when there are no upcoming events.\n *\n * Canvas: Section is dimmed (0.25 opacity) when it would be hidden.\n * Preview/Publish: Hidden (display: none) when no visible items.\n */export function withHideWhenAllFiltered(Component){return props=>{const[shouldHide,setShouldHide]=useState(false);const mountedRef=useRef(false);const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{const check=()=>{const reg=getDateCardRegistry();if(mountedRef.current){setShouldHide(reg.visible.size===0);}else{setShouldHide(reg.all.size>0&&reg.visible.size===0);}};window.addEventListener(DATECARD_EVENT,check);const timer=setTimeout(()=>{mountedRef.current=true;check();},300);return()=>{window.removeEventListener(DATECARD_EVENT,check);clearTimeout(timer);};},[]);if(isCanvas){return /*#__PURE__*/_jsx(Component,{...props,style:{...props.style,...shouldHide?{opacity:.25}:{}}});}if(shouldHide){return /*#__PURE__*/_jsx(Component,{...props,style:{...props.style,display:\"none\"}});}return /*#__PURE__*/_jsx(Component,{...props});};}// --- Optional Wrapper Code Component -----------------------------------------\nfunction getEndDate(child){if(!/*#__PURE__*/isValidElement(child))return null;const p=child.props;return getRawEndDate(p);}export function FilteredCollection({children,filterMode=\"upcoming\",gap=16,columns=3,style}){const[now,setNow]=useState(()=>new Date);const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{const interval=setInterval(()=>setNow(new Date),6e4);return()=>clearInterval(interval);},[]);const processed=Children.toArray(children).map(child=>{if(filterMode===\"all\")return child;const isPast=isPastDate(getEndDate(child),now);if(isPast===null)return child;const shouldHide=filterMode===\"upcoming\"&&isPast||filterMode===\"past\"&&!isPast;if(!shouldHide)return child;if(isCanvas&&/*#__PURE__*/isValidElement(child)){const label=isPast?\"PAST\":\"UPCOMING\";const bg=isPast?\"rgba(0,0,0,0.7)\":\"rgba(0,128,0,0.75)\";return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",opacity:.35},children:[/*#__PURE__*/_jsx(\"div\",{style:{...badgeStyle,background:bg},children:label}),child]},child.key);}if(/*#__PURE__*/isValidElement(child)){return null;}return null;});return /*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:`repeat(${columns}, 1fr)`,gap:`${gap}px`,width:\"100%\",...style},children:processed});}addPropertyControls(FilteredCollection,{children:{type:ControlType.Array,title:\"Content\",control:{type:ControlType.ComponentInstance}},filterMode:{type:ControlType.Enum,title:\"Show\",options:[\"upcoming\",\"past\",\"all\"],optionTitles:[\"Upcoming Only\",\"Past Only\",\"All\"],defaultValue:\"upcoming\"},columns:{type:ControlType.Number,title:\"Columns\",defaultValue:3,min:1,max:6,step:1},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:16,min:0,max:64,step:4}});\nexport const __FramerMetadata__ = {\"exports\":{\"FilteredCollection\":{\"type\":\"reactComponent\",\"name\":\"FilteredCollection\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDateCardPlaceholder\":{\"type\":\"reactHoc\",\"name\":\"withDateCardPlaceholder\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHideWhenAllFiltered\":{\"type\":\"reactHoc\",\"name\":\"withHideWhenAllFiltered\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDateCardFilter\":{\"type\":\"reactHoc\",\"name\":\"withDateCardFilter\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FilteredCollection.map"],"mappings":"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"}