{"version":3,"sources":["../../src/tanstack/index.tsx"],"sourcesContent":["import { useLocation } from '@tanstack/react-router';\nimport { useEffect } from 'react';\nimport { type Metric, onCLS, onFCP, onINP, onLCP, onTTFB } from 'web-vitals';\nimport { useClickIdPersistence } from '../hooks/use-click-id-persistence';\nimport { useOutboundClickAnalytics } from '../hooks/use-outbound-click-analytics';\nimport { useWebAnalytics } from '../hooks/use-web-analytics';\nimport type { PixelId as MetaPixelId } from '../track/fbq';\nimport type { GaId, GtmId } from '../track/gtag';\nimport { track } from '../track/index';\nimport type { PixelId as RedditPixelId } from '../track/rdt';\n\nfunction useReportWebVitals(reportWebVitalsFn: (metric: Metric) => void) {\n  useEffect(() => {\n    onCLS(reportWebVitalsFn);\n    onLCP(reportWebVitalsFn);\n    onINP(reportWebVitalsFn);\n    onFCP(reportWebVitalsFn);\n    onTTFB(reportWebVitalsFn);\n  }, [reportWebVitalsFn]);\n}\n\ninterface Props {\n  gaId?: GaId;\n  gaSrc?: string;\n  gtmId?: GtmId;\n  metaPixelId?: MetaPixelId;\n  openaiPixelId?: string;\n  redditPixelId?: RedditPixelId;\n  linkedInPartnerId?: `${number}`;\n  hotjarId?: `${number}`;\n  facebookAppId?: string;\n  nonce?: string;\n  debugMode?: boolean;\n  reportWebVitals?: boolean;\n}\n\nexport function Analytics({\n  gaId,\n  gaSrc,\n  nonce,\n  debugMode,\n  metaPixelId,\n  openaiPixelId,\n  redditPixelId,\n  linkedInPartnerId,\n  hotjarId,\n  facebookAppId,\n  reportWebVitals = true,\n}: Props) {\n  useClickIdPersistence();\n\n  const { pathname } = useLocation();\n  useWebAnalytics(pathname);\n  useOutboundClickAnalytics();\n\n  useReportWebVitals((metric) => {\n    if (!reportWebVitals) return;\n    const properties = {\n      value: metric.delta,\n      metric_id: metric.id,\n      metric_value: metric.value,\n      metric_delta: metric.delta,\n      metric_rating: metric.rating,\n      metric_navigation_type: metric.navigationType,\n      non_interaction: true, // avoids affecting bounce rate.\n    };\n    track(metric.name, properties);\n  });\n\n  return (\n    <>\n      {facebookAppId && <meta property=\"fb:app_id\" content={facebookAppId} />}\n      {gaId && (\n        <>\n          <script\n            async\n            id=\"gtag\"\n            nonce={nonce}\n            src={gaSrc ?? `https://www.googletagmanager.com/gtag/js?id=${gaId}`}\n          />\n          <script\n            async\n            nonce={nonce}\n            id=\"gtag-init\"\n            dangerouslySetInnerHTML={{\n              __html: `\n              window.dataLayer = window.dataLayer || [];\n              function gtag(){dataLayer.push(arguments);}\n              gtag('js', new Date());\n              gtag('config', '${gaId}'${debugMode ? \" ,{ 'debug_mode': true }\" : ''});\n            `,\n            }}\n          />\n        </>\n      )}\n      {metaPixelId && (\n        <script\n          async\n          id=\"meta-pixel\"\n          dangerouslySetInnerHTML={{\n            __html: `\n            !(function (f, b, e, v, n, t, s) {\n              if (f.fbq) return;\n              n = f.fbq = function () {\n                n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments);\n              };\n              if (!f._fbq) f._fbq = n;\n              n.push = n;\n              n.loaded = !0;\n              n.version = '2.0';\n              n.queue = [];\n              t = b.createElement(e);\n              t.async = !0;\n              t.src = v;\n              s = b.getElementsByTagName(e)[0];\n              s.parentNode.insertBefore(t, s);\n            })(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');\n            fbq('init', '${metaPixelId}');\n            fbq('track', 'PageView');`,\n          }}\n        />\n      )}\n      {openaiPixelId && (\n        <script\n          async\n          id=\"openai-pixel\"\n          dangerouslySetInnerHTML={{\n            __html: `\n              (function (w, d, s, u) {\n                  if (w.oaiq) return;\n                  var q = function () {\n                    q.q.push(arguments);\n                  };\n                  q.q = [];\n                  w.oaiq = q;\n                  var js = d.createElement(s);\n                  js.async = true;\n                  js.src = u;\n                  var f = d.getElementsByTagName(s)[0];\n                  f.parentNode.insertBefore(js, f);\n                })(window, document, \"script\", \"https://bzrcdn.openai.com/sdk/oaiq.min.js\");\n\n                oaiq(\"init\", { pixelId: \"${openaiPixelId}\" });\n                oaiq(\"measure\", \"page_viewed\", { type: \"contents\" });\n            `,\n          }}\n        />\n      )}\n      {redditPixelId && (\n        <script\n          async\n          id=\"reddit-pixel\"\n          dangerouslySetInnerHTML={{\n            __html: `\n            !function(w,d) {\n              if(!w.rdt) {\n                var p = w.rdt = function() {\n                  p.sendEvent ? p.sendEvent.apply(p,arguments) : p.callQueue.push(arguments)\n                };\n                p.callQueue = [];\n                var t = d.createElement(\"script\");\n                t.src = \"https://www.redditstatic.com/ads/pixel.js\";\n                t.async = !0;\n                var s = d.getElementsByTagName(\"script\")[0];\n                s.parentNode.insertBefore(t,s)\n              }\n            }(window, document);\n            rdt('init', '${redditPixelId}');\n            rdt('track', 'PageVisit');`,\n          }}\n        />\n      )}\n      {linkedInPartnerId && (\n        <script\n          async\n          id=\"linkedin-insight-tag\"\n          dangerouslySetInnerHTML={{\n            __html: `\n            _linkedin_partner_id = \"${linkedInPartnerId}\";\n            window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];\n            window._linkedin_data_partner_ids.push(_linkedin_partner_id);\n\n            (function(l) {\n              if (!l){\n                window.lintrk = function(a,b){\n                  window.lintrk.q.push([a,b])\n                };\n                window.lintrk.q=[]\n              }\n              var s = document.getElementsByTagName(\"script\")[0];\n              var b = document.createElement(\"script\");\n              b.type = \"text/javascript\";b.async = true;\n              b.src = \"https://snap.licdn.com/li.lms-analytics/insight.min.js\";\n              s.parentNode.insertBefore(b, s);\n            })(window.lintrk);\n            `,\n          }}\n        />\n      )}\n      {hotjarId && (\n        <script\n          async\n          id=\"hotjar\"\n          dangerouslySetInnerHTML={{\n            __html: `\n            (function(h,o,t,j,a,r){\n              h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n              h._hjSettings={hjid:${hotjarId},hjsv:6};\n              a=o.getElementsByTagName('head')[0];\n              r=o.createElement('script');r.async=1;\n              r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n              a.appendChild(r);\n            })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\n            `,\n          }}\n        />\n      )}\n    </>\n  );\n}\n"],"mappings":"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","names":[]}