{"version":3,"file":"username-view-validation.js","sources":["../../js/username-view-validation.ts"],"sourcesContent":["import { ready } from \"@nephele/dom-utils\";\nimport { ActionFormHelper, ValidateForm } from \"@nephele/form-utils\";\nimport { PhoneInput } from \"@nephele/phone-input\";\nimport { CaptchaStatus, turnstileCallback } from \"@nephele/turnstile-captcha/captcha-validation\";\nimport { insertCaptcha } from \"@nephele/turnstile-captcha/captcha-loader\";\n\ndeclare global {\n interface Window {\n turnstileCallback: () => void;\n preferSelfHostedCaptcha: boolean;\n }\n}\n\nready(async () => {\n const do_not_check_status = [CaptchaStatus.Disabled, CaptchaStatus.Passed, CaptchaStatus.NotSupported];\n let status: CaptchaStatus = CaptchaStatus.Disabled;\n\n window.turnstileCallback = () => {\n const el = document.querySelector('#turnstile-widget')! as HTMLDivElement;\n return turnstileCallback(el)\n };\n\n if (window.turnstileConfig) {\n const isCaptchaLoaded = await insertCaptcha('turnstileCallback');\n if (!isCaptchaLoaded) {\n console.error('Captcha failed to load');\n }\n }\n\n const emailRegex = /\\S+@\\S+\\.\\S+/;\n const localPhoneRegex = /^(?!\\+)(0?)([1-9][0-9]{5,})/;\n const iddPhoneRegex = /^(?!\\+)00([1-9][0-9]{9,})/;\n\n const username = document.querySelector(\"#usernameInput\") as HTMLInputElement;\n const dummyPhoneInput = document.querySelector(\"#actionForm [data-phone-input]\") as HTMLInputElement;\n const captcha = document.getElementById(\"turnstile-widget\") as HTMLDivElement;\n\n const phoneInput = PhoneInput(dummyPhoneInput, {});\n\n\n const validate: ValidateForm> = (utility, errors) => {\n utility.clearValidationErrors();\n\n if (!username.value) {\n if (errors) {\n utility.setValidationError(username, errors.UsernameFormatError!);\n }\n return false;\n }\n\n const isPossibleEmail = emailRegex.test(username.value.trim());\n\n const isPossibleLocalNumber = localPhoneRegex.test(username.value.trim());\n const isPossibleNumberWithIdd = iddPhoneRegex.test(username.value.trim());\n const isPossibleNumberWithPlusSign = username.value.trim().charAt(0) === \"+\" &&\n phoneInput.isValidNumber(username.value.trim(), phoneInput.getSelectedCountryData()?.iso2);\n\n if (!isPossibleEmail && !isPossibleLocalNumber && !isPossibleNumberWithIdd && !isPossibleNumberWithPlusSign) {\n if (errors) {\n utility.setValidationError(username, errors.UsernameFormatError!);\n }\n\n return false;\n }\n\n if (captcha) {\n const response = window.turnstile?.getResponse();\n if (response === undefined && status === CaptchaStatus.WaitingInteraction) {\n if (errors) {\n utility.setValidationError(captcha, errors.CaptchaValidationError!);\n }\n\n return false;\n }\n\n if (status === CaptchaStatus.Failed) {\n return false;\n }\n }\n \n if (!do_not_check_status.includes(status)) {\n return false;\n }\n\n return true;\n };\n\n const actionFormHelper = new ActionFormHelper(\n document.querySelector(\"#actionForm\")! as HTMLFormElement,\n document.querySelector(\"#submitButton\")! as HTMLButtonElement,\n document.querySelector(\"#loader\")! as HTMLElement,\n window.errors,\n username,\n validate,\n null,\n \"div.error > span\"\n );\n\n document.addEventListener(\"CaptchaStatus\", (event: Event) => {\n const e = event as CustomEvent;\n status = e.detail;\n actionFormHelper.checkSubmitButtonState(username);\n });\n});\n"],"names":["ready","do_not_check_status","CaptchaStatus","status","el","turnstileCallback","insertCaptcha","emailRegex","localPhoneRegex","iddPhoneRegex","username","dummyPhoneInput","captcha","phoneInput","PhoneInput","validate","utility","errors","isPossibleEmail","isPossibleLocalNumber","isPossibleNumberWithIdd","isPossibleNumberWithPlusSign","_a","_b","actionFormHelper","ActionFormHelper","event"],"mappings":"4JAaAA,EAAM,SAAY,CACd,MAAMC,EAAsB,CAACC,EAAc,SAAUA,EAAc,OAAQA,EAAc,YAAY,EACrG,IAAIC,EAAwBD,EAAc,SAE1C,OAAO,kBAAoB,IAAM,CACvB,MAAAE,EAAK,SAAS,cAAc,mBAAmB,EACrD,OAAOC,EAAkBD,CAAE,CAC/B,EAEI,OAAO,kBACiB,MAAME,EAAc,mBAAmB,GAE3D,QAAQ,MAAM,wBAAwB,GAI9C,MAAMC,EAAa,eACbC,EAAkB,8BAClBC,EAAgB,4BAEhBC,EAAW,SAAS,cAAc,gBAAgB,EAClDC,EAAkB,SAAS,cAAc,gCAAgC,EACzEC,EAAU,SAAS,eAAe,kBAAkB,EAEpDC,EAAaC,EAAWH,EAAiB,EAAE,EAG3CI,EAAiD,CAACC,EAASC,IAAW,SAGpE,GAFJD,EAAQ,sBAAsB,EAE1B,CAACN,EAAS,MACV,OAAIO,GACQD,EAAA,mBAAmBN,EAAUO,EAAO,mBAAoB,EAE7D,GAGX,MAAMC,EAAkBX,EAAW,KAAKG,EAAS,MAAM,MAAM,EAEvDS,EAAwBX,EAAgB,KAAKE,EAAS,MAAM,MAAM,EAClEU,EAA0BX,EAAc,KAAKC,EAAS,MAAM,MAAM,EAClEW,EAA+BX,EAAS,MAAM,OAAO,OAAO,CAAC,IAAM,KACrEG,EAAW,cAAcH,EAAS,MAAM,QAAQY,EAAAT,EAAW,2BAAX,YAAAS,EAAqC,IAAI,EAE7F,GAAI,CAACJ,GAAmB,CAACC,GAAyB,CAACC,GAA2B,CAACC,EAC3E,OAAIJ,GACQD,EAAA,mBAAmBN,EAAUO,EAAO,mBAAoB,EAG7D,GAGX,GAAIL,EAAS,CAET,KADiBW,EAAA,OAAO,YAAP,YAAAA,EAAkB,iBAClB,QAAapB,IAAWD,EAAc,mBACnD,OAAIe,GACQD,EAAA,mBAAmBJ,EAASK,EAAO,sBAAuB,EAG/D,GAGP,GAAAd,IAAWD,EAAc,OAClB,MAAA,EACX,CAGJ,MAAK,EAAAD,EAAoB,SAASE,CAAM,CAK5C,EAEMqB,EAAmB,IAAIC,EACzB,SAAS,cAAc,aAAa,EACpC,SAAS,cAAc,eAAe,EACtC,SAAS,cAAc,SAAS,EAChC,OAAO,OACPf,EACAK,EACA,KACA,kBACJ,EAES,SAAA,iBAAiB,gBAAkBW,GAAiB,CAEzDvB,EADUuB,EACC,OACXF,EAAiB,uBAAuBd,CAAQ,CAAA,CACnD,CACL,CAAC"}