@fynd-design-engineering/fynd-one-v2 2.2.0 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var s=(o,e,r)=>{if(console.log("\u{1F50D} Tracking Event:",o),console.log("\u{1F4CA} Properties:",e),window.posthog){console.log("\u2705 PostHog found - sending event");try{window.posthog.capture(o,e),console.log("\u2705 PostHog event sent successfully")}catch(n){console.error("\u274C PostHog error:",n)}}else console.log("\u274C PostHog not found");if(window.gtag){console.log("\u2705 gtag found - sending to GA4");let n=r||o,i={event_category:"fynd_engagement",event_label:e.source_page,custom_source_page:e.source_page,custom_fynd_product:e.fynd_product,custom_interface:e.interface,custom_device_type:e.device_type,custom_utm_source:e.utm_source,custom_utm_medium:e.utm_medium,custom_utm_campaign:e.utm_campaign,custom_referrer:e.referrer,..."form_name"in e&&{custom_form_name:e.form_name}};console.log("\u{1F4E4} GA4 Event Name:",n),console.log("\u{1F4E4} GA4 Payload:",i);try{window.gtag("event",n,i),console.log("\u2705 Event sent to GA4 successfully")}catch(t){console.error("\u274C GA4 error:",t)}}else console.log("\u274C gtag not found - GA4 not loaded"),console.log("Available on window:",Object.keys(window).filter(n=>n.includes("g")));console.log("---")},c=()=>{let o=window.location.pathname,e={source_page:o==="/"?o+" Home":o,fynd_product:"fynd.com website",interface:"Webflow",device_type:/Mobile|Android|iPhone|iPad/.test(navigator.userAgent)?"Mobile":"Web",utm_source:new URLSearchParams(window.location.search).get("utm_source")||"",utm_medium:new URLSearchParams(window.location.search).get("utm_medium")||"",utm_campaign:new URLSearchParams(window.location.search).get("utm_campaign")||"",referrer:document.referrer};return console.log("\u{1F4CB} Generated tracking properties:",e),e},g=o=>{let r={...c(),form_name:o};return console.log("\u{1F4CB} Generated form tracking properties:",r),r};window.getTrackingProperties=c;window.getTrackingPropertiesWithForm=g;window.interactedForm="";document.addEventListener("DOMContentLoaded",function(){console.log("\u{1F680} Debug tracking script loaded");let o=document.createElement("button");o.textContent="Test GA4 Event",o.style.cssText="position:fixed;top:10px;right:10px;z-index:9999;background:red;color:white;padding:10px;border:none;border-radius:4px;cursor:pointer;",o.onclick=function(){console.log("\u{1F9EA} Testing GA4 integration..."),s("fynd_test_event",window.getTrackingProperties())},document.body.appendChild(o),console.log("\u{1F534} Test button added to page")});document.addEventListener("DOMContentLoaded",function(){setTimeout(()=>{console.log("\u{1F50D} === GA4 Integration Diagnostic Report ===");let o=typeof window.gtag;console.log("gtag type:",o),console.log("gtag available:",o!=="undefined");let e=typeof window.posthog;console.log("PostHog type:",e),console.log("PostHog available:",e!=="undefined");let r="dataLayer"in window;console.log("dataLayer exists:",r),r&&console.log("dataLayer length:",window.dataLayer?.length||"undefined");let n=document.querySelectorAll('script[src*="googletagmanager"], script[src*="google-analytics"]');console.log("GA script tags found:",n.length),n.forEach((t,a)=>{console.log(`GA Script ${a+1}:`,t.src)});let i=Object.keys(window).filter(t=>t.toLowerCase().includes("google")||t.toLowerCase().includes("gtag")||t.toLowerCase().includes("ga")||t.toLowerCase().includes("analytics"));if(console.log("GA-related window properties:",i),o==="undefined")console.log("\u274C GA4 (gtag) not loaded. Check your GA4 installation."),console.log("\u{1F4A1} Make sure the Google Analytics script loads before this debug script");else{console.log("\u2705 GA4 (gtag) is loaded and ready");try{window.gtag("config","test"),console.log("\u2705 gtag function is callable")}catch(t){console.log("\u26A0\uFE0F gtag function exists but threw error:",t)}}console.log(e==="undefined"?"\u274C PostHog not loaded":"\u2705 PostHog is loaded and ready"),console.log("=== End Diagnostic Report ==="),setTimeout(()=>{console.log("\u{1F916} Auto-triggering test event..."),s("fynd_auto_test_event",window.getTrackingProperties())},5e3)},2e3)});var l=window.fetch;window.fetch=function(...o){let e=o[0]?.toString()||"";return(e.includes("google-analytics")||e.includes("collect"))&&console.log("\u{1F4E1} GA4 network request detected:",e),l.apply(this,o)};})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../bin/live-reload.js", "../../src/analytics/debug.ts"],
4
+ "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n console.log(\"Live reload disabled: not running on localhost\");\n}\n", "// Debug version with TypeScript typing\n\n// Type definitions\ninterface TrackingProperties {\n source_page: string;\n fynd_product: string;\n interface: string;\n device_type: string;\n utm_source: string;\n utm_medium: string;\n utm_campaign: string;\n referrer: string;\n}\n\ninterface TrackingPropertiesWithForm extends TrackingProperties {\n form_name: string;\n}\n\n// PostHog interface\ninterface PostHog {\n capture: (eventName: string, properties: TrackingProperties | TrackingPropertiesWithForm) => void;\n}\n\n// Google Analytics gtag interface\ndeclare function gtag(command: string, targetId: string, config?: any): void;\n\n// Extend Window interface to include custom properties\ndeclare global {\n interface Window {\n getTrackingProperties: () => TrackingProperties;\n getTrackingPropertiesWithForm: (formName: string) => TrackingPropertiesWithForm;\n interactedForm: string;\n posthog: PostHog;\n gtag: typeof gtag;\n }\n}\n\n// This export statement is needed to make this file a module\nexport { };\n\n// Helper function to send events to both PostHog and GA4 (with debugging)\nconst trackEvent = (eventName: string, properties: TrackingProperties | TrackingPropertiesWithForm, gaEventName?: string): void => {\n console.log('\uD83D\uDD0D Tracking Event:', eventName);\n console.log('\uD83D\uDCCA Properties:', properties);\n\n // PostHog tracking\n if (window.posthog) {\n console.log('\u2705 PostHog found - sending event');\n try {\n window.posthog.capture(eventName, properties);\n console.log('\u2705 PostHog event sent successfully');\n } catch (error) {\n console.error('\u274C PostHog error:', error);\n }\n } else {\n console.log('\u274C PostHog not found');\n }\n\n // Google Analytics tracking\n if (window.gtag) {\n console.log('\u2705 gtag found - sending to GA4');\n const gtagEventName: string = gaEventName || eventName;\n const gtagPayload = {\n event_category: 'fynd_engagement',\n event_label: properties.source_page,\n custom_source_page: properties.source_page,\n custom_fynd_product: properties.fynd_product,\n custom_interface: properties.interface,\n custom_device_type: properties.device_type,\n custom_utm_source: properties.utm_source,\n custom_utm_medium: properties.utm_medium,\n custom_utm_campaign: properties.utm_campaign,\n custom_referrer: properties.referrer,\n ...(('form_name' in properties) && { custom_form_name: properties.form_name })\n };\n\n console.log('\uD83D\uDCE4 GA4 Event Name:', gtagEventName);\n console.log('\uD83D\uDCE4 GA4 Payload:', gtagPayload);\n\n try {\n window.gtag('event', gtagEventName, gtagPayload);\n console.log('\u2705 Event sent to GA4 successfully');\n } catch (error) {\n console.error('\u274C GA4 error:', error);\n }\n } else {\n console.log('\u274C gtag not found - GA4 not loaded');\n console.log('Available on window:', Object.keys(window).filter(key => key.includes('g')));\n }\n\n console.log('---');\n};\n\n// Default tracking properties function (with debugging)\nconst getTrackingProperties = (): TrackingProperties => {\n const pathname: string = window.location.pathname;\n\n const properties: TrackingProperties = {\n source_page: pathname === \"/\" ? pathname + \" Home\" : pathname,\n fynd_product: \"fynd.com website\",\n interface: \"Webflow\",\n device_type: /Mobile|Android|iPhone|iPad/.test(navigator.userAgent)\n ? \"Mobile\"\n : \"Web\",\n utm_source:\n new URLSearchParams(window.location.search).get(\"utm_source\") || \"\",\n utm_medium:\n new URLSearchParams(window.location.search).get(\"utm_medium\") || \"\",\n utm_campaign:\n new URLSearchParams(window.location.search).get(\"utm_campaign\") || \"\",\n referrer: document.referrer,\n };\n\n console.log('\uD83D\uDCCB Generated tracking properties:', properties);\n return properties;\n};\n\n// Function to get tracking properties with form name (with debugging)\nconst getTrackingPropertiesWithForm = (formName: string): TrackingPropertiesWithForm => {\n const baseProperties = getTrackingProperties();\n const propertiesWithForm: TrackingPropertiesWithForm = {\n ...baseProperties,\n form_name: formName,\n };\n\n console.log('\uD83D\uDCCB Generated form tracking properties:', propertiesWithForm);\n return propertiesWithForm;\n};\n\n// Assign functions to window object\nwindow.getTrackingProperties = getTrackingProperties;\nwindow.getTrackingPropertiesWithForm = getTrackingPropertiesWithForm;\nwindow.interactedForm = \"\";\n\n// Test button - add this temporarily to your page\ndocument.addEventListener(\"DOMContentLoaded\", function (): void {\n console.log('\uD83D\uDE80 Debug tracking script loaded');\n\n // Create a test button\n const testButton: HTMLButtonElement = document.createElement('button');\n testButton.textContent = 'Test GA4 Event';\n testButton.style.cssText = 'position:fixed;top:10px;right:10px;z-index:9999;background:red;color:white;padding:10px;border:none;border-radius:4px;cursor:pointer;';\n\n testButton.onclick = function (): void {\n console.log('\uD83E\uDDEA Testing GA4 integration...');\n trackEvent('fynd_test_event', window.getTrackingProperties());\n };\n\n document.body.appendChild(testButton);\n console.log('\uD83D\uDD34 Test button added to page');\n});\n\n// Check if GA4 is loaded with detailed diagnostics\ndocument.addEventListener(\"DOMContentLoaded\", function (): void {\n setTimeout(() => {\n console.log('\uD83D\uDD0D === GA4 Integration Diagnostic Report ===');\n\n // Check gtag\n const gtagType = typeof window.gtag;\n console.log('gtag type:', gtagType);\n console.log('gtag available:', gtagType !== 'undefined');\n\n // Check PostHog\n const posthogType = typeof window.posthog;\n console.log('PostHog type:', posthogType);\n console.log('PostHog available:', posthogType !== 'undefined');\n\n // Check dataLayer\n const dataLayerExists = 'dataLayer' in window;\n console.log('dataLayer exists:', dataLayerExists);\n if (dataLayerExists) {\n console.log('dataLayer length:', (window as any).dataLayer?.length || 'undefined');\n }\n\n // Check for Google Analytics script tags\n const gaScripts = document.querySelectorAll('script[src*=\"googletagmanager\"], script[src*=\"google-analytics\"]');\n console.log('GA script tags found:', gaScripts.length);\n gaScripts.forEach((script, index) => {\n console.log(`GA Script ${index + 1}:`, (script as HTMLScriptElement).src);\n });\n\n // List all window properties that might be GA-related\n const gaProperties = Object.keys(window).filter(key =>\n key.toLowerCase().includes('google') ||\n key.toLowerCase().includes('gtag') ||\n key.toLowerCase().includes('ga') ||\n key.toLowerCase().includes('analytics')\n );\n console.log('GA-related window properties:', gaProperties);\n\n // Overall status\n if (gtagType === 'undefined') {\n console.log('\u274C GA4 (gtag) not loaded. Check your GA4 installation.');\n console.log('\uD83D\uDCA1 Make sure the Google Analytics script loads before this debug script');\n } else {\n console.log('\u2705 GA4 (gtag) is loaded and ready');\n\n // Test gtag function\n try {\n window.gtag('config', 'test');\n console.log('\u2705 gtag function is callable');\n } catch (error) {\n console.log('\u26A0\uFE0F gtag function exists but threw error:', error);\n }\n }\n\n if (posthogType === 'undefined') {\n console.log('\u274C PostHog not loaded');\n } else {\n console.log('\u2705 PostHog is loaded and ready');\n }\n\n console.log('=== End Diagnostic Report ===');\n\n // Auto-trigger a test event after 5 seconds\n setTimeout(() => {\n console.log('\uD83E\uDD16 Auto-triggering test event...');\n trackEvent('fynd_auto_test_event', window.getTrackingProperties());\n }, 5000);\n\n }, 2000);\n});\n\n// Network request interceptor to see if GA4 requests are being made\nconst originalFetch = window.fetch;\nwindow.fetch = function (...args): Promise<Response> {\n const url = args[0]?.toString() || '';\n if (url.includes('google-analytics') || url.includes('collect')) {\n console.log('\uD83D\uDCE1 GA4 network request detected:', url);\n }\n return originalFetch.apply(this, args);\n};"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var t="form_success_tracking",n=10*60*1e3;function s(){let e=new URLSearchParams(window.location.search).get("form_name");return e?decodeURIComponent(e):null}function i(r){try{let e=sessionStorage.getItem(t);if(!e)return!1;let o=JSON.parse(e);return Date.now()-o.timestamp>n?(sessionStorage.removeItem(t),!1):o.formName===r}catch(e){return console.error("Error checking form success tracking:",e),sessionStorage.removeItem(t),!1}}function a(r){try{let e={timestamp:Date.now(),formName:r};sessionStorage.setItem(t,JSON.stringify(e))}catch(e){console.error("Error storing form success tracking data:",e)}}document.addEventListener("DOMContentLoaded",function(){let r=s();if(!r){console.log("No form name found in URL parameters");return}if(i(r)){console.log(`Form success for "${r}" already tracked in this session`);return}window.posthog&&window.getTrackingPropertiesWithForm?(window.posthog.capture("fynd_form_success",window.getTrackingPropertiesWithForm(r)),a(r),console.log(`Form success tracked for "${r}"`)):console.warn("PostHog or tracking functions not available")});})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../bin/live-reload.js", "../../src/analytics/form-success.ts"],
4
+ "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n console.log(\"Live reload disabled: not running on localhost\");\n}\n", "// Type definitions (if not already defined elsewhere)\ninterface TrackingProperties {\n source_page: string;\n fynd_product: string;\n interface: string;\n device_type: string;\n utm_source: string;\n utm_medium: string;\n utm_campaign: string;\n referrer: string;\n}\n\ninterface TrackingPropertiesWithForm extends TrackingProperties {\n form_name: string;\n}\n\ninterface PostHog {\n capture: (eventName: string, properties: TrackingProperties | TrackingPropertiesWithForm) => void;\n}\n\n// Global declarations (if not already defined elsewhere)\ndeclare global {\n interface Window {\n getTrackingPropertiesWithForm: (formName: string) => TrackingPropertiesWithForm;\n posthog: PostHog;\n }\n}\n\n// This export statement makes the file a module and allows global declarations to work\nexport { };\n\n// Session storage key for tracking form success events\nconst FORM_SUCCESS_STORAGE_KEY = 'form_success_tracking';\nconst SESSION_DURATION_MS = 10 * 60 * 1000; // 10 minutes in milliseconds\n\ninterface FormSuccessData {\n timestamp: number;\n formName: string;\n}\n\nfunction getFormName(): string | null {\n const urlParams: URLSearchParams = new URLSearchParams(window.location.search);\n const formName: string | null = urlParams.get(\"form_name\");\n return formName ? decodeURIComponent(formName) : null;\n}\n\nfunction hasFormSuccessBeenTracked(formName: string): boolean {\n try {\n const storedData: string | null = sessionStorage.getItem(FORM_SUCCESS_STORAGE_KEY);\n\n if (!storedData) {\n return false;\n }\n\n const parsedData: FormSuccessData = JSON.parse(storedData);\n const currentTime: number = Date.now();\n const timeDifference: number = currentTime - parsedData.timestamp;\n\n // Check if the session has expired (more than 10 minutes)\n if (timeDifference > SESSION_DURATION_MS) {\n // Session expired, remove old data\n sessionStorage.removeItem(FORM_SUCCESS_STORAGE_KEY);\n return false;\n }\n\n // Check if the same form success was already tracked in this session\n return parsedData.formName === formName;\n } catch (error) {\n console.error('Error checking form success tracking:', error);\n // If there's an error, clear the storage and allow tracking\n sessionStorage.removeItem(FORM_SUCCESS_STORAGE_KEY);\n return false;\n }\n}\n\nfunction markFormSuccessAsTracked(formName: string): void {\n try {\n const trackingData: FormSuccessData = {\n timestamp: Date.now(),\n formName: formName\n };\n\n sessionStorage.setItem(FORM_SUCCESS_STORAGE_KEY, JSON.stringify(trackingData));\n } catch (error) {\n console.error('Error storing form success tracking data:', error);\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function (): void {\n const currentFormName: string | null = getFormName();\n\n if (!currentFormName) {\n console.log('No form name found in URL parameters');\n return;\n }\n\n // Check if form success has already been tracked for this form in the current session\n if (hasFormSuccessBeenTracked(currentFormName)) {\n console.log(`Form success for \"${currentFormName}\" already tracked in this session`);\n return;\n }\n\n if (window.posthog && window.getTrackingPropertiesWithForm) {\n window.posthog.capture(\n \"fynd_form_success\",\n window.getTrackingPropertiesWithForm(currentFormName)\n );\n\n // Mark this form success as tracked\n markFormSuccessAsTracked(currentFormName);\n console.log(`Form success tracked for \"${currentFormName}\"`);\n } else {\n console.warn(\"PostHog or tracking functions not available\");\n }\n});"],
5
+ "mappings": ";;;AACA,MACE,OAAO,SAAS,aAAa,eAC7B,OAAO,SAAS,aAAa,aAC7B;AACA,QAAI,YAAY,GAAG,uBAAY,UAAU,EAAE;AAAA,MAAiB;AAAA,MAAU,MACpE,SAAS,OAAO;AAAA,IAClB;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,gDAAgD;AAAA,EAC9D;;;ACsBA,MAAM,2BAA2B;AACjC,MAAM,sBAAsB,KAAK,KAAK;AAOtC,WAAS,cAA6B;AAClC,UAAM,YAA6B,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC7E,UAAM,WAA0B,UAAU,IAAI,WAAW;AACzD,WAAO,WAAW,mBAAmB,QAAQ,IAAI;AAAA,EACrD;AAEA,WAAS,0BAA0B,UAA2B;AAC1D,QAAI;AACA,YAAM,aAA4B,eAAe,QAAQ,wBAAwB;AAEjF,UAAI,CAAC,YAAY;AACb,eAAO;AAAA,MACX;AAEA,YAAM,aAA8B,KAAK,MAAM,UAAU;AACzD,YAAM,cAAsB,KAAK,IAAI;AACrC,YAAM,iBAAyB,cAAc,WAAW;AAGxD,UAAI,iBAAiB,qBAAqB;AAEtC,uBAAe,WAAW,wBAAwB;AAClD,eAAO;AAAA,MACX;AAGA,aAAO,WAAW,aAAa;AAAA,IACnC,SAAS,OAAO;AACZ,cAAQ,MAAM,yCAAyC,KAAK;AAE5D,qBAAe,WAAW,wBAAwB;AAClD,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,WAAS,yBAAyB,UAAwB;AACtD,QAAI;AACA,YAAM,eAAgC;AAAA,QAClC,WAAW,KAAK,IAAI;AAAA,QACpB;AAAA,MACJ;AAEA,qBAAe,QAAQ,0BAA0B,KAAK,UAAU,YAAY,CAAC;AAAA,IACjF,SAAS,OAAO;AACZ,cAAQ,MAAM,6CAA6C,KAAK;AAAA,IACpE;AAAA,EACJ;AAEA,WAAS,iBAAiB,oBAAoB,WAAkB;AAC5D,UAAM,kBAAiC,YAAY;AAEnD,QAAI,CAAC,iBAAiB;AAClB,cAAQ,IAAI,sCAAsC;AAClD;AAAA,IACJ;AAGA,QAAI,0BAA0B,eAAe,GAAG;AAC5C,cAAQ,IAAI,qBAAqB,eAAe,mCAAmC;AACnF;AAAA,IACJ;AAEA,QAAI,OAAO,WAAW,OAAO,+BAA+B;AACxD,aAAO,QAAQ;AAAA,QACX;AAAA,QACA,OAAO,8BAA8B,eAAe;AAAA,MACxD;AAGA,+BAAyB,eAAe;AACxC,cAAQ,IAAI,6BAA6B,eAAe,GAAG;AAAA,IAC/D,OAAO;AACH,cAAQ,KAAK,6CAA6C;AAAA,IAC9D;AAAA,EACJ,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var c=()=>{let e=window.location.pathname;return{source_page:e==="/"?e+" Home":e,fynd_product:"fynd.com website",interface:"Webflow",device_type:/Mobile|Android|iPhone|iPad/.test(navigator.userAgent)?"Mobile":"Web",utm_source:new URLSearchParams(window.location.search).get("utm_source")||"",utm_medium:new URLSearchParams(window.location.search).get("utm_medium")||"",utm_campaign:new URLSearchParams(window.location.search).get("utm_campaign")||"",referrer:document.referrer}},a=e=>({...c(),form_name:e}),r=(e,t,i)=>{if(window.posthog&&window.posthog.capture(e,t),window.gtag){let o=i||e;window.gtag("event",o,{event_category:"fynd_engagement",event_label:t.source_page,custom_source_page:t.source_page,custom_fynd_product:t.fynd_product,custom_interface:t.interface,custom_device_type:t.device_type,custom_utm_source:t.utm_source,custom_utm_medium:t.utm_medium,custom_utm_campaign:t.utm_campaign,custom_referrer:t.referrer,..."form_name"in t&&{custom_form_name:t.form_name}})}};window.getTrackingProperties=c;window.getTrackingPropertiesWithForm=a;window.interactedForm="";document.addEventListener("DOMContentLoaded",function(){let e=window.getTrackingProperties();window.posthog&&window.posthog.capture("$pageview",e),window.gtag&&window.gtag("event","page_view",{page_title:document.title,page_location:window.location.href,custom_source_page:e.source_page,custom_fynd_product:e.fynd_product,custom_interface:e.interface,custom_device_type:e.device_type,custom_utm_source:e.utm_source,custom_utm_medium:e.utm_medium,custom_utm_campaign:e.utm_campaign,custom_referrer:e.referrer})});window.addEventListener("load",function(){r("fynd_page_loaded",window.getTrackingProperties())});document.addEventListener("DOMContentLoaded",function(){let e=document.querySelectorAll('[data-ph="sign-up"]'),t=document.querySelectorAll('[data-ph="sign-in"]'),i=document.querySelectorAll('[href="#footer-form"]'),o=document.querySelectorAll('[data-ph="book-a-demo"]');e.forEach(n=>{n.addEventListener("click",function(){r("fynd_clicked_sign_up",window.getTrackingProperties())})}),t.forEach(n=>{n.addEventListener("click",function(){r("fynd_clicked_sign_in",window.getTrackingProperties())})}),i.forEach(n=>{n.addEventListener("click",function(){r("fynd_clicked_scroll_to_form",window.getTrackingProperties())})}),o.forEach(n=>{n.addEventListener("click",function(){r("fynd_clicked_book_a_demo",window.getTrackingProperties())})})});document.addEventListener("DOMContentLoaded",function(){let e=document.querySelectorAll("[data-posthog-trigger]");console.log("%cposthog/custom-events.js:58 formFields","color: #007acc;",e);let t=new Set;e.forEach(i=>{i.addEventListener("change",function(){let o=this.closest("form");if(o){if(t.has(o))return null;t.add(o);let n=o.getAttribute("data-name");return window.interactedForm=n||"",n?(console.log("form started"),r("fynd_form_started",window.getTrackingPropertiesWithForm(n)),n):(console.warn("No data-name attribute found on parent form"),null)}else return console.warn("No parent form found"),null})})});})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../bin/live-reload.js", "../../src/analytics/main.ts"],
4
+ "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n console.log(\"Live reload disabled: not running on localhost\");\n}\n", "// Type definitions\ninterface TrackingProperties {\n source_page: string;\n fynd_product: string;\n interface: string;\n device_type: string;\n utm_source: string;\n utm_medium: string;\n utm_campaign: string;\n referrer: string;\n}\n\ninterface TrackingPropertiesWithForm extends TrackingProperties {\n form_name: string;\n}\n\n// PostHog interface\ninterface PostHog {\n capture: (eventName: string, properties: TrackingProperties | TrackingPropertiesWithForm) => void;\n}\n\n// Google Analytics gtag interface\ndeclare function gtag(command: string, targetId: string, config?: any): void;\n\n// Extend Window interface to include custom properties\ndeclare global {\n interface Window {\n getTrackingProperties: () => TrackingProperties;\n getTrackingPropertiesWithForm: (formName: string) => TrackingPropertiesWithForm;\n interactedForm: string;\n posthog: PostHog;\n gtag: typeof gtag;\n }\n}\n\n// This export statement is needed to make this file a module\n// and allow the global declarations to work properly\nexport { };\n\n// Default tracking properties function\nconst getTrackingProperties = (): TrackingProperties => {\n const pathname: string = window.location.pathname;\n\n return {\n source_page: pathname === \"/\" ? pathname + \" Home\" : pathname,\n fynd_product: \"fynd.com website\",\n interface: \"Webflow\",\n device_type: /Mobile|Android|iPhone|iPad/.test(navigator.userAgent)\n ? \"Mobile\"\n : \"Web\",\n utm_source:\n new URLSearchParams(window.location.search).get(\"utm_source\") || \"\",\n utm_medium:\n new URLSearchParams(window.location.search).get(\"utm_medium\") || \"\",\n utm_campaign:\n new URLSearchParams(window.location.search).get(\"utm_campaign\") || \"\",\n referrer: document.referrer,\n };\n};\n\n// Function to get tracking properties with form name\nconst getTrackingPropertiesWithForm = (formName: string): TrackingPropertiesWithForm => {\n return {\n ...getTrackingProperties(),\n form_name: formName,\n };\n};\n\n// Helper function to send events to both PostHog and GA4\nconst trackEvent = (eventName: string, properties: TrackingProperties | TrackingPropertiesWithForm, gaEventName?: string) => {\n // PostHog tracking\n if (window.posthog) {\n window.posthog.capture(eventName, properties);\n }\n\n // Google Analytics tracking\n if (window.gtag) {\n const gtagEventName = gaEventName || eventName;\n window.gtag('event', gtagEventName, {\n event_category: 'fynd_engagement',\n event_label: properties.source_page,\n custom_source_page: properties.source_page,\n custom_fynd_product: properties.fynd_product,\n custom_interface: properties.interface,\n custom_device_type: properties.device_type,\n custom_utm_source: properties.utm_source,\n custom_utm_medium: properties.utm_medium,\n custom_utm_campaign: properties.utm_campaign,\n custom_referrer: properties.referrer,\n // Add form_name if it exists in properties\n ...(('form_name' in properties) && { custom_form_name: properties.form_name })\n });\n }\n};\n\n// Assign functions to window object\nwindow.getTrackingProperties = getTrackingProperties;\nwindow.getTrackingPropertiesWithForm = getTrackingPropertiesWithForm;\nwindow.interactedForm = \"\";\n\n// Getting parent form name by passing field element\nfunction getParentFormName(fieldElement: Element): string | null {\n const parentForm = fieldElement.closest(\"form\") as HTMLFormElement | null;\n if (parentForm) {\n const formName = parentForm.getAttribute(\"data-name\");\n return formName || null;\n }\n return null;\n}\n\n// Initialize PostHog pageview and GA4 page_view\ndocument.addEventListener(\"DOMContentLoaded\", function (): void {\n const trackingProps = window.getTrackingProperties();\n\n // PostHog pageview\n if (window.posthog) {\n window.posthog.capture(\"$pageview\", trackingProps);\n }\n\n // Google Analytics page_view (GA4 automatically tracks page_view, but we can send custom parameters)\n if (window.gtag) {\n window.gtag('event', 'page_view', {\n page_title: document.title,\n page_location: window.location.href,\n custom_source_page: trackingProps.source_page,\n custom_fynd_product: trackingProps.fynd_product,\n custom_interface: trackingProps.interface,\n custom_device_type: trackingProps.device_type,\n custom_utm_source: trackingProps.utm_source,\n custom_utm_medium: trackingProps.utm_medium,\n custom_utm_campaign: trackingProps.utm_campaign,\n custom_referrer: trackingProps.referrer\n });\n }\n});\n\n// Track page load event\nwindow.addEventListener(\"load\", function (): void {\n trackEvent(\"fynd_page_loaded\", window.getTrackingProperties());\n});\n\n// Button click tracking for sign up, sign in, scroll to form and book a demo buttons\ndocument.addEventListener(\"DOMContentLoaded\", function (): void {\n const signUpButtons = document.querySelectorAll('[data-ph=\"sign-up\"]') as NodeListOf<Element>;\n const signInButtons = document.querySelectorAll('[data-ph=\"sign-in\"]') as NodeListOf<Element>;\n const scrollToFormButtons = document.querySelectorAll(\n '[href=\"#footer-form\"]'\n ) as NodeListOf<Element>;\n const bookADemoButtons = document.querySelectorAll('[data-ph=\"book-a-demo\"]') as NodeListOf<Element>;\n\n signUpButtons.forEach((button: Element) => {\n button.addEventListener(\"click\", function (): void {\n trackEvent(\"fynd_clicked_sign_up\", window.getTrackingProperties());\n });\n });\n\n signInButtons.forEach((button: Element) => {\n button.addEventListener(\"click\", function (): void {\n trackEvent(\"fynd_clicked_sign_in\", window.getTrackingProperties());\n });\n });\n\n scrollToFormButtons.forEach((button: Element) => {\n button.addEventListener(\"click\", function (): void {\n trackEvent(\"fynd_clicked_scroll_to_form\", window.getTrackingProperties());\n });\n });\n\n bookADemoButtons.forEach((button: Element) => {\n button.addEventListener(\"click\", function (): void {\n trackEvent(\"fynd_clicked_book_a_demo\", window.getTrackingProperties());\n });\n });\n});\n\n// Track form interactions\ndocument.addEventListener(\"DOMContentLoaded\", function (): void {\n // Select all form fields with data-posthog-trigger attribute\n const formFields = document.querySelectorAll(\"[data-posthog-trigger]\") as NodeListOf<Element>;\n console.log(\n \"%cposthog/custom-events.js:58 formFields\",\n \"color: #007acc;\",\n formFields\n );\n\n // Keep track of forms that have already been processed\n const processedForms = new Set<HTMLFormElement>();\n\n formFields.forEach((field: Element) => {\n field.addEventListener(\"change\", function (this: Element): string | null {\n // Find the parent form element\n const parentForm = this.closest(\"form\") as HTMLFormElement | null;\n\n if (parentForm) {\n // Check if this form has already been processed\n if (processedForms.has(parentForm)) {\n // console.log(\"Form already processed, skipping...\");\n return null;\n }\n\n // Mark this form as processed\n processedForms.add(parentForm);\n\n // Get the data-name attribute value from the parent form\n const formName = parentForm.getAttribute(\"data-name\");\n window.interactedForm = formName || \"\";\n\n if (formName) {\n console.log(\"form started\");\n trackEvent(\n \"fynd_form_started\",\n window.getTrackingPropertiesWithForm(formName)\n );\n return formName;\n } else {\n console.warn(\"No data-name attribute found on parent form\");\n return null;\n }\n } else {\n console.warn(\"No parent form found\");\n return null;\n }\n });\n });\n});"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,33 +1 @@
1
- "use strict";
2
- (() => {
3
- // bin/live-reload.js
4
- if (window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1") {
5
- new EventSource(`${"http://localhost:3000"}/esbuild`).addEventListener(
6
- "change",
7
- () => location.reload()
8
- );
9
- } else {
10
- console.log("Live reload disabled: not running on localhost");
11
- }
12
-
13
- // src/form/download-file.ts
14
- document.addEventListener("DOMContentLoaded", function() {
15
- const submitButton = document.querySelector("#wf-form-Event-Download input[type='submit']");
16
- if (!submitButton) {
17
- console.error("Submit button not found");
18
- return;
19
- }
20
- submitButton.addEventListener("click", function() {
21
- setTimeout(() => {
22
- const successEl = document.getElementById("ebook-success");
23
- if (successEl && successEl.style.display !== "none") {
24
- const downloadLink = document.getElementById("ebook-download");
25
- if (downloadLink) {
26
- downloadLink.click();
27
- }
28
- }
29
- }, 2500);
30
- });
31
- });
32
- })();
33
- //# sourceMappingURL=download-file.js.map
1
+ "use strict";(()=>{document.addEventListener("DOMContentLoaded",function(){let e=document.querySelector("#wf-form-Event-Download input[type='submit']");if(!e){console.error("Submit button not found");return}e.addEventListener("click",function(){setTimeout(()=>{let n=document.getElementById("ebook-success");if(n&&n.style.display!=="none"){let t=document.getElementById("ebook-download");t&&t.click()}},2500)})});})();