{"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","_","isValidatable","element","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","validatableElementTypes","validatableSelector","selector","map","join","getRelativeFormElement","elementName","selectedName","substring","dotLocation","lastIndexOf","relativeElementName","relativeElement","document","getElementsByName","form","querySelector","required","params","elementType","type","toLowerCase","Array","from","querySelectorAll","checked","checkboxHiddenInput","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","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","formEvents","inputEvents","summary","debounce","allowHiddenFields","validateForm","callback","formUID","getElementUID","formValidationEvent","undefined","validateField","field","fieldUID","fieldValidationEvent","preValidate","submitEvent","preventDefault","stopImmediatePropagation","handleValidated","success","submitValidForm","focusFirstInvalid","newEvent","SubmitEvent","dispatchEvent","submitter","getAttribute","submitterInput","createElement","appendChild","submit","invalidFormInputUIDs","filter","uid","firstInvalid","focus","isValid","prevalidate","isFieldValid","options","body","watch","addNoValidate","ValidationInputCssClassName","ValidationInputValidCssClassName","ValidationMessageCssClassName","ValidationMessageValidCssClassName","ValidationSummaryCssClassName","ValidationSummaryValidCssClassName","this","addProvider","addMvcProviders","mvc","MvcValidationProviders","scanMessages","remove","span","getElementById","removeValidationMessageSpan","pushValidationMessageSpan","forms","HTMLFormElement","containingForm","Element","closest","formId","spans","index","splice","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","validator","tasks","all","then","result","every","getMessageFor","input","shouldValidate","trackFormInput","setAttribute","validating","cb","validate","validationEvent","CustomEvent","detail","valid","setTimeout","catch","finally","addEventListener","classList","contains","innerHTML","renderSummary","untrackFormInput","indexToRemove","addInput","createValidator","debounceTimeoutID","clearTimeout","validateEvent","dataset","valEvent","eventType","removeInput","scanInputs","inputs","createSummaryDOM","renderedMessages","ul","matchingElement","className","li","summaryElements","shadow","stringify","sort","renderedSummaryJSON","listElements","j","hasChildNodes","swapClasses","cloneNode","addError","message","removeError","isHidden","provider","resolution","offsetWidth","offsetHeight","getClientRects","addClass","removeClass","add","bootstrap","assign","init","scan","readyState","observer","MutationObserver","mutations","forEach","mutation","observed","observe","childList","subtree","addedNodes","HTMLElement","removedNodes","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 * An `HTMLElement` that can be validated (`input`, `select`, `textarea`).\n */\nexport type ValidatableElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\n/**\n * Checks if `element` is validatable (`input`, `select`, `textarea`).\n * @param element The element to check.\n * @returns `true` if validatable, otherwise `false`.\n */\nexport const isValidatable = (element: Node): element is ValidatableElement =>\n element instanceof HTMLInputElement\n || element instanceof HTMLSelectElement\n || element instanceof HTMLTextAreaElement;\n\nconst validatableElementTypes = ['input', 'select', 'textarea'];\n\n/**\n * Generates a selector to match validatable elements (`input`, `select`, `textarea`).\n * @param selector An optional selector to apply to the valid input types, e.g. `[data-val=\"true\"]`.\n * @returns The validatable elements.\n */\nconst validatableSelector = (selector?: string) =>\n validatableElementTypes.map(t => `${t}${selector || ''}`).join(',');\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: ValidatableElement, 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: ValidatableElement, selector: string): ValidatableElement {\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 selectedName = 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 + '.' + selectedName;\n let relativeElement = document.getElementsByName(relativeElementName)[0];\n if (isValidatable(relativeElement)) {\n return relativeElement;\n }\n }\n\n // __RequestVerificationToken\n return element.form.querySelector(validatableSelector(`[name=${selectedName}]`));\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 === \"radio\") {\n const allElementsOfThisName = Array.from(element.form.querySelectorAll(validatableSelector(`[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 // Checkboxes do not submit a value when unchecked. To work around this, platforms such as ASP.NET render a\n // hidden input with the same name as the checkbox so that a value (\"false\") is still submitted even when\n // the checkbox is not checked. We check this special case here.\n if (elementType === \"checkbox\") {\n const checkboxHiddenInput = element.form.querySelector(`input[name='${element.name}'][type='hidden']`);\n if (checkboxHiddenInput instanceof HTMLInputElement && checkboxHiddenInput.value === \"false\") {\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);\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);\n\n let hasValue = Boolean(fieldElement && fieldElement.value);\n if (!hasValue) {\n continue;\n }\n\n if (fieldElement instanceof HTMLInputElement &&\n (fieldElement.type === 'checkbox' || fieldElement.type === 'radio')) {\n fields[fieldName] = fieldElement.checked ? fieldElement.value : '';\n } else {\n fields[fieldName] = fieldElement.value;\n }\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 * Configuration for @type {ValidationService}.\n */\nexport interface ValidationServiceOptions {\n watch: boolean;\n root: ParentNode;\n addNoValidate: boolean;\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 form UID to its trigger element (submit event for ).\n */\n private formEvents: { [id: string]: (e?: SubmitEvent, callback?: ValidatedCallback) => void } = {};\n\n /**\n * A key-value map for element UID to its trigger element (input event for