@fynd-design-engineering/fynd-one-v2 3.4.63 → 3.4.65

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.
Files changed (79) hide show
  1. package/dist/accordians/dropdown.js +1 -95
  2. package/dist/accordians/index.js +1 -391
  3. package/dist/cms-listing/index.js +1 -24
  4. package/dist/filters/clear-search.js +1 -32
  5. package/dist/filters/konnect.js +1 -165
  6. package/dist/filters/show-count.js +1 -66
  7. package/dist/form/country-dropdown.css +1 -160
  8. package/dist/form/cs-gated-redirection.js +1 -40
  9. package/dist/form/download-file.js +1 -70
  10. package/dist/form/validation.css +1 -1019
  11. package/dist/form/validation.js +7 -10611
  12. package/dist/global/anchor-scroll.js +1 -174
  13. package/dist/global/auth.js +1 -87
  14. package/dist/global/chat.js +1 -185
  15. package/dist/global/console-links.js +1 -89
  16. package/dist/global/contact-popup.js +2 -83
  17. package/dist/global/css/in-page-embed.css +1 -1043
  18. package/dist/global/css/in-project-settings.css +1 -173
  19. package/dist/global/css/temp.css +1 -89
  20. package/dist/global/custom-bg-video.js +1 -40
  21. package/dist/global/footer-accordion.js +1 -44
  22. package/dist/global/lazy-loader.js +1 -135
  23. package/dist/global/loader.js +2 -166
  24. package/dist/global/media-card.js +1 -166
  25. package/dist/global/miscellaneous.js +1 -136
  26. package/dist/global/number-count.js +1 -82
  27. package/dist/global/popup-video.js +1 -276
  28. package/dist/global/progressive-scroll.js +1 -222
  29. package/dist/global/responsive-video.js +1 -321
  30. package/dist/global/style.css +1 -1065
  31. package/dist/global/video-card.js +1 -50
  32. package/dist/hacktimus/2025.js +1 -177
  33. package/dist/hacktimus/styles.css +1 -91
  34. package/dist/home/index.js +1 -17
  35. package/dist/marquee/index.js +1 -3104
  36. package/dist/marquee/marquee-swiper.js +1 -36
  37. package/dist/navigation/announcement/index.js +1 -5169
  38. package/dist/navigation/context-menu/index.js +1 -31
  39. package/dist/navigation/desktop/index.js +1 -4603
  40. package/dist/navigation/initialization.js +1 -602
  41. package/dist/navigation/main.js +1 -4911
  42. package/dist/navigation/mobile/index.js +1 -286
  43. package/dist/navigation/scroll/index.js +1 -62
  44. package/dist/navigation/secondary-navigation/index.js +1 -437
  45. package/dist/navigation/style.css +1 -154
  46. package/dist/navigation/temp.css +0 -2
  47. package/dist/navigation/theme.css +1 -69
  48. package/dist/navigation-v2/index.js +1 -4990
  49. package/dist/navigation-v2/styles.css +1 -233
  50. package/dist/others/feature-detail.js +1 -75
  51. package/dist/others/geolocation.js +1 -50
  52. package/dist/others/hero-aniamtion.js +1 -53
  53. package/dist/others/hero-india-animation-2.js +1 -70
  54. package/dist/others/hero-india-animation.js +1 -93
  55. package/dist/others/home-solution-tab.js +1 -115
  56. package/dist/others/storefront-chat/index.js +1 -487
  57. package/dist/others/storefront-chat/styles.css +1 -107
  58. package/dist/playbook-2026/hero-reveal.js +1 -47
  59. package/dist/playbook-2026/index.js +1 -536
  60. package/dist/playbook-2026/styles.css +1 -110
  61. package/dist/posthog-and-ga/attributes.js +1 -190
  62. package/dist/posthog-and-ga/main.js +1 -528
  63. package/dist/progressive-scroll/index.js +1 -147
  64. package/dist/quick-fix/reload.js +1 -22
  65. package/dist/seo/schema.js +1 -465
  66. package/dist/slider/freescroll.js +1 -34
  67. package/dist/test/sample.js +1 -15
  68. package/dist/testimonials/index.js +1 -2654
  69. package/dist/timeline/index.js +1 -160
  70. package/dist/timeline/style.css +1 -42
  71. package/dist/tracking/custom-id.js +1 -75
  72. package/dist/tracking/fill-form-fields.js +1 -238
  73. package/dist/tracking/form-tracker.js +1 -146
  74. package/dist/tracking/page-categories.js +1 -20
  75. package/dist/tracking/user-journey.js +1 -839
  76. package/dist/tracking/utm-links.js +1 -194
  77. package/dist/utils/sample.js +1 -17
  78. package/dist/validations/localhost.js +1 -221
  79. package/package.json +1 -1
