{"version":3,"file":"vendors--parsleyjs.chunk.js","mappings":"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","sources":["webpack:///../../node_modules/parsleyjs/dist/parsley.js"],"sourcesContent":["/*!\n* Parsley.js\n* Version 2.9.2 - built Tue, Dec 10th 2019, 6:18 pm\n* http://parsleyjs.org\n* Guillaume Potier - \n* Marc-Andre Lafortune - \n* MIT Licensed\n*/\n\n// The source code below is generated by babel as\n// Parsley is written in ECMAScript 6\n//\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = global || self, global.parsley = factory(global.jQuery));\n}(this, (function ($) { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n var globalID = 1;\n var pastWarnings = {};\n var Utils = {\n // Parsley DOM-API\n // returns object from dom attributes and values\n attr: function attr(element, namespace, obj) {\n var i;\n var attribute;\n var attributes;\n var regex = new RegExp('^' + namespace, 'i');\n if ('undefined' === typeof obj) obj = {};else {\n // Clear all own properties. This won't affect prototype's values\n for (i in obj) {\n if (obj.hasOwnProperty(i)) delete obj[i];\n }\n }\n if (!element) return obj;\n attributes = element.attributes;\n\n for (i = attributes.length; i--;) {\n attribute = attributes[i];\n\n if (attribute && attribute.specified && regex.test(attribute.name)) {\n obj[this.camelize(attribute.name.slice(namespace.length))] = this.deserializeValue(attribute.value);\n }\n }\n\n return obj;\n },\n checkAttr: function checkAttr(element, namespace, _checkAttr) {\n return element.hasAttribute(namespace + _checkAttr);\n },\n setAttr: function setAttr(element, namespace, attr, value) {\n element.setAttribute(this.dasherize(namespace + attr), String(value));\n },\n getType: function getType(element) {\n return element.getAttribute('type') || 'text';\n },\n generateID: function generateID() {\n return '' + globalID++;\n },\n\n /** Third party functions **/\n deserializeValue: function deserializeValue(value) {\n var num;\n\n try {\n return value ? value == \"true\" || (value == \"false\" ? false : value == \"null\" ? null : !isNaN(num = Number(value)) ? num : /^[\\[\\{]/.test(value) ? JSON.parse(value) : value) : value;\n } catch (e) {\n return value;\n }\n },\n // Zepto camelize function\n camelize: function camelize(str) {\n return str.replace(/-+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n },\n // Zepto dasherize function\n dasherize: function dasherize(str) {\n return str.replace(/::/g, '/').replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2').replace(/([a-z\\d])([A-Z])/g, '$1_$2').replace(/_/g, '-').toLowerCase();\n },\n warn: function warn() {\n var _window$console;\n\n if (window.console && 'function' === typeof window.console.warn) (_window$console = window.console).warn.apply(_window$console, arguments);\n },\n warnOnce: function warnOnce(msg) {\n if (!pastWarnings[msg]) {\n pastWarnings[msg] = true;\n this.warn.apply(this, arguments);\n }\n },\n _resetWarnings: function _resetWarnings() {\n pastWarnings = {};\n },\n trimString: function trimString(string) {\n return string.replace(/^\\s+|\\s+$/g, '');\n },\n parse: {\n date: function date(string) {\n var parsed = string.match(/^(\\d{4,})-(\\d\\d)-(\\d\\d)$/);\n if (!parsed) return null;\n\n var _parsed$map = parsed.map(function (x) {\n return parseInt(x, 10);\n }),\n _parsed$map2 = _slicedToArray(_parsed$map, 4),\n _ = _parsed$map2[0],\n year = _parsed$map2[1],\n month = _parsed$map2[2],\n day = _parsed$map2[3];\n\n var date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) return null;\n return date;\n },\n string: function string(_string) {\n return _string;\n },\n integer: function integer(string) {\n if (isNaN(string)) return null;\n return parseInt(string, 10);\n },\n number: function number(string) {\n if (isNaN(string)) throw null;\n return parseFloat(string);\n },\n 'boolean': function _boolean(string) {\n return !/^\\s*false\\s*$/i.test(string);\n },\n object: function object(string) {\n return Utils.deserializeValue(string);\n },\n regexp: function regexp(_regexp) {\n var flags = ''; // Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern\n\n if (/^\\/.*\\/(?:[gimy]*)$/.test(_regexp)) {\n // Replace the regexp literal string with the first match group: ([gimy]*)\n // If no flag is present, this will be a blank string\n flags = _regexp.replace(/.*\\/([gimy]*)$/, '$1'); // Again, replace the regexp literal string with the first match group:\n // everything excluding the opening and closing slashes and the flags\n\n _regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');\n } else {\n // Anchor regexp:\n _regexp = '^' + _regexp + '$';\n }\n\n return new RegExp(_regexp, flags);\n }\n },\n parseRequirement: function parseRequirement(requirementType, string) {\n var converter = this.parse[requirementType || 'string'];\n if (!converter) throw 'Unknown requirement specification: \"' + requirementType + '\"';\n var converted = converter(string);\n if (converted === null) throw \"Requirement is not a \".concat(requirementType, \": \\\"\").concat(string, \"\\\"\");\n return converted;\n },\n namespaceEvents: function namespaceEvents(events, namespace) {\n events = this.trimString(events || '').split(/\\s+/);\n if (!events[0]) return '';\n return $.map(events, function (evt) {\n return \"\".concat(evt, \".\").concat(namespace);\n }).join(' ');\n },\n difference: function difference(array, remove) {\n // This is O(N^2), should be optimized\n var result = [];\n $.each(array, function (_, elem) {\n if (remove.indexOf(elem) == -1) result.push(elem);\n });\n return result;\n },\n // Alter-ego to native Promise.all, but for jQuery\n all: function all(promises) {\n // jQuery treats $.when() and $.when(singlePromise) differently; let's avoid that and add spurious elements\n return $.when.apply($, _toConsumableArray(promises).concat([42, 42]));\n },\n // Object.create polyfill, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create#Polyfill\n objectCreate: Object.create || function () {\n var Object = function Object() {};\n\n return function (prototype) {\n if (arguments.length > 1) {\n throw Error('Second argument not supported');\n }\n\n if (_typeof(prototype) != 'object') {\n throw TypeError('Argument must be an object');\n }\n\n Object.prototype = prototype;\n var result = new Object();\n Object.prototype = null;\n return result;\n };\n }(),\n _SubmitSelector: 'input[type=\"submit\"], button:submit'\n };\n\n // All these options could be overriden and specified directly in DOM using\n // `data-parsley-` default DOM-API\n // eg: `inputs` can be set in DOM using `data-parsley-inputs=\"input, textarea\"`\n // eg: `data-parsley-stop-on-first-failing-constraint=\"false\"`\n var Defaults = {\n // ### General\n // Default data-namespace for DOM API\n namespace: 'data-parsley-',\n // Supported inputs by default\n inputs: 'input, textarea, select',\n // Excluded inputs by default\n excluded: 'input[type=button], input[type=submit], input[type=reset], input[type=hidden]',\n // Stop validating field on highest priority failing constraint\n priorityEnabled: true,\n // ### Field only\n // identifier used to group together inputs (e.g. radio buttons...)\n multiple: null,\n // identifier (or array of identifiers) used to validate only a select group of inputs\n group: null,\n // ### UI\n // Enable\\Disable error messages\n uiEnabled: true,\n // Key events threshold before validation\n validationThreshold: 3,\n // Focused field on form validation error. 'first'|'last'|'none'\n focus: 'first',\n // event(s) that will trigger validation before first failure. eg: `input`...\n trigger: false,\n // event(s) that will trigger validation after first failure.\n triggerAfterFailure: 'input',\n // Class that would be added on every failing validation Parsley field\n errorClass: 'parsley-error',\n // Same for success validation\n successClass: 'parsley-success',\n // Return the `$element` that will receive these above success or error classes\n // Could also be (and given directly from DOM) a valid selector like `'#div'`\n classHandler: function classHandler(Field) {},\n // Return the `$element` where errors will be appended\n // Could also be (and given directly from DOM) a valid selector like `'#div'`\n errorsContainer: function errorsContainer(Field) {},\n // ul elem that would receive errors' list\n errorsWrapper: '',\n // li elem that would receive error message\n errorTemplate: '
  • '\n };\n\n var Base = function Base() {\n this.__id__ = Utils.generateID();\n };\n\n Base.prototype = {\n asyncSupport: true,\n // Deprecated\n _pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {\n var _this = this;\n\n var pipe = function pipe() {\n var r = $.Deferred();\n if (true !== _this.validationResult) r.reject();\n return r.resolve().promise();\n };\n\n return [pipe, pipe];\n },\n actualizeOptions: function actualizeOptions() {\n Utils.attr(this.element, this.options.namespace, this.domOptions);\n if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();\n return this;\n },\n _resetOptions: function _resetOptions(initOptions) {\n this.domOptions = Utils.objectCreate(this.parent.options);\n this.options = Utils.objectCreate(this.domOptions); // Shallow copy of ownProperties of initOptions:\n\n for (var i in initOptions) {\n if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];\n }\n\n this.actualizeOptions();\n },\n _listeners: null,\n // Register a callback for the given event name\n // Callback is called with context as the first argument and the `this`\n // The context is the current parsley instance, or window.Parsley if global\n // A return value of `false` will interrupt the calls\n on: function on(name, fn) {\n this._listeners = this._listeners || {};\n var queue = this._listeners[name] = this._listeners[name] || [];\n queue.push(fn);\n return this;\n },\n // Deprecated. Use `on` instead\n subscribe: function subscribe(name, fn) {\n $.listenTo(this, name.toLowerCase(), fn);\n },\n // Unregister a callback (or all if none is given) for the given event name\n off: function off(name, fn) {\n var queue = this._listeners && this._listeners[name];\n\n if (queue) {\n if (!fn) {\n delete this._listeners[name];\n } else {\n for (var i = queue.length; i--;) {\n if (queue[i] === fn) queue.splice(i, 1);\n }\n }\n }\n\n return this;\n },\n // Deprecated. Use `off`\n unsubscribe: function unsubscribe(name, fn) {\n $.unsubscribeTo(this, name.toLowerCase());\n },\n // Trigger an event of the given name\n // A return value of `false` interrupts the callback chain\n // Returns false if execution was interrupted\n trigger: function trigger(name, target, extraArg) {\n target = target || this;\n var queue = this._listeners && this._listeners[name];\n var result;\n\n if (queue) {\n for (var i = queue.length; i--;) {\n result = queue[i].call(target, target, extraArg);\n if (result === false) return result;\n }\n }\n\n if (this.parent) {\n return this.parent.trigger(name, target, extraArg);\n }\n\n return true;\n },\n asyncIsValid: function asyncIsValid(group, force) {\n Utils.warnOnce(\"asyncIsValid is deprecated; please use whenValid instead\");\n return this.whenValid({\n group: group,\n force: force\n });\n },\n _findRelated: function _findRelated() {\n return this.options.multiple ? $(this.parent.element.querySelectorAll(\"[\".concat(this.options.namespace, \"multiple=\\\"\").concat(this.options.multiple, \"\\\"]\"))) : this.$element;\n }\n };\n\n var convertArrayRequirement = function convertArrayRequirement(string, length) {\n var m = string.match(/^\\s*\\[(.*)\\]\\s*$/);\n if (!m) throw 'Requirement is not an array: \"' + string + '\"';\n var values = m[1].split(',').map(Utils.trimString);\n if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';\n return values;\n };\n\n var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {\n var main = null;\n var extra = {};\n\n for (var key in requirementSpec) {\n if (key) {\n var value = extraOptionReader(key);\n if ('string' === typeof value) value = Utils.parseRequirement(requirementSpec[key], value);\n extra[key] = value;\n } else {\n main = Utils.parseRequirement(requirementSpec[key], string);\n }\n }\n\n return [main, extra];\n }; // A Validator needs to implement the methods `validate` and `parseRequirements`\n\n\n var Validator = function Validator(spec) {\n $.extend(true, this, spec);\n };\n\n Validator.prototype = {\n // Returns `true` iff the given `value` is valid according the given requirements.\n validate: function validate(value, requirementFirstArg) {\n if (this.fn) {\n // Legacy style validator\n if (arguments.length > 3) // If more args then value, requirement, instance...\n requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest\n\n return this.fn(value, requirementFirstArg);\n }\n\n if (Array.isArray(value)) {\n if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';\n return this.validateMultiple.apply(this, arguments);\n } else {\n var instance = arguments[arguments.length - 1];\n\n if (this.validateDate && instance._isDateInput()) {\n arguments[0] = Utils.parse.date(arguments[0]);\n if (arguments[0] === null) return false;\n return this.validateDate.apply(this, arguments);\n }\n\n if (this.validateNumber) {\n if (!value) // Builtin validators all accept empty strings, except `required` of course\n return true;\n if (isNaN(value)) return false;\n arguments[0] = parseFloat(arguments[0]);\n return this.validateNumber.apply(this, arguments);\n }\n\n if (this.validateString) {\n return this.validateString.apply(this, arguments);\n }\n\n throw 'Validator `' + this.name + '` only handles multiple values';\n }\n },\n // Parses `requirements` into an array of arguments,\n // according to `this.requirementType`\n parseRequirements: function parseRequirements(requirements, extraOptionReader) {\n if ('string' !== typeof requirements) {\n // Assume requirement already parsed\n // but make sure we return an array\n return Array.isArray(requirements) ? requirements : [requirements];\n }\n\n var type = this.requirementType;\n\n if (Array.isArray(type)) {\n var values = convertArrayRequirement(requirements, type.length);\n\n for (var i = 0; i < values.length; i++) {\n values[i] = Utils.parseRequirement(type[i], values[i]);\n }\n\n return values;\n } else if ($.isPlainObject(type)) {\n return convertExtraOptionRequirement(type, requirements, extraOptionReader);\n } else {\n return [Utils.parseRequirement(type, requirements)];\n }\n },\n // Defaults:\n requirementType: 'string',\n priority: 2\n };\n\n var ValidatorRegistry = function ValidatorRegistry(validators, catalog) {\n this.__class__ = 'ValidatorRegistry'; // Default Parsley locale is en\n\n this.locale = 'en';\n this.init(validators || {}, catalog || {});\n };\n\n var typeTesters = {\n email: /^((([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-zA-Z]|\\d|-|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-zA-Z]|\\d|-|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))$/,\n // Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers\n number: /^-?(\\d*\\.)?\\d+(e[-+]?\\d+)?$/i,\n integer: /^-?\\d+$/,\n digits: /^\\d+$/,\n alphanum: /^\\w+$/i,\n date: {\n test: function test(value) {\n return Utils.parse.date(value) !== null;\n }\n },\n url: new RegExp(\"^\" + // protocol identifier\n \"(?:(?:https?|ftp)://)?\" + // ** mod: make scheme optional\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" + \"(?:\" + // IP address exclusion\n // private & local networks\n // \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" + // ** mod: allow local networks\n // \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" + // ** mod: allow local networks\n // \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\" + // ** mod: allow local networks\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" + \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" + \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" + \"|\" + // host name\n \"(?:(?:[a-zA-Z\\\\u00a1-\\\\uffff0-9]-*)*[a-zA-Z\\\\u00a1-\\\\uffff0-9]+)\" + // domain name\n \"(?:\\\\.(?:[a-zA-Z\\\\u00a1-\\\\uffff0-9]-*)*[a-zA-Z\\\\u00a1-\\\\uffff0-9]+)*\" + // TLD identifier\n \"(?:\\\\.(?:[a-zA-Z\\\\u00a1-\\\\uffff]{2,}))\" + \")\" + // port number\n \"(?::\\\\d{2,5})?\" + // resource path\n \"(?:/\\\\S*)?\" + \"$\")\n };\n typeTesters.range = typeTesters.number; // See http://stackoverflow.com/a/10454560/8279\n\n var decimalPlaces = function decimalPlaces(num) {\n var match = ('' + num).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\n if (!match) {\n return 0;\n }\n\n return Math.max(0, // Number of digits right of decimal point.\n (match[1] ? match[1].length : 0) - ( // Adjust for scientific notation.\n match[2] ? +match[2] : 0));\n }; // parseArguments('number', ['1', '2']) => [1, 2]\n\n\n var parseArguments = function parseArguments(type, args) {\n return args.map(Utils.parse[type]);\n }; // operatorToValidator returns a validating function for an operator function, applied to the given type\n\n\n var operatorToValidator = function operatorToValidator(type, operator) {\n return function (value) {\n for (var _len = arguments.length, requirementsAndInput = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n requirementsAndInput[_key - 1] = arguments[_key];\n }\n\n requirementsAndInput.pop(); // Get rid of `input` argument\n\n return operator.apply(void 0, [value].concat(_toConsumableArray(parseArguments(type, requirementsAndInput))));\n };\n };\n\n var comparisonOperator = function comparisonOperator(operator) {\n return {\n validateDate: operatorToValidator('date', operator),\n validateNumber: operatorToValidator('number', operator),\n requirementType: operator.length <= 2 ? 'string' : ['string', 'string'],\n // Support operators with a 1 or 2 requirement(s)\n priority: 30\n };\n };\n\n ValidatorRegistry.prototype = {\n init: function init(validators, catalog) {\n this.catalog = catalog; // Copy prototype's validators:\n\n this.validators = _extends({}, this.validators);\n\n for (var name in validators) {\n this.addValidator(name, validators[name].fn, validators[name].priority);\n }\n\n window.Parsley.trigger('parsley:validator:init');\n },\n // Set new messages locale if we have dictionary loaded in ParsleyConfig.i18n\n setLocale: function setLocale(locale) {\n if ('undefined' === typeof this.catalog[locale]) throw new Error(locale + ' is not available in the catalog');\n this.locale = locale;\n return this;\n },\n // Add a new messages catalog for a given locale. Set locale for this catalog if set === `true`\n addCatalog: function addCatalog(locale, messages, set) {\n if ('object' === _typeof(messages)) this.catalog[locale] = messages;\n if (true === set) return this.setLocale(locale);\n return this;\n },\n // Add a specific message for a given constraint in a given locale\n addMessage: function addMessage(locale, name, message) {\n if ('undefined' === typeof this.catalog[locale]) this.catalog[locale] = {};\n this.catalog[locale][name] = message;\n return this;\n },\n // Add messages for a given locale\n addMessages: function addMessages(locale, nameMessageObject) {\n for (var name in nameMessageObject) {\n this.addMessage(locale, name, nameMessageObject[name]);\n }\n\n return this;\n },\n // Add a new validator\n //\n // addValidator('custom', {\n // requirementType: ['integer', 'integer'],\n // validateString: function(value, from, to) {},\n // priority: 22,\n // messages: {\n // en: \"Hey, that's no good\",\n // fr: \"Aye aye, pas bon du tout\",\n // }\n // })\n //\n // Old API was addValidator(name, function, priority)\n //\n addValidator: function addValidator(name, arg1, arg2) {\n if (this.validators[name]) Utils.warn('Validator \"' + name + '\" is already defined.');else if (Defaults.hasOwnProperty(name)) {\n Utils.warn('\"' + name + '\" is a restricted keyword and is not a valid validator name.');\n return;\n }\n return this._setValidator.apply(this, arguments);\n },\n hasValidator: function hasValidator(name) {\n return !!this.validators[name];\n },\n updateValidator: function updateValidator(name, arg1, arg2) {\n if (!this.validators[name]) {\n Utils.warn('Validator \"' + name + '\" is not already defined.');\n return this.addValidator.apply(this, arguments);\n }\n\n return this._setValidator.apply(this, arguments);\n },\n removeValidator: function removeValidator(name) {\n if (!this.validators[name]) Utils.warn('Validator \"' + name + '\" is not defined.');\n delete this.validators[name];\n return this;\n },\n _setValidator: function _setValidator(name, validator, priority) {\n if ('object' !== _typeof(validator)) {\n // Old style validator, with `fn` and `priority`\n validator = {\n fn: validator,\n priority: priority\n };\n }\n\n if (!validator.validate) {\n validator = new Validator(validator);\n }\n\n this.validators[name] = validator;\n\n for (var locale in validator.messages || {}) {\n this.addMessage(locale, name, validator.messages[locale]);\n }\n\n return this;\n },\n getErrorMessage: function getErrorMessage(constraint) {\n var message; // Type constraints are a bit different, we have to match their requirements too to find right error message\n\n if ('type' === constraint.name) {\n var typeMessages = this.catalog[this.locale][constraint.name] || {};\n message = typeMessages[constraint.requirements];\n } else message = this.formatMessage(this.catalog[this.locale][constraint.name], constraint.requirements);\n\n return message || this.catalog[this.locale].defaultMessage || this.catalog.en.defaultMessage;\n },\n // Kind of light `sprintf()` implementation\n formatMessage: function formatMessage(string, parameters) {\n if ('object' === _typeof(parameters)) {\n for (var i in parameters) {\n string = this.formatMessage(string, parameters[i]);\n }\n\n return string;\n }\n\n return 'string' === typeof string ? string.replace(/%s/i, parameters) : '';\n },\n // Here is the Parsley default validators list.\n // A validator is an object with the following key values:\n // - priority: an integer\n // - requirement: 'string' (default), 'integer', 'number', 'regexp' or an Array of these\n // - validateString, validateMultiple, validateNumber: functions returning `true`, `false` or a promise\n // Alternatively, a validator can be a function that returns such an object\n //\n validators: {\n notblank: {\n validateString: function validateString(value) {\n return /\\S/.test(value);\n },\n priority: 2\n },\n required: {\n validateMultiple: function validateMultiple(values) {\n return values.length > 0;\n },\n validateString: function validateString(value) {\n return /\\S/.test(value);\n },\n priority: 512\n },\n type: {\n validateString: function validateString(value, type) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 'any' : _ref$step,\n _ref$base = _ref.base,\n base = _ref$base === void 0 ? 0 : _ref$base;\n\n var tester = typeTesters[type];\n\n if (!tester) {\n throw new Error('validator type `' + type + '` is not supported');\n }\n\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n if (!tester.test(value)) return false;\n\n if ('number' === type) {\n if (!/^any$/i.test(step || '')) {\n var nb = Number(value);\n var decimals = Math.max(decimalPlaces(step), decimalPlaces(base));\n if (decimalPlaces(nb) > decimals) // Value can't have too many decimals\n return false; // Be careful of rounding errors by using integers.\n\n var toInt = function toInt(f) {\n return Math.round(f * Math.pow(10, decimals));\n };\n\n if ((toInt(nb) - toInt(base)) % toInt(step) != 0) return false;\n }\n }\n\n return true;\n },\n requirementType: {\n '': 'string',\n step: 'string',\n base: 'number'\n },\n priority: 256\n },\n pattern: {\n validateString: function validateString(value, regexp) {\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n return regexp.test(value);\n },\n requirementType: 'regexp',\n priority: 64\n },\n minlength: {\n validateString: function validateString(value, requirement) {\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n return value.length >= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n maxlength: {\n validateString: function validateString(value, requirement) {\n return value.length <= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n length: {\n validateString: function validateString(value, min, max) {\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n return value.length >= min && value.length <= max;\n },\n requirementType: ['integer', 'integer'],\n priority: 30\n },\n mincheck: {\n validateMultiple: function validateMultiple(values, requirement) {\n return values.length >= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n maxcheck: {\n validateMultiple: function validateMultiple(values, requirement) {\n return values.length <= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n check: {\n validateMultiple: function validateMultiple(values, min, max) {\n return values.length >= min && values.length <= max;\n },\n requirementType: ['integer', 'integer'],\n priority: 30\n },\n min: comparisonOperator(function (value, requirement) {\n return value >= requirement;\n }),\n max: comparisonOperator(function (value, requirement) {\n return value <= requirement;\n }),\n range: comparisonOperator(function (value, min, max) {\n return value >= min && value <= max;\n }),\n equalto: {\n validateString: function validateString(value, refOrValue) {\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n var $reference = $(refOrValue);\n if ($reference.length) return value === $reference.val();else return value === refOrValue;\n },\n priority: 256\n },\n euvatin: {\n validateString: function validateString(value, refOrValue) {\n if (!value) {\n return true; // Builtin validators all accept empty strings, except `required` of course\n }\n\n var re = /^[A-Z][A-Z][A-Za-z0-9 -]{2,}$/;\n return re.test(value);\n },\n priority: 30\n }\n }\n };\n\n var UI = {};\n\n var diffResults = function diffResults(newResult, oldResult, deep) {\n var added = [];\n var kept = [];\n\n for (var i = 0; i < newResult.length; i++) {\n var found = false;\n\n for (var j = 0; j < oldResult.length; j++) {\n if (newResult[i].assert.name === oldResult[j].assert.name) {\n found = true;\n break;\n }\n }\n\n if (found) kept.push(newResult[i]);else added.push(newResult[i]);\n }\n\n return {\n kept: kept,\n added: added,\n removed: !deep ? diffResults(oldResult, newResult, true).added : []\n };\n };\n\n UI.Form = {\n _actualizeTriggers: function _actualizeTriggers() {\n var _this = this;\n\n this.$element.on('submit.Parsley', function (evt) {\n _this.onSubmitValidate(evt);\n });\n this.$element.on('click.Parsley', Utils._SubmitSelector, function (evt) {\n _this.onSubmitButton(evt);\n }); // UI could be disabled\n\n if (false === this.options.uiEnabled) return;\n this.element.setAttribute('novalidate', '');\n },\n focus: function focus() {\n this._focusedField = null;\n if (true === this.validationResult || 'none' === this.options.focus) return null;\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i];\n\n if (true !== field.validationResult && field.validationResult.length > 0 && 'undefined' === typeof field.options.noFocus) {\n this._focusedField = field.$element;\n if ('first' === this.options.focus) break;\n }\n }\n\n if (null === this._focusedField) return null;\n return this._focusedField.focus();\n },\n _destroyUI: function _destroyUI() {\n // Reset all event listeners\n this.$element.off('.Parsley');\n }\n };\n UI.Field = {\n _reflowUI: function _reflowUI() {\n this._buildUI(); // If this field doesn't have an active UI don't bother doing something\n\n\n if (!this._ui) return; // Diff between two validation results\n\n var diff = diffResults(this.validationResult, this._ui.lastValidationResult); // Then store current validation result for next reflow\n\n this._ui.lastValidationResult = this.validationResult; // Handle valid / invalid / none field class\n\n this._manageStatusClass(); // Add, remove, updated errors messages\n\n\n this._manageErrorsMessages(diff); // Triggers impl\n\n\n this._actualizeTriggers(); // If field is not valid for the first time, bind keyup trigger to ease UX and quickly inform user\n\n\n if ((diff.kept.length || diff.added.length) && !this._failedOnce) {\n this._failedOnce = true;\n\n this._actualizeTriggers();\n }\n },\n // Returns an array of field's error message(s)\n getErrorsMessages: function getErrorsMessages() {\n // No error message, field is valid\n if (true === this.validationResult) return [];\n var messages = [];\n\n for (var i = 0; i < this.validationResult.length; i++) {\n messages.push(this.validationResult[i].errorMessage || this._getErrorMessage(this.validationResult[i].assert));\n }\n\n return messages;\n },\n // It's a goal of Parsley that this method is no longer required [#1073]\n addError: function addError(name) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n message = _ref.message,\n assert = _ref.assert,\n _ref$updateClass = _ref.updateClass,\n updateClass = _ref$updateClass === void 0 ? true : _ref$updateClass;\n\n this._buildUI();\n\n this._addError(name, {\n message: message,\n assert: assert\n });\n\n if (updateClass) this._errorClass();\n },\n // It's a goal of Parsley that this method is no longer required [#1073]\n updateError: function updateError(name) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n message = _ref2.message,\n assert = _ref2.assert,\n _ref2$updateClass = _ref2.updateClass,\n updateClass = _ref2$updateClass === void 0 ? true : _ref2$updateClass;\n\n this._buildUI();\n\n this._updateError(name, {\n message: message,\n assert: assert\n });\n\n if (updateClass) this._errorClass();\n },\n // It's a goal of Parsley that this method is no longer required [#1073]\n removeError: function removeError(name) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$updateClass = _ref3.updateClass,\n updateClass = _ref3$updateClass === void 0 ? true : _ref3$updateClass;\n\n this._buildUI();\n\n this._removeError(name); // edge case possible here: remove a standard Parsley error that is still failing in this.validationResult\n // but highly improbable cuz' manually removing a well Parsley handled error makes no sense.\n\n\n if (updateClass) this._manageStatusClass();\n },\n _manageStatusClass: function _manageStatusClass() {\n if (this.hasConstraints() && this.needsValidation() && true === this.validationResult) this._successClass();else if (this.validationResult.length > 0) this._errorClass();else this._resetClass();\n },\n _manageErrorsMessages: function _manageErrorsMessages(diff) {\n if ('undefined' !== typeof this.options.errorsMessagesDisabled) return; // Case where we have errorMessage option that configure an unique field error message, regardless failing validators\n\n if ('undefined' !== typeof this.options.errorMessage) {\n if (diff.added.length || diff.kept.length) {\n this._insertErrorWrapper();\n\n if (0 === this._ui.$errorsWrapper.find('.parsley-custom-error-message').length) this._ui.$errorsWrapper.append($(this.options.errorTemplate).addClass('parsley-custom-error-message'));\n\n this._ui.$errorClassHandler.attr('aria-describedby', this._ui.errorsWrapperId);\n\n return this._ui.$errorsWrapper.addClass('filled').attr('aria-hidden', 'false').find('.parsley-custom-error-message').html(this.options.errorMessage);\n }\n\n this._ui.$errorClassHandler.removeAttr('aria-describedby');\n\n return this._ui.$errorsWrapper.removeClass('filled').attr('aria-hidden', 'true').find('.parsley-custom-error-message').remove();\n } // Show, hide, update failing constraints messages\n\n\n for (var i = 0; i < diff.removed.length; i++) {\n this._removeError(diff.removed[i].assert.name);\n }\n\n for (i = 0; i < diff.added.length; i++) {\n this._addError(diff.added[i].assert.name, {\n message: diff.added[i].errorMessage,\n assert: diff.added[i].assert\n });\n }\n\n for (i = 0; i < diff.kept.length; i++) {\n this._updateError(diff.kept[i].assert.name, {\n message: diff.kept[i].errorMessage,\n assert: diff.kept[i].assert\n });\n }\n },\n _addError: function _addError(name, _ref4) {\n var message = _ref4.message,\n assert = _ref4.assert;\n\n this._insertErrorWrapper();\n\n this._ui.$errorClassHandler.attr('aria-describedby', this._ui.errorsWrapperId);\n\n this._ui.$errorsWrapper.addClass('filled').attr('aria-hidden', 'false').append($(this.options.errorTemplate).addClass('parsley-' + name).html(message || this._getErrorMessage(assert)));\n },\n _updateError: function _updateError(name, _ref5) {\n var message = _ref5.message,\n assert = _ref5.assert;\n\n this._ui.$errorsWrapper.addClass('filled').find('.parsley-' + name).html(message || this._getErrorMessage(assert));\n },\n _removeError: function _removeError(name) {\n this._ui.$errorClassHandler.removeAttr('aria-describedby');\n\n this._ui.$errorsWrapper.removeClass('filled').attr('aria-hidden', 'true').find('.parsley-' + name).remove();\n },\n _getErrorMessage: function _getErrorMessage(constraint) {\n var customConstraintErrorMessage = constraint.name + 'Message';\n if ('undefined' !== typeof this.options[customConstraintErrorMessage]) return window.Parsley.formatMessage(this.options[customConstraintErrorMessage], constraint.requirements);\n return window.Parsley.getErrorMessage(constraint);\n },\n _buildUI: function _buildUI() {\n // UI could be already built or disabled\n if (this._ui || false === this.options.uiEnabled) return;\n var _ui = {}; // Give field its Parsley id in DOM\n\n this.element.setAttribute(this.options.namespace + 'id', this.__id__);\n /** Generate important UI elements and store them in this **/\n // $errorClassHandler is the $element that woul have parsley-error and parsley-success classes\n\n _ui.$errorClassHandler = this._manageClassHandler(); // $errorsWrapper is a div that would contain the various field errors, it will be appended into $errorsContainer\n\n _ui.errorsWrapperId = 'parsley-id-' + (this.options.multiple ? 'multiple-' + this.options.multiple : this.__id__);\n _ui.$errorsWrapper = $(this.options.errorsWrapper).attr('id', _ui.errorsWrapperId); // ValidationResult UI storage to detect what have changed bwt two validations, and update DOM accordingly\n\n _ui.lastValidationResult = [];\n _ui.validationInformationVisible = false; // Store it in this for later\n\n this._ui = _ui;\n },\n // Determine which element will have `parsley-error` and `parsley-success` classes\n _manageClassHandler: function _manageClassHandler() {\n // Class handled could also be determined by function given in Parsley options\n if ('string' === typeof this.options.classHandler && $(this.options.classHandler).length) return $(this.options.classHandler); // Class handled could also be determined by function given in Parsley options\n\n var $handlerFunction = this.options.classHandler; // It might also be the function name of a global function\n\n if ('string' === typeof this.options.classHandler && 'function' === typeof window[this.options.classHandler]) $handlerFunction = window[this.options.classHandler];\n\n if ('function' === typeof $handlerFunction) {\n var $handler = $handlerFunction.call(this, this); // If this function returned a valid existing DOM element, go for it\n\n if ('undefined' !== typeof $handler && $handler.length) return $handler;\n } else if ('object' === _typeof($handlerFunction) && $handlerFunction instanceof jQuery && $handlerFunction.length) {\n return $handlerFunction;\n } else if ($handlerFunction) {\n Utils.warn('The class handler `' + $handlerFunction + '` does not exist in DOM nor as a global JS function');\n }\n\n return this._inputHolder();\n },\n _inputHolder: function _inputHolder() {\n // if simple element (input, texatrea, select...) it will perfectly host the classes and precede the error container\n if (!this.options.multiple || this.element.nodeName === 'SELECT') return this.$element; // But if multiple element (radio, checkbox), that would be their parent\n\n return this.$element.parent();\n },\n _insertErrorWrapper: function _insertErrorWrapper() {\n var $errorsContainer = this.options.errorsContainer; // Nothing to do if already inserted\n\n if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();\n\n if ('string' === typeof $errorsContainer) {\n if ($($errorsContainer).length) return $($errorsContainer).append(this._ui.$errorsWrapper);else if ('function' === typeof window[$errorsContainer]) $errorsContainer = window[$errorsContainer];else Utils.warn('The errors container `' + $errorsContainer + '` does not exist in DOM nor as a global JS function');\n }\n\n if ('function' === typeof $errorsContainer) $errorsContainer = $errorsContainer.call(this, this);\n if ('object' === _typeof($errorsContainer) && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);\n return this._inputHolder().after(this._ui.$errorsWrapper);\n },\n _actualizeTriggers: function _actualizeTriggers() {\n var _this2 = this;\n\n var $toBind = this._findRelated();\n\n var trigger; // Remove Parsley events already bound on this field\n\n $toBind.off('.Parsley');\n if (this._failedOnce) $toBind.on(Utils.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () {\n _this2._validateIfNeeded();\n });else if (trigger = Utils.namespaceEvents(this.options.trigger, 'Parsley')) {\n $toBind.on(trigger, function (event) {\n _this2._validateIfNeeded(event);\n });\n }\n },\n _validateIfNeeded: function _validateIfNeeded(event) {\n var _this3 = this;\n\n // For keyup, keypress, keydown, input... events that could be a little bit obstrusive\n // do not validate if val length < min threshold on first validation. Once field have been validated once and info\n // about success or failure have been displayed, always validate with this trigger to reflect every yalidation change.\n if (event && /key|input/.test(event.type)) if (!(this._ui && this._ui.validationInformationVisible) && this.getValue().length <= this.options.validationThreshold) return;\n\n if (this.options.debounce) {\n window.clearTimeout(this._debounced);\n this._debounced = window.setTimeout(function () {\n return _this3.validate();\n }, this.options.debounce);\n } else this.validate();\n },\n _resetUI: function _resetUI() {\n // Reset all event listeners\n this._failedOnce = false;\n\n this._actualizeTriggers(); // Nothing to do if UI never initialized for this field\n\n\n if ('undefined' === typeof this._ui) return; // Reset all errors' li\n\n this._ui.$errorsWrapper.removeClass('filled').children().remove(); // Reset validation class\n\n\n this._resetClass(); // Reset validation flags and last validation result\n\n\n this._ui.lastValidationResult = [];\n this._ui.validationInformationVisible = false;\n },\n _destroyUI: function _destroyUI() {\n this._resetUI();\n\n if ('undefined' !== typeof this._ui) this._ui.$errorsWrapper.remove();\n delete this._ui;\n },\n _successClass: function _successClass() {\n this._ui.validationInformationVisible = true;\n\n this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass);\n },\n _errorClass: function _errorClass() {\n this._ui.validationInformationVisible = true;\n\n this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass);\n },\n _resetClass: function _resetClass() {\n this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass);\n }\n };\n\n var Form = function Form(element, domOptions, options) {\n this.__class__ = 'Form';\n this.element = element;\n this.$element = $(element);\n this.domOptions = domOptions;\n this.options = options;\n this.parent = window.Parsley;\n this.fields = [];\n this.validationResult = null;\n };\n\n var statusMapping = {\n pending: null,\n resolved: true,\n rejected: false\n };\n Form.prototype = {\n onSubmitValidate: function onSubmitValidate(event) {\n var _this = this;\n\n // This is a Parsley generated submit event, do not validate, do not prevent, simply exit and keep normal behavior\n if (true === event.parsley) return; // If we didn't come here through a submit button, use the first one in the form\n\n var submitSource = this._submitSource || this.$element.find(Utils._SubmitSelector)[0];\n this._submitSource = null;\n this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);\n if (submitSource && null !== submitSource.getAttribute('formnovalidate')) return;\n window.Parsley._remoteCache = {};\n var promise = this.whenValidate({\n event: event\n });\n\n if ('resolved' === promise.state() && false !== this._trigger('submit')) ; else {\n // Rejected or pending: cancel this submit\n event.stopImmediatePropagation();\n event.preventDefault();\n if ('pending' === promise.state()) promise.done(function () {\n _this._submit(submitSource);\n });\n }\n },\n onSubmitButton: function onSubmitButton(event) {\n this._submitSource = event.currentTarget;\n },\n // internal\n // _submit submits the form, this time without going through the validations.\n // Care must be taken to \"fake\" the actual submit button being clicked.\n _submit: function _submit(submitSource) {\n if (false === this._trigger('submit')) return; // Add submit button's data\n\n if (submitSource) {\n var $synthetic = this.$element.find('.parsley-synthetic-submit-button').prop('disabled', false);\n if (0 === $synthetic.length) $synthetic = $('').appendTo(this.$element);\n $synthetic.attr({\n name: submitSource.getAttribute('name'),\n value: submitSource.getAttribute('value')\n });\n }\n\n this.$element.trigger(_extends($.Event('submit'), {\n parsley: true\n }));\n },\n // Performs validation on fields while triggering events.\n // @returns `true` if all validations succeeds, `false`\n // if a failure is immediately detected, or `null`\n // if dependant on a promise.\n // Consider using `whenValidate` instead.\n validate: function validate(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n Utils.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.');\n\n var _arguments = Array.prototype.slice.call(arguments),\n group = _arguments[0],\n force = _arguments[1],\n event = _arguments[2];\n\n options = {\n group: group,\n force: force,\n event: event\n };\n }\n\n return statusMapping[this.whenValidate(options).state()];\n },\n whenValidate: function whenValidate() {\n var _this2 = this,\n _Utils$all$done$fail$;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n group = _ref.group,\n force = _ref.force,\n event = _ref.event;\n\n this.submitEvent = event;\n\n if (event) {\n this.submitEvent = _extends({}, event, {\n preventDefault: function preventDefault() {\n Utils.warnOnce(\"Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`\");\n _this2.validationResult = false;\n }\n });\n }\n\n this.validationResult = true; // fire validate event to eventually modify things before every validation\n\n this._trigger('validate'); // Refresh form DOM options and form's fields that could have changed\n\n\n this._refreshFields();\n\n var promises = this._withoutReactualizingFormOptions(function () {\n return $.map(_this2.fields, function (field) {\n return field.whenValidate({\n force: force,\n group: group\n });\n });\n });\n\n return (_Utils$all$done$fail$ = Utils.all(promises).done(function () {\n _this2._trigger('success');\n }).fail(function () {\n _this2.validationResult = false;\n\n _this2.focus();\n\n _this2._trigger('error');\n }).always(function () {\n _this2._trigger('validated');\n })).pipe.apply(_Utils$all$done$fail$, _toConsumableArray(this._pipeAccordingToValidationResult()));\n },\n // Iterate over refreshed fields, and stop on first failure.\n // Returns `true` if all fields are valid, `false` if a failure is detected\n // or `null` if the result depends on an unresolved promise.\n // Prefer using `whenValid` instead.\n isValid: function isValid(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n Utils.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.');\n\n var _arguments2 = Array.prototype.slice.call(arguments),\n group = _arguments2[0],\n force = _arguments2[1];\n\n options = {\n group: group,\n force: force\n };\n }\n\n return statusMapping[this.whenValid(options).state()];\n },\n // Iterate over refreshed fields and validate them.\n // Returns a promise.\n // A validation that immediately fails will interrupt the validations.\n whenValid: function whenValid() {\n var _this3 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n group = _ref2.group,\n force = _ref2.force;\n\n this._refreshFields();\n\n var promises = this._withoutReactualizingFormOptions(function () {\n return $.map(_this3.fields, function (field) {\n return field.whenValid({\n group: group,\n force: force\n });\n });\n });\n\n return Utils.all(promises);\n },\n refresh: function refresh() {\n this._refreshFields();\n\n return this;\n },\n // Reset UI\n reset: function reset() {\n // Form case: emit a reset event for each field\n for (var i = 0; i < this.fields.length; i++) {\n this.fields[i].reset();\n }\n\n this._trigger('reset');\n },\n // Destroy Parsley instance (+ UI)\n destroy: function destroy() {\n // Field case: emit destroy event to clean UI and then destroy stored instance\n this._destroyUI(); // Form case: destroy all its fields and then destroy stored instance\n\n\n for (var i = 0; i < this.fields.length; i++) {\n this.fields[i].destroy();\n }\n\n this.$element.removeData('Parsley');\n\n this._trigger('destroy');\n },\n _refreshFields: function _refreshFields() {\n return this.actualizeOptions()._bindFields();\n },\n _bindFields: function _bindFields() {\n var _this4 = this;\n\n var oldFields = this.fields;\n this.fields = [];\n this.fieldsMappedById = {};\n\n this._withoutReactualizingFormOptions(function () {\n _this4.$element.find(_this4.options.inputs).not(_this4.options.excluded).not(\"[\".concat(_this4.options.namespace, \"excluded=true]\")).each(function (_, element) {\n var fieldInstance = new window.Parsley.Factory(element, {}, _this4); // Only add valid and not excluded `Field` and `FieldMultiple` children\n\n if ('Field' === fieldInstance.__class__ || 'FieldMultiple' === fieldInstance.__class__) {\n var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;\n\n if ('undefined' === typeof _this4.fieldsMappedById[uniqueId]) {\n _this4.fieldsMappedById[uniqueId] = fieldInstance;\n\n _this4.fields.push(fieldInstance);\n }\n }\n });\n\n $.each(Utils.difference(oldFields, _this4.fields), function (_, field) {\n field.reset();\n });\n });\n\n return this;\n },\n // Internal only.\n // Looping on a form's fields to do validation or similar\n // will trigger reactualizing options on all of them, which\n // in turn will reactualize the form's options.\n // To avoid calling actualizeOptions so many times on the form\n // for nothing, _withoutReactualizingFormOptions temporarily disables\n // the method actualizeOptions on this form while `fn` is called.\n _withoutReactualizingFormOptions: function _withoutReactualizingFormOptions(fn) {\n var oldActualizeOptions = this.actualizeOptions;\n\n this.actualizeOptions = function () {\n return this;\n };\n\n var result = fn();\n this.actualizeOptions = oldActualizeOptions;\n return result;\n },\n // Internal only.\n // Shortcut to trigger an event\n // Returns true iff event is not interrupted and default not prevented.\n _trigger: function _trigger(eventName) {\n return this.trigger('form:' + eventName);\n }\n };\n\n var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {\n var validatorSpec = window.Parsley._validatorRegistry.validators[name];\n var validator = new Validator(validatorSpec);\n priority = priority || parsleyField.options[name + 'Priority'] || validator.priority;\n isDomConstraint = true === isDomConstraint;\n\n _extends(this, {\n validator: validator,\n name: name,\n requirements: requirements,\n priority: priority,\n isDomConstraint: isDomConstraint\n });\n\n this._parseRequirements(parsleyField.options);\n };\n\n var capitalize = function capitalize(str) {\n var cap = str[0].toUpperCase();\n return cap + str.slice(1);\n };\n\n Constraint.prototype = {\n validate: function validate(value, instance) {\n var _this$validator;\n\n return (_this$validator = this.validator).validate.apply(_this$validator, [value].concat(_toConsumableArray(this.requirementList), [instance]));\n },\n _parseRequirements: function _parseRequirements(options) {\n var _this = this;\n\n this.requirementList = this.validator.parseRequirements(this.requirements, function (key) {\n return options[_this.name + capitalize(key)];\n });\n }\n };\n\n var Field = function Field(field, domOptions, options, parsleyFormInstance) {\n this.__class__ = 'Field';\n this.element = field;\n this.$element = $(field); // Set parent if we have one\n\n if ('undefined' !== typeof parsleyFormInstance) {\n this.parent = parsleyFormInstance;\n }\n\n this.options = options;\n this.domOptions = domOptions; // Initialize some properties\n\n this.constraints = [];\n this.constraintsByName = {};\n this.validationResult = true; // Bind constraints\n\n this._bindConstraints();\n };\n\n var statusMapping$1 = {\n pending: null,\n resolved: true,\n rejected: false\n };\n Field.prototype = {\n // # Public API\n // Validate field and trigger some events for mainly `UI`\n // @returns `true`, an array of the validators that failed, or\n // `null` if validation is not finished. Prefer using whenValidate\n validate: function validate(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n Utils.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.');\n options = {\n options: options\n };\n }\n\n var promise = this.whenValidate(options);\n if (!promise) // If excluded with `group` option\n return true;\n\n switch (promise.state()) {\n case 'pending':\n return null;\n\n case 'resolved':\n return true;\n\n case 'rejected':\n return this.validationResult;\n }\n },\n // Validate field and trigger some events for mainly `UI`\n // @returns a promise that succeeds only when all validations do\n // or `undefined` if field is not in the given `group`.\n whenValidate: function whenValidate() {\n var _this$whenValid$alway,\n _this = this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n force = _ref.force,\n group = _ref.group;\n\n // do not validate a field if not the same as given validation group\n this.refresh();\n if (group && !this._isInGroup(group)) return;\n this.value = this.getValue(); // Field Validate event. `this.value` could be altered for custom needs\n\n this._trigger('validate');\n\n return (_this$whenValid$alway = this.whenValid({\n force: force,\n value: this.value,\n _refreshed: true\n }).always(function () {\n _this._reflowUI();\n }).done(function () {\n _this._trigger('success');\n }).fail(function () {\n _this._trigger('error');\n }).always(function () {\n _this._trigger('validated');\n })).pipe.apply(_this$whenValid$alway, _toConsumableArray(this._pipeAccordingToValidationResult()));\n },\n hasConstraints: function hasConstraints() {\n return 0 !== this.constraints.length;\n },\n // An empty optional field does not need validation\n needsValidation: function needsValidation(value) {\n if ('undefined' === typeof value) value = this.getValue(); // If a field is empty and not required, it is valid\n // Except if `data-parsley-validate-if-empty` explicitely added, useful for some custom validators\n\n if (!value.length && !this._isRequired() && 'undefined' === typeof this.options.validateIfEmpty) return false;\n return true;\n },\n _isInGroup: function _isInGroup(group) {\n if (Array.isArray(this.options.group)) return -1 !== $.inArray(group, this.options.group);\n return this.options.group === group;\n },\n // Just validate field. Do not trigger any event.\n // Returns `true` iff all constraints pass, `false` if there are failures,\n // or `null` if the result can not be determined yet (depends on a promise)\n // See also `whenValid`.\n isValid: function isValid(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n Utils.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.');\n\n var _arguments = Array.prototype.slice.call(arguments),\n force = _arguments[0],\n value = _arguments[1];\n\n options = {\n force: force,\n value: value\n };\n }\n\n var promise = this.whenValid(options);\n if (!promise) // Excluded via `group`\n return true;\n return statusMapping$1[promise.state()];\n },\n // Just validate field. Do not trigger any event.\n // @returns a promise that succeeds only when all validations do\n // or `undefined` if the field is not in the given `group`.\n // The argument `force` will force validation of empty fields.\n // If a `value` is given, it will be validated instead of the value of the input.\n whenValid: function whenValid() {\n var _this2 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$force = _ref2.force,\n force = _ref2$force === void 0 ? false : _ref2$force,\n value = _ref2.value,\n group = _ref2.group,\n _refreshed = _ref2._refreshed;\n\n // Recompute options and rebind constraints to have latest changes\n if (!_refreshed) this.refresh(); // do not validate a field if not the same as given validation group\n\n if (group && !this._isInGroup(group)) return;\n this.validationResult = true; // A field without constraint is valid\n\n if (!this.hasConstraints()) return $.when(); // Value could be passed as argument, needed to add more power to 'field:validate'\n\n if ('undefined' === typeof value || null === value) value = this.getValue();\n if (!this.needsValidation(value) && true !== force) return $.when();\n\n var groupedConstraints = this._getGroupedConstraints();\n\n var promises = [];\n $.each(groupedConstraints, function (_, constraints) {\n // Process one group of constraints at a time, we validate the constraints\n // and combine the promises together.\n var promise = Utils.all($.map(constraints, function (constraint) {\n return _this2._validateConstraint(value, constraint);\n }));\n promises.push(promise);\n if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed\n });\n return Utils.all(promises);\n },\n // @returns a promise\n _validateConstraint: function _validateConstraint(value, constraint) {\n var _this3 = this;\n\n var result = constraint.validate(value, this); // Map false to a failed promise\n\n if (false === result) result = $.Deferred().reject(); // Make sure we return a promise and that we record failures\n\n return Utils.all([result]).fail(function (errorMessage) {\n if (!(_this3.validationResult instanceof Array)) _this3.validationResult = [];\n\n _this3.validationResult.push({\n assert: constraint,\n errorMessage: 'string' === typeof errorMessage && errorMessage\n });\n });\n },\n // @returns Parsley field computed value that could be overrided or configured in DOM\n getValue: function getValue() {\n var value; // Value could be overriden in DOM or with explicit options\n\n if ('function' === typeof this.options.value) value = this.options.value(this);else if ('undefined' !== typeof this.options.value) value = this.options.value;else value = this.$element.val(); // Handle wrong DOM or configurations\n\n if ('undefined' === typeof value || null === value) return '';\n return this._handleWhitespace(value);\n },\n // Reset UI\n reset: function reset() {\n this._resetUI();\n\n return this._trigger('reset');\n },\n // Destroy Parsley instance (+ UI)\n destroy: function destroy() {\n // Field case: emit destroy event to clean UI and then destroy stored instance\n this._destroyUI();\n\n this.$element.removeData('Parsley');\n this.$element.removeData('FieldMultiple');\n\n this._trigger('destroy');\n },\n // Actualize options and rebind constraints\n refresh: function refresh() {\n this._refreshConstraints();\n\n return this;\n },\n _refreshConstraints: function _refreshConstraints() {\n return this.actualizeOptions()._bindConstraints();\n },\n refreshConstraints: function refreshConstraints() {\n Utils.warnOnce(\"Parsley's refreshConstraints is deprecated. Please use refresh\");\n return this.refresh();\n },\n\n /**\n * Add a new constraint to a field\n *\n * @param {String} name\n * @param {Mixed} requirements optional\n * @param {Number} priority optional\n * @param {Boolean} isDomConstraint optional\n */\n addConstraint: function addConstraint(name, requirements, priority, isDomConstraint) {\n if (window.Parsley._validatorRegistry.validators[name]) {\n var constraint = new Constraint(this, name, requirements, priority, isDomConstraint); // if constraint already exist, delete it and push new version\n\n if ('undefined' !== this.constraintsByName[constraint.name]) this.removeConstraint(constraint.name);\n this.constraints.push(constraint);\n this.constraintsByName[constraint.name] = constraint;\n }\n\n return this;\n },\n // Remove a constraint\n removeConstraint: function removeConstraint(name) {\n for (var i = 0; i < this.constraints.length; i++) {\n if (name === this.constraints[i].name) {\n this.constraints.splice(i, 1);\n break;\n }\n }\n\n delete this.constraintsByName[name];\n return this;\n },\n // Update a constraint (Remove + re-add)\n updateConstraint: function updateConstraint(name, parameters, priority) {\n return this.removeConstraint(name).addConstraint(name, parameters, priority);\n },\n // # Internals\n // Internal only.\n // Bind constraints from config + options + DOM\n _bindConstraints: function _bindConstraints() {\n var constraints = [];\n var constraintsByName = {}; // clean all existing DOM constraints to only keep javascript user constraints\n\n for (var i = 0; i < this.constraints.length; i++) {\n if (false === this.constraints[i].isDomConstraint) {\n constraints.push(this.constraints[i]);\n constraintsByName[this.constraints[i].name] = this.constraints[i];\n }\n }\n\n this.constraints = constraints;\n this.constraintsByName = constraintsByName; // then re-add Parsley DOM-API constraints\n\n for (var name in this.options) {\n this.addConstraint(name, this.options[name], undefined, true);\n } // finally, bind special HTML5 constraints\n\n\n return this._bindHtml5Constraints();\n },\n // Internal only.\n // Bind specific HTML5 constraints to be HTML5 compliant\n _bindHtml5Constraints: function _bindHtml5Constraints() {\n // html5 required\n if (null !== this.element.getAttribute('required')) this.addConstraint('required', true, undefined, true); // html5 pattern\n\n if (null !== this.element.getAttribute('pattern')) this.addConstraint('pattern', this.element.getAttribute('pattern'), undefined, true); // range\n\n var min = this.element.getAttribute('min');\n var max = this.element.getAttribute('max');\n if (null !== min && null !== max) this.addConstraint('range', [min, max], undefined, true); // HTML5 min\n else if (null !== min) this.addConstraint('min', min, undefined, true); // HTML5 max\n else if (null !== max) this.addConstraint('max', max, undefined, true); // length\n\n if (null !== this.element.getAttribute('minlength') && null !== this.element.getAttribute('maxlength')) this.addConstraint('length', [this.element.getAttribute('minlength'), this.element.getAttribute('maxlength')], undefined, true); // HTML5 minlength\n else if (null !== this.element.getAttribute('minlength')) this.addConstraint('minlength', this.element.getAttribute('minlength'), undefined, true); // HTML5 maxlength\n else if (null !== this.element.getAttribute('maxlength')) this.addConstraint('maxlength', this.element.getAttribute('maxlength'), undefined, true); // html5 types\n\n var type = Utils.getType(this.element); // Small special case here for HTML5 number: integer validator if step attribute is undefined or an integer value, number otherwise\n\n if ('number' === type) {\n return this.addConstraint('type', ['number', {\n step: this.element.getAttribute('step') || '1',\n base: min || this.element.getAttribute('value')\n }], undefined, true); // Regular other HTML5 supported types\n } else if (/^(email|url|range|date)$/i.test(type)) {\n return this.addConstraint('type', type, undefined, true);\n }\n\n return this;\n },\n // Internal only.\n // Field is required if have required constraint without `false` value\n _isRequired: function _isRequired() {\n if ('undefined' === typeof this.constraintsByName.required) return false;\n return false !== this.constraintsByName.required.requirements;\n },\n // Internal only.\n // Shortcut to trigger an event\n _trigger: function _trigger(eventName) {\n return this.trigger('field:' + eventName);\n },\n // Internal only\n // Handles whitespace in a value\n // Use `data-parsley-whitespace=\"squish\"` to auto squish input value\n // Use `data-parsley-whitespace=\"trim\"` to auto trim input value\n _handleWhitespace: function _handleWhitespace(value) {\n if (true === this.options.trimValue) Utils.warnOnce('data-parsley-trim-value=\"true\" is deprecated, please use data-parsley-whitespace=\"trim\"');\n if ('squish' === this.options.whitespace) value = value.replace(/\\s{2,}/g, ' ');\n if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = Utils.trimString(value);\n return value;\n },\n _isDateInput: function _isDateInput() {\n var c = this.constraintsByName.type;\n return c && c.requirements === 'date';\n },\n // Internal only.\n // Returns the constraints, grouped by descending priority.\n // The result is thus an array of arrays of constraints.\n _getGroupedConstraints: function _getGroupedConstraints() {\n if (false === this.options.priorityEnabled) return [this.constraints];\n var groupedConstraints = [];\n var index = {}; // Create array unique of priorities\n\n for (var i = 0; i < this.constraints.length; i++) {\n var p = this.constraints[i].priority;\n if (!index[p]) groupedConstraints.push(index[p] = []);\n index[p].push(this.constraints[i]);\n } // Sort them by priority DESC\n\n\n groupedConstraints.sort(function (a, b) {\n return b[0].priority - a[0].priority;\n });\n return groupedConstraints;\n }\n };\n\n var Multiple = function Multiple() {\n this.__class__ = 'FieldMultiple';\n };\n\n Multiple.prototype = {\n // Add new `$element` sibling for multiple field\n addElement: function addElement($element) {\n this.$elements.push($element);\n return this;\n },\n // See `Field._refreshConstraints()`\n _refreshConstraints: function _refreshConstraints() {\n var fieldConstraints;\n this.constraints = []; // Select multiple special treatment\n\n if (this.element.nodeName === 'SELECT') {\n this.actualizeOptions()._bindConstraints();\n\n return this;\n } // Gather all constraints for each input in the multiple group\n\n\n for (var i = 0; i < this.$elements.length; i++) {\n // Check if element have not been dynamically removed since last binding\n if (!$('html').has(this.$elements[i]).length) {\n this.$elements.splice(i, 1);\n continue;\n }\n\n fieldConstraints = this.$elements[i].data('FieldMultiple')._refreshConstraints().constraints;\n\n for (var j = 0; j < fieldConstraints.length; j++) {\n this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);\n }\n }\n\n return this;\n },\n // See `Field.getValue()`\n getValue: function getValue() {\n // Value could be overriden in DOM\n if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value; // Radio input case\n\n if (this.element.nodeName === 'INPUT') {\n var type = Utils.getType(this.element);\n if (type === 'radio') return this._findRelated().filter(':checked').val() || ''; // checkbox input case\n\n if (type === 'checkbox') {\n var values = [];\n\n this._findRelated().filter(':checked').each(function () {\n values.push($(this).val());\n });\n\n return values;\n }\n } // Select multiple case\n\n\n if (this.element.nodeName === 'SELECT' && null === this.$element.val()) return []; // Default case that should never happen\n\n return this.$element.val();\n },\n _init: function _init() {\n this.$elements = [this.$element];\n return this;\n }\n };\n\n var Factory = function Factory(element, options, parsleyFormInstance) {\n this.element = element;\n this.$element = $(element); // If the element has already been bound, returns its saved Parsley instance\n\n var savedparsleyFormInstance = this.$element.data('Parsley');\n\n if (savedparsleyFormInstance) {\n // If the saved instance has been bound without a Form parent and there is one given in this call, add it\n if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {\n savedparsleyFormInstance.parent = parsleyFormInstance;\n\n savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);\n }\n\n if ('object' === _typeof(options)) {\n _extends(savedparsleyFormInstance.options, options);\n }\n\n return savedparsleyFormInstance;\n } // Parsley must be instantiated with a DOM element or jQuery $element\n\n\n if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');\n if ('undefined' !== typeof parsleyFormInstance && 'Form' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a Form instance');\n this.parent = parsleyFormInstance || window.Parsley;\n return this.init(options);\n };\n\n Factory.prototype = {\n init: function init(options) {\n this.__class__ = 'Parsley';\n this.__version__ = '2.9.2';\n this.__id__ = Utils.generateID(); // Pre-compute options\n\n this._resetOptions(options); // A Form instance is obviously a `
    ` element but also every node that is not an input and has the `data-parsley-validate` attribute\n\n\n if (this.element.nodeName === 'FORM' || Utils.checkAttr(this.element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm'); // Every other element is bound as a `Field` or `FieldMultiple`\n\n return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');\n },\n isMultiple: function isMultiple() {\n var type = Utils.getType(this.element);\n return type === 'radio' || type === 'checkbox' || this.element.nodeName === 'SELECT' && null !== this.element.getAttribute('multiple');\n },\n // Multiples fields are a real nightmare :(\n // Maybe some refactoring would be appreciated here...\n handleMultiple: function handleMultiple() {\n var _this = this;\n\n var name;\n var parsleyMultipleInstance; // Handle multiple name\n\n this.options.multiple = this.options.multiple || (name = this.element.getAttribute('name')) || this.element.getAttribute('id'); // Special select multiple input\n\n if (this.element.nodeName === 'SELECT' && null !== this.element.getAttribute('multiple')) {\n this.options.multiple = this.options.multiple || this.__id__;\n return this.bind('parsleyFieldMultiple'); // Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it\n } else if (!this.options.multiple) {\n Utils.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element);\n return this;\n } // Remove special chars\n\n\n this.options.multiple = this.options.multiple.replace(/(:|\\.|\\[|\\]|\\{|\\}|\\$)/g, ''); // Add proper `data-parsley-multiple` to siblings if we have a valid multiple name\n\n if (name) {\n $('input[name=\"' + name + '\"]').each(function (i, input) {\n var type = Utils.getType(input);\n if (type === 'radio' || type === 'checkbox') input.setAttribute(_this.options.namespace + 'multiple', _this.options.multiple);\n });\n } // Check here if we don't already have a related multiple instance saved\n\n\n var $previouslyRelated = this._findRelated();\n\n for (var i = 0; i < $previouslyRelated.length; i++) {\n parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');\n\n if ('undefined' !== typeof parsleyMultipleInstance) {\n if (!this.$element.data('FieldMultiple')) {\n parsleyMultipleInstance.addElement(this.$element);\n }\n\n break;\n }\n } // Create a secret Field instance for every multiple field. It will be stored in `data('FieldMultiple')`\n // And will be useful later to access classic `Field` stuff while being in a `FieldMultiple` instance\n\n\n this.bind('parsleyField', true);\n return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');\n },\n // Return proper `Form`, `Field` or `FieldMultiple`\n bind: function bind(type, doNotStore) {\n var parsleyInstance;\n\n switch (type) {\n case 'parsleyForm':\n parsleyInstance = $.extend(new Form(this.element, this.domOptions, this.options), new Base(), window.ParsleyExtend)._bindFields();\n break;\n\n case 'parsleyField':\n parsleyInstance = $.extend(new Field(this.element, this.domOptions, this.options, this.parent), new Base(), window.ParsleyExtend);\n break;\n\n case 'parsleyFieldMultiple':\n parsleyInstance = $.extend(new Field(this.element, this.domOptions, this.options, this.parent), new Multiple(), new Base(), window.ParsleyExtend)._init();\n break;\n\n default:\n throw new Error(type + 'is not a supported Parsley type');\n }\n\n if (this.options.multiple) Utils.setAttr(this.element, this.options.namespace, 'multiple', this.options.multiple);\n\n if ('undefined' !== typeof doNotStore) {\n this.$element.data('FieldMultiple', parsleyInstance);\n return parsleyInstance;\n } // Store the freshly bound instance in a DOM element for later access using jQuery `data()`\n\n\n this.$element.data('Parsley', parsleyInstance); // Tell the world we have a new Form or Field instance!\n\n parsleyInstance._actualizeTriggers();\n\n parsleyInstance._trigger('init');\n\n return parsleyInstance;\n }\n };\n\n var vernums = $.fn.jquery.split('.');\n\n if (parseInt(vernums[0]) <= 1 && parseInt(vernums[1]) < 8) {\n throw \"The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.\";\n }\n\n if (!vernums.forEach) {\n Utils.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim');\n } // Inherit `on`, `off` & `trigger` to Parsley:\n\n\n var Parsley = _extends(new Base(), {\n element: document,\n $element: $(document),\n actualizeOptions: null,\n _resetOptions: null,\n Factory: Factory,\n version: '2.9.2'\n }); // Supplement Field and Form with Base\n // This way, the constructors will have access to those methods\n\n\n _extends(Field.prototype, UI.Field, Base.prototype);\n\n _extends(Form.prototype, UI.Form, Base.prototype); // Inherit actualizeOptions and _resetOptions:\n\n\n _extends(Factory.prototype, Base.prototype); // ### jQuery API\n // `$('.elem').parsley(options)` or `$('.elem').psly(options)`\n\n\n $.fn.parsley = $.fn.psly = function (options) {\n if (this.length > 1) {\n var instances = [];\n this.each(function () {\n instances.push($(this).parsley(options));\n });\n return instances;\n } // Return undefined if applied to non existing DOM element\n\n\n if (this.length == 0) {\n return;\n }\n\n return new Factory(this[0], options);\n }; // ### Field and Form extension\n // Ensure the extension is now defined if it wasn't previously\n\n\n if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {}; // ### Parsley config\n // Inherit from ParsleyDefault, and copy over any existing values\n\n Parsley.options = _extends(Utils.objectCreate(Defaults), window.ParsleyConfig);\n window.ParsleyConfig = Parsley.options; // Old way of accessing global options\n // ### Globals\n\n window.Parsley = window.psly = Parsley;\n Parsley.Utils = Utils;\n window.ParsleyUtils = {};\n $.each(Utils, function (key, value) {\n if ('function' === typeof value) {\n window.ParsleyUtils[key] = function () {\n Utils.warnOnce('Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead.');\n return Utils[key].apply(Utils, arguments);\n };\n }\n }); // ### Define methods that forward to the registry, and deprecate all access except through window.Parsley\n\n var registry = window.Parsley._validatorRegistry = new ValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n);\n window.ParsleyValidator = {};\n $.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator hasValidator'.split(' '), function (i, method) {\n window.Parsley[method] = function () {\n return registry[method].apply(registry, arguments);\n };\n\n window.ParsleyValidator[method] = function () {\n var _window$Parsley;\n\n Utils.warnOnce(\"Accessing the method '\".concat(method, \"' through Validator is deprecated. Simply call 'window.Parsley.\").concat(method, \"(...)'\"));\n return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);\n };\n }); // ### UI\n // Deprecated global object\n\n window.Parsley.UI = UI;\n window.ParsleyUI = {\n removeError: function removeError(instance, name, doNotUpdateClass) {\n var updateClass = true !== doNotUpdateClass;\n Utils.warnOnce(\"Accessing UI is deprecated. Call 'removeError' on the instance directly. Please comment in issue 1073 as to your need to call this method.\");\n return instance.removeError(name, {\n updateClass: updateClass\n });\n },\n getErrorsMessages: function getErrorsMessages(instance) {\n Utils.warnOnce(\"Accessing UI is deprecated. Call 'getErrorsMessages' on the instance directly.\");\n return instance.getErrorsMessages();\n }\n };\n $.each('addError updateError'.split(' '), function (i, method) {\n window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {\n var updateClass = true !== doNotUpdateClass;\n Utils.warnOnce(\"Accessing UI is deprecated. Call '\".concat(method, \"' on the instance directly. Please comment in issue 1073 as to your need to call this method.\"));\n return instance[method](name, {\n message: message,\n assert: assert,\n updateClass: updateClass\n });\n };\n }); // ### PARSLEY auto-binding\n // Prevent it by setting `ParsleyConfig.autoBind` to `false`\n\n if (false !== window.ParsleyConfig.autoBind) {\n $(function () {\n // Works only on `data-parsley-validate`.\n if ($('[data-parsley-validate]').length) $('[data-parsley-validate]').parsley();\n });\n }\n\n var o = $({});\n\n var deprecated = function deprecated() {\n Utils.warnOnce(\"Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley\");\n }; // Returns an event handler that calls `fn` with the arguments it expects\n\n\n function adapt(fn, context) {\n // Store to allow unbinding\n if (!fn.parsleyAdaptedCallback) {\n fn.parsleyAdaptedCallback = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n args.unshift(this);\n fn.apply(context || o, args);\n };\n }\n\n return fn.parsleyAdaptedCallback;\n }\n\n var eventPrefix = 'parsley:'; // Converts 'parsley:form:validate' into 'form:validate'\n\n function eventName(name) {\n if (name.lastIndexOf(eventPrefix, 0) === 0) return name.substr(eventPrefix.length);\n return name;\n } // $.listen is deprecated. Use Parsley.on instead.\n\n\n $.listen = function (name, callback) {\n var context;\n deprecated();\n\n if ('object' === _typeof(arguments[1]) && 'function' === typeof arguments[2]) {\n context = arguments[1];\n callback = arguments[2];\n }\n\n if ('function' !== typeof callback) throw new Error('Wrong parameters');\n window.Parsley.on(eventName(name), adapt(callback, context));\n };\n\n $.listenTo = function (instance, name, fn) {\n deprecated();\n if (!(instance instanceof Field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');\n if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');\n instance.on(eventName(name), adapt(fn));\n };\n\n $.unsubscribe = function (name, fn) {\n deprecated();\n if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong arguments');\n window.Parsley.off(eventName(name), fn.parsleyAdaptedCallback);\n };\n\n $.unsubscribeTo = function (instance, name) {\n deprecated();\n if (!(instance instanceof Field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');\n instance.off(eventName(name));\n };\n\n $.unsubscribeAll = function (name) {\n deprecated();\n window.Parsley.off(eventName(name));\n $('form,input,textarea,select').each(function () {\n var instance = $(this).data('Parsley');\n\n if (instance) {\n instance.off(eventName(name));\n }\n });\n }; // $.emit is deprecated. Use jQuery events instead.\n\n\n $.emit = function (name, instance) {\n var _instance;\n\n deprecated();\n var instanceGiven = instance instanceof Field || instance instanceof Form;\n var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);\n args.unshift(eventName(name));\n\n if (!instanceGiven) {\n instance = window.Parsley;\n }\n\n (_instance = instance).trigger.apply(_instance, _toConsumableArray(args));\n };\n\n $.extend(true, Parsley, {\n asyncValidators: {\n 'default': {\n fn: function fn(xhr) {\n // By default, only status 2xx are deemed successful.\n // Note: we use status instead of state() because responses with status 200\n // but invalid messages (e.g. an empty body for content type set to JSON) will\n // result in state() === 'rejected'.\n return xhr.status >= 200 && xhr.status < 300;\n },\n url: false\n },\n reverse: {\n fn: function fn(xhr) {\n // If reverse option is set, a failing ajax request is considered successful\n return xhr.status < 200 || xhr.status >= 300;\n },\n url: false\n }\n },\n addAsyncValidator: function addAsyncValidator(name, fn, url, options) {\n Parsley.asyncValidators[name] = {\n fn: fn,\n url: url || false,\n options: options || {}\n };\n return this;\n }\n });\n Parsley.addValidator('remote', {\n requirementType: {\n '': 'string',\n 'validator': 'string',\n 'reverse': 'boolean',\n 'options': 'object'\n },\n validateString: function validateString(value, url, options, instance) {\n var data = {};\n var ajaxOptions;\n var csr;\n var validator = options.validator || (true === options.reverse ? 'reverse' : 'default');\n if ('undefined' === typeof Parsley.asyncValidators[validator]) throw new Error('Calling an undefined async validator: `' + validator + '`');\n url = Parsley.asyncValidators[validator].url || url; // Fill current value\n\n if (url.indexOf('{value}') > -1) {\n url = url.replace('{value}', encodeURIComponent(value));\n } else {\n data[instance.element.getAttribute('name') || instance.element.getAttribute('id')] = value;\n } // Merge options passed in from the function with the ones in the attribute\n\n\n var remoteOptions = $.extend(true, options.options || {}, Parsley.asyncValidators[validator].options); // All `$.ajax(options)` could be overridden or extended directly from DOM in `data-parsley-remote-options`\n\n ajaxOptions = $.extend(true, {}, {\n url: url,\n data: data,\n type: 'GET'\n }, remoteOptions); // Generate store key based on ajax options\n\n instance.trigger('field:ajaxoptions', instance, ajaxOptions);\n csr = $.param(ajaxOptions); // Initialise querry cache\n\n if ('undefined' === typeof Parsley._remoteCache) Parsley._remoteCache = {}; // Try to retrieve stored xhr\n\n var xhr = Parsley._remoteCache[csr] = Parsley._remoteCache[csr] || $.ajax(ajaxOptions);\n\n var handleXhr = function handleXhr() {\n var result = Parsley.asyncValidators[validator].fn.call(instance, xhr, url, options);\n if (!result) // Map falsy results to rejected promise\n result = $.Deferred().reject();\n return $.when(result);\n };\n\n return xhr.then(handleXhr, handleXhr);\n },\n priority: -1\n });\n Parsley.on('form:submit', function () {\n Parsley._remoteCache = {};\n });\n\n Base.prototype.addAsyncValidator = function () {\n Utils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`');\n return Parsley.addAsyncValidator.apply(Parsley, arguments);\n };\n\n // This is included with the Parsley library itself,\n Parsley.addMessages('en', {\n defaultMessage: \"This value seems to be invalid.\",\n type: {\n email: \"This value should be a valid email.\",\n url: \"This value should be a valid url.\",\n number: \"This value should be a valid number.\",\n integer: \"This value should be a valid integer.\",\n digits: \"This value should be digits.\",\n alphanum: \"This value should be alphanumeric.\"\n },\n notblank: \"This value should not be blank.\",\n required: \"This value is required.\",\n pattern: \"This value seems to be invalid.\",\n min: \"This value should be greater than or equal to %s.\",\n max: \"This value should be lower than or equal to %s.\",\n range: \"This value should be between %s and %s.\",\n minlength: \"This value is too short. It should have %s characters or more.\",\n maxlength: \"This value is too long. It should have %s characters or fewer.\",\n length: \"This value length is invalid. It should be between %s and %s characters long.\",\n mincheck: \"You must select at least %s choices.\",\n maxcheck: \"You must select %s choices or fewer.\",\n check: \"You must select between %s and %s choices.\",\n equalto: \"This value should be the same.\",\n euvatin: \"It's not a valid VAT Identification Number.\"\n });\n Parsley.setLocale('en');\n\n function InputEvent() {\n var _this = this;\n\n var globals = window || global; // Slightly odd way construct our object. This way methods are force bound.\n // Used to test for duplicate library.\n\n _extends(this, {\n // For browsers that do not support isTrusted, assumes event is native.\n isNativeEvent: function isNativeEvent(evt) {\n return evt.originalEvent && evt.originalEvent.isTrusted !== false;\n },\n fakeInputEvent: function fakeInputEvent(evt) {\n if (_this.isNativeEvent(evt)) {\n $(evt.target).trigger('input');\n }\n },\n misbehaves: function misbehaves(evt) {\n if (_this.isNativeEvent(evt)) {\n _this.behavesOk(evt);\n\n $(document).on('change.inputevent', evt.data.selector, _this.fakeInputEvent);\n\n _this.fakeInputEvent(evt);\n }\n },\n behavesOk: function behavesOk(evt) {\n if (_this.isNativeEvent(evt)) {\n $(document) // Simply unbinds the testing handler\n .off('input.inputevent', evt.data.selector, _this.behavesOk).off('change.inputevent', evt.data.selector, _this.misbehaves);\n }\n },\n // Bind the testing handlers\n install: function install() {\n if (globals.inputEventPatched) {\n return;\n }\n\n globals.inputEventPatched = '0.0.3';\n\n for (var _i = 0, _arr = ['select', 'input[type=\"checkbox\"]', 'input[type=\"radio\"]', 'input[type=\"file\"]']; _i < _arr.length; _i++) {\n var selector = _arr[_i];\n $(document).on('input.inputevent', selector, {\n selector: selector\n }, _this.behavesOk).on('change.inputevent', selector, {\n selector: selector\n }, _this.misbehaves);\n }\n },\n uninstall: function uninstall() {\n delete globals.inputEventPatched;\n $(document).off('.inputevent');\n }\n });\n }\n var inputevent = new InputEvent();\n\n inputevent.install();\n\n return Parsley;\n\n})));\n//# sourceMappingURL=parsley.js.map\n"],"names":["module","exports","$","_typeof","obj","Symbol","iterator","constructor","prototype","_extends","Object","assign","target","i","arguments","length","source","key","hasOwnProperty","call","apply","this","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","Array","isArray","arr2","iter","toString","from","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","err","TypeError","globalID","pastWarnings","Utils","attr","element","namespace","attribute","attributes","regex","RegExp","specified","test","name","camelize","slice","deserializeValue","checkAttr","_checkAttr","hasAttribute","setAttr","setAttribute","dasherize","String","getType","getAttribute","generateID","num","isNaN","Number","JSON","parse","e","str","replace","match","chr","toUpperCase","toLowerCase","warn","_window$console","window","console","warnOnce","msg","_resetWarnings","trimString","string","date","parsed","_parsed$map2","map","x","parseInt","year","month","day","Date","getFullYear","getMonth","getDate","_string","integer","number","parseFloat","object","regexp","_regexp","flags","parseRequirement","requirementType","converter","converted","concat","namespaceEvents","events","split","evt","join","difference","array","remove","result","each","_","elem","indexOf","all","promises","when","objectCreate","create","Error","_SubmitSelector","Defaults","inputs","excluded","priorityEnabled","multiple","group","uiEnabled","validationThreshold","focus","trigger","triggerAfterFailure","errorClass","successClass","classHandler","Field","errorsContainer","errorsWrapper","errorTemplate","Base","__id__","asyncSupport","_pipeAccordingToValidationResult","_this","pipe","r","Deferred","validationResult","reject","resolve","promise","actualizeOptions","options","domOptions","parent","_resetOptions","initOptions","_listeners","on","fn","subscribe","listenTo","off","queue","splice","unsubscribe","unsubscribeTo","extraArg","asyncIsValid","force","whenValid","_findRelated","querySelectorAll","$element","convertArrayRequirement","m","values","convertExtraOptionRequirement","requirementSpec","extraOptionReader","main","extra","Validator","spec","extend","validate","requirementFirstArg","validateMultiple","instance","validateDate","_isDateInput","validateNumber","validateString","parseRequirements","requirements","type","isPlainObject","priority","ValidatorRegistry","validators","catalog","__class__","locale","init","typeTesters","email","digits","alphanum","url","range","decimalPlaces","Math","max","parseArguments","args","operatorToValidator","operator","_len","requirementsAndInput","_key","pop","comparisonOperator","addValidator","Parsley","setLocale","addCatalog","messages","set","addMessage","message","addMessages","nameMessageObject","arg1","arg2","_setValidator","hasValidator","updateValidator","removeValidator","validator","getErrorMessage","constraint","formatMessage","defaultMessage","en","parameters","notblank","required","_ref","_ref$step","step","_ref$base","base","tester","nb","decimals","toInt","f","round","pow","pattern","minlength","requirement","maxlength","min","mincheck","maxcheck","check","equalto","refOrValue","$reference","val","euvatin","UI","diffResults","newResult","oldResult","deep","added","kept","found","j","assert","removed","Form","_actualizeTriggers","onSubmitValidate","onSubmitButton","_focusedField","fields","field","noFocus","_destroyUI","_reflowUI","_buildUI","_ui","diff","lastValidationResult","_manageStatusClass","_manageErrorsMessages","_failedOnce","getErrorsMessages","errorMessage","_getErrorMessage","addError","_ref$updateClass","updateClass","_addError","_errorClass","updateError","_ref2","_ref2$updateClass","_updateError","removeError","_ref3$updateClass","_removeError","hasConstraints","needsValidation","_successClass","_resetClass","errorsMessagesDisabled","_insertErrorWrapper","$errorsWrapper","find","append","addClass","$errorClassHandler","errorsWrapperId","html","removeAttr","removeClass","_ref4","_ref5","customConstraintErrorMessage","_manageClassHandler","validationInformationVisible","$handlerFunction","$handler","jQuery","_inputHolder","nodeName","$errorsContainer","after","_this2","$toBind","_validateIfNeeded","event","_this3","getValue","debounce","clearTimeout","_debounced","setTimeout","_resetUI","children","statusMapping","pending","resolved","rejected","parsley","submitSource","_submitSource","prop","_remoteCache","whenValidate","state","_trigger","stopImmediatePropagation","preventDefault","_submit","currentTarget","$synthetic","appendTo","Event","_arguments","_Utils$all$done$fail$","submitEvent","_refreshFields","_withoutReactualizingFormOptions","fail","always","isValid","_arguments2","refresh","reset","destroy","removeData","_bindFields","_this4","oldFields","fieldsMappedById","not","fieldInstance","Factory","uniqueId","oldActualizeOptions","eventName","Constraint","parsleyField","isDomConstraint","validatorSpec","_validatorRegistry","_parseRequirements","capitalize","_this$validator","requirementList","parsleyFormInstance","constraints","constraintsByName","_bindConstraints","statusMapping$1","_this$whenValid$alway","_isInGroup","_refreshed","_isRequired","validateIfEmpty","inArray","_ref2$force","groupedConstraints","_getGroupedConstraints","_validateConstraint","_handleWhitespace","_refreshConstraints","refreshConstraints","addConstraint","removeConstraint","updateConstraint","_bindHtml5Constraints","trimValue","whitespace","c","index","p","sort","a","b","Multiple","addElement","$elements","fieldConstraints","has","data","filter","_init","savedparsleyFormInstance","__version__","is","bind","isMultiple","handleMultiple","parsleyMultipleInstance","input","$previouslyRelated","get","doNotStore","parsleyInstance","ParsleyExtend","vernums","jquery","forEach","document","version","psly","instances","ParsleyConfig","ParsleyUtils","registry","i18n","ParsleyValidator","method","_window$Parsley","ParsleyUI","doNotUpdateClass","autoBind","o","deprecated","adapt","context","parsleyAdaptedCallback","unshift","eventPrefix","lastIndexOf","substr","InputEvent","globals","g","isNativeEvent","originalEvent","isTrusted","fakeInputEvent","misbehaves","behavesOk","selector","install","inputEventPatched","uninstall","listen","callback","unsubscribeAll","emit","_instance","instanceGiven","asyncValidators","xhr","status","reverse","addAsyncValidator","ajaxOptions","csr","encodeURIComponent","remoteOptions","param","ajax","handleXhr","then","factory"],"sourceRoot":""}