{"mappings":"A,C,S,ECMY,EA6EL,SAAS,EAAY,CAAgB,EAC1C,aAAa,OAAO,CAAC,qBAAsB,EAC7C,CAgBA,SAAS,EAAU,CAAoB,EACrC,IAAM,EAPC,KAAK,cAAc,GAAG,eAAe,GAAG,QAAQ,CAUvD,GAAI,AAAa,QAAb,EACF,OAGF,IAAM,EAAuB,CAC3B,QAAS,AAxDb,WACE,IAAM,EAAe,aAAa,OAAO,CAAC,oBAC1C,GAAI,EACF,OAAO,EAGT,IAAM,EAAgB,CACpB,MAAO,MAAO,MAAO,YAAa,YAAa,SAAU,cACzD,WAAY,OAAQ,UAAW,cAAe,UAAW,UACzD,OAAQ,QAAS,UAAW,cAAe,SAAU,SACrD,WAAY,QAAS,WAAY,SAAU,WAAY,WACvD,SAAU,SAAU,aAAc,gBAAiB,aACnD,SACD,CAEK,EAAa,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAG,IACjD,EAAS,CAAC,UAAU,EAAE,CAAa,CAAC,KAAK,KAAK,CAAC,KAAK,MAAM,GAAK,EAAc,MAAM,EAAE,CAAC,CAAC,EAAE,EAAW,CAAC,CAE3G,OADA,aAAa,OAAO,CAAC,mBAAoB,GAClC,CACT,IAsCI,WAAY,EACZ,SApCK,aAAa,OAAO,CAAC,uBAAyB,OAqCnD,KAAM,CACJ,SAAU,OAAO,QAAQ,CAAC,IAAI,CAC9B,YAAa,AA5BnB,WACE,IAAM,EAAQ,OAAO,UAAU,QAC/B,AAAI,GAAS,IAAY,SACrB,GAAS,KAAa,SACnB,SACT,IAwBM,SAAA,CACF,CACF,EAEA,MAzEkB,yEAyEC,CACjB,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAmB,EAC9C,KAAM,KAAK,SAAS,CAAC,EACvB,GACG,IAAI,CAAC,AAAC,GAAa,EAAS,IAAI,IAChC,IAAI,CAAC,AAAC,GAAS,QAAQ,GAAG,CAAC,2BAA4B,IACvD,KAAK,CAAC,AAAC,GAAU,QAAQ,KAAK,CAAC,uBAAwB,GAC5D,CAKA,SAAS,IAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAChC,EADF,qBAGE,EAAA,gBAEJ,C,CAtIY,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,G,iB,C,oB,E,U,C,a,E,a,C,gB,E,M,C,S,E,c,C,iBAyLZ,OAAO,mBAAmB,CATE,CAC1B,cAAe,EACf,eA1CF,WACE,EAAA,aACF,EAyCE,YAvCF,WACE,EAAA,SACF,EAsCE,mBAtBF,WACE,IAAM,EAAoB,aAAa,OAAO,CAAC,+BACzC,EAAc,IAAI,OAAO,OAAO,EAKlC,EAAC,GAAqB,EAAc,SAAS,EAAmB,KAF7C,MAGrB,EAAA,kBACA,aAAa,OAAO,CAAC,8BAA+B,EAAY,QAAQ,KAExE,QAAQ,GAAG,CAAC,6DAEhB,EAUE,UA5GK,SAAmB,CAAc,EACtC,aAAa,OAAO,CAAC,mBAAoB,EAC3C,EA2GE,YAAa,CACf,EAKA,AA5CA,WACE,IAAM,EAAM,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,EAClC,EAAc,EAAI,YAAY,CAAC,GAAG,CAAC,gBACnC,EAAU,EAAI,YAAY,CAAC,GAAG,CAAC,WACjC,EACF,EAAY,GACH,GACT,EAAY,EAEhB,IAoCA,G,C","sources":["","web/utils/sheetRocksAnalytics.ts"],"sourcesContent":["(() => {\n// funnel.ts\n// ------------------------------------------------------\n// 1. Define the event type enum\n// ------------------------------------------------------\nvar $9ba21a0907c543ce$export$3d7865934588d77e;\n(function(EventType) {\n EventType[\"LANDING_PAGE_VIEW\"] = \"landing_page_view\";\n EventType[\"DEMO_START\"] = \"demo_start\";\n EventType[\"APP_PAGE_VIEW\"] = \"app_page_view\";\n EventType[\"SIGNUP\"] = \"signup\";\n EventType[\"ACTIVE_SESSION\"] = \"active_session\";\n})($9ba21a0907c543ce$export$3d7865934588d77e || ($9ba21a0907c543ce$export$3d7865934588d77e = {}));\n// ------------------------------------------------------\n// 4. Hardcoded Webhook URL\n// ------------------------------------------------------\nconst $9ba21a0907c543ce$var$WEBHOOK_URL = \"https://sheet.rocks/workbook/VzuJyx97jtMOaxy/webhooks/track_any-origin\";\n// const WEBHOOK_URL = 'https://dev.sheet.rocks/workbook/1S5uQWR6n3OWA56/webhooks/track_any-origin';\n// const WEBHOOK_URL = 'http://localhost:8080/workbook/iqnvvbfa6j4u066/track_any-origin';\n// const WEBHOOK_URL = 'http://localhost:8080/workbook/iqnvvbfa6j4u066/webhooks/track_any-origin';\n// ------------------------------------------------------\n// 5. Helper methods (mostly unchanged)\n// ------------------------------------------------------\nfunction $9ba21a0907c543ce$var$getUserId() {\n const storedUserId = localStorage.getItem(\"sheetRocksUserId\");\n if (storedUserId) return storedUserId;\n const randomInsects = [\n \"fly\",\n \"ant\",\n \"bee\",\n \"butterfly\",\n \"dragonfly\",\n \"beetle\",\n \"grasshopper\",\n \"mosquito\",\n \"moth\",\n \"ladybug\",\n \"caterpillar\",\n \"cricket\",\n \"termite\",\n \"wasp\",\n \"roach\",\n \"firefly\",\n \"stickinsect\",\n \"weevil\",\n \"mayfly\",\n \"lacewing\",\n \"aphid\",\n \"hoverfly\",\n \"tsetse\",\n \"scorpion\",\n \"stickbug\",\n \"cicada\",\n \"bedbug\",\n \"leafcutter\",\n \"giantwaterbug\",\n \"silverfish\",\n \"earwig\"\n ];\n const randomHash = Math.random().toString(36).slice(2, 11);\n const userId = `anonymous.${randomInsects[Math.floor(Math.random() * randomInsects.length)]}.${randomHash}`;\n localStorage.setItem(\"sheetRocksUserId\", userId);\n return userId;\n}\nfunction $9ba21a0907c543ce$var$getSolution() {\n return localStorage.getItem(\"sheetRocksSolution\") || \"none\";\n}\nfunction $9ba21a0907c543ce$export$7f5abdb7f5093137(userId) {\n localStorage.setItem(\"sheetRocksUserId\", userId);\n}\nfunction $9ba21a0907c543ce$export$5b77291ef1caffe5(solution) {\n localStorage.setItem(\"sheetRocksSolution\", solution);\n}\nfunction $9ba21a0907c543ce$var$getDeviceType() {\n const width = window.innerWidth;\n if (width <= 768) return \"mobile\";\n if (width <= 1024) return \"tablet\";\n return \"desktop\";\n}\nfunction $9ba21a0907c543ce$var$getTimezone() {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\n// ------------------------------------------------------\n// 6. Refactored sendEvent to handle everything in one place\n// ------------------------------------------------------\nfunction $9ba21a0907c543ce$var$sendEvent(eventType) {\n const timezone = $9ba21a0907c543ce$var$getTimezone();\n // if timezone is UTC, return -- do not track events in UTC\n if (timezone === \"UTC\") return;\n const eventData = {\n user_id: $9ba21a0907c543ce$var$getUserId(),\n event_type: eventType,\n solution: $9ba21a0907c543ce$var$getSolution(),\n meta: {\n page_url: window.location.href,\n device_type: $9ba21a0907c543ce$var$getDeviceType(),\n timezone: timezone\n }\n };\n fetch($9ba21a0907c543ce$var$WEBHOOK_URL, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(eventData)\n }).then((response)=>response.json()).then((data)=>console.log(\"Event sent successfully:\", data)).catch((error)=>console.error(\"Error sending event:\", error));\n}\n// ------------------------------------------------------\n// 7. Simplified helper functions\n// ------------------------------------------------------\nfunction $9ba21a0907c543ce$var$trackPageView() {\n // If the page url containts get.sheet.rocks, send the landing page view event.\n if (window.location.href.includes(\"get.sheet.rocks\")) $9ba21a0907c543ce$var$sendEvent(\"landing_page_view\");\n else $9ba21a0907c543ce$var$sendEvent(\"app_page_view\");\n}\nfunction $9ba21a0907c543ce$var$trackDemoStart() {\n $9ba21a0907c543ce$var$sendEvent(\"demo_start\");\n}\nfunction $9ba21a0907c543ce$var$trackSignUp() {\n $9ba21a0907c543ce$var$sendEvent(\"signup\");\n}\nfunction $9ba21a0907c543ce$var$initializeSolution() {\n const url = new URL(window.location.href);\n const utmCampaign = url.searchParams.get(\"utm_campaign\");\n const project = url.searchParams.get(\"project\");\n if (utmCampaign) $9ba21a0907c543ce$export$5b77291ef1caffe5(utmCampaign);\n else if (project) $9ba21a0907c543ce$export$5b77291ef1caffe5(project);\n}\n// ------------------------------------------------------\n// 8. trackActiveSession with debounce logic\n// ------------------------------------------------------\nfunction $9ba21a0907c543ce$var$trackActiveSession() {\n const lastActiveSession = localStorage.getItem(\"sheetRocksLastActiveSession\");\n const currentTime = new Date().getTime();\n // 30 minutes in milliseconds\n const THIRTY_MINUTES = 1800000;\n if (!lastActiveSession || currentTime - parseInt(lastActiveSession, 10) >= THIRTY_MINUTES) {\n $9ba21a0907c543ce$var$sendEvent(\"active_session\");\n localStorage.setItem(\"sheetRocksLastActiveSession\", currentTime.toString());\n } else console.log(\"Active session already tracked within the last 30 minutes.\");\n}\n// ------------------------------------------------------\n// 9. Attach event tracking to the window object\n// ------------------------------------------------------\nconst $9ba21a0907c543ce$var$sheetRocksAnalytics = {\n trackPageView: $9ba21a0907c543ce$var$trackPageView,\n trackDemoStart: $9ba21a0907c543ce$var$trackDemoStart,\n trackSignUp: $9ba21a0907c543ce$var$trackSignUp,\n trackActiveSession: $9ba21a0907c543ce$var$trackActiveSession,\n setUserId: $9ba21a0907c543ce$export$7f5abdb7f5093137,\n setSolution: $9ba21a0907c543ce$export$5b77291ef1caffe5\n};\nwindow.sheetRocksAnalytics = $9ba21a0907c543ce$var$sheetRocksAnalytics;\n// Call the page view event\n$9ba21a0907c543ce$var$initializeSolution();\n$9ba21a0907c543ce$var$trackPageView();\n\n})();\n//# sourceMappingURL=sheetRocksAnalytics.js.map\n","// funnel.ts\n\n// ------------------------------------------------------\n// 1. Define the event type enum\n// ------------------------------------------------------\n\nexport enum EventType {\n LANDING_PAGE_VIEW = 'landing_page_view',\n DEMO_START = 'demo_start',\n APP_PAGE_VIEW = 'app_page_view',\n SIGNUP = 'signup',\n ACTIVE_SESSION = 'active_session',\n}\n\n// ------------------------------------------------------\n// 2. Extend the Window interface to include custom tracking\n// ------------------------------------------------------\ndeclare global {\n interface Window {\n sheetRocksAnalytics: {\n trackPageView: () => void;\n trackDemoStart: () => void;\n trackSignUp: () => void;\n trackActiveSession: () => void;\n setUserId: (userId: string) => void;\n setSolution: (solution: string) => void;\n }\n }\n}\n\n// ------------------------------------------------------\n// 3. Type definition for an event\n// ------------------------------------------------------\ntype EventData = {\n user_id: string;\n event_type: string;\n solution: string;\n meta: {\n page_url: string;\n device_type: string;\n timezone: string;\n };\n};\n\n// ------------------------------------------------------\n// 4. Hardcoded Webhook URL\n// ------------------------------------------------------\nconst WEBHOOK_URL = 'https://sheet.rocks/workbook/VzuJyx97jtMOaxy/webhooks/track_any-origin';\n// const WEBHOOK_URL = 'https://dev.sheet.rocks/workbook/1S5uQWR6n3OWA56/webhooks/track_any-origin';\n// const WEBHOOK_URL = 'http://localhost:8080/workbook/iqnvvbfa6j4u066/track_any-origin';\n// const WEBHOOK_URL = 'http://localhost:8080/workbook/iqnvvbfa6j4u066/webhooks/track_any-origin';\n// ------------------------------------------------------\n// 5. Helper methods (mostly unchanged)\n// ------------------------------------------------------\nfunction getUserId(): string {\n const storedUserId = localStorage.getItem('sheetRocksUserId');\n if (storedUserId) {\n return storedUserId;\n }\n\n const randomInsects = [\n 'fly', 'ant', 'bee', 'butterfly', 'dragonfly', 'beetle', 'grasshopper', \n 'mosquito', 'moth', 'ladybug', 'caterpillar', 'cricket', 'termite', \n 'wasp', 'roach', 'firefly', 'stickinsect', 'weevil', 'mayfly', \n 'lacewing', 'aphid', 'hoverfly', 'tsetse', 'scorpion', 'stickbug', \n 'cicada', 'bedbug', 'leafcutter', 'giantwaterbug', 'silverfish', \n 'earwig'\n ];\n\n const randomHash = Math.random().toString(36).slice(2, 11);\n const userId = `anonymous.${randomInsects[Math.floor(Math.random() * randomInsects.length)]}.${randomHash}`;\n localStorage.setItem('sheetRocksUserId', userId);\n return userId;\n}\n\nfunction getSolution(): string {\n return localStorage.getItem('sheetRocksSolution') || 'none';\n}\n\nexport function setUserId(userId: string): void {\n localStorage.setItem('sheetRocksUserId', userId);\n}\n\nexport function setSolution(solution: string): void {\n localStorage.setItem('sheetRocksSolution', solution);\n}\n\nfunction getDeviceType(): string {\n const width = window.innerWidth;\n if (width <= 768) return 'mobile';\n if (width <= 1024) return 'tablet';\n return 'desktop';\n}\n\nfunction getTimezone(): string {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\n\n// ------------------------------------------------------\n// 6. Refactored sendEvent to handle everything in one place\n// ------------------------------------------------------\nfunction sendEvent(eventType: EventType): void {\n const timezone = getTimezone();\n\n // if timezone is UTC, return -- do not track events in UTC\n if (timezone === 'UTC') {\n return;\n }\n\n const eventData: EventData = {\n user_id: getUserId(),\n event_type: eventType,\n solution: getSolution(),\n meta: {\n page_url: window.location.href,\n device_type: getDeviceType(),\n timezone,\n },\n };\n\n fetch(WEBHOOK_URL, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(eventData),\n })\n .then((response) => response.json())\n .then((data) => console.log('Event sent successfully:', data))\n .catch((error) => console.error('Error sending event:', error));\n}\n\n// ------------------------------------------------------\n// 7. Simplified helper functions\n// ------------------------------------------------------\nfunction trackPageView(): void {\n // If the page url containts get.sheet.rocks, send the landing page view event.\n if (window.location.href.includes('get.sheet.rocks')) {\n sendEvent(EventType.LANDING_PAGE_VIEW);\n } else {\n sendEvent(EventType.APP_PAGE_VIEW);\n }\n}\n\nfunction trackDemoStart(): void {\n sendEvent(EventType.DEMO_START);\n}\n\nfunction trackSignUp(): void {\n sendEvent(EventType.SIGNUP);\n}\n\nfunction initializeSolution(): void {\n const url = new URL(window.location.href);\n const utmCampaign = url.searchParams.get('utm_campaign');\n const project = url.searchParams.get('project');\n if (utmCampaign) {\n setSolution(utmCampaign);\n } else if (project) {\n setSolution(project);\n }\n}\n\n// ------------------------------------------------------\n// 8. trackActiveSession with debounce logic\n// ------------------------------------------------------\nfunction trackActiveSession(): void {\n const lastActiveSession = localStorage.getItem('sheetRocksLastActiveSession');\n const currentTime = new Date().getTime();\n\n // 30 minutes in milliseconds\n const THIRTY_MINUTES = 30 * 60 * 1000;\n\n if (!lastActiveSession || currentTime - parseInt(lastActiveSession, 10) >= THIRTY_MINUTES) {\n sendEvent(EventType.ACTIVE_SESSION);\n localStorage.setItem('sheetRocksLastActiveSession', currentTime.toString());\n } else {\n console.log('Active session already tracked within the last 30 minutes.');\n }\n}\n\n// ------------------------------------------------------\n// 9. Attach event tracking to the window object\n// ------------------------------------------------------\nconst sheetRocksAnalytics = {\n trackPageView: trackPageView,\n trackDemoStart: trackDemoStart,\n trackSignUp: trackSignUp,\n trackActiveSession: trackActiveSession,\n setUserId: setUserId,\n setSolution: setSolution,\n}\n\nwindow.sheetRocksAnalytics = sheetRocksAnalytics;\n\n// Call the page view event\ninitializeSolution();\ntrackPageView();\n"],"names":["$9ba21a0907c543ce$export$3d7865934588d77e","EventType","$9ba21a0907c543ce$export$5b77291ef1caffe5","solution","localStorage","setItem","$9ba21a0907c543ce$var$sendEvent","eventType","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","eventData","user_id","$9ba21a0907c543ce$var$getUserId","storedUserId","getItem","randomInsects","randomHash","Math","random","toString","slice","userId","floor","length","event_type","meta","page_url","window","location","href","device_type","$9ba21a0907c543ce$var$getDeviceType","width","innerWidth","fetch","method","headers","body","JSON","stringify","then","response","json","data","console","log","catch","error","$9ba21a0907c543ce$var$trackPageView","includes","sheetRocksAnalytics","trackPageView","trackDemoStart","trackSignUp","trackActiveSession","lastActiveSession","currentTime","Date","getTime","parseInt","setUserId","setSolution","$9ba21a0907c543ce$var$initializeSolution","url","URL","utmCampaign","searchParams","get","project"],"version":3,"file":"sheetRocksAnalytics.js.map"}