{ "version": 3, "sources": ["../../../Frontend/src/scripts/frontend/google-analytics.js"], "sourcesContent": ["window.dataLayer = window.dataLayer || [];\r\nwindow.vacancyClicked = vacancyClicked;\r\nwindow.jobboardSearchQuery = jobboardSearchQuery;\r\nwindow.blogPostClicked = blogPostClicked;\r\nwindow.faqItemClicked = faqItemClicked;\r\nwindow.eventItemClicked = eventItemClicked;\r\nwindow.formStartEvent = formStartEvent;\r\nwindow.formStartStepEvent = formStartStepEvent;\r\nwindow.formCompleteEvent = formCompleteEvent;\r\nwindow.directContactClicked = directContactClicked;\r\n\r\nlet formStarted = false;\r\n\r\nconst pageName = document.currentScript.getAttribute('data-pageName');\r\nconst publicationDate = document.currentScript.getAttribute('data-publicationDate');\r\n\r\nconst CATEGORY_REGEX = {\r\n organisation: /organisat(?:ies|ions)/,\r\n freelancers: /freelancers?|freelances/\r\n};\r\n\r\nfunction checkContentCategoryRegex(path) {\r\n return Object.entries(CATEGORY_REGEX).find(\r\n ([_, regex]) => regex.test(path)\r\n )?.[0] || null;\r\n}\r\n\r\n// page load\r\ndocument.addEventListener(\"DOMContentLoaded\", () => {\r\n dataLayer.push({\r\n \"event\": \"page_load\",\r\n \"data\": {\r\n \"page_name\": `${pageName}`,\r\n \"page_url\": `${window.location}`,\r\n \"content_category\": checkContentCategoryRegex(window.location.pathname),\r\n \"publication_date\": `${publicationDate}`\r\n }\r\n });\r\n});\r\n\r\n// search_query\r\nfunction jobboardSearchQuery(query, totalCount) {\r\n dataLayer.push({\r\n \"event\": \"search_query\",\r\n \"data\": {\r\n \"level_1\": \"search\",\r\n \"level_2\": \"query\",\r\n \"level_3\": hasValue(query.Keyword),\r\n \"level_4\": hasValue(query.Language),\r\n \"level_5\": hasValue(query.Location),\r\n \"level_6\": hasValue(query.Radius),\r\n \"level_7\": hasValue(query.PostalCodes),\r\n \"level_8\": hasValue(query.Companies),\r\n \"level_9\": hasValue(query.Mediums),\r\n \"level_10\": hasValue(query.ScheduleTypes),\r\n \"level_11\": hasValue(query.ContractTypes),\r\n \"level_12\": hasValue(query.JobFunctions),\r\n \"level_13\": hasValue(query.Branches),\r\n \"level_14\": hasValue(query.Sort),\r\n \"level_15\": hasValue(query.Since),\r\n \"level_16\": `${totalCount}`\r\n }\r\n })\r\n}\r\n\r\n\r\n// Joblisting clicked\r\nfunction vacancyClicked(totalCount, index, query, title, pubId) {\r\n dataLayer.push({\r\n \"event\": \"search_result_click\",\r\n \"data\": {\r\n \"level_1\": \"search\",\r\n \"level_2\": \"result_click\",\r\n \"level_3\": hasValue(query.Keyword),\r\n \"level_4\": hasValue(query.Language),\r\n \"level_5\": hasValue(query.Location),\r\n \"level_6\": hasValue(query.Radius),\r\n \"level_7\": hasValue(query.PostalCodes),\r\n \"level_8\": hasValue(query.Companies),\r\n \"level_9\": hasValue(query.Mediums),\r\n \"level_10\": hasValue(query.ScheduleTypes),\r\n \"level_11\": hasValue(query.ContractTypes),\r\n \"level_12\": hasValue(query.JobFunctions),\r\n \"level_13\": hasValue(query.Branches),\r\n \"level_14\": hasValue(query.Sort),\r\n \"level_15\": hasValue(query.Since),\r\n \"level_16\": `${totalCount}`,\r\n \"level_17\": hasValue(query.Page),\r\n \"level_18\": `${index}`,\r\n \"level_19\": `${title}`,\r\n \"level_20\": `${pubId}`,\r\n }\r\n })\r\n}\r\n\r\nfunction blogPostClicked(totalCount, index, page, title) {\r\n const query = new URLSearchParams(location.search.substring(1));\r\n\r\n dataLayer.push({\r\n \"event\": \"blog_post_click\",\r\n \"data\": {\r\n \"level_1\": \"blog\",\r\n \"level_2\": \"result_click\",\r\n \"level_3\": hasValue(query.get('query')),\r\n \"level_4\": hasValue(query.get('tag')),\r\n \"level_5\": `${totalCount}`,\r\n \"level_6\": `${page}`,\r\n \"level_7\": `${index}`,\r\n \"level_8\": `${title}`,\r\n }\r\n })\r\n}\r\n\r\nfunction faqItemClicked(title) {\r\n dataLayer.push({\r\n \"event\": \"faq_item_click\",\r\n \"data\": {\r\n \"level_1\": \"faq\",\r\n \"level_2\": \"result_click\",\r\n \"level_3\": `${pageName}`,\r\n \"level_4\": `${title}`,\r\n }\r\n })\r\n}\r\n\r\nfunction eventItemClicked(title) {\r\n dataLayer.push({\r\n \"event\": \"event_item_click\",\r\n \"data\": {\r\n \"level_1\": \"event\",\r\n \"level_2\": \"result_click\",\r\n \"level_3\": `${title}`,\r\n }\r\n })\r\n}\r\n\r\nfunction formStartEvent(formStartEventOptions) {\r\n if(formStarted === true){\r\n return;\r\n }\r\n \r\n dataLayer.push({\r\n \"event\": `form_${formStartEventOptions.formName}_form_start`,\r\n \"data\": {\r\n \"level_1\": \"form\",\r\n \"level_2\": \"form_start\",\r\n \"level_3\": `${formStartEventOptions.formName}`,\r\n \"level_4\": `${formStartEventOptions.stepNumber}`,\r\n \"level_5\": `${pageName}`\r\n }\r\n });\r\n\r\n formStarted = true\r\n}\r\n\r\nfunction formStartStepEvent(formStartStepEventOptions) {\r\n dataLayer.push({\r\n \"event\": `form_${formStartStepEventOptions.formName}_step_start`,\r\n \"data\": {\r\n \"level_1\": \"form\",\r\n \"level_2\": \"step_start\",\r\n \"level_3\": `${formStartStepEventOptions.formName}`,\r\n \"level_4\": `${formStartStepEventOptions.stepNumber}`,\r\n \"level_5\": `${pageName}`\r\n }\r\n });\r\n}\r\n\r\nfunction formCompleteEvent(formCompleteEventOptions) {\r\n const eventData = {\r\n \"level_1\": \"form\",\r\n \"level_2\": \"complete\",\r\n \"level_3\": formCompleteEventOptions.formName,\r\n \"level_4\": formCompleteEventOptions.stepNumber,\r\n \"level_5\": `${pageName}`\r\n }\r\n\r\n const enhancedConversionsData = {\r\n \"email\": formCompleteEventOptions.enhancedConversions.email,\r\n \"first_name\" : formCompleteEventOptions.enhancedConversions.firstName,\r\n \"last_name\" : formCompleteEventOptions.enhancedConversions.lastName\r\n }\r\n\r\n \r\n dataLayer.push({\r\n \"event\": `form_${formCompleteEventOptions.formName}_complete`,\r\n \"data\": { ...eventData, ...enhancedConversionsData }\r\n });\r\n}\r\n\r\nfunction directContactClicked(location, type) {\r\n dataLayer.push({\r\n \"event\": \"direct_contact_click\",\r\n \"data\": {\r\n \"level_1\": `${type}`,\r\n \"level_2\": \"contact_click\",\r\n \"level_3\": `${location}`,\r\n }\r\n })\r\n}\r\n\r\nfunction hasValue(value) {\r\n if (value == null) return null;\r\n \r\n if (Array.isArray(value) && value.length === 0) return null;\r\n \r\n if (typeof value === 'string' && value.trim() === '') return null;\r\n \r\n if (typeof value === 'object' && Object.keys(value).length === 0) return null;\r\n \r\n if (typeof value === 'number' && isNaN(value)) return null;\r\n \r\n return value;\r\n};\r\n"], "mappings": "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", "names": ["vacancyClicked", "jobboardSearchQuery", "blogPostClicked", "faqItemClicked", "eventItemClicked", "formStartEvent", "formStartStepEvent", "formCompleteEvent", "directContactClicked", "formStarted", "pageName", "publicationDate", "CATEGORY_REGEX", "checkContentCategoryRegex", "path", "_", "regex", "query", "totalCount", "hasValue", "index", "title", "pubId", "page", "formStartEventOptions", "formStartStepEventOptions", "formCompleteEventOptions", "eventData", "enhancedConversionsData", "location", "type", "value"] }