{ "version": 3, "sources": ["../components/cacheForm.js", "../pages/application.js"], "sourcesContent": ["(function ( $ ) {\n var elements = 'input[type=\"text\"], input[type=\"tel\"], input[type=\"radio\"], input[type=\"checkbox\"], select, textarea';\n $.fn.FormCache = function(conf) {\n if (conf && conf.elements) elements = conf.elements;\n function getData(key) {\n var data;\n if(typeof(Storage)!==\"undefined\"){\n if(localStorage[key]) {\n data = JSON.parse(localStorage[key]);\n }\n \n if(!data) {\n localStorage[key] = JSON.stringify({});\n data = JSON.parse(localStorage[key]);\n }\n } else {\n if (!document[key]) {\n document[key] = {};\n } \n\n data = document[key];\n }\n\n return data;\n }\n\n function storeData(key, data) {\n if(typeof(Storage)!==\"undefined\"){\n localStorage[key] = JSON.stringify(data);\n } else {\n document[key] = data;\n }\n }\n\n function onChange(event) {\n var input = $(event.target);\n var key = input.parents('form:first').attr('id');\n var data = JSON.parse(localStorage[key]);\n \n if(input.attr('type') == 'radio' || input.attr('type') == 'checkbox') {\n data[input.attr('id')] = input.is(':checked');\n }else {\n data[input.attr('name')] = input.val();\n }\n \n storeData(key, data);\n }\n \n return this.each(function() { \n var element = $(this);\n \n var key = element.attr('id');\n var data = getData(key);\n \n element.find(elements).change(onChange);\n element.find(elements).each(function(){\n \n var input = $(this);\n var value = data[input.attr('name')];\n if(input.attr('type') == 'radio' || input.attr('type') == 'checkbox') {\n value = data[input.attr('id')];\n if(value) {\n input.prop('checked', true);\n } else {\n input.removeAttr('checked');\n }\n } else {\n input.val(value);\n }\n\n // call change to make sure hs registers change\n if (value) input.change();\n \n });\n });\n }; \n}( jQuery ))", "import \"../components/cacheForm.js\";\n\n$(document).ready(function() {\n const toggleLoading = function() {\n $('body').toggleClass('is-loading');\n }\n\n\n // HS - Mapping\n // @ToDo move to server and/or centralize somewhere?\n // also currently the keys are in no way standardized, however recruiting wanted to use them this way\n const languageMap = {\n DE: 'German',\n EN: 'English',\n FR: 'French',\n IT: 'Italian',\n SP: 'Spanish',\n DU: 'Dutch',\n GR: 'Greek',\n RU: 'Russian',\n PR: 'Portuguese',\n TR: 'Turkish'\n }\n\n const mapLanguage = function(language) {\n var defaultLang = language.split('/')[0].trim();\n return languageMap[defaultLang.toUpperCase()] ? languageMap[defaultLang.toUpperCase()] : null;\n }\n\n // if job position is provided via query param, its preselected here\n const initializePreselectedValues = function($form) {\n if (document.preselected.position) {\n $form.find('select[name=\"job_position\"] option')\n .filter(function() {\n return $(this).text() == document.preselected.position;\n })\n .prop('selected', true)\n .change();\n }\n\n if (document.preselected.language) {\n const hsLanguage = mapLanguage(document.preselected.language);\n\n if (hsLanguage && hsLanguage !== document.preselected.language) {\n $('input[name=\"language\"]').val(hsLanguage).change();\n }\n }\n }\n\n const initializeFileUpload = function() {\n $('.hs-fieldtype-file .input').attr('data-content', document.selectFileLabel);\n $('input[type=\"file\"]').change(function(e){\n var files = e.currentTarget.files;\n var name = files && files.length ? files[0].name : null;\n\n if (name) {\n $(e.currentTarget).parent().attr('data-content',name);\n }\n });\n }\n\n const renderDone = function(index) {\n $('*[data-indicator-index]').each(function() {\n const el = $(this);\n const elIndex = parseInt(el.data('indicator-index'));\n if (!isNaN(elIndex) && elIndex < index) {\n el.addClass('d-none');\n $('*[data-indicator-done=' + elIndex + ']').removeClass('d-none');\n } else {\n el.removeClass('d-none');\n $('*[data-indicator-done=' + elIndex + ']').addClass('d-none');\n }\n });\n }\n\n const renderProgress = function(index) {\n $('*[data-page-index]').removeClass('active');\n $('*[data-page-index=' + index + ']').addClass('active');\n renderDone(index);\n }\n\n const renderPrevButton = function($form, prevIndex) {\n const elActions = $form.find('.hs-submit .actions');\n const markup = '' + document.prevButtonLabel + '';\n elActions.append(markup)\n elActions.addClass('flex-column flex-md-row-reverse justify-content-md-between')\n }\n\n // injects email in hidden fields on subsequent forms\n const injectEmail = function() {\n if (document.formData.email && document.formData.email.length > 0) {\n // wait a bit to make sure to overwrite all other auto fill settings\n setTimeout(function() {\n $('input[name=\"email\"]').val(document.formData.email).change();\n }, 500);\n\n }\n }\n\n const cacheForm = function($form, index) {\n const conf = {};\n if (index === 0) {\n conf.elements = 'input[type=\"email\"], input[type=\"text\"], input[type=\"tel\"], input[type=\"radio\"], input[type=\"checkbox\"], select, textarea';\n }\n\n $form.FormCache(conf);\n }\n\n const cleanUp = function() {\n if(typeof(Storage)!==\"undefined\"){\n localStorage.clear();\n }\n }\n\n const createHSForm = function(index) {\n // create form\n hbspt.forms.create({\n portalId: document.portalId,\n formId: document.formIds[index],\n target: document.targetId,\n\n onFormReady: function($form) {\n if (!document.formData) document.formData = {};\n\n renderProgress(index);\n\n initializeFileUpload();\n\n // populate email field (hidden in all but first form)\n injectEmail($form);\n\n // limit amount of chars in message field\n $('input[name=\"message\"]').attr('maxlength','255').change();\n $('textarea[name=\"message\"]').attr('maxlength','255').change();\n\n fillFormWithGA();\n\n // inject previous button\n if (index > 0) {\n var prevIndex = index - 1;\n\n renderPrevButton($form, prevIndex);\n\n // register event handler for prev button\n $form.on('click', '[data-previous]', function(evt){\n toggleLoading();\n createHSForm($(evt.currentTarget).data('previous'));\n });\n } else {\n initializePreselectedValues($form)\n }\n\n cacheForm($form, index);\n toggleLoading();\n\n },\n onFormSubmit: function($form) {\n toggleLoading();\n\n window.dataLayer = window.dataLayer || [];\n\n var queryString = window.location.search;\n if (typeof queryString !== \"undefined\" && queryString !== \"\") {\n var urlParams = new URLSearchParams(queryString);\n if (urlParams && urlParams.has('tduid')) {\n var tduid = urlParams.get('tduid');\n tduid = tduid.replace(/[^a-zA-Z0-9]/gi, '');\n window.dataLayer.push({\n 'tduid USER': tduid\n });\n }\n }\n\n if (typeof gtag !== 'undefined') {\n gtag('event', 'conversion', {'send_to': 'AW-874316721/jLmiCLuOqGoQsYf0oAM'});\n gtag('event', 'form.submit', {});\n }\n\n // store email address to populate fields in subsequent forms\n // this makes sure tracking works in any case\n if (index === 0) {\n var email = $form.find('input[name=\"email\"]').val();\n document.formData.email = email;\n }\n\n var subjectSelected = $('select[name=\"trial_session_subject\"]').val();\n window.dataLayer.push({\n event: \"form_submit_success\",\n form_type: \"trial\",\n page_url: window.location.href,\n subject: subjectSelected\n });\n },\n onFormSubmitted: function($form) {\n if (index < document.formIds.length && document.formIds.length !== 1) {\n index ++;\n createHSForm(index);\n } else {\n // clean up\n cleanUp();\n\n // redirect if simple form\n if (document.thankYouUrl) {\n window.location.replace(document.thankYouUrl);\n }\n }\n }\n });\n }\n\n // FLOW\n var index = 0;\n toggleLoading();\n $(document).ready(function(){\n createHSForm(index);\n });\n});\n"], "mappings": "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", "names": [] }