{"version":3,"file":"jwsdw-hikinghotel.js","sources":["../../../../../../../temp/ngAnnotate/assets/jwsdw-hikinghotel.js"],"sourcesContent":["'use strict';\r\n\r\n(function (window, $) {\r\n const $window = $(window),\r\n $hikinghotelPageWrapper = $('.jwsdw-hikinghotel-page'),\r\n $continueButtons = $('.jwsdw-continue-button'),\r\n $registeredUserForm = $('#hikinghotel-registered-user-form'),\r\n $newUserForm = $('#hikinghotel-new-user-form'),\r\n mobileNavbarHeight = 64;\r\n\r\n /**\r\n * @description Method to scroll to the top of an element.\r\n * @param {jQuery} element jQuery element for which offset.top defines the scroll position\r\n * @param {number} offset - Optional offset parameter.\r\n * @returns {undefined}\r\n */\r\n function scrollTo(element, offset) {\r\n offset = offset || 0;\r\n $('html, body').animate({'scrollTop': element.offset().top + offset});\r\n }\r\n\r\n /**\r\n * @description Function used to append csrf token and competition ID to request payload.\r\n * @param {jQuery} $form - A form wrapped in a jQuery object.\r\n * @returns {string} serialized form data.\r\n */\r\n function contstructPayload($form) {\r\n return `${$form.serialize()}&${window.jwsdwSettings.csrfTokenName}=${window.jwsdwSettings.csrfTokenValue}&competitionId=${window.jwsdwCompetitionConfigs.competitionID}`;\r\n }\r\n\r\n /**\r\n * @description Form submission handler.\r\n * @param {Event} e - A form submission event.\r\n * @returns {undefined}\r\n */\r\n function submitForm(e) {\r\n e.preventDefault();\r\n\r\n const $form = $(this);\r\n if (!$form.valid()) {\r\n return;\r\n }\r\n\r\n const action = $form.prop('action');\r\n const method = $form.prop('method');\r\n const payload = contstructPayload($form);\r\n\r\n $.ajax({\r\n 'url': action,\r\n 'type': method,\r\n 'data': payload,\r\n 'dataType': 'json',\r\n 'success': () => {\r\n let viewport = window.jwsdwUtil.uiUtils.getViewport();\r\n if (viewport === '\\\"small\\\"' || viewport === '\\\"medium\\\"') {\r\n scrollTo($hikinghotelPageWrapper, -mobileNavbarHeight);\r\n }\r\n $hikinghotelPageWrapper.attr('data-state', 'registration-success');\r\n },\r\n 'error': (data) => {\r\n if (data.responseJSON && data.responseJSON.details && data.responseJSON.details.fieldErrors) {\r\n $form.validate().showErrors(data.responseJSON.details.fieldErrors);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description Function which handles browser's back button action in order to restore the initial state of the page.\r\n * @returns {undefined}\r\n */\r\n function handleBackButton() {\r\n $hikinghotelPageWrapper.removeAttr('data-state');\r\n }\r\n\r\n /* Initializing form validation. */\r\n $registeredUserForm.validate();\r\n $newUserForm.validate();\r\n\r\n /* Handling browser back button to allow for navigation through form states */\r\n $continueButtons.on('click', function () {\r\n let state = $(this).data('setState');\r\n if (state) {\r\n let viewport = window.jwsdwUtil.uiUtils.getViewport();\r\n let scrollTarget = $(this).data('scrollTarget');\r\n history.pushState({ 'state': state }, '');\r\n\r\n requestAnimationFrame(() => {\r\n $hikinghotelPageWrapper.attr('data-state', state);\r\n requestAnimationFrame(() => {\r\n if (viewport === '\\\"small\\\"' || viewport === '\\\"medium\\\"') {\r\n scrollTo($(scrollTarget), -mobileNavbarHeight);\r\n }\r\n });\r\n });\r\n $window.one('popstate', handleBackButton);\r\n }\r\n });\r\n\r\n /* Handling competition form submission for already registered users */\r\n $registeredUserForm.on('submit', submitForm);\r\n\r\n /* Handling competition form submission for new users */\r\n $newUserForm.on('submit', submitForm);\r\n}(window, jQuery));\r\n"],"names":["window","$","$window","$hikinghotelPageWrapper","$continueButtons","$registeredUserForm","$newUserForm","scrollTo","element","offset","animate","scrollTop","top","submitForm","e","preventDefault","$form","this","method","payload","valid","action","prop","serialize","jwsdwSettings","csrfTokenName","csrfTokenValue","jwsdwCompetitionConfigs","competitionID","ajax","url","type","data","dataType","success","let","viewport","jwsdwUtil","uiUtils","getViewport","attr","error","responseJSON","details","fieldErrors","validate","showErrors","handleBackButton","removeAttr","on","state","scrollTarget","history","pushState","requestAnimationFrame","one","jQuery"],"mappings":"AAAA,aAEA,CAAC,SAAUA,EAAQC,GACf,MAAMC,EAAUD,EAAED,CAAM,EACpBG,EAA0BF,EAAE,yBAAyB,EACrDG,EAAmBH,EAAE,wBAAwB,EAC7CI,EAAsBJ,EAAE,mCAAmC,EAC3DK,EAAeL,EAAE,4BAA4B,EASjD,SAASM,EAASC,EAASC,GACvBA,EAASA,GAAU,EACnBR,EAAE,YAAY,EAAES,QAAQ,CAACC,UAAaH,EAAQC,OAAO,EAAEG,IAAMH,CAAM,CAAC,CACxE,CAgBA,SAASI,EAAWC,GAChBA,EAAEC,eAAe,EAEjB,MAAMC,EAAQf,EAAEgB,IAAI,EACpB,IAKMC,EACAC,EANDH,EAAMI,MAAM,IAIXC,EAASL,EAAMM,KAAK,QAAQ,EAC5BJ,EAASF,EAAMM,KAAK,QAAQ,EAC5BH,KAA4BH,EAlBlBO,UAAU,KAAKvB,EAAOwB,cAAcC,iBAAiBzB,EAAOwB,cAAcE,gCAAgC1B,EAAO2B,wBAAwBC,cAoBzJ3B,EAAE4B,KAAK,CACHC,IAAOT,EACPU,KAAQb,EACRc,KAAQb,EACRc,SAAY,OACZC,QAAW,KACPC,IAAIC,EAAWpC,EAAOqC,UAAUC,QAAQC,YAAY,EACnC,YAAbH,GAAyC,aAAbA,GAC5B7B,EAASJ,EAAyB,CA/CzB,EA+C4C,EAEzDA,EAAwBqC,KAAK,aAAc,sBAAsB,CACrE,EACAC,MAAS,IACDT,EAAKU,cAAgBV,EAAKU,aAAaC,SAAWX,EAAKU,aAAaC,QAAQC,aAC5E5B,EAAM6B,SAAS,EAAEC,WAAWd,EAAKU,aAAaC,QAAQC,WAAW,CAEzE,CACJ,CAAC,EACL,CAMA,SAASG,IACL5C,EAAwB6C,WAAW,YAAY,CACnD,CAGA3C,EAAoBwC,SAAS,EAC7BvC,EAAauC,SAAS,EAGtBzC,EAAiB6C,GAAG,QAAS,WACzBd,IAAIe,EAAQjD,EAAEgB,IAAI,EAAEe,KAAK,UAAU,EACnC,GAAIkB,EAAO,CACPf,IAAIC,EAAWpC,EAAOqC,UAAUC,QAAQC,YAAY,EAChDY,EAAelD,EAAEgB,IAAI,EAAEe,KAAK,cAAc,EAC9CoB,QAAQC,UAAU,CAAEH,MAASA,CAAM,EAAG,EAAE,EAExCI,sBAAsB,KAClBnD,EAAwBqC,KAAK,aAAcU,CAAK,EAChDI,sBAAsB,KACD,YAAblB,GAAyC,aAAbA,GAC5B7B,EAASN,EAAEkD,CAAY,EAAG,CAnFrB,EAmFwC,CAErD,CAAC,CACL,CAAC,EACDjD,EAAQqD,IAAI,WAAYR,CAAgB,CAC5C,CACJ,CAAC,EAGD1C,EAAoB4C,GAAG,SAAUpC,CAAU,EAG3CP,EAAa2C,GAAG,SAAUpC,CAAU,CACxC,EAAEb,OAAQwD,MAAO"}