{"version":3,"file":"rotating-word-block.D_QrLa9N.js","sources":["../../frontend/legacy-frontend/js/util.js","../../frontend/legacy-frontend/js/components/bootstrapform.js","../../frontend/legacy-frontend/js/components/apsis-subscribe.js","../../frontend/legacy-frontend/js/components/rotating-word-block.js"],"sourcesContent":["const routingPrefix = `/beta`;\r\n\r\nconst prefixRelativeUrl = (url) => {\r\n // shouldRoute, officialPaths globals set by _ClientSitePrefixing view\r\n if (\r\n !window.prevent.shouldRoute ||\r\n window.prevent.officialPaths.some((path) => url.startsWith(path))\r\n ) {\r\n return url;\r\n }\r\n\r\n return url[0] === `/` ? `${routingPrefix}${url}` : `${routingPrefix}/${url}`;\r\n};\r\n\r\nconst addcopylinkevent = (selector, callback) => {\r\n $(selector).click((event) => {\r\n // Navigator Clipboard API only works on https\r\n if (location.protocol === 'https:') {\r\n event.preventDefault();\r\n copytoclipboard(event);\r\n callback(event);\r\n }\r\n });\r\n};\r\n\r\nconst copytoclipboard = (e) => {\r\n var copyText = e.currentTarget.getAttribute('href');\r\n\r\n navigator.clipboard.writeText(copyText);\r\n};\r\n\r\nconst isFeatureActive = (name) =>\r\n document.body.getAttribute(`data-activefeatures`).search(new RegExp(`\\\\b${name}\\\\b`)) >= 0;\r\n\r\nfunction debounce(func, wait, immediate) {\r\n var timeout;\r\n\r\n return function executedFunction() {\r\n var context = this;\r\n var args = arguments;\r\n\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n\r\n var callNow = immediate && !timeout;\r\n\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(later, wait);\r\n\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\nexport { prefixRelativeUrl, isFeatureActive, debounce, addcopylinkevent };\r\n","$(() => {\r\n $('form.bootstrap-form.needs-validation').submit((event) => {\r\n checkPasswords();\r\n validateForm(event);\r\n });\r\n\r\n $('form#reset-password-form.needs-validation').submit((event) => validateForm(event));\r\n\r\n $('form.bootstrap-form .form-control').on('input', (event) => {\r\n if ($('form.bootstrap-form').hasClass('was-validated')) {\r\n checkPasswords();\r\n event.target.checkValidity();\r\n }\r\n });\r\n\r\n const validateForm = (event) => {\r\n const $form = $(event.target);\r\n if ($form.get(0).checkValidity() === false) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n $form.addClass('was-validated');\r\n };\r\n\r\n const checkPasswords = () => {\r\n const newPassword = $('.bootstrap-form [data-password=\"new\"]');\r\n const confirmPassword = $('.bootstrap-form [data-password=\"confirm\"]');\r\n if (newPassword.length == 0 && confirmPassword.length == 0) {\r\n return;\r\n }\r\n\r\n confirmPassword\r\n .get(0)\r\n .setCustomValidity(\r\n newPassword.val() != confirmPassword.val() ? 'Lösenorden måste stämma överens' : ''\r\n );\r\n };\r\n});\r\n","$(function () {\r\n const submitForm = ($form) => {\r\n var submitUrl = $form.getAttribute('action');\r\n var successMessage = $form.dataset.successMessage;\r\n var isCombinedForm = $form.querySelector('input[name=\"apsisfirstname\"]') != null; //check if more then email textbox\r\n\r\n var data = {\r\n email: $form.querySelector('input[name=\"apsisemail\"]').value,\r\n tag: $form.dataset.tag,\r\n topic: $form.dataset.topic,\r\n firstname: isCombinedForm\r\n ? $form.querySelector('input[name=\"apsisfirstname\"]').value\r\n : '',\r\n lastname: isCombinedForm\r\n ? $form.querySelector('input[name=\"apsislastname\"]').value\r\n : '',\r\n company: isCombinedForm ? $form.querySelector('input[name=\"apsiscompany\"]').value : '',\r\n department: isCombinedForm\r\n ? $form.querySelector('input[name=\"apsisdepartment\"]').value\r\n : '',\r\n address: isCombinedForm ? $form.querySelector('input[name=\"apsisaddress\"]').value : '',\r\n coaddress: isCombinedForm ? $form.querySelector('input[name=\"apsisco\"]').value : '',\r\n postal: isCombinedForm ? $form.querySelector('input[name=\"apsispostal\"]').value : '',\r\n city: isCombinedForm ? $form.querySelector('input[name=\"apsiscity\"]').value : '',\r\n role:\r\n $form.querySelector('select[name=\"apsisrole\"]') != null\r\n ? $form.querySelector('select[name=\"apsisrole\"]').value\r\n : '',\r\n type: isCombinedForm ? $form.querySelector('input[name=\"apsistype\"]').value : ''\r\n };\r\n $form.querySelectorAll('div.alert').forEach((el) => {\r\n el.remove();\r\n });\r\n\r\n fetch(submitUrl, {\r\n method: 'post',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(data)\r\n })\r\n .then((response) => response.json())\r\n .then((result) => {\r\n if (result == 'Ok') {\r\n // Add push to dataLayer\r\n if (window.dataLayer && $form.closest('#ms-form--container') != null) {\r\n window.dataLayer.push({\r\n event: 'new_subscriber_arbetsliv',\r\n apsisType: $form.querySelector('input[name=\"apsistype\"]').value\r\n });\r\n }\r\n\r\n $form.insertAdjacentHTML(\r\n 'afterBegin',\r\n `
${successMessage}
`\r\n );\r\n $form.classList.remove('was-validated');\r\n $form.reset();\r\n } else {\r\n $form.insertAdjacentHTML(\r\n 'afterBegin',\r\n '
Något gick fel. Kontakta kundservice.
'\r\n );\r\n }\r\n })\r\n .catch((error) => {\r\n console.error('Error:', error);\r\n });\r\n };\r\n\r\n var apsisForms = document.querySelectorAll('.apsis-form');\r\n if (apsisForms != null && apsisForms.length > 0) {\r\n for (var i = 0; i < apsisForms.length; i++) {\r\n apsisForms[i].addEventListener('submit', (e) => {\r\n e.preventDefault();\r\n var formElement = e.target;\r\n\r\n const ohnohoney = formElement.querySelector('input.ohnohoney');\r\n if (ohnohoney.value != '') {\r\n formElement.insertAdjacentHTML(\r\n 'afterBegin',\r\n '

You are trapped

'\r\n );\r\n return;\r\n }\r\n\r\n var apsisType = formElement.querySelector('input[name=\"apsistype\"]');\r\n if (apsisType != null && apsisType.value == 0) {\r\n if (e.currentTarget.checkValidity()) {\r\n submitForm(formElement);\r\n }\r\n } else {\r\n var apsisEmail = formElement.querySelector('input[name=\"policyCheck\"]');\r\n var policyCheck = formElement.querySelector('input[name=\"apsisemail\"]');\r\n\r\n if (apsisEmail.checkValidity() && policyCheck.checkValidity()) {\r\n submitForm(formElement);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n});\r\n","(function () {\r\n // Animates using the transitions in the CSS\r\n var rotatingWordElements = document.querySelectorAll('.rotating-word');\r\n\r\n // If there are no rotating word elements or the user prefers reduced motion, do nothing\r\n if (\r\n rotatingWordElements.length === 0 ||\r\n window.matchMedia(`(prefers-reduced-motion: reduce)`).matches\r\n ) {\r\n return;\r\n }\r\n\r\n rotatingWordElements.forEach(function (rotatingWordElement) {\r\n var words = rotatingWordElement.dataset.words.split('|');\r\n var currentWordIndex = 0;\r\n var totalWords = words.length;\r\n var wordElements = [rotatingWordElement.querySelector('span')];\r\n\r\n // Initializing width based on the first word to make transition smooth\r\n rotatingWordElement.style.width = wordElements[0].offsetWidth + 'px';\r\n\r\n // First word is visible from the start\r\n for (var i = 1; i < totalWords; i++) {\r\n var word = document.createElement('span');\r\n word.textContent = words[i];\r\n word.style.display = 'none';\r\n word.style.opacity = '0';\r\n rotatingWordElement.appendChild(word);\r\n wordElements.push(word);\r\n }\r\n\r\n setInterval(function () {\r\n var oldWordIndex = currentWordIndex;\r\n wordElements[oldWordIndex].style.opacity = '0';\r\n\r\n setTimeout(function () {\r\n wordElements[oldWordIndex].style.display = 'none';\r\n }, 300);\r\n\r\n currentWordIndex = (currentWordIndex + 1) % totalWords;\r\n\r\n wordElements[currentWordIndex].style.display = 'block';\r\n\r\n rotatingWordElement.style.width = wordElements[currentWordIndex].offsetWidth + 'px';\r\n wordElements[currentWordIndex].style.opacity = '1';\r\n }, 3000);\r\n });\r\n})();\r\n"],"names":["routingPrefix","prefixRelativeUrl","url","path","debounce","func","wait","immediate","timeout","context","args","later","event","checkPasswords","validateForm","$form","newPassword","confirmPassword","submitForm","submitUrl","successMessage","isCombinedForm","data","el","response","result","error","apsisForms","i","formElement","apsisType","apsisEmail","policyCheck","rotatingWordElements","rotatingWordElement","words","currentWordIndex","totalWords","wordElements","word","oldWordIndex"],"mappings":"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"}