{"version":3,"file":"CounterJoinedOverride.EdcBWvw0.mjs","names":["useRef","isDST","Component","Component"],"sources":["https:/framerusercontent.com/modules/wDk4FTkScn2nNRHSChHA/c2dhtWA1czGCzkfOJa0H/L7Our5P0Y.js","https:/framerusercontent.com/modules/O76MAISEUEYRofPw5HgB/7BjdCrMR9GXlBXNxQN3i/DateOverride.js","https:/framerusercontent.com/modules/XwlkuDGOZKp4JYYiGi7y/C0aVT8iKQwXlWCjTk8XY/CounterJoinedOverride.js"],"sourcesContent":["// Generated by Framer (7422eea)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const serializationHash=\"framer-Lw04H\";const variantClassNames={qfXifgTRn:\"framer-v-5htwzn\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({background,height,id,title,width,...props})=>{return{...props,s_pzitmm2:title??props.s_pzitmm2??\"Beginner Call\",WAiXaocFL:background??props.WAiXaocFL??\"var(--token-7380ccfe-fd2a-469d-af72-9ae709b8c06c, rgb(74, 156, 255))\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,s_pzitmm2,WAiXaocFL,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"qfXifgTRn\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-5htwzn\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"qfXifgTRn\",ref:refBinding,style:{backgroundColor:\"rgba(237, 237, 237, 0.57)\",borderBottomLeftRadius:3,borderBottomRightRadius:3,borderTopLeftRadius:3,borderTopRightRadius:3,...style},children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-i1shl1\",layoutDependency:layoutDependency,layoutId:\"uomBveArl\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1qs5bd4\",layoutDependency:layoutDependency,layoutId:\"Au42Q2WP1\",style:{backgroundColor:WAiXaocFL,borderBottomRightRadius:3,borderTopRightRadius:3}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1fsj4t3\",layoutDependency:layoutDependency,layoutId:\"KsE0A32he\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO0Jvcm5hIE1lZGl1bQ==\",\"--framer-font-family\":'\"Borna Medium\", \"Borna Medium Placeholder\", sans-serif',\"--framer-font-size\":\"10px\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-5052e370-f827-4837-a28b-9274cdd2200a, rgb(23, 23, 23)))\"},children:\"Beginner Call\"})}),className:\"framer-j3cmla\",fonts:[\"CUSTOM;Borna Medium\"],layoutDependency:layoutDependency,layoutId:\"j3Tg7zRqU\",style:{\"--extracted-r6o4lv\":\"var(--token-5052e370-f827-4837-a28b-9274cdd2200a, rgb(23, 23, 23))\"},text:s_pzitmm2,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"R0Y7SUJNIFBsZXggU2Fucy1yZWd1bGFy\",\"--framer-font-family\":'\"IBM Plex Sans\", \"IBM Plex Sans Placeholder\", sans-serif',\"--framer-font-size\":\"9px\",\"--framer-line-height\":\"12px\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-00285989-a377-40f1-8a0c-2a1d6d4ce593, rgb(111, 111, 111)))\"},children:\"1 hr\"})}),className:\"framer-1l0kb7h\",\"data-framer-name\":\"People are interested\",fonts:[\"GF;IBM Plex Sans-regular\"],layoutDependency:layoutDependency,layoutId:\"FbAAmce6X\",style:{\"--extracted-r6o4lv\":\"var(--token-00285989-a377-40f1-8a0c-2a1d6d4ce593, rgb(111, 111, 111))\"},verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-Lw04H.framer-1me3qbz, .framer-Lw04H .framer-1me3qbz { display: block; }\",\".framer-Lw04H.framer-5htwzn { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: hidden; padding: 6px 8px 6px 0px; position: relative; width: 65px; will-change: var(--framer-will-change-override, transform); }\",\".framer-Lw04H .framer-i1shl1 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 5px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 0px; position: relative; width: 100%; }\",\".framer-Lw04H .framer-1qs5bd4 { align-self: stretch; flex: none; height: auto; overflow: hidden; position: relative; width: 2px; will-change: var(--framer-will-change-override, transform); }\",\".framer-Lw04H .framer-1fsj4t3 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-Lw04H .framer-j3cmla { -webkit-user-select: none; flex: none; height: auto; position: relative; user-select: none; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-Lw04H .framer-1l0kb7h { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 48\n * @framerIntrinsicWidth 65\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"s_pzitmm2\":\"title\",\"WAiXaocFL\":\"background\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerL7Our5P0Y=withCSS(Component,css,\"framer-Lw04H\");export default FramerL7Our5P0Y;FramerL7Our5P0Y.displayName=\"Event\";FramerL7Our5P0Y.defaultProps={height:48,width:65};addPropertyControls(FramerL7Our5P0Y,{s_pzitmm2:{defaultValue:\"Beginner Call\",displayTextArea:false,title:\"Title\",type:ControlType.String},WAiXaocFL:{defaultValue:'var(--token-7380ccfe-fd2a-469d-af72-9ae709b8c06c, rgb(74, 156, 255)) /* {\"name\":\"Blue/1\"} */',title:\"Background\",type:ControlType.Color}});addFonts(FramerL7Our5P0Y,[{explicitInter:true,fonts:[{family:\"Borna Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/qzHMLposz4Ps5ISgV34IPf88NTU.woff\"},{family:\"IBM Plex Sans\",source:\"google\",style:\"normal\",url:\"https://fonts.gstatic.com/s/ibmplexsans/v21/zYXGKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1swZSAXcomDVmadSD6llzBaI5loa26g.woff2\",weight:\"400\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerL7Our5P0Y\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"s_pzitmm2\\\":\\\"title\\\",\\\"WAiXaocFL\\\":\\\"background\\\"}\",\"framerAutoSizeImages\":\"true\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"48\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"65\",\"framerComponentViewportWidth\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./L7Our5P0Y.map","// dateOverride.tsx\n// Utility functions for Framer to handle weekly event dates and local time formatting\n/**\n * ===== EVENT CONFIGURATION =====\n *\n * INSTRUCTIONS FOR NON-TECHNICAL USERS:\n *\n * 1. To change the day of the week, edit the DAY_OF_WEEK value below.\n *    Use one of: \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"\n *\n * 2. To change the event time, edit the EVENT_HOUR value below.\n *    This is in 24-hour format (0-23) and will be interpreted as Eastern Time (EST/EDT).\n *    Examples: 9 = 9:00 AM EST, 13 = 1:00 PM EST, 19 = 7:00 PM EST\n *\n * 3. To override with a specific date, edit the OVERRIDE_DATE value below.\n *    Use format \"YYYY-MM-DD\" (like \"2021-06-01\" for June 1st, 2021).\n *    Leave empty (\"\") to use the weekly day/time calculation instead.\n *\n * 4. To change the event URL, edit the EVENT_URL value below.\n *    This should be the full URL including https://\n *    Example: https://event.webinarjam.com/go/live/5/4y516h2uksws6\n */import{jsx as _jsx}from\"react/jsx-runtime\";export const EVENT_DAY_CONFIG={// Which day of the week the event occurs (default: Tuesday)\nDAY_OF_WEEK:\"Wednesday\",// What hour the event starts in Eastern Time (EST/EDT) (default: 19 = 7:00 PM)\nEVENT_HOUR:19,// Override for a specific date (format: \"YYYY-MM-DD\", e.g. \"2021-06-01\")\n// Leave empty or null to use the weekly day/time calculation instead\nOVERRIDE_DATE:\"\",// The URL for the event (used for registration or joining)\n//no need for updating this as of sep 13\nEVENT_URL:\"https://event.webinarjam.com/go/live/34/gy7gnux9\"};// Mapping of day names to their numeric values (0 = Sunday, 1 = Monday, etc.)\nconst DAY_NAME_TO_NUMBER={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6};/**\n * Utility function to force cache refresh\n * This ensures we don't have stale calculations\n */export function clearDateCalculationCache(){// Force component re-renders by updating this timestamp\nCACHE_TIMESTAMP=Date.now();}// Cache timestamp to force recalculations\nlet CACHE_TIMESTAMP=Date.now();/**\n * Returns a Date object representing a specific override date at the configured time\n * @param overrideDateStr Date string in format \"YYYY-MM-DD\"\n * @param debugMode Enable detailed debugging output\n */function getOverrideEventDate(overrideDateStr,debugMode=false){// Parse the override date\nconst dateParts=overrideDateStr.split(\"-\");if(dateParts.length!==3){if(debugMode)console.error(\"Invalid override date format. Expected YYYY-MM-DD, got:\",overrideDateStr);throw new Error(`Invalid override date format: ${overrideDateStr}. Expected format: YYYY-MM-DD`);}const year=parseInt(dateParts[0],10);const month=parseInt(dateParts[1],10)-1// Month is 0-indexed in JavaScript Date\n;const day=parseInt(dateParts[2],10);if(isNaN(year)||isNaN(month)||isNaN(day)){if(debugMode)console.error(\"Invalid date components in:\",overrideDateStr);throw new Error(`Invalid date components in: ${overrideDateStr}`);}if(debugMode)console.log(\"Parsed override date - Year:\",year,\"Month:\",month,\"Day:\",day);// Get configured hour (0-23), defaulting to 19 (7PM) if invalid input\nconst targetHour=typeof EVENT_DAY_CONFIG.EVENT_HOUR===\"number\"&&EVENT_DAY_CONFIG.EVENT_HOUR>=0&&EVENT_DAY_CONFIG.EVENT_HOUR<=23?EVENT_DAY_CONFIG.EVENT_HOUR:19;if(debugMode)console.log(\"Target hour (Eastern Time):\",targetHour);// Create the date in UTC, accounting for Eastern Time offset\n// Determine if the override date is in Daylight Saving Time in Eastern Time\nconst testDate=new Date(year,month,day);const easternTimeString=testDate.toLocaleString(\"en-US\",{timeZone:\"America/New_York\"});const easternJanTimeString=new Date(year,0,1).toLocaleString(\"en-US\",{timeZone:\"America/New_York\"});// Get the offset for the target date and January 1st\nconst targetDate=new Date(easternTimeString);const janDate=new Date(easternJanTimeString);// If the target date's offset is less than January's, it's in DST\nconst isDST=targetDate.getTimezoneOffset()<janDate.getTimezoneOffset();// Eastern Time offset: UTC-5 (EST) or UTC-4 (EDT)\nconst easternOffset=isDST?4:5;if(debugMode)console.log(\"Override date Eastern Time is in DST:\",isDST,\"Offset:\",easternOffset);// Create the date in UTC, converting from Eastern Time\nconst resultDate=new Date(Date.UTC(year,month,day,targetHour+easternOffset,0,0,0));if(debugMode){console.log(\"Override date result (local time):\",resultDate.toString());console.log(\"Override date day of week:\",resultDate.getDay());console.log(\"Override date hours:\",resultDate.getHours());}return resultDate;}/**\n * Returns a Date object representing the next occurrence of the configured weekly event\n * (default: Tuesday at 7PM EST/EDT), converted to the user's local time zone.\n * @param skipCurrentIfClose Optional parameter to force targeting next week's occurrence\n * @param forceFresh Optional parameter to bypass any caching\n * @param debugMode Enable detailed debugging output\n */export function getNextWeeklyEventDate(skipCurrentIfClose=false,forceFresh=false,debugMode=false){// Use timestamp to ensure fresh calculation\nif(forceFresh){clearDateCalculationCache();}// Check for date override first\nif(EVENT_DAY_CONFIG.OVERRIDE_DATE&&EVENT_DAY_CONFIG.OVERRIDE_DATE.trim()!==\"\"){if(debugMode)console.log(\"Using override date:\",EVENT_DAY_CONFIG.OVERRIDE_DATE);return getOverrideEventDate(EVENT_DAY_CONFIG.OVERRIDE_DATE,debugMode);}// Get current date in user's local time\nconst now=new Date;if(debugMode)console.log(\"Current date (local):\",now.toString());// Get configured day of week (0-6), defaulting to Tuesday (2) if invalid input\nconst configuredDay=EVENT_DAY_CONFIG.DAY_OF_WEEK;if(debugMode)console.log(\"Configured day:\",configuredDay);const targetDayNumber=typeof configuredDay===\"string\"?DAY_NAME_TO_NUMBER[configuredDay]||2:2;if(debugMode)console.log(\"Target day number:\",targetDayNumber);// Find next occurrence of the configured day\nconst dayOfWeek=now.getDay();if(debugMode)console.log(\"Current day of week:\",dayOfWeek);let daysUntilTarget=(targetDayNumber-dayOfWeek+7)%7;if(debugMode)console.log(\"Days until target:\",daysUntilTarget);// Create a date for the target day in local time\nconst targetLocalDate=new Date(now);targetLocalDate.setDate(now.getDate()+daysUntilTarget);if(debugMode)console.log(\"Target date (local):\",targetLocalDate.toString());// Get configured hour (0-23), defaulting to 19 (7PM) if invalid input\nconst targetHour=typeof EVENT_DAY_CONFIG.EVENT_HOUR===\"number\"&&EVENT_DAY_CONFIG.EVENT_HOUR>=0&&EVENT_DAY_CONFIG.EVENT_HOUR<=23?EVENT_DAY_CONFIG.EVENT_HOUR:19;if(debugMode)console.log(\"Target hour (Eastern Time):\",targetHour);// SIMPLIFIED TIME ZONE APPROACH:\n// Create the date in UTC, accounting for Eastern Time offset\n// Get the date parts from the target date\nconst year=targetLocalDate.getFullYear();const month=targetLocalDate.getMonth();const day=targetLocalDate.getDate();// First create a date in UTC\n// Eastern Time is either UTC-5 (EST) or UTC-4 (EDT)\n// We'll create a date in the target day at the target hour in Eastern Time\n// Determine if date is in Daylight Saving Time in Eastern Time\n// This checks if the America/New_York time zone is in DST on the target date\nconst easternTimeString=new Date(year,month,day).toLocaleString(\"en-US\",{timeZone:\"America/New_York\"});const easternJanTimeString=new Date(year,0,1).toLocaleString(\"en-US\",{timeZone:\"America/New_York\"});// Get the offset for the target date and January 1st\nconst targetDate=new Date(easternTimeString);const janDate=new Date(easternJanTimeString);// If the target date's offset is less than January's, it's in DST\nconst isDST=targetDate.getTimezoneOffset()<janDate.getTimezoneOffset();// Eastern Time offset: UTC-5 (EST) or UTC-4 (EDT)\nconst easternOffset=isDST?4:5;if(debugMode)console.log(\"Eastern Time is in DST:\",isDST,\"Offset:\",easternOffset);// Create the date in the user's local time zone, but representing the Eastern Time target\n// We add the Eastern offset to convert from Eastern to UTC\nconst resultDate=new Date(Date.UTC(year,month,day,targetHour+easternOffset,0,0,0));if(debugMode)console.log(\"Result date (local time):\",resultDate.toString());// Check if we need to skip to next week\nconst timeUntilTarget=resultDate.getTime()-now.getTime();if(debugMode)console.log(\"Time until target (ms):\",timeUntilTarget);if(timeUntilTarget<=0||skipCurrentIfClose&&timeUntilTarget<864e5){// Already passed target time or too close, move to next week\nresultDate.setUTCDate(resultDate.getUTCDate()+7);if(debugMode)console.log(\"Skipped to next week:\",resultDate.toString());}if(debugMode){// Final verification - what day is the resulting date?\nconst finalDay=resultDate.getDay();const finalDayName=Object.keys(DAY_NAME_TO_NUMBER).find(key=>DAY_NAME_TO_NUMBER[key]===finalDay);console.log(\"FINAL DATE:\",resultDate.toString());console.log(\"FINAL DAY:\",finalDayName,\"(day\",finalDay,\")\");console.log(\"HOURS:\",resultDate.getHours());// Is the final day what we expected?\nif(finalDay!==targetDayNumber){console.error(\"ERROR: Final day\",finalDayName,\"does not match target day\",configuredDay);}}return resultDate;}/**\n * Formats a Date object as a string in the user's local time zone, e.g. \"Wed, May 7th, 2025\".\n * @param date The Date object to format\n * @returns A formatted string in the user's local time\n */export function formatEventDateLocal(date){// Format the date with abbreviated weekday, month, and year\nconst formattedDate=date.toLocaleString(undefined,{weekday:\"short\",month:\"long\",day:\"numeric\",year:\"numeric\"});// Add ordinal suffix to day (1st, 2nd, 3rd, 4th, etc.)\nconst day=date.getDate();const ordinalSuffix=getOrdinalSuffix(day);// Replace the day number with day + ordinal suffix\nreturn formattedDate.replace(` ${day}, `,` ${day}${ordinalSuffix}, `);}/**\n * Formats only the time part of a Date object with timezone, e.g. \"4:00 PM PST\".\n * @param date The Date object to format\n * @returns A formatted time string in the user's local time with timezone\n */export function formatEventTimeLocal(date){// Format the time\nconst formattedTime=date.toLocaleString(undefined,{hour:\"numeric\",minute:\"2-digit\",hour12:true});// Get timezone abbreviation more reliably\nconst timezone=getReliableTimezoneAbbreviation();return`${formattedTime} ${timezone}`;}/**\n * Helper function to get ordinal suffix for a number (1st, 2nd, 3rd, etc.)\n */function getOrdinalSuffix(day){if(day>3&&day<21)return\"th\";switch(day%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\";}}/**\n * Helper function to get timezone abbreviation that works on all devices\n */function getReliableTimezoneAbbreviation(){const date=new Date;const timezoneOffsetMinutes=date.getTimezoneOffset();// Try to get timezone name from Intl API\ntry{const timeZoneName=Intl.DateTimeFormat().resolvedOptions().timeZone;if(timeZoneName){// For common US timezones, return abbreviation\nif(timeZoneName===\"America/Los_Angeles\")return isDST()?\"PDT\":\"PST\";if(timeZoneName===\"America/Denver\")return isDST()?\"MDT\":\"MST\";if(timeZoneName===\"America/Chicago\")return isDST()?\"CDT\":\"CST\";if(timeZoneName===\"America/New_York\")return isDST()?\"EDT\":\"EST\";// For other timezones, get from formatter if available\nconst formatter=new Intl.DateTimeFormat(undefined,{timeZoneName:\"short\"});const parts=formatter.formatToParts(date);const timeZonePart=parts.find(part=>part.type===\"timeZoneName\");if(timeZonePart)return timeZonePart.value;// Last resort: return the timezone name itself\nreturn timeZoneName.split(\"/\").pop()||timeZoneName;}}catch(e){// Fallback if Intl API doesn't work\n}// Ultimate fallback to GMT+/- format (works everywhere)\nconst offsetHours=-timezoneOffsetMinutes/60;const sign=offsetHours>=0?\"+\":\"-\";const absHours=Math.abs(offsetHours);return`GMT${sign}${absHours}`;}/**\n * Helper function to determine if the current date is in DST\n */function isDST(){const now=new Date;const januaryOffset=new Date(now.getFullYear(),0,1).getTimezoneOffset();const julyOffset=new Date(now.getFullYear(),6,1).getTimezoneOffset();return Math.max(januaryOffset,julyOffset)!==now.getTimezoneOffset();}/**\n * Framer override: Sets the text of a layer to the next event date in the user's local time.\n * Usage: Attach this override to a Text layer in Framer.\n */export function showNextEventDateOverride(props){return{text:formatEventDateLocal(getNextWeeklyEventDate())};}import{forwardRef}from\"react\";/**\n * Higher-order component override for text layers.\n * Displays the configured weekly event date in the user's local time.\n */export const withNextEventDate=Component=>{return /*#__PURE__*/forwardRef((props,ref)=>{// Force fresh calculation with debug mode on\nconst nextEvent=getNextWeeklyEventDate(false,true,false);const formattedDate=formatEventDateLocal(nextEvent);return /*#__PURE__*/_jsx(Component,{ref:ref,...props,text:formattedDate});});};/**\n * Higher-order component override for text layers.\n * Displays ONLY THE TIME of the configured weekly event in the user's local time.\n */export const withNextEventTime=Component=>{return /*#__PURE__*/forwardRef((props,ref)=>{const nextEvent=getNextWeeklyEventDate();const formattedTime=formatEventTimeLocal(nextEvent);return /*#__PURE__*/_jsx(Component,{ref:ref,...props,text:formattedTime});});};/**\n * Central configuration for calendar event details.\n * Edit these values to update all calendar functions at once.\n */export const EVENT_CONFIG={title:\"Learn How To Launch A Profitable Amazon Business In The Next 60 Days\",description:\"Amazon Business Launch Training Session\\n\\n\"+\"WHAT TO PREPARE:\\n\"+\"- Use a desktop/laptop (not phone) for optimal experience\\n\"+\"- Block 90+ minutes of uninterrupted time\\n\"+\"- Close all other applications\\n\"+\"- Have a notepad ready\\n\\n\"+\"NEXT STEPS:\\n\"+\"1. Watch the preparation video before class\\n\"+\"   https://youtu.be/z1WI7FgDcAA\\n\"+\"2. Check your email for additional materials\\n\"+\"3. Join using the link below\\n\\n\"+\"CLASS LINK: \"+EVENT_DAY_CONFIG.EVENT_URL,location:EVENT_DAY_CONFIG.EVENT_URL,durationHours:1.5,// Reference to the event day and time configuration\ndayConfig:EVENT_DAY_CONFIG,// Notification settings (for calendar apps)\nnotificationMinutes:[30,10]};/**\n * Generates a Google Calendar URL for adding an event\n * @param title Event title (defaults to EVENT_CONFIG.title)\n * @param description Event description (defaults to EVENT_CONFIG.description)\n * @param location Event location (defaults to EVENT_CONFIG.location)\n * @returns URL that can be used to add event to Google Calendar\n */export function generateGoogleCalendarUrl(title=EVENT_CONFIG.title,description=EVENT_CONFIG.description,location=EVENT_CONFIG.location){const eventDate=getNextWeeklyEventDate();// Create end time (duration from config)\nconst endTime=new Date(eventDate);endTime.setHours(endTime.getHours()+EVENT_CONFIG.durationHours);// Format dates in ISO format for Google Calendar\nconst startTimeStr=eventDate.toISOString().replace(/-|:|\\.\\d+/g,\"\");const endTimeStr=endTime.toISOString().replace(/-|:|\\.\\d+/g,\"\");// Build Google Calendar URL with proper encoding\nconst baseUrl=\"https://calendar.google.com/calendar/render\";const params=new URLSearchParams({action:\"TEMPLATE\",text:title,details:description,location:location,dates:`${startTimeStr}/${endTimeStr}`,// Setting to private calendar event (no guests)\nadd:\"\",src:\"\",// Add default reminders using the correct format\n// This creates popup notifications without adding them as guests\npli:\"1\",sf:\"true\",output:\"xml\"});// Add notification reminders using the proper URL parameter\nif(EVENT_CONFIG.notificationMinutes&&EVENT_CONFIG.notificationMinutes.length>0){EVENT_CONFIG.notificationMinutes.forEach(minutes=>{if(minutes){// The proper way to add reminders to Google Calendar URL\nparams.append(\"crm\",`${minutes}`);}});}return`${baseUrl}?${params.toString()}`;}/**\n * Generates an Apple Calendar URL for adding an event (works on iOS/macOS)\n * @param title Event title (defaults to EVENT_CONFIG.title)\n * @param description Event description (defaults to EVENT_CONFIG.description)\n * @param location Event location (defaults to EVENT_CONFIG.location)\n * @returns URL that can be used to add event to Apple Calendar\n */export function generateAppleCalendarUrl(title=EVENT_CONFIG.title,description=EVENT_CONFIG.description,location=EVENT_CONFIG.location){// For Apple Calendar, we'll use the ICS file method which offers better support for all features\nreturn generateIcsFileUrl(title,description,location);}/**\n * Generates a Microsoft Outlook URL for adding an event\n * @param title Event title (defaults to EVENT_CONFIG.title)\n * @param description Event description (defaults to EVENT_CONFIG.description)\n * @param location Event location (defaults to EVENT_CONFIG.location)\n * @returns URL that can be used to add event to Outlook Calendar\n */export function generateOutlookCalendarUrl(title=EVENT_CONFIG.title,description=EVENT_CONFIG.description,location=EVENT_CONFIG.location){const eventDate=getNextWeeklyEventDate();// Create end time (duration from config)\nconst endTime=new Date(eventDate);endTime.setHours(endTime.getHours()+EVENT_CONFIG.durationHours);// Format dates in ISO format for Outlook\nconst startTimeStr=eventDate.toISOString();const endTimeStr=endTime.toISOString();// Add the event URL to the description if it's not already there\nlet enhancedDescription=description;if(location&&!description.includes(location)){enhancedDescription+=`\n\nJoin URL: ${location}`;}// Build Outlook Web URL with proper encoding\nconst baseUrl=\"https://outlook.live.com/calendar/0/deeplink/compose\";const params=new URLSearchParams({subject:title,body:enhancedDescription,location:location,startdt:startTimeStr,enddt:endTimeStr,path:\"/calendar/action/compose\",rru:\"addevent\"});return`${baseUrl}?${params.toString()}`;}/**\n * Generates a Yahoo Calendar URL for adding an event\n * @param title Event title (defaults to EVENT_CONFIG.title)\n * @param description Event description (defaults to EVENT_CONFIG.description)\n * @param location Event location (defaults to EVENT_CONFIG.location)\n * @returns URL that can be used to add event to Yahoo Calendar\n */export function generateYahooCalendarUrl(title=EVENT_CONFIG.title,description=EVENT_CONFIG.description,location=EVENT_CONFIG.location){const eventDate=getNextWeeklyEventDate();// Create end time (duration from config)\nconst endTime=new Date(eventDate);endTime.setHours(endTime.getHours()+EVENT_CONFIG.durationHours);// Format dates for Yahoo (different format)\nconst formatYahooDate=date=>{const year=date.getFullYear();const month=String(date.getMonth()+1).padStart(2,\"0\");const day=String(date.getDate()).padStart(2,\"0\");const hours=String(date.getHours()).padStart(2,\"0\");const minutes=String(date.getMinutes()).padStart(2,\"0\");return`${year}${month}${day}T${hours}${minutes}00`;};// Add the event URL to the description if it's not already there\nlet enhancedDescription=description;if(location&&!description.includes(location)){enhancedDescription+=`\n\nJoin URL: ${location}`;}// Build Yahoo Calendar URL\nconst baseUrl=\"https://calendar.yahoo.com/\";const params=new URLSearchParams({title:title,desc:enhancedDescription,in_loc:location,st:formatYahooDate(eventDate),et:formatYahooDate(endTime),v:\"60\"});return`${baseUrl}?${params.toString()}`;}/**\n * Generates a downloadable ICS file URL (works with most calendar apps)\n * @param title Event title (defaults to EVENT_CONFIG.title)\n * @param description Event description (defaults to EVENT_CONFIG.description)\n * @param location Event location (defaults to EVENT_CONFIG.location)\n * @returns URL that can be used to download an ICS file for import into any calendar\n */export function generateIcsFileUrl(title=EVENT_CONFIG.title,description=EVENT_CONFIG.description,location=EVENT_CONFIG.location){const eventDate=getNextWeeklyEventDate();// Create end time (duration from config)\nconst endTime=new Date(eventDate);endTime.setHours(endTime.getHours()+EVENT_CONFIG.durationHours);// Format dates for ICS\nconst formatICSDate=date=>{return date.toISOString().replace(/-|:|\\.\\d+/g,\"\").slice(0,-1)+\"Z\";};// Create the ICS content\nlet icsContent=[\"BEGIN:VCALENDAR\",\"VERSION:2.0\",\"CALSCALE:GREGORIAN\",\"METHOD:PUBLISH\",\"BEGIN:VEVENT\",`SUMMARY:${title}`,`DTSTART:${formatICSDate(eventDate)}`,`DTEND:${formatICSDate(endTime)}`,`LOCATION:${location}`,`DESCRIPTION:${description.replace(/\\n/g,\"\\\\n\")}`,`URL:${EVENT_DAY_CONFIG.EVENT_URL}`];// Add notification reminders if configured\nif(EVENT_CONFIG.notificationMinutes&&EVENT_CONFIG.notificationMinutes.length>0){EVENT_CONFIG.notificationMinutes.forEach(minutes=>{if(minutes){// Add alarm for notification\nicsContent.push(\"BEGIN:VALARM\",\"ACTION:DISPLAY\",`DESCRIPTION:${title} Reminder`,`TRIGGER:-PT${minutes}M`,\"END:VALARM\");}});}// Complete the ICS content\nicsContent.push(\"END:VEVENT\",\"END:VCALENDAR\");// Join all lines with CRLF as required by the ICS spec\nconst icsString=icsContent.join(\"\\r\\n\");// Create a data URI for the ICS file\nreturn`data:text/calendar;charset=utf-8,${encodeURIComponent(icsString)}`;}/**\n * Higher-order component override for button layers.\n * Creates a button that opens the Google Calendar add event link.\n */export const withGoogleCalendarLink=Component=>{return /*#__PURE__*/forwardRef((props,ref)=>{const calendarUrl=generateGoogleCalendarUrl();return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClick:()=>window.open(calendarUrl,\"_blank\"),style:{cursor:\"pointer\",...props.style||{}}});});};/**\n * Higher-order component override for button layers.\n * Creates a button that opens the Apple Calendar add event link.\n */export const withAppleCalendarLink=Component=>{return /*#__PURE__*/forwardRef((props,ref)=>{const calendarUrl=generateAppleCalendarUrl();return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClick:()=>window.open(calendarUrl,\"_blank\"),style:{cursor:\"pointer\",...props.style||{}}});});};/**\n * Higher-order component override for button layers.\n * Creates a button that opens the Outlook Calendar add event link.\n */export const withOutlookCalendarLink=Component=>{return /*#__PURE__*/forwardRef((props,ref)=>{const calendarUrl=generateOutlookCalendarUrl();return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClick:()=>window.open(calendarUrl,\"_blank\"),style:{cursor:\"pointer\",...props.style||{}}});});};/**\n * Higher-order component override for button layers.\n * Creates a button that opens the Yahoo Calendar add event link.\n */export const withYahooCalendarLink=Component=>{return /*#__PURE__*/forwardRef((props,ref)=>{const calendarUrl=generateYahooCalendarUrl();return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClick:()=>window.open(calendarUrl,\"_blank\"),style:{cursor:\"pointer\",...props.style||{}}});});};/**\n * Higher-order component override for button layers.\n * Creates a button that downloads an ICS file that works with most calendar apps.\n */export const withIcsCalendarLink=Component=>{return /*#__PURE__*/forwardRef((props,ref)=>{const calendarUrl=generateIcsFileUrl();return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClick:()=>window.open(calendarUrl,\"_blank\"),style:{cursor:\"pointer\",...props.style||{}}});});};/**\n * Returns the configured event URL\n * @returns The event URL string\n */export function getEventURL(){return EVENT_DAY_CONFIG.EVENT_URL||\"\";}/**\n * Framer override: Sets the href attribute of a layer to the event URL.\n * Usage: Attach this override to a Frame, Button, or other clickable layer in Framer.\n */export function setEventURLOverride(props){return{href:getEventURL(),target:\"_blank\"};}/**\n * Higher-order component override for button layers.\n * Creates a button that opens the event URL when clicked.\n * Also displays the URL as text and adds underline styling.\n */export const withEventURL=Component=>{return /*#__PURE__*/forwardRef((props,ref)=>{const eventURL=getEventURL();return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClick:()=>window.open(eventURL,\"_blank\"),text:eventURL,style:{cursor:\"pointer\",textDecoration:\"underline\",color:\"#0066cc\",...props.style||{}}});});};// Make getNextWeeklyEventDate globally accessible for other components like Countdown\nif(typeof window!==\"undefined\"){// Create a namespace for our Framer functions if it doesn't exist\nwindow[\"FramerEventConfig\"]=window[\"FramerEventConfig\"]||{};// Expose the date function and configuration\nwindow[\"FramerEventConfig\"].getNextWeeklyEventDate=getNextWeeklyEventDate;window[\"FramerEventConfig\"].EVENT_DAY_CONFIG=EVENT_DAY_CONFIG;window[\"FramerEventConfig\"].clearDateCalculationCache=clearDateCalculationCache;window[\"FramerEventConfig\"].getEventURL=getEventURL;}\nexport const __FramerMetadata__ = {\"exports\":{\"setEventURLOverride\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNextEventTime\":{\"type\":\"reactHoc\",\"name\":\"withNextEventTime\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"generateYahooCalendarUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"generateAppleCalendarUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"generateIcsFileUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EVENT_CONFIG\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withIcsCalendarLink\":{\"type\":\"reactHoc\",\"name\":\"withIcsCalendarLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getNextWeeklyEventDate\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withEventURL\":{\"type\":\"reactHoc\",\"name\":\"withEventURL\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EVENT_DAY_CONFIG\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withYahooCalendarLink\":{\"type\":\"reactHoc\",\"name\":\"withYahooCalendarLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clearDateCalculationCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNextEventDate\":{\"type\":\"reactHoc\",\"name\":\"withNextEventDate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withGoogleCalendarLink\":{\"type\":\"reactHoc\",\"name\":\"withGoogleCalendarLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getEventURL\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withOutlookCalendarLink\":{\"type\":\"reactHoc\",\"name\":\"withOutlookCalendarLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"generateGoogleCalendarUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showNextEventDateOverride\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAppleCalendarLink\":{\"type\":\"reactHoc\",\"name\":\"withAppleCalendarLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"formatEventTimeLocal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"generateOutlookCalendarUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"formatEventDateLocal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DateOverride.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef}from\"react\";/**\n * Calculates the dynamic join count for the current time of week\n * @param minCount Minimum number of joins to show\n * @param maxCount Maximum number of joins to show\n * @param baseSpeed Base speed of joins per minute\n * @param mondayMultiplier Speed multiplier for Mondays\n * @param tuesdayMultiplier Speed multiplier for Tuesdays\n * @param wednesdayMultiplier Speed multiplier for Wednesdays\n * @returns Current count based on time of week\n */function calculateJoinCount(minCount=80,maxCount=349,baseSpeed=5,mondayMultiplier=1.5,tuesdayMultiplier=2.5,wednesdayMultiplier=4){const now=new Date;// Get the next Wednesday event time (or current if today is Wednesday)\nconst targetDate=getNextWednesday7PMEST(false);// If we're at/past the event time, return minCount\nif(targetDate.getTime()<=now.getTime()){return minCount;}// Calculate what our count should be based on time until event\nconst totalMillisecondsInWeek=7*24*60*60*1e3;const millisecondsUntilEvent=targetDate.getTime()-now.getTime();const weekProgress=1-millisecondsUntilEvent/totalMillisecondsInWeek;// Calculate appropriate count based on progress\nconst range=maxCount-minCount;const baseCountProgress=minCount+Math.floor(range*weekProgress);// Apply day-specific multipliers\nconst dayOfWeek=now.getDay()// 0 = Sunday, 1 = Monday, etc.\n;let multiplier=1;if(dayOfWeek===1)multiplier=mondayMultiplier;else if(dayOfWeek===2)multiplier=tuesdayMultiplier;else if(dayOfWeek===3)multiplier=wednesdayMultiplier;// Return the calculated count, ensuring it's within bounds\nreturn Math.min(maxCount,Math.max(minCount,Math.floor(baseCountProgress*multiplier)));}// Helper function to get next Wednesday at 7PM EST\nfunction getNextWednesday7PMEST(skipCurrentIfClose=false){const now=new Date;const dayOfWeek=now.getDay();let daysUntilWednesday=(3-dayOfWeek+7)%7;// If today is Wednesday and we're past 7PM, or skipCurrentIfClose is true\nif(daysUntilWednesday===0){const hours=now.getHours();if(hours>=19||skipCurrentIfClose){daysUntilWednesday=7;}}const targetWednesday=new Date(now);targetWednesday.setDate(now.getDate()+daysUntilWednesday);targetWednesday.setHours(19,0,0,0);// Adjust for EST timezone (7PM EST)\nconst nyTimeString=targetWednesday.toLocaleString(\"en-US\",{timeZone:\"America/New_York\",hour12:false});const nyTime=new Date(nyTimeString);const offsetMinutes=(targetWednesday.getTime()-nyTime.getTime())/6e4;const localTargetTime=new Date(targetWednesday.getTime()+offsetMinutes*6e4);return localTargetTime;}/**\n * Simple override that returns the current join count.\n * Use this for simple text overrides.\n */export function showJoinCounter(props){return{text:calculateJoinCount().toString()};}/**\n * Higher-order component override for text layers.\n * Shows a dynamic counter of joins that ramps up before Wednesday's event.\n * @param minCount - Minimum number of joins (default: 80)\n * @param maxCount - Maximum number of joins (default: 349)\n * @param baseSpeed - Base speed of joins per minute (default: 5)\n * @param mondayMultiplier - Speed multiplier for Monday (default: 1.5)\n * @param tuesdayMultiplier - Speed multiplier for Tuesday (default: 2.5)\n * @param wednesdayMultiplier - Speed multiplier for Wednesday (default: 4)\n */export const withJoinCounter=(Component,minCount=80,maxCount=349,baseSpeed=5,mondayMultiplier=1.5,tuesdayMultiplier=2.5,wednesdayMultiplier=4)=>{return /*#__PURE__*/forwardRef((props,ref)=>{// Calculate the current join count based on time of week\nconst count=calculateJoinCount(minCount,maxCount,baseSpeed,mondayMultiplier,tuesdayMultiplier,wednesdayMultiplier);return /*#__PURE__*/_jsx(Component,{ref:ref,...props,text:count.toString()});});};\nexport const __FramerMetadata__ = {\"exports\":{\"showJoinCounter\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withJoinCounter\":{\"type\":\"reactHoc\",\"name\":\"withJoinCounter\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CounterJoinedOverride.map"],"mappings":"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"}