{"version":3,"file":"analytics-D8vkLxDY.js","sources":["../../../app/frontend/src/utils/inBrowser.js","../../../app/frontend/src/utils/Analytics.js","../../../app/frontend/javascripts/analytics/events.js","../../../app/frontend/javascripts/analytics/external_links.js","../../../app/frontend/javascripts/analytics/youtube.js","../../../app/frontend/entrypoints/analytics.js"],"sourcesContent":["export default function inBrowser() {\n return typeof window !== \"undefined\";\n}\n","import inBrowser from \"./inBrowser\";\n\nclass Analytics {\n static init() {\n if (inBrowser()) {\n window.dataLayer = window.dataLayer || [];\n window.Analytics = Analytics;\n }\n\n Analytics._gtag(\"js\", new Date());\n Analytics._gtag(\"config\", Analytics._googleAnalytics4MeasurementId(), {\n send_page_views: true,\n });\n }\n\n static pageView() {\n Analytics._gtag(\"event\", \"page_view\");\n }\n\n static event(action, category, label) {\n Analytics._gtag(\"event\", action, {\n event_category: category,\n event_label: label,\n });\n }\n\n static onClick(event) {\n const link = event.currentTarget;\n\n Analytics.event(\n link.getAttribute(\"ga-action\"),\n link.getAttribute(\"ga-category\"),\n link.getAttribute(\"ga-label\")\n );\n }\n\n // private\n\n static _gtag() {\n if (inBrowser()) {\n window.dataLayer.push(arguments);\n }\n }\n\n static _googleAnalytics4MeasurementId() {\n if (!inBrowser()) return \"\";\n\n return document\n .querySelector(\"meta[name='google_analytics_4_measurement_id']\")\n .getAttribute(\"content\");\n }\n}\n\nexport default Analytics;\n","import $ from \"jquery\";\nimport Analytics from \"~/src/utils/Analytics.js\";\n\nfunction init() {\n globalNavEvents();\n setupFormTracking();\n}\n\n// Event methods\nfunction globalNavEvents() {\n $(\".nav__menu li:not(.has-dropdown) a\").each(function (key, value) {\n $(value).on(\"click\", function () {\n Analytics.event(\"click\", \"GlobalNav\", $(value).text());\n });\n });\n}\n\nfunction setupFormTracking() {\n $(\"form\").each(function (e, elem) {\n $(elem).on(\"submit\", function (form) {\n if (form.target.action.endsWith(\"/records\")) {\n Analytics.event(\n \"Search Box\",\n \"Search\",\n $(form.target).find(\"input\").filter(\":visible:first\").val()\n );\n }\n });\n });\n}\n\nexport default init;\n","import $ from \"jquery\";\nimport { truncate } from \"lodash\";\nimport Analytics from \"~/src/utils/Analytics\";\nimport { isInternalLink } from \"~/src/utils/isExternalLink\";\n\nfunction initExternalLinks() {\n $(\"a\").on(\"click\", function (e) {\n const href = this.href;\n if (isInternalLink(href)) {\n return;\n }\n\n Analytics.event(\"click\", \"external link\", truncate(href, { length: 125 }));\n });\n}\n\nexport default initExternalLinks;\n","import $ from \"jquery\";\nimport Analytics from \"~/src/utils/Analytics\";\n\nvar player; // Used by the youtube api\n\nfunction init() {\n $('iframe[src*=\"youtube.com/embed\"]').each(function () {\n // Only track the iframe once\n if ($(this).attr(\"id\") == null) {\n const youtubeId = $(this)\n .attr(\"src\")\n .match(/embed\\/([A-Za-z0-9_-]+)/)[1];\n\n $(this).attr(\"id\", youtubeId);\n $(this).attr(\"src\", $(this).attr(\"src\") + \"?rel=0&enablejsapi=1\");\n onYouTubeIframeAPIReady($(this).attr(\"id\"));\n }\n });\n}\n\n// Use Youtube api YT object to add event listeners inside the iframe\n// The YT is initialized here 'app/views/shared/_head.html.haml' as it needs to be done early on in the page load\nfunction onYouTubeIframeAPIReady(iframeId) {\n player = new YT.Player(iframeId, {\n events: {\n onStateChange: onPlayerStateChange,\n },\n });\n}\n\nfunction onPlayerStateChange(eventCode) {\n if (\n eventCode.data == YT.PlayerState.PLAYING ||\n eventCode.data == YT.PlayerState.PAUSED ||\n eventCode.data == YT.PlayerState.ENDED\n ) {\n var eventType = Object.keys(YT.PlayerState).find(function (key) {\n return YT.PlayerState[key] === eventCode.data;\n });\n var videoTitle = player.getVideoData().title;\n googleAnalyticsTransaction(eventType, videoTitle);\n }\n}\n\nfunction googleAnalyticsTransaction(action, videoTitle) {\n Analytics.event(action, \"Youtube Video\", videoTitle);\n}\n\nexport default init;\n","import $ from \"jquery\";\n\nimport initEvents from \"~/javascripts/analytics/events\";\nimport initExternalLinks from \"~/javascripts/analytics/external_links\";\nimport initYoutube from \"~/javascripts/analytics/youtube\";\n\n$(function () {\n initEvents();\n initExternalLinks();\n initYoutube();\n});\n"],"names":["inBrowser","Analytics","action","category","label","event","link","init","globalNavEvents","setupFormTracking","$","key","value","e","elem","form","initExternalLinks","href","isInternalLink","truncate","player","youtubeId","onYouTubeIframeAPIReady","iframeId","onPlayerStateChange","eventCode","eventType","videoTitle","googleAnalyticsTransaction","initEvents","initYoutube"],"mappings":"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"}