{"version":3,"sources":["webpack://aspnetValidation/webpack/universalModuleDefinition","webpack://aspnetValidation/webpack/bootstrap","webpack://aspnetValidation/./src/index.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","nullLogger","warn","globalThis","console","log","_","getRelativeFormElement","element","selector","elementName","realSelector","substring","dotLocation","lastIndexOf","relativeElementName","relativeElement","document","getElementsByName","form","querySelector","required","params","elementType","type","toLowerCase","Array","from","querySelectorAll","HTMLInputElement","checked","Boolean","stringLength","min","parseInt","length","max","compare","other","otherElement","range","val","parseFloat","isNaN","regex","pattern","RegExp","test","email","creditcard","cDigit","nCheck","nDigit","bEven","replace","charAt","url","lowerCaseValue","indexOf","phone","remote","fieldSelectors","additionalfields","split","fields","fieldSelector","fieldName","substr","fieldElement","encodedParams","encodedParam","encodeURIComponent","push","payload","join","Promise","ok","reject","request","XMLHttpRequest","postData","FormData","append","open","setRequestHeader","send","onload","e","status","data","JSON","parse","responseText","statusText","onerror","logger","providers","messageFor","elementUIDs","elementByUID","formInputs","validators","elementEvents","summary","debounce","allowHiddenFields","validateForm","callback","formUID","getElementUID","formValidationEvent","undefined","preValidate","submitEvent","preventDefault","stopImmediatePropagation","handleValidated","success","submitValidForm","focusFirstInvalid","newEvent","SubmitEvent","dispatchEvent","submit","invalidFormInputUIDs","filter","uid","firstInvalid","focus","isValid","prevalidate","isFieldValid","field","closest","fieldUID","ValidationInputCssClassName","ValidationInputValidCssClassName","ValidationMessageCssClassName","ValidationMessageValidCssClassName","ValidationSummaryCssClassName","ValidationSummaryValidCssClassName","this","addProvider","addMvcProviders","mvc","MvcValidationProviders","scanMessages","span","getElementById","getAttribute","pushValidationMessageSpan","forms","tagName","formId","spans","parseDirectives","attributes","directives","validationAtributes","cut","a","parameters","keys","Q","directive","error","pcut","pvalue","pkey","guid4","Math","random","toString","node","x","getFormValidationTask","formInputUIDs","resolve","formValidators","inputUID","tasks","map","all","then","result","every","getMessageFor","input","shouldValidate","trackFormInput","validating","cb","validate","validationEvent","CustomEvent","detail","valid","catch","finally","addEventListener","classList","contains","remove","innerHTML","renderSummary","addInput","createValidator","delay","clearTimeout","setTimeout","isDropdown","validateEvent","dataset","valEvent","scanInputs","inputs","createSummaryDOM","ul","createElement","li","appendChild","summaryElements","shadow","stringify","sort","renderedSummaryJSON","swapClasses","cloneNode","addError","message","removeError","isHidden","provider","resolution","offsetWidth","offsetHeight","getClientRects","addClass","removeClass","add","bootstrap","options","body","init","scan","watch","readyState","observer","MutationObserver","mutations","forEach","mutation","observed","observe","childList","subtree","addedNodes","HTMLElement","target","oldValue","newValue","attributeName"],"mappings":"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","file":"aspnet-validation.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"aspnetValidation\"] = factory();\n\telse\n\t\troot[\"aspnetValidation\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/**\n * A simple IDictionary\n */\nexport interface StringKeyValuePair {\n [key: string]: string\n}\n\n/**\n * A duplex key-value pair for an element, by GUID or its DOM object reference.\n */\ninterface ElementUID {\n node: Element,\n uid: string;\n}\n\n/**\n * A simple logging interface that mirrors the Console object.\n */\nexport interface Logger {\n log(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n}\n\nconst nullLogger = new (class implements Logger {\n log(_: string, ..._args: any[]): void { }\n warn = globalThis.console.warn;\n})();\n\n/**\n * Parameters passed into validation providers from the element attributes.\n * error property is read from data-val-[Provider Name] attribute.\n * params property is populated from data-val-[Provider Name]-[Parameter Name] attributes.\n */\nexport interface ValidationDirectiveBindings {\n error: string,\n params: StringKeyValuePair\n}\n\n/**\n * A key-value pair describing what validations to enforce to an input element, with respective parameters.\n */\nexport type ValidationDirective = {\n [key: string]: ValidationDirectiveBindings\n};\n\n/**\n * Validation plugin signature with multitype return.\n * Boolean return signifies the validation result, which uses the default validation error message read from the element attribute.\n * String return signifies failed validation, which then will be used as the validation error message.\n * Promise return signifies asynchronous plugin behavior, with same behavior as Boolean or String.\n */\nexport type ValidationProvider = (value: string, element: HTMLInputElement, params: StringKeyValuePair) => boolean | string | Promise;\n\n/**\n * Callback to receive the result of validating a form.\n */\nexport type ValidatedCallback = (success: boolean) => void;\n\n/**\n * A callback method signature that kickstarts a new validation task for an input element, as a Boolean Promise.\n */\ntype Validator = () => Promise;\n\n/**\n * Resolves and returns the element referred by original element using ASP.NET selector logic.\n * @param element - The input to validate\n * @param selector - Used to find the field. Ex. *.Password where * replaces whatever prefixes asp.net might add.\n */\nfunction getRelativeFormElement(element: HTMLInputElement, selector: string) {\n // example elementName: Form.PasswordConfirm, Form.Email\n // example selector (dafuq): *.Password, *.__RequestVerificationToken\n // example result element name: Form.Password, __RequestVerificationToken\n\n let elementName = element.name;\n let realSelector = selector.substring(2); // Password, __RequestVerificationToken\n let objectName = '';\n\n let dotLocation = elementName.lastIndexOf('.');\n if (dotLocation > -1) {\n // Form\n objectName = elementName.substring(0, dotLocation);\n\n // Form.Password\n let relativeElementName = objectName + '.' + realSelector;\n let relativeElement = document.getElementsByName(relativeElementName)[0];\n if (relativeElement) {\n return relativeElement;\n }\n }\n\n // __RequestVerificationToken\n return element.form.querySelector(`[name=${realSelector}]`);\n}\n\n/**\n * Contains default implementations for ASP.NET Core MVC validation attributes.\n */\nexport class MvcValidationProviders {\n /**\n * Validates whether the input has a value.\n */\n required: ValidationProvider = (value, element, params) => {\n // Handle single and multiple checkboxes/radio buttons.\n const elementType = element.type.toLowerCase();\n if (elementType === \"checkbox\" || elementType) {\n const allElementsOfThisName = Array.from(element.form.querySelectorAll(`input[name='${element.name}'][type='${elementType}']`));\n for (let element of allElementsOfThisName) {\n if (element instanceof HTMLInputElement && element.checked === true) {\n return true;\n }\n }\n\n return false;\n }\n // Default behavior otherwise.\n return Boolean(value);\n }\n\n /**\n * Validates whether the input value satisfies the length contstraint.\n */\n stringLength: ValidationProvider = (value, element, params) => {\n if (!value) {\n return true;\n }\n\n if (params.min) {\n let min = parseInt(params.min);\n if (value.length < min) {\n return false;\n }\n }\n\n if (params.max) {\n let max = parseInt(params.max);\n if (value.length > max) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Validates whether the input value is equal to another input value.\n */\n compare: ValidationProvider = (value, element, params) => {\n if (!params.other) {\n return true;\n }\n\n let otherElement = getRelativeFormElement(element, params.other) as HTMLInputElement;\n if (!otherElement) {\n return true;\n }\n\n return (otherElement.value === value);\n }\n\n /**\n * Validates whether the input value is a number within a given range.\n */\n range: ValidationProvider = (value, element, params) => {\n if (!value) {\n return true;\n }\n\n let val = parseFloat(value);\n if (isNaN(val)) {\n return false;\n }\n\n if (params.min) {\n let min = parseFloat(params.min);\n if (val < min) {\n return false;\n }\n }\n\n if (params.max) {\n let max = parseFloat(params.max);\n if (val > max) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Validates whether the input value satisfies a regular expression pattern.\n */\n regex: ValidationProvider = (value, element, params) => {\n if (!value || !params.pattern) {\n return true;\n }\n\n let r = new RegExp(params.pattern);\n return r.test(value);\n }\n\n /**\n * Validates whether the input value is an email in accordance to RFC822 specification, with a top level domain.\n */\n email: ValidationProvider = (value, element, params) => {\n if (!value) {\n return true;\n }\n\n // RFC822 email address with .TLD validation\n // (c) Richard Willis, Chris Ferdinandi, MIT Licensed\n // https://gist.github.com/badsyntax/719800\n // https://gist.github.com/cferdinandi/d04aad4ce064b8da3edf21e26f8944c4\n\n let r = /^([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d))*(\\.\\w{2,})+$/;\n return r.test(value);\n }\n\n /**\n * Validates whether the input value is a credit card number, with Luhn's Algorithm.\n */\n creditcard: ValidationProvider = (value, element, params) => {\n if (!value) {\n return true;\n }\n\n // (c) jquery-validation, MIT Licensed\n // https://github.com/jquery-validation/jquery-validation/blob/master/src/additional/creditcard.js\n // based on https://en.wikipedia.org/wiki/Luhn_algorithm\n\n // Accept only spaces, digits and dashes\n if (/[^0-9 \\-]+/.test(value)) {\n return false;\n }\n\n var nCheck = 0,\n nDigit = 0,\n bEven = false,\n n, cDigit;\n\n value = value.replace(/\\D/g, \"\");\n\n // Basing min and max length on https://developer.ean.com/general_info/Valid_Credit_Card_Types\n if (value.length < 13 || value.length > 19) {\n return false;\n }\n\n for (n = value.length - 1; n >= 0; n--) {\n cDigit = value.charAt(n);\n nDigit = parseInt(cDigit, 10);\n if (bEven) {\n if ((nDigit *= 2) > 9) {\n nDigit -= 9;\n }\n }\n\n nCheck += nDigit;\n bEven = !bEven;\n }\n\n return (nCheck % 10) === 0;\n }\n\n /**\n * Validates whether the input value is a URL.\n */\n url: ValidationProvider = (value, element, params) => {\n if (!value) {\n return true;\n }\n\n let lowerCaseValue = value.toLowerCase();\n\n // Match the logic in `UrlAttribute`\n return lowerCaseValue.indexOf('http://') > -1\n || lowerCaseValue.indexOf('https://') > -1\n || lowerCaseValue.indexOf('ftp://') > -1;\n }\n\n /**\n * Validates whether the input value is a phone number.\n */\n phone: ValidationProvider = (value, element, params) => {\n if (!value) {\n return true;\n }\n\n // Allows whitespace or dash as number separator because some people like to do that...\n let consecutiveSeparator = /[\\+\\-\\s][\\-\\s]/g;\n if (consecutiveSeparator.test(value)) {\n return false;\n }\n\n let r = /^\\+?[0-9\\-\\s]+$/;\n return r.test(value);\n }\n\n /**\n * Asynchronously validates the input value to a JSON GET API endpoint.\n */\n remote: ValidationProvider = (value, element, params) => {\n if (!value) {\n return true;\n }\n\n // params.additionalfields: *.Email,*.Username\n let fieldSelectors: string[] = (params.additionalfields as string).split(',');\n let fields: StringKeyValuePair = {};\n\n for (let fieldSelector of fieldSelectors) {\n let fieldName = fieldSelector.substr(2);\n let fieldElement = getRelativeFormElement(element, fieldSelector) as HTMLInputElement;\n\n let hasValue = Boolean(fieldElement && fieldElement.value);\n if (!hasValue) {\n continue;\n }\n\n fields[fieldName] = fieldElement.value;\n }\n\n let url: string = params['url'];\n\n let encodedParams: string[] = [];\n for (let fieldName in fields) {\n let encodedParam = encodeURIComponent(fieldName) + '=' + encodeURIComponent(fields[fieldName]);\n encodedParams.push(encodedParam);\n }\n let payload = encodedParams.join('&');\n\n return new Promise((ok, reject) => {\n let request = new XMLHttpRequest();\n\n if (params.type === 'Post') {\n let postData = new FormData();\n for (let fieldName in fields) {\n postData.append(fieldName, fields[fieldName]);\n }\n request.open('post', url);\n request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n request.send(payload);\n } else {\n request.open('get', url + '?' + payload);\n request.send();\n }\n\n request.onload = e => {\n if (request.status >= 200 && request.status < 300) {\n let data = JSON.parse(request.responseText);\n ok(data);\n } else {\n reject({\n status: request.status,\n statusText: request.statusText,\n data: request.responseText\n });\n }\n };\n\n request.onerror = e => {\n reject({\n status: request.status,\n statusText: request.statusText,\n data: request.responseText\n });\n };\n });\n }\n}\n\n/**\n * Responsible for managing the DOM elements and running the validation providers.\n */\nexport class ValidationService {\n /**\n * A key-value collection of loaded validation plugins.\n */\n private providers: { [name: string]: ValidationProvider } = {};\n\n /**\n * A key-value collection of elements for displaying validation messages for an input (by DOM ID).\n */\n private messageFor: { [id: string]: Element[] } = {};\n\n /**\n * A list of managed elements, each having a randomly assigned unique identifier (UID).\n */\n private elementUIDs: ElementUID[] = [];\n\n /**\n * A key-value collection of UID to Element for quick lookup.\n */\n private elementByUID: { [uid: string]: Element } = {};\n\n /**\n * A key-value collection of input UIDs for a
UID.\n */\n private formInputs: { [formUID: string]: string[] } = {};\n\n /**\n * A key-value map for input UID to its validator factory.\n */\n private validators: { [inputUID: string]: Validator } = {};\n\n /**\n * A key-value map for element UID to its trigger element (submit event for , input event for