@@ -1,528 +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
- }
11
-
12
- // src/posthog-and-ga/adtracking-general.ts
13
- var getSearchParam = (name) => {
14
- const v = new URLSearchParams(window.location.search).get(name);
15
- return v ? v.trim() : null;
16
- };
17
- var isAdTraffic = () => {
18
- const medium = getSearchParam("utm_medium")?.toLowerCase();
19
- return medium === "cpc" || medium === "ads";
20
- };
21
- var AD_EVENT_PREFIX = "fynd_website_ad.";
22
- var makeEvent = (suffix) => `${AD_EVENT_PREFIX}${suffix}`;
23
- var getParentFormName = (element) => {
24
- const parentForm = element.closest("form");
25
- if (!parentForm) return null;
26
- return parentForm.getAttribute("data-name") || parentForm.getAttribute("name") || parentForm.id || null;
27
- };
28
- var initGeneralAdsTracking = () => {
29
- if (window.__adsTrackingInitializedGeneral) return;
30
- if (!isAdTraffic()) return;
31
- window.__adsTrackingInitializedGeneral = true;
32
- const baseProps = {
33
- "fynd_website.current_page": window.location.pathname
34
- };
35
- const emit = (suffix, props) => {
36
- const name = makeEvent(suffix);
37
- window.trackEvent?.(name, { ...baseProps, ...props || {} });
38
- };
39
- document.addEventListener("DOMContentLoaded", () => {
40
- document.querySelectorAll('[data-ph="sign-up"]').forEach(
41
- (btn) => btn.addEventListener("click", () => emit("sign_up.clicked"))
42
- );
43
- document.querySelectorAll('[data-ph="sign-in"]').forEach(
44
- (btn) => btn.addEventListener("click", () => emit("sign_in.clicked"))
45
- );
46
- document.querySelectorAll('[data-ph="book-a-demo"]').forEach(
47
- (btn) => btn.addEventListener("click", () => emit("book_a_demo.clicked"))
48
- );
49
- const formFields = document.querySelectorAll("[ph-form-field]");
50
- const triggeredForms = /* @__PURE__ */ new Set();
51
- const handleFormStarted = function() {
52
- const formName = getParentFormName(this) || "unknown-form";
53
- if (!triggeredForms.has(formName)) {
54
- triggeredForms.add(formName);
55
- emit("form.started", { started_form: formName });
56
- }
57
- };
58
- formFields.forEach((field) => {
59
- const tag = field.tagName.toLowerCase();
60
- const type = field.type?.toLowerCase();
61
- if (!(tag === "button" || tag === "input" && type === "submit")) {
62
- field.addEventListener("focus", handleFormStarted);
63
- }
64
- if (tag === "button" || tag === "input" && type === "submit") {
65
- field.addEventListener("click", handleFormStarted);
66
- } else if (tag === "select") {
67
- field.addEventListener("change", handleFormStarted);
68
- } else {
69
- field.addEventListener("input", handleFormStarted);
70
- }
71
- });
72
- document.querySelectorAll('[type="submit"]').forEach((button) => {
73
- button.addEventListener("click", function() {
74
- const formName = getParentFormName(this);
75
- setTimeout(() => {
76
- if (window.validationPassed === true) {
77
- const props = formName ? { submitted_form: formName } : {};
78
- emit("form.submitted", props);
79
- }
80
- }, 10);
81
- });
82
- });
83
- });
84
- };
85
-
86
- // src/posthog-and-ga/meta-tracking.ts
87
- var META_PIXEL_ID = "2741377816069290";
88
- function loadMetaPixel() {
89
- if (typeof window === "undefined") return;
90
- if (window.fbq) return;
91
- (function(f, b, e, v, n, t, s) {
92
- if (f.fbq) return;
93
- n = f.fbq = function() {
94
- n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments);
95
- };
96
- if (!f._fbq) f._fbq = n;
97
- n.push = n;
98
- n.loaded = true;
99
- n.version = "2.0";
100
- n.queue = [];
101
- t = b.createElement(e);
102
- t.async = true;
103
- t.src = "https://connect.facebook.net/en_US/fbevents.js";
104
- s = b.getElementsByTagName(e)[0];
105
- s.parentNode.insertBefore(t, s);
106
- })(window, document, "script", void 0);
107
- }
108
- function getAdvancedUserFromJourney() {
109
- try {
110
- let journey = null;
111
- if (typeof window.getUserJourney === "function") {
112
- journey = window.getUserJourney();
113
- }
114
- if (!journey) {
115
- const stored = sessionStorage.getItem("userJourney");
116
- if (stored) journey = JSON.parse(stored);
117
- }
118
- const u = {};
119
- const fd = journey?.formDetails;
120
- if (fd?.email) u.email = fd.email;
121
- if (fd?.phone) u.phone = fd.phone;
122
- if (fd?.firstName) u.first_name = fd.firstName;
123
- if (fd?.lastName) u.last_name = fd.lastName;
124
- if (fd?.city) u.city = fd.city;
125
- if (fd?.state) u.state = fd.state;
126
- if (fd?.zip) u.zip = fd.zip;
127
- if (journey?.country) u.country = journey.country;
128
- if (journey?.userId) u.external_id = String(journey.userId);
129
- Object.keys(u).forEach((k) => {
130
- const key = k;
131
- if (!u[key]) delete u[key];
132
- });
133
- return Object.keys(u).length ? u : null;
134
- } catch {
135
- return null;
136
- }
137
- }
138
- function getAdvancedUserFromProps(props) {
139
- if (!props) return null;
140
- const u = {};
141
- if (props["fynd_website.form_email"]) u.email = props["fynd_website.form_email"];
142
- if (props["fynd_website.form_phone"]) u.phone = props["fynd_website.form_phone"];
143
- if (props["fynd_website.form_first_name"]) u.first_name = props["fynd_website.form_first_name"];
144
- if (props["fynd_website.form_last_name"]) u.last_name = props["fynd_website.form_last_name"];
145
- if (props.city) u.city = props.city;
146
- if (props.state) u.state = props.state;
147
- if (props.zip) u.zip = props.zip;
148
- if (props.country) u.country = props.country;
149
- if (props.external_id) u.external_id = props.external_id;
150
- Object.keys(u).forEach((k) => {
151
- const key = k;
152
- if (!u[key]) delete u[key];
153
- });
154
- return Object.keys(u).length ? u : null;
155
- }
156
- function genEventId(prefix = "evt") {
157
- return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2)}`;
158
- }
159
- function safeFbq(...args) {
160
- if (!window.fbq) return;
161
- window.fbq(...args);
162
- }
163
- function mapFyndToMeta(eventName, properties) {
164
- const props = properties || {};
165
- const userData = getAdvancedUserFromProps(props) || getAdvancedUserFromJourney();
166
- switch (eventName) {
167
- case "fynd_website.form.submitted": {
168
- const eventID = props.event_id || genEventId("lead");
169
- const formName = props.submitted_form || props["fynd_website.form_name"] || "unknown_form";
170
- return {
171
- type: "track",
172
- name: "Lead",
173
- params: {
174
- form_id: props["fynd_website.form_id"] || void 0,
175
- form_name: formName,
176
- value: 0,
177
- currency: "INR"
178
- },
179
- options: { eventID },
180
- userData
181
- };
182
- }
183
- case "fynd_website.sign_up.clicked":
184
- return { type: "trackCustom", name: "SignUpClick", params: {}, userData };
185
- case "fynd_website.sign_in.clicked":
186
- return { type: "trackCustom", name: "SignInClick", params: {}, userData };
187
- case "fynd_website.book_a_demo.clicked":
188
- return {
189
- type: "trackCustom",
190
- name: "BookDemoClick",
191
- params: {
192
- source_page: props?.["fynd_website.source_page"]
193
- },
194
- userData
195
- };
196
- case "fynd_website.form.started":
197
- return {
198
- type: "trackCustom",
199
- name: "FormStarted",
200
- params: {
201
- form_id: props?.["fynd_website.form_id"] || void 0,
202
- form_name: props?.["fynd_website.form_name"] || void 0
203
- },
204
- userData
205
- };
206
- // Page lifecycle
207
- case "fynd_website.page.loaded":
208
- return { type: "track", name: "PageView", params: {}, userData };
209
- default:
210
- return null;
211
- }
212
- }
213
- function initMetaTracking(options = {}) {
214
- const { enableAdvancedMatching = true, enableSpaPageViews = true, hasConsent } = options;
215
- loadMetaPixel();
216
- const initialUser = enableAdvancedMatching ? getAdvancedUserFromJourney() : null;
217
- if (hasConsent && !hasConsent()) {
218
- const iv = window.setInterval(() => {
219
- if (hasConsent()) {
220
- window.clearInterval(iv);
221
- safeFbq("init", META_PIXEL_ID, initialUser || {});
222
- postInit(enableSpaPageViews);
223
- }
224
- }, 250);
225
- } else {
226
- safeFbq("init", META_PIXEL_ID, initialUser || {});
227
- postInit(enableSpaPageViews);
228
- }
229
- const originalTrackEvent = window.trackEvent;
230
- window.trackEvent = function(eventName, properties) {
231
- try {
232
- if (typeof originalTrackEvent === "function") {
233
- originalTrackEvent.call(window, eventName, properties);
234
- }
235
- if (hasConsent && !hasConsent()) return;
236
- const mapped = mapFyndToMeta(eventName, properties);
237
- if (!mapped) return;
238
- if (mapped.type === "track") {
239
- if (mapped.options?.eventID) {
240
- safeFbq("track", mapped.name, mapped.params || {}, { eventID: mapped.options.eventID });
241
- } else {
242
- safeFbq("track", mapped.name, mapped.params || {});
243
- }
244
- } else {
245
- safeFbq("trackCustom", mapped.name, mapped.params || {});
246
- }
247
- } catch (e) {
248
- console.warn("Meta tracking error:", e);
249
- }
250
- };
251
- }
252
- function postInit(enableSpaPageViews) {
253
- safeFbq("track", "PageView");
254
- if (enableSpaPageViews) {
255
- let onLocationChange2 = function() {
256
- setTimeout(() => safeFbq("track", "PageView"), 0);
257
- };
258
- var onLocationChange = onLocationChange2;
259
- const origPushState = history.pushState;
260
- const origReplaceState = history.replaceState;
261
- history.pushState = function(...args) {
262
- const ret = origPushState.apply(this, args);
263
- onLocationChange2();
264
- return ret;
265
- };
266
- history.replaceState = function(...args) {
267
- const ret = origReplaceState.apply(this, args);
268
- onLocationChange2();
269
- return ret;
270
- };
271
- window.addEventListener("popstate", onLocationChange2);
272
- }
273
- }
274
-
275
- // src/posthog-and-ga/main.ts
276
- var getGaTrackingProperties = () => {
277
- const gaProperties = {};
278
- try {
279
- let journey = null;
280
- if (typeof window.getUserJourney === "function") {
281
- journey = window.getUserJourney();
282
- }
283
- if (!journey) {
284
- const storedData = localStorage.getItem("userJourney");
285
- if (storedData) journey = JSON.parse(storedData);
286
- }
287
- if (journey?.formDetails) {
288
- const formDetails = journey.formDetails;
289
- if (formDetails.formId) gaProperties.form_id = formDetails.formId;
290
- if (formDetails.formName) gaProperties.form_name = formDetails.formName;
291
- if (formDetails.firstName) gaProperties.form_first_name = formDetails.firstName;
292
- if (formDetails.lastName) gaProperties.form_last_name = formDetails.lastName;
293
- if (formDetails.email) gaProperties.form_email = formDetails.email;
294
- if (formDetails.phone) gaProperties.form_phone = formDetails.phone;
295
- }
296
- if (journey?.aiData) {
297
- const aiData = journey.aiData;
298
- if (aiData.context) gaProperties.aidata_context = aiData.context;
299
- if (aiData.platform) gaProperties.aidata_platform = aiData.platform;
300
- if (aiData.type) gaProperties.aidata_type = aiData.type;
301
- if (aiData.detectionMethod) gaProperties.aidata_detection = aiData.detectionMethod;
302
- }
303
- } catch (err) {
304
- console.warn("Error getting user journey data for GA tracking:", err);
305
- }
306
- return gaProperties;
307
- };
308
- var getPosthogTrackingProperties = () => {
309
- const pathname = window.location.pathname;
310
- const base = {
311
- "fynd_website.source_page": pathname,
312
- "fynd_website.product": "fynd.com website",
313
- "fynd_website.device_type": "Unknown",
314
- "fynd_website.utm_source": new URLSearchParams(window.location.search).get("utm_source") || "",
315
- "fynd_website.utm_medium": new URLSearchParams(window.location.search).get("utm_medium") || "",
316
- "fynd_website.utm_campaign": new URLSearchParams(window.location.search).get("utm_campaign") || "",
317
- "fynd_website.referrer": document.referrer
318
- };
319
- try {
320
- let journey = null;
321
- if (typeof window.getUserJourney === "function") {
322
- journey = window.getUserJourney();
323
- }
324
- if (!journey) {
325
- const storedData = localStorage.getItem("userJourney");
326
- if (storedData) journey = JSON.parse(storedData);
327
- }
328
- if (journey) {
329
- base["fynd_website.journey_touchpoints"] = journey.userJourney || journey;
330
- if (journey.formDetails) {
331
- const f = journey.formDetails;
332
- if (f.formId) base["fynd_website.form_id"] = f.formId;
333
- if (f.formName) base["fynd_website.form_name"] = f.formName;
334
- if (f.firstName) base["fynd_website.form_first_name"] = f.firstName;
335
- if (f.lastName) base["fynd_website.form_last_name"] = f.lastName;
336
- if (f.email) base["fynd_website.form_email"] = f.email;
337
- if (f.phone) base["fynd_website.form_phone"] = f.phone;
338
- }
339
- if (journey.userJourney?.length > 0) {
340
- base["fynd_website.journey_total_pages"] = journey.userJourney.length;
341
- base["fynd_website.journey_touchpoints_count"] = journey.userJourney.length;
342
- base["fynd_website.journey_first_page"] = journey.userJourney[0].page;
343
- base["fynd_website.journey_current_page"] = journey.userJourney[journey.userJourney.length - 1].page;
344
- const firstVisit = new Date(journey.userJourney[0].time);
345
- const lastVisit = new Date(journey.userJourney[journey.userJourney.length - 1].time);
346
- base["fynd_website.journey_session_duration"] = Math.floor(
347
- (lastVisit.getTime() - firstVisit.getTime()) / 1e3
348
- );
349
- base["fynd_website.journey_entry_time"] = journey.userJourney[0].time;
350
- base["fynd_website.journey_exit_time"] = journey.userJourney[journey.userJourney.length - 1].time;
351
- }
352
- if (journey.deviceCategory) base["fynd_website.device_type"] = journey.deviceCategory;
353
- if (journey.browser) base["fynd_website.journey_browser"] = journey.browser;
354
- if (journey.device) base["fynd_website.journey_device"] = journey.device;
355
- if (journey.origin) base["fynd_website.journey_origin"] = journey.origin;
356
- if (journey.utmPath) base["fynd_website.journey_utm_path"] = journey.utmPath;
357
- if (journey.scrollDepth) base["fynd_website.journey_scroll_depth"] = journey.scrollDepth;
358
- if (journey.aiData) {
359
- const aiData = journey.aiData;
360
- if (aiData.context) base["fynd_website.aidata_context"] = aiData.context;
361
- if (aiData.platform) base["fynd_website.aidata_platform"] = aiData.platform;
362
- if (aiData.type) base["fynd_website.aidata_type"] = aiData.type;
363
- if (aiData.detectionMethod) base["fynd_website.aidata_detection"] = aiData.detectionMethod;
364
- }
365
- }
366
- } catch (err) {
367
- console.warn("Error getting user journey data for tracking:", err);
368
- }
369
- if (base["fynd_website.device_type"] === "Unknown") {
370
- const ua = navigator.userAgent;
371
- if (/iPad/.test(ua) || /Android/.test(ua) && !/Mobile/.test(ua) || /Tablet/.test(ua)) {
372
- base["fynd_website.device_type"] = "Tablet";
373
- } else if (/Mobile|iPhone|Android|BlackBerry|Opera Mini|IEMobile|WPDesktop/.test(ua)) {
374
- base["fynd_website.device_type"] = "Mobile";
375
- } else {
376
- base["fynd_website.device_type"] = "Desktop";
377
- }
378
- }
379
- try {
380
- const cookieMatch = document.cookie.match(/(?:^|;\s*)user-id=([^;]*)/);
381
- base["fynd_website.uuid"] = cookieMatch ? decodeURIComponent(cookieMatch[1]) : null;
382
- } catch (err) {
383
- console.warn("Error reading user-id cookie:", err);
384
- base["fynd_website.uuid"] = null;
385
- }
386
- return base;
387
- };
388
- var sendToGA = (eventName, gaProps, additionalProps) => {
389
- if (window.dataLayer) {
390
- const eventData = {
391
- event: eventName,
392
- event_category: "form_interaction",
393
- event_label: eventName,
394
- ...gaProps
395
- };
396
- if (additionalProps?.submitted_form) {
397
- eventData.submitted_form = additionalProps.submitted_form;
398
- }
399
- window.dataLayer.push(eventData);
400
- } else {
401
- console.warn("dataLayer not available for GA tracking");
402
- }
403
- };
404
- var trackEvent = (eventName, properties) => {
405
- try {
406
- console.log("Event fired:", eventName, properties);
407
- const baseProps = getPosthogTrackingProperties();
408
- const finalProps = properties ? { ...baseProps, ...properties } : baseProps;
409
- if (window.posthog) {
410
- window.posthog.capture(eventName, finalProps);
411
- if (eventName === "fynd_website.form.submitted") {
412
- try {
413
- const journey = window.getUserJourney?.() || JSON.parse(localStorage.getItem("userJourney") || "{}");
414
- const personProps = {};
415
- if (journey?.formDetails?.firstName) {
416
- personProps["name"] = journey.formDetails.firstName;
417
- }
418
- if (journey?.formDetails?.email) {
419
- personProps["email"] = journey.formDetails.email;
420
- }
421
- if (journey?.formDetails?.phone) {
422
- personProps["mobile"] = journey.formDetails.phone;
423
- }
424
- if (Object.keys(personProps).length > 0) {
425
- console.log("\u{1F4CA} PostHog Person Properties - Form Submission:", personProps);
426
- window.posthog.setPersonProperties(personProps);
427
- }
428
- } catch (err) {
429
- console.warn("Error setting person properties:", err);
430
- }
431
- }
432
- }
433
- const gaProps = getGaTrackingProperties();
434
- const hasAIData = gaProps.aidata_context || gaProps.aidata_platform || gaProps.aidata_type || gaProps.aidata_detection;
435
- const isFormRelatedEvent = eventName.includes("form") || Object.keys(gaProps).length > 0 || properties?.submitted_form || !!hasAIData;
436
- if (isFormRelatedEvent) {
437
- sendToGA(eventName, gaProps, properties);
438
- }
439
- } catch (error) {
440
- console.error("Error tracking event:", error);
441
- }
442
- };
443
- var getParentFormName2 = (element) => {
444
- const parentForm = element.closest("form");
445
- if (!parentForm) return null;
446
- return parentForm.getAttribute("data-name") || parentForm.getAttribute("name") || parentForm.id || null;
447
- };
448
- document.addEventListener("DOMContentLoaded", () => {
449
- const props = getPosthogTrackingProperties();
450
- if (window.posthog) {
451
- window.posthog.capture("$pageview", props);
452
- }
453
- });
454
- window.addEventListener("load", () => {
455
- trackEvent("fynd_website.page.loaded");
456
- });
457
- document.addEventListener("DOMContentLoaded", () => {
458
- const signUpButtons = document.querySelectorAll('[data-ph="sign-up"]');
459
- const signInButtons = document.querySelectorAll('[data-ph="sign-in"]');
460
- const scrollToFormButtons = document.querySelectorAll('[href="#footer-form"]');
461
- const bookADemoButtons = document.querySelectorAll('[data-ph="book-a-demo"]');
462
- const callButtons = document.querySelectorAll('[data-ph="call"]');
463
- const submitButtons = document.querySelectorAll('[type="submit"]');
464
- submitButtons.forEach((button) => {
465
- button.addEventListener("click", function() {
466
- const formName = getParentFormName2(this);
467
- setTimeout(() => {
468
- if (window.validationPassed === true) {
469
- const additionalProps = formName ? { submitted_form: formName } : {};
470
- trackEvent("fynd_website.form.submitted", additionalProps);
471
- }
472
- }, 10);
473
- });
474
- });
475
- signUpButtons.forEach((button) => {
476
- button.addEventListener("click", () => trackEvent("fynd_website.sign_up.clicked"));
477
- });
478
- signInButtons.forEach((button) => {
479
- button.addEventListener("click", () => trackEvent("fynd_website.sign_in.clicked"));
480
- });
481
- scrollToFormButtons.forEach((button) => {
482
- button.addEventListener("click", () => trackEvent("fynd_website.scroll_to_form.clicked"));
483
- });
484
- bookADemoButtons.forEach((button) => {
485
- button.addEventListener("click", () => trackEvent("fynd_website.book_a_demo.clicked"));
486
- });
487
- callButtons.forEach((button) => {
488
- button.addEventListener("click", () => trackEvent("fynd_website.call.clicked"));
489
- });
490
- const formFields = document.querySelectorAll("[ph-form-field]");
491
- const triggeredForms = /* @__PURE__ */ new Set();
492
- const handleFormStarted = function() {
493
- const formName = getParentFormName2(this);
494
- const formIdentifier = formName || "unknown-form";
495
- if (!triggeredForms.has(formIdentifier)) {
496
- triggeredForms.add(formIdentifier);
497
- trackEvent("fynd_website.form.started");
498
- }
499
- };
500
- formFields.forEach((field) => {
501
- const tagName = field.tagName.toLowerCase();
502
- const inputType = field.type?.toLowerCase();
503
- if (!(tagName === "button" || tagName === "input" && inputType === "submit")) {
504
- field.addEventListener("focus", handleFormStarted);
505
- }
506
- if (tagName === "button" || tagName === "input" && inputType === "submit") {
507
- field.addEventListener("click", handleFormStarted);
508
- } else if (tagName === "select") {
509
- field.addEventListener("change", handleFormStarted);
510
- } else {
511
- field.addEventListener("input", handleFormStarted);
512
- }
513
- });
514
- });
515
- window.getPosthogTrackingProperties = getPosthogTrackingProperties;
516
- window.trackEvent = trackEvent;
517
- window.getGaTrackingProperties = getGaTrackingProperties;
518
- initGeneralAdsTracking();
519
- initMetaTracking({
520
- enableAdvancedMatching: true,
521
- // pulls user data from your journey store when available
522
- enableSpaPageViews: true,
523
- // fires PageView on virtual navigations
524
- hasConsent: () => window.__ad_consent === "granted" || true
525
- // replace with your consent logic
526
- });
527
- })();
528
- //# sourceMappingURL=main.js.map
1
+ "use strict";(()=>{var E=n=>{let t=new URLSearchParams(window.location.search).get(n);return t?t.trim():null},P=()=>{let n=E("utm_medium")?.toLowerCase();return n==="cpc"||n==="ads"},T="fynd_website_ad.",L=n=>`${T}${n}`,_=n=>{let t=n.closest("form");return t&&(t.getAttribute("data-name")||t.getAttribute("name")||t.id)||null},g=()=>{if(window.__adsTrackingInitializedGeneral||!P())return;window.__adsTrackingInitializedGeneral=!0;let n={"fynd_website.current_page":window.location.pathname},t=(e,i)=>{let r=L(e);window.trackEvent?.(r,{...n,...i||{}})};document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll('[data-ph="sign-up"]').forEach(o=>o.addEventListener("click",()=>t("sign_up.clicked"))),document.querySelectorAll('[data-ph="sign-in"]').forEach(o=>o.addEventListener("click",()=>t("sign_in.clicked"))),document.querySelectorAll('[data-ph="book-a-demo"]').forEach(o=>o.addEventListener("click",()=>t("book_a_demo.clicked")));let e=document.querySelectorAll("[ph-form-field]"),i=new Set,r=function(){let o=_(this)||"unknown-form";i.has(o)||(i.add(o),t("form.started",{started_form:o}))};e.forEach(o=>{let a=o.tagName.toLowerCase(),c=o.type?.toLowerCase();a==="button"||a==="input"&&c==="submit"||o.addEventListener("focus",r),a==="button"||a==="input"&&c==="submit"?o.addEventListener("click",r):a==="select"?o.addEventListener("change",r):o.addEventListener("input",r)}),document.querySelectorAll('[type="submit"]').forEach(o=>{o.addEventListener("click",function(){let a=_(this);setTimeout(()=>{window.validationPassed===!0&&t("form.submitted",a?{submitted_form:a}:{})},10)})})})};var w="2741377816069290";function A(){typeof window>"u"||window.fbq||function(n,t,e,i,r,o,a){n.fbq||(r=n.fbq=function(){r.callMethod?r.callMethod.apply(r,arguments):r.queue.push(arguments)},n._fbq||(n._fbq=r),r.push=r,r.loaded=!0,r.version="2.0",r.queue=[],o=t.createElement(e),o.async=!0,o.src="https://connect.facebook.net/en_US/fbevents.js",a=t.getElementsByTagName(e)[0],a.parentNode.insertBefore(o,a))}(window,document,"script",void 0)}function b(){try{let n=null;if(typeof window.getUserJourney=="function"&&(n=window.getUserJourney()),!n){let i=sessionStorage.getItem("userJourney");i&&(n=JSON.parse(i))}let t={},e=n?.formDetails;return e?.email&&(t.email=e.email),e?.phone&&(t.phone=e.phone),e?.firstName&&(t.first_name=e.firstName),e?.lastName&&(t.last_name=e.lastName),e?.city&&(t.city=e.city),e?.state&&(t.state=e.state),e?.zip&&(t.zip=e.zip),n?.country&&(t.country=n.country),n?.userId&&(t.external_id=String(n.userId)),Object.keys(t).forEach(i=>{let r=i;t[r]||delete t[r]}),Object.keys(t).length?t:null}catch{return null}}function D(n){if(!n)return null;let t={};return n["fynd_website.form_email"]&&(t.email=n["fynd_website.form_email"]),n["fynd_website.form_phone"]&&(t.phone=n["fynd_website.form_phone"]),n["fynd_website.form_first_name"]&&(t.first_name=n["fynd_website.form_first_name"]),n["fynd_website.form_last_name"]&&(t.last_name=n["fynd_website.form_last_name"]),n.city&&(t.city=n.city),n.state&&(t.state=n.state),n.zip&&(t.zip=n.zip),n.country&&(t.country=n.country),n.external_id&&(t.external_id=n.external_id),Object.keys(t).forEach(e=>{let i=e;t[i]||delete t[i]}),Object.keys(t).length?t:null}function S(n="evt"){return`${n}_${Date.now()}_${Math.random().toString(36).slice(2)}`}function u(...n){window.fbq&&window.fbq(...n)}function M(n,t){let e=t||{},i=D(e)||b();switch(n){case"fynd_website.form.submitted":{let r=e.event_id||S("lead"),o=e.submitted_form||e["fynd_website.form_name"]||"unknown_form";return{type:"track",name:"Lead",params:{form_id:e["fynd_website.form_id"]||void 0,form_name:o,value:0,currency:"INR"},options:{eventID:r},userData:i}}case"fynd_website.sign_up.clicked":return{type:"trackCustom",name:"SignUpClick",params:{},userData:i};case"fynd_website.sign_in.clicked":return{type:"trackCustom",name:"SignInClick",params:{},userData:i};case"fynd_website.book_a_demo.clicked":return{type:"trackCustom",name:"BookDemoClick",params:{source_page:e?.["fynd_website.source_page"]},userData:i};case"fynd_website.form.started":return{type:"trackCustom",name:"FormStarted",params:{form_id:e?.["fynd_website.form_id"]||void 0,form_name:e?.["fynd_website.form_name"]||void 0},userData:i};case"fynd_website.page.loaded":return{type:"track",name:"PageView",params:{},userData:i};default:return null}}function h(n={}){let{enableAdvancedMatching:t=!0,enableSpaPageViews:e=!0,hasConsent:i}=n;A();let r=t?b():null;if(i&&!i()){let a=window.setInterval(()=>{i()&&(window.clearInterval(a),u("init",w,r||{}),p(e))},250)}else u("init",w,r||{}),p(e);let o=window.trackEvent;window.trackEvent=function(a,c){try{if(typeof o=="function"&&o.call(window,a,c),i&&!i())return;let s=M(a,c);if(!s)return;s.type==="track"?s.options?.eventID?u("track",s.name,s.params||{},{eventID:s.options.eventID}):u("track",s.name,s.params||{}):u("trackCustom",s.name,s.params||{})}catch(s){console.warn("Meta tracking error:",s)}}}function p(n){if(u("track","PageView"),n){let r=function(){setTimeout(()=>u("track","PageView"),0)};var t=r;let e=history.pushState,i=history.replaceState;history.pushState=function(...o){let a=e.apply(this,o);return r(),a},history.replaceState=function(...o){let a=i.apply(this,o);return r(),a},window.addEventListener("popstate",r)}}var v=()=>{let n={};try{let t=null;if(typeof window.getUserJourney=="function"&&(t=window.getUserJourney()),!t){let e=localStorage.getItem("userJourney");e&&(t=JSON.parse(e))}if(t?.formDetails){let e=t.formDetails;e.formId&&(n.form_id=e.formId),e.formName&&(n.form_name=e.formName),e.firstName&&(n.form_first_name=e.firstName),e.lastName&&(n.form_last_name=e.lastName),e.email&&(n.form_email=e.email),e.phone&&(n.form_phone=e.phone)}if(t?.aiData){let e=t.aiData;e.context&&(n.aidata_context=e.context),e.platform&&(n.aidata_platform=e.platform),e.type&&(n.aidata_type=e.type),e.detectionMethod&&(n.aidata_detection=e.detectionMethod)}}catch(t){console.warn("Error getting user journey data for GA tracking:",t)}return n},y=()=>{let t={"fynd_website.source_page":window.location.pathname,"fynd_website.product":"fynd.com website","fynd_website.device_type":"Unknown","fynd_website.utm_source":new URLSearchParams(window.location.search).get("utm_source")||"","fynd_website.utm_medium":new URLSearchParams(window.location.search).get("utm_medium")||"","fynd_website.utm_campaign":new URLSearchParams(window.location.search).get("utm_campaign")||"","fynd_website.referrer":document.referrer};try{let e=null;if(typeof window.getUserJourney=="function"&&(e=window.getUserJourney()),!e){let i=localStorage.getItem("userJourney");i&&(e=JSON.parse(i))}if(e){if(t["fynd_website.journey_touchpoints"]=e.userJourney||e,e.formDetails){let i=e.formDetails;i.formId&&(t["fynd_website.form_id"]=i.formId),i.formName&&(t["fynd_website.form_name"]=i.formName),i.firstName&&(t["fynd_website.form_first_name"]=i.firstName),i.lastName&&(t["fynd_website.form_last_name"]=i.lastName),i.email&&(t["fynd_website.form_email"]=i.email),i.phone&&(t["fynd_website.form_phone"]=i.phone)}if(e.userJourney?.length>0){t["fynd_website.journey_total_pages"]=e.userJourney.length,t["fynd_website.journey_touchpoints_count"]=e.userJourney.length,t["fynd_website.journey_first_page"]=e.userJourney[0].page,t["fynd_website.journey_current_page"]=e.userJourney[e.userJourney.length-1].page;let i=new Date(e.userJourney[0].time),r=new Date(e.userJourney[e.userJourney.length-1].time);t["fynd_website.journey_session_duration"]=Math.floor((r.getTime()-i.getTime())/1e3),t["fynd_website.journey_entry_time"]=e.userJourney[0].time,t["fynd_website.journey_exit_time"]=e.userJourney[e.userJourney.length-1].time}if(e.deviceCategory&&(t["fynd_website.device_type"]=e.deviceCategory),e.browser&&(t["fynd_website.journey_browser"]=e.browser),e.device&&(t["fynd_website.journey_device"]=e.device),e.origin&&(t["fynd_website.journey_origin"]=e.origin),e.utmPath&&(t["fynd_website.journey_utm_path"]=e.utmPath),e.scrollDepth&&(t["fynd_website.journey_scroll_depth"]=e.scrollDepth),e.aiData){let i=e.aiData;i.context&&(t["fynd_website.aidata_context"]=i.context),i.platform&&(t["fynd_website.aidata_platform"]=i.platform),i.type&&(t["fynd_website.aidata_type"]=i.type),i.detectionMethod&&(t["fynd_website.aidata_detection"]=i.detectionMethod)}}}catch(e){console.warn("Error getting user journey data for tracking:",e)}if(t["fynd_website.device_type"]==="Unknown"){let e=navigator.userAgent;/iPad/.test(e)||/Android/.test(e)&&!/Mobile/.test(e)||/Tablet/.test(e)?t["fynd_website.device_type"]="Tablet":/Mobile|iPhone|Android|BlackBerry|Opera Mini|IEMobile|WPDesktop/.test(e)?t["fynd_website.device_type"]="Mobile":t["fynd_website.device_type"]="Desktop"}try{let e=document.cookie.match(/(?:^|;\s*)user-id=([^;]*)/);t["fynd_website.uuid"]=e?decodeURIComponent(e[1]):null}catch(e){console.warn("Error reading user-id cookie:",e),t["fynd_website.uuid"]=null}return t},j=(n,t,e)=>{if(window.dataLayer){let i={event:n,event_category:"form_interaction",event_label:n,...t};e?.submitted_form&&(i.submitted_form=e.submitted_form),window.dataLayer.push(i)}else console.warn("dataLayer not available for GA tracking")},m=(n,t)=>{try{console.log("Event fired:",n,t);let e=y(),i=t?{...e,...t}:e;if(window.posthog&&(window.posthog.capture(n,i),n==="fynd_website.form.submitted"))try{let c=window.getUserJourney?.()||JSON.parse(localStorage.getItem("userJourney")||"{}"),s={};c?.formDetails?.firstName&&(s.name=c.formDetails.firstName),c?.formDetails?.email&&(s.email=c.formDetails.email),c?.formDetails?.phone&&(s.mobile=c.formDetails.phone),Object.keys(s).length>0&&(console.log("\u{1F4CA} PostHog Person Properties - Form Submission:",s),window.posthog.setPersonProperties(s))}catch(c){console.warn("Error setting person properties:",c)}let r=v(),o=r.aidata_context||r.aidata_platform||r.aidata_type||r.aidata_detection;(n.includes("form")||Object.keys(r).length>0||t?.submitted_form||!!o)&&j(n,r,t)}catch(e){console.error("Error tracking event:",e)}},k=n=>{let t=n.closest("form");return t&&(t.getAttribute("data-name")||t.getAttribute("name")||t.id)||null};document.addEventListener("DOMContentLoaded",()=>{let n=y();window.posthog&&window.posthog.capture("$pageview",n)});window.addEventListener("load",()=>{m("fynd_website.page.loaded")});document.addEventListener("DOMContentLoaded",()=>{let n=document.querySelectorAll('[data-ph="sign-up"]'),t=document.querySelectorAll('[data-ph="sign-in"]'),e=document.querySelectorAll('[href="#footer-form"]'),i=document.querySelectorAll('[data-ph="book-a-demo"]'),r=document.querySelectorAll('[data-ph="call"]');document.querySelectorAll('[type="submit"]').forEach(d=>{d.addEventListener("click",function(){let f=k(this);setTimeout(()=>{window.validationPassed===!0&&m("fynd_website.form.submitted",f?{submitted_form:f}:{})},10)})}),n.forEach(d=>{d.addEventListener("click",()=>m("fynd_website.sign_up.clicked"))}),t.forEach(d=>{d.addEventListener("click",()=>m("fynd_website.sign_in.clicked"))}),e.forEach(d=>{d.addEventListener("click",()=>m("fynd_website.scroll_to_form.clicked"))}),i.forEach(d=>{d.addEventListener("click",()=>m("fynd_website.book_a_demo.clicked"))}),r.forEach(d=>{d.addEventListener("click",()=>m("fynd_website.call.clicked"))});let a=document.querySelectorAll("[ph-form-field]"),c=new Set,s=function(){let f=k(this)||"unknown-form";c.has(f)||(c.add(f),m("fynd_website.form.started"))};a.forEach(d=>{let f=d.tagName.toLowerCase(),l=d.type?.toLowerCase();f==="button"||f==="input"&&l==="submit"||d.addEventListener("focus",s),f==="button"||f==="input"&&l==="submit"?d.addEventListener("click",s):f==="select"?d.addEventListener("change",s):d.addEventListener("input",s)})});window.getPosthogTrackingProperties=y;window.trackEvent=m;window.getGaTrackingProperties=v;g();h({enableAdvancedMatching:!0,enableSpaPageViews:!0,hasConsent:()=>window.__ad_consent==="granted"||!0});})();