{"version":3,"file":"globalTracking-b9ea95ce.js","sources":["../../../../app/frontend/components/shared/tracking/globalTracking.js"],"sourcesContent":["import { trackLoadEvent, trackViewEvent, trackDOMEvent } from '~/components/shared/tracking/segmentAnalytics';\nconst RESERVED_ATTRIBUTES = ['event', 'view-event', 'load-event', 'load-action', 'view-action', 'manual-view', 'manual-load']\n\nfunction setUpDomEvents() {\n document.querySelectorAll('[data-segment-event]').forEach(el => {\n if (typeof el.dataset.listeningForClick !== 'undefined') return;\n el.addEventListener('click', event => {\n trackDOMEventonEl(event, el)\n })\n el.dataset.listeningForClick = true;\n })\n}\n\nsetUpDomEvents();\n\ndocument.querySelectorAll('[data-segment-load-event]').forEach((el) => {\n if (typeof el.dataset.segmentManualLoad !== 'undefined') return\n trackLoadEvent(el);\n})\n\ndocument.querySelectorAll('[data-segment-view-event]').forEach(el => {\n // this property is used by modals since intersection observers don't respect invisible elements\n if (typeof el.dataset.segmentManualView !== 'undefined') return\n const observer = createIntersectionObsv(el)\n observer.observe(el);\n});\n\ndocument.querySelectorAll('a[data-ga-event-tracking]').forEach(\n el => el.addEventListener('click', event => trackDOMEvent(event)))\n\ndocument.querySelectorAll('button[data-ga-event-tracking]').forEach(\n el => el.addEventListener('click', event => trackDOMEvent(event)))\n\ndocument.querySelectorAll('form[data-ga-event-tracking]').forEach(\n el => el.addEventListener('submit', event => trackDOMEvent(event)))\n\nfunction createIntersectionObsv(el) {\n const observer = new IntersectionObserver((records) => {\n for (const record of records) {\n if (record.isIntersecting) {\n trackViewEvent(el);\n observer.unobserve(el);\n };\n }\n }, {\n threshold: [1, 0],\n });\n return observer;\n}\n\nfunction getSegmentGlobbedProperties(el) {\n const globbedProperties = {};\n for (const key of el.getAttributeNames()) {\n if (key.startsWith('data-segment-')) {\n const rawKey = key.replace('data-segment-', '');\n if (RESERVED_ATTRIBUTES.includes(rawKey)) {\n continue\n } else {\n const snakeCaseKey = rawKey.replaceAll('-', '_');\n globbedProperties[snakeCaseKey] = el.getAttribute(key);\n }\n }\n }\n return globbedProperties;\n}\n\nfunction trackDOMEventonEl(event, el) {\n let additionalProps = {};\n if (el.dataset.additionalSegmentPropsElement) {\n const additionalPropsEl = document.querySelector(el.dataset.additionalSegmentPropsElement);\n if (additionalPropsEl) {\n additionalProps = getSegmentGlobbedProperties(additionalPropsEl);\n }\n } else {\n }\n trackDOMEvent(event, additionalProps)\n}\n\nexport { setUpDomEvents, getSegmentGlobbedProperties }\n"],"names":["RESERVED_ATTRIBUTES","setUpDomEvents","el","event","trackDOMEventonEl","trackLoadEvent","createIntersectionObsv","trackDOMEvent","observer","records","record","trackViewEvent","getSegmentGlobbedProperties","globbedProperties","key","rawKey","snakeCaseKey","additionalProps","additionalPropsEl"],"mappings":"iEACA,MAAMA,EAAsB,CAAC,QAAS,aAAc,aAAc,cAAe,cAAe,cAAe,aAAa,EAE5H,SAASC,GAAiB,CACxB,SAAS,iBAAiB,sBAAsB,EAAE,QAAQC,GAAM,CAC1D,OAAOA,EAAG,QAAQ,kBAAsB,MAC5CA,EAAG,iBAAiB,QAASC,GAAS,CACpCC,EAAkBD,EAAOD,CAAE,CACjC,CAAK,EACDA,EAAG,QAAQ,kBAAoB,GACnC,CAAG,CACH,CAEAD,IAEA,SAAS,iBAAiB,2BAA2B,EAAE,QAASC,GAAO,CACjE,OAAOA,EAAG,QAAQ,kBAAsB,KAC5CG,EAAeH,CAAE,CACnB,CAAC,EAED,SAAS,iBAAiB,2BAA2B,EAAE,QAAQA,GAAM,CAEnE,GAAI,OAAOA,EAAG,QAAQ,kBAAsB,IAAa,OACxCI,EAAuBJ,CAAE,EACjC,QAAQA,CAAE,CACrB,CAAC,EAED,SAAS,iBAAiB,2BAA2B,EAAE,QACrDA,GAAMA,EAAG,iBAAiB,QAASC,GAASI,EAAcJ,CAAK,CAAC,CAAC,EAEnE,SAAS,iBAAiB,gCAAgC,EAAE,QAC1DD,GAAMA,EAAG,iBAAiB,QAASC,GAASI,EAAcJ,CAAK,CAAC,CAAC,EAEnE,SAAS,iBAAiB,8BAA8B,EAAE,QACxDD,GAAMA,EAAG,iBAAiB,SAAUC,GAASI,EAAcJ,CAAK,CAAC,CAAC,EAEpE,SAASG,EAAuBJ,EAAI,CAClC,MAAMM,EAAW,IAAI,qBAAsBC,GAAY,CACrD,UAAWC,KAAUD,EACfC,EAAO,iBACTC,EAAeT,CAAE,EACjBM,EAAS,UAAUN,CAAE,EAG7B,EAAK,CACD,UAAW,CAAC,EAAG,CAAC,CACpB,CAAG,EACD,OAAOM,CACT,CAEA,SAASI,EAA4BV,EAAI,CACvC,MAAMW,EAAoB,CAAA,EAC1B,UAAWC,KAAOZ,EAAG,oBACnB,GAAIY,EAAI,WAAW,eAAe,EAAG,CACnC,MAAMC,EAASD,EAAI,QAAQ,gBAAiB,EAAE,EAC9C,GAAId,EAAoB,SAASe,CAAM,EACrC,SACK,CACL,MAAMC,EAAeD,EAAO,WAAW,IAAK,GAAG,EAC/CF,EAAkBG,CAAY,EAAId,EAAG,aAAaY,CAAG,CACtD,CACF,CAEH,OAAOD,CACT,CAEA,SAAST,EAAkBD,EAAOD,EAAI,CACpC,IAAIe,EAAkB,CAAA,EACtB,GAAIf,EAAG,QAAQ,8BAA+B,CAC5C,MAAMgB,EAAoB,SAAS,cAAchB,EAAG,QAAQ,6BAA6B,EACrFgB,IACFD,EAAkBL,EAA4BM,CAAiB,EAGlE,CACDX,EAAcJ,EAAOc,CAAe,CACtC"}