!function(e,t){typeof exports==='object'&&typeof module!=='undefined'?t(exports):typeof define==='function'&&define.amd?define(['exports'],t):(t((e.FormValidation={})))}(this,(function(e){"use strict";function t(e){var t=e.length,n=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],l=0,i=0;while(t--)i+=n[l][parseInt(e.charAt(t),10)],l=1-l;return i%10===0&&i>0}function n(e){var t=e.length,n=5;for(var l=0;l<t;l++)n=((n||10)*2%11+parseInt(e.charAt(l),10))%10;return n===1}function l(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',n=e.length,l=t.length,i=Math.floor(l/2);for(var a=0;a<n;a++)i=((i||l)*2%(l+1)+t.indexOf(e.charAt(a)))%l;return i===1}var i={luhn:t,mod11And10:n,mod37And36:l};function a(){return{fns:{},clear:function(){this.fns={}},emit:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),l=1;l<t;l++)n[l-1]=arguments[l];(this.fns[e]||[]).map(function(e){return e.apply(e,n)})},off:function(e,t){if(this.fns[e]){var n=this.fns[e].indexOf(t);n>=0&&this.fns[e].splice(n,1)}},on:function(e,t){(this.fns[e]=this.fns[e]||[]).push(t)}}}function r(){return{filters:{},add:function(e,t){(this.filters[e]=this.filters[e]||[]).push(t)},clear:function(){this.filters={}},execute:function(e,t,n){if(!this.filters[e]||!this.filters[e].length){return t}var l=t,i=this.filters[e],a=i.length;for(var r=0;r<a;r++)l=i[r].apply(l,n);return l},remove:function(e,t){this.filters[e]&&(this.filters[e]=this.filters[e].filter(function(e){return e!==t}))}}}var o;!function(e){e.Ignored="Ignored";e.Invalid="Invalid";e.NotValidated="NotValidated";e.Valid="Valid";e.Validating="Validating"}(o||(o={}));var d=o;function s(e,t,n,l){var i=(n.getAttribute('type')||'').toLowerCase(),a=n.tagName.toLowerCase();switch(a){case 'textarea':return n.value;case 'select':var d=n;var o=d.selectedIndex;return o>=0?d.options.item(o).value:'';case 'input':if('radio'===i||'checkbox'===i){var r=l.filter(function(e){return e.checked}).length;return r===0?'':r+''}else{return n.value};default:return''}}function c(e,t){var n=Array.isArray(t)?t:[t],l=e;n.forEach(function(e){l=l.replace('%s',e)});return l}function u(){var e=function(e){return parseFloat((''+e).replace(',','.'))};return{validate:function(t){var n=t.value;if(n===''){return{valid:!0}}var l=Object.assign({},{inclusive:!0},t.options),i=e(l.min),a=e(l.max);return l.inclusive?{message:t.l10n?c(l.message||t.l10n.between.default,[''+i,''+a]):l.message,valid:parseFloat(n)>=i&&parseFloat(n)<=a}:{message:t.l10n?c(l.message||t.l10n.between.notInclusive,[''+i,''+a]):l.message,valid:parseFloat(n)>i&&parseFloat(n)<a}}}}function f(){return{validate:function(e){return{valid:!0}}}}function m(e,t){if('function'===typeof e){return e.apply(this,t)}else if('string'===typeof e){var n=e;'()'===n.substring(n.length-2)&&(n=n.substring(0,n.length-2));var l=n.split('.'),i=l.pop(),a=window,r=!0,o=!1,d=void 0;try{for(var s=l[Symbol.iterator](),c;!(r=(c=s.next()).done);r=!0){var u=c.value;a=a[u]}}catch(e){o=!0,d=e}finally{try{!r&&s.return&&s.return()}finally{if(o){throw d}}};return typeof a[i]==='undefined'?null:a[i].apply(this,t)}}function p(){return{validate:function(e){var t=m(e.options.callback,[e]);return'boolean'===typeof t?{valid:t}:t}}}function g(){return{validate:function(e){var t='select'===e.element.tagName.toLowerCase()?e.element.querySelectorAll('option:checked').length:e.elements.filter(function(e){return e.checked}).length,n=e.options.min?''+e.options.min:'',l=e.options.max?''+e.options.max:'',i=e.l10n?e.options.message||e.l10n.choice.default:e.options.message,a=!(n&&t<parseInt(n,10)||l&&t>parseInt(l,10));switch(!0){case !!n&&!!l:i=c(e.l10n?e.l10n.choice.between:e.options.message,[n,l]);break;case !!n:i=c(e.l10n?e.l10n.choice.more:e.options.message,n);break;case !!l:i=c(e.l10n?e.l10n.choice.less:e.options.message,l);break;default:break}return{message:i,valid:a}}}}var v={AMERICAN_EXPRESS:{length:[15],prefix:['34','37']},DANKORT:{length:[16],prefix:['5019']},DINERS_CLUB:{length:[14],prefix:['300','301','302','303','304','305','36']},DINERS_CLUB_US:{length:[16],prefix:['54','55']},DISCOVER:{length:[16],prefix:['6011','622126','622127','622128','622129','62213','62214','62215','62216','62217','62218','62219','6222','6223','6224','6225','6226','6227','6228','62290','62291','622920','622921','622922','622923','622924','622925','644','645','646','647','648','649','65']},ELO:{length:[16],prefix:['4011','4312','4389','4514','4573','4576','5041','5066','5067','509','6277','6362','6363','650','6516','6550']},FORBRUGSFORENINGEN:{length:[16],prefix:['600722']},JCB:{length:[16],prefix:['3528','3529','353','354','355','356','357','358']},LASER:{length:[16,17,18,19],prefix:['6304','6706','6771','6709']},MAESTRO:{length:[12,13,14,15,16,17,18,19],prefix:['5018','5020','5038','5868','6304','6759','6761','6762','6763','6764','6765','6766']},MASTERCARD:{length:[16],prefix:['51','52','53','54','55']},SOLO:{length:[16,18,19],prefix:['6334','6767']},UNIONPAY:{length:[16,17,18,19],prefix:['622126','622127','622128','622129','62213','62214','62215','62216','62217','62218','62219','6222','6223','6224','6225','6226','6227','6228','62290','62291','622920','622921','622922','622923','622924','622925']},VISA:{length:[16],prefix:['4']},VISA_ELECTRON:{length:[16],prefix:['4026','417500','4405','4508','4844','4913','4917']}};function h(){return{validate:function(e){if(e.value===''){return{meta:{type:null},valid:!0}}if(/[^0-9-\s]+/.test(e.value)){return{meta:{type:null},valid:!1}}var n=e.value.replace(/\D/g,'');if(!t(n)){return{meta:{type:null},valid:!1}}var l=!0,i=!1,a=void 0;try{for(var r=Object.keys(v)[Symbol.iterator](),o;!(l=(o=r.next()).done);l=!0){var d=o.value;for(var s in v[d].prefix){if(e.value.substr(0,v[d].prefix[s].length)===v[d].prefix[s]&&v[d].length.indexOf(n.length)!==-1){return{meta:{type:d},valid:!0}}}}}catch(e){i=!0,a=e}finally{try{!l&&r.return&&r.return()}finally{if(i){throw a}}};return{meta:{type:null},valid:!1}}}}function b(e,t,n,l){if(isNaN(e)||isNaN(t)||isNaN(n)){return!1}if(e<1e3||e>9999||t<=0||t>12){return!1}var i=[31,e%400===0||e%100!==0&&e%4===0?29:28,31,30,31,30,31,31,30,31,30,31];if(n<=0||n>i[t-1]){return!1}if(l===!0){var a=new Date,r=a.getFullYear(),o=a.getMonth(),d=a.getDate();return e<r||e===r&&t-1<o||e===r&&t-1===o&&n<d}return!0}function E(){var e=function(e,t,n){var l=t.indexOf('YYYY'),i=t.indexOf('MM'),a=t.indexOf('DD');if(l===-1||i===-1||a===-1){return null}var r=e.split(' '),o=r[0].split(n);if(o.length<3){return null}var d=new Date(parseInt(o[l],10),parseInt(o[i],10)-1,parseInt(o[a],10));if(r.length>1){var s=r[1].split(':');d.setHours(s.length>0?parseInt(s[0],10):0);d.setMinutes(s.length>1?parseInt(s[1],10):0);d.setSeconds(s.length>2?parseInt(s[2],10):0)}return d},t=function(e,t){var n=t.replace(/Y/g,'y').replace(/M/g,'m').replace(/D/g,'d').replace(/:m/g,':M').replace(/:mm/g,':MM').replace(/:S/,':s').replace(/:SS/,':ss'),l=e.getDate(),i=l<10?'0'+l:l,a=e.getMonth()+1,r=a<10?'0'+a:a,o=(''+e.getFullYear()).substr(2),d=e.getFullYear(),s=e.getHours()%12||12,c=s<10?'0'+s:s,u=e.getHours(),f=u<10?'0'+u:u,m=e.getMinutes(),p=m<10?'0'+m:m,g=e.getSeconds(),v=g<10?'0'+g:g,h={H:''+u,HH:''+f,M:''+m,MM:''+p,d:''+l,dd:''+i,h:''+s,hh:''+c,m:''+a,mm:''+r,s:''+g,ss:''+v,yy:''+o,yyyy:''+d};return n.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMs])\1?|"[^"]*"|'[^']*'/g,function(e){return h[e]?h[e]:e.slice(1,e.length-1)})};return{validate:function(n){if(n.value===''){return{meta:{date:null},valid:!0}}var l=Object.assign({},{format:n.element&&n.element.getAttribute('type')==='date'?'YYYY-MM-DD':'MM/DD/YYYY',message:''},n.options),i=n.l10n?n.l10n.date.default:l.message,a={message:''+i,meta:{date:null},valid:!1},r=l.format.split(' '),o=r.length>1?r[1]:null,d=r.length>2?r[2]:null,s=n.value.split(' '),u=s[0],f=s.length>1?s[1]:null;if(r.length!==s.length){return a}var m=l.separator||(u.indexOf('/')!==-1?'/':u.indexOf('-')!==-1?'-':u.indexOf('.')!==-1?'.':'/');if(m===null||u.indexOf(m)===-1){return a}var p=u.split(m),g=r[0].split(m);if(p.length!==g.length){return a}var v=p[g.indexOf('YYYY')],h=p[g.indexOf('MM')],E=p[g.indexOf('DD')];if(!/^\d+$/.test(v)||!/^\d+$/.test(h)||!/^\d+$/.test(E)||v.length>4||h.length>2||E.length>2){return a}var V=parseInt(v,10),y=parseInt(h,10),x=parseInt(E,10);if(!b(V,y,x)){return a}var H=new Date(V,y-1,x);if(o){var A=f.split(':');if(o.split(':').length!==A.length){return a}var w=A.length>0?A[0].length<=2&&/^\d+$/.test(A[0])?parseInt(A[0],10):-1:0,C=A.length>1?A[1].length<=2&&/^\d+$/.test(A[1])?parseInt(A[1],10):-1:0,F=A.length>2?A[2].length<=2&&/^\d+$/.test(A[2])?parseInt(A[2],10):-1:0;if(w===-1||C===-1||F===-1){return a}if(F<0||F>60){return a}if(w<0||w>=24||d&&w>12){return a}if(C<0||C>59){return a}H.setHours(w);H.setMinutes(C);H.setSeconds(F)}var _=typeof l.min==='function'?l.min():l.min,I=_ instanceof Date?_:_?e(_,g,m):H,k=typeof l.max==='function'?l.max():l.max,S=k instanceof Date?k:k?e(k,g,m):H,N=_ instanceof Date?t(I,l.format):_,O=k instanceof Date?t(S,l.format):k;switch(!0){case !!N&&!O:return{message:c(n.l10n?n.l10n.date.min:i,N),meta:{date:H},valid:H.getTime()>=I.getTime()};case !!O&&!N:return{message:c(n.l10n?n.l10n.date.max:i,O),meta:{date:H},valid:H.getTime()<=S.getTime()};case !!O&&!!N:return{message:c(n.l10n?n.l10n.date.range:i,[N,O]),meta:{date:H},valid:H.getTime()<=S.getTime()&&H.getTime()>=I.getTime()};default:return{message:''+i,meta:{date:H},valid:!0}}}}}function V(){return{validate:function(e){var t='function'===typeof e.options.compare?e.options.compare.call(this):e.options.compare;return{valid:t===''||e.value!==t}}}}function y(){return{validate:function(e){return{valid:e.value===''||/^\d+$/.test(e.value)}}}}function x(){var e=function(e,t){var n=e.split(/"/),l=n.length,i=[],a='';for(var r=0;r<l;r++){if(r%2===0){var o=n[r].split(t),d=o.length;if(d===1)a+=o[0];else{i.push(a+o[0]);for(var s=1;s<d-1;s++)i.push(o[s]);a=o[d-1]}}else a+='"'+n[r],r<l-1&&(a+='"')}i.push(a);return i};return{validate:function(t){if(t.value===''){return{valid:!0}}var n=Object.assign({},{multiple:!1,separator:/[,;]/},t.options),l=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,i=n.multiple===!0||''+n.multiple==='true';if(i){var a=n.separator||/[,;]/,r=e(t.value,a),o=!0,d=!1,s=void 0;try{for(var c=r[Symbol.iterator](),u;!(o=(u=c.next()).done);o=!0){var f=u.value;if(!l.test(f)){return{valid:!1}}}}catch(e){d=!0,s=e}finally{try{!o&&c.return&&c.return()}finally{if(d){throw s}}};return{valid:!0}}else{return{valid:l.test(t.value)}}}}}function H(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=void 0,n=e.options.extension?e.options.extension.toLowerCase().split(','):null,l=e.options.type?e.options.type.toLowerCase().split(','):null,i=window.File&&window.FileList&&window.FileReader;if(i){var a=e.element.files,r=a.length,o=0;if(e.options.maxFiles&&r>parseInt(''+e.options.maxFiles,10)){return{meta:{error:'INVALID_MAX_FILES'},valid:!1}}if(e.options.minFiles&&r<parseInt(''+e.options.minFiles,10)){return{meta:{error:'INVALID_MIN_FILES'},valid:!1}}var d={};for(var s=0;s<r;s++){o+=a[s].size;t=a[s].name.substr(a[s].name.lastIndexOf('.')+1);d={ext:t,file:a[s],size:a[s].size,type:a[s].type};if(e.options.minSize&&a[s].size<parseInt(''+e.options.minSize,10)){return{meta:Object.assign({},{error:'INVALID_MIN_SIZE'},d),valid:!1}}if(e.options.maxSize&&a[s].size>parseInt(''+e.options.maxSize,10)){return{meta:Object.assign({},{error:'INVALID_MAX_SIZE'},d),valid:!1}}if(n&&n.indexOf(t.toLowerCase())===-1){return{meta:Object.assign({},{error:'INVALID_EXTENSION'},d),valid:!1}}if(a[s].type&&l&&l.indexOf(a[s].type.toLowerCase())===-1){return{meta:Object.assign({},{error:'INVALID_TYPE'},d),valid:!1}}}if(e.options.maxTotalSize&&o>parseInt(''+e.options.maxTotalSize,10)){return{meta:Object.assign({},{error:'INVALID_MAX_TOTAL_SIZE',totalSize:o},d),valid:!1}}if(e.options.minTotalSize&&o<parseInt(''+e.options.minTotalSize,10)){return{meta:Object.assign({},{error:'INVALID_MIN_TOTAL_SIZE',totalSize:o},d),valid:!1}}}else{t=e.value.substr(e.value.lastIndexOf('.')+1);if(n&&n.indexOf(t.toLowerCase())===-1){return{meta:{error:'INVALID_EXTENSION',ext:t},valid:!1}}}return{valid:!0}}}}function A(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=Object.assign({},{inclusive:!0},e.options),n=parseFloat((''+t.min).replace(',','.'));return t.inclusive?{message:e.l10n?c(t.message||e.l10n.greaterThan.default,''+n):t.message,valid:parseFloat(e.value)>=n}:{message:e.l10n?c(t.message||e.l10n.greaterThan.notInclusive,''+n):t.message,valid:parseFloat(e.value)>n}}}}function w(){return{validate:function(e){var t='function'===typeof e.options.compare?e.options.compare.call(this):e.options.compare;return{valid:t===''||e.value===t}}}}function C(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=Object.assign({},{decimalSeparator:'.',thousandsSeparator:''},e.options),n=t.decimalSeparator==='.'?'\\.':t.decimalSeparator,l=t.thousandsSeparator==='.'?'\\.':t.thousandsSeparator,i=new RegExp('^-?[0-9]{1,3}('+l+'[0-9]{3})*('+n+'[0-9]+)?$'),a=new RegExp(l,'g'),r=''+e.value;if(!i.test(r)){return{valid:!1}}l&&(r=r.replace(a,''));n&&(r=r.replace(n,'.'));var o=parseFloat(r);return{valid:!isNaN(o)&&isFinite(o)&&Math.floor(o)===o}}}}function F(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=Object.assign({},{ipv4:!0,ipv6:!0},e.options),n=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\/([0-9]|[1-2][0-9]|3[0-2]))?$/,l=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*(\/(\d|\d\d|1[0-1]\d|12[0-8]))?$/;switch(!0){case t.ipv4&&!t.ipv6:return{message:e.l10n?t.message||e.l10n.ip.ipv4:t.message,valid:n.test(e.value)};case !t.ipv4&&t.ipv6:return{message:e.l10n?t.message||e.l10n.ip.ipv6:t.message,valid:l.test(e.value)};case t.ipv4&&t.ipv6:;default:return{message:e.l10n?t.message||e.l10n.ip.default:t.message,valid:n.test(e.value)||l.test(e.value)}}}}}function _(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=Object.assign({},{inclusive:!0},e.options),n=parseFloat((''+t.max).replace(',','.'));return t.inclusive?{message:e.l10n?c(t.message||e.l10n.lessThan.default,''+n):t.message,valid:parseFloat(e.value)<=n}:{message:e.l10n?c(t.message||e.l10n.lessThan.notInclusive,''+n):t.message,valid:parseFloat(e.value)<n}}}}function I(){return{validate:function(e){return{valid:e.value!==''}}}}function k(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=Object.assign({},{decimalSeparator:'.',thousandsSeparator:''},e.options),n=''+e.value;n.substr(0,1)===t.decimalSeparator?(n='0'+t.decimalSeparator+n.substr(1)):n.substr(0,2)==='-'+t.decimalSeparator&&(n='-0'+t.decimalSeparator+n.substr(2));var l=t.decimalSeparator==='.'?'\\.':t.decimalSeparator,i=t.thousandsSeparator==='.'?'\\.':t.thousandsSeparator,a=new RegExp('^-?[0-9]{1,3}('+i+'[0-9]{3})*('+l+'[0-9]+)?$'),r=new RegExp(i,'g');if(!a.test(n)){return{valid:!1}}i&&(n=n.replace(r,''));l&&(n=n.replace(l,'.'));var o=parseFloat(n);return{valid:!isNaN(o)&&isFinite(o)}}}}function S(){return{validate:function(e){return m(e.options.promise,[e])}}}function N(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=e.options.regexp;if(t instanceof RegExp){return{valid:t.test(e.value)}}else{var n=t.toString(),l=e.options.flags?new RegExp(n,e.options.flags):new RegExp(n);return{valid:l.test(e.value)}}}}}function O(e,t){var n=function(e){return Object.keys(e).map(function(t){return encodeURIComponent(t)+'='+encodeURIComponent(e[t])}).join('&')};return new Promise(function(l,i){var a=Object.assign({},{crossDomain:!1,headers:{},method:'GET',params:{}},t),r=Object.keys(a.params).map(function(e){return encodeURIComponent(e)+'='+encodeURIComponent(a.params[e])}).join('&'),o=e.indexOf('?'),d='GET'===a.method?''+e+(o?'?':'&')+r:e;if(a.crossDomain){var s=document.createElement('script'),c='___fetch'+Date.now()+'___';window[c]=function(e){delete window[c];l(e)};s.src=''+d+(o?'&':'?')+'callback='+c;s.async=!0;s.addEventListener('load',function(){s.parentNode.removeChild(s)});s.addEventListener('error',function(){return i});document.head.appendChild(s)}else{var u=new XMLHttpRequest;u.open(a.method,d);u.setRequestHeader('X-Requested-With','XMLHttpRequest');'POST'===a.method&&u.setRequestHeader('Content-Type','application/x-www-form-urlencoded');Object.keys(a.headers).forEach(function(e){return u.setRequestHeader(e,a.headers[e])});u.addEventListener('load',function(){l(JSON.parse(this.responseText))});u.addEventListener('error',function(){return i});u.send(n(a.params))}})}function L(){var e={crossDomain:!1,data:{},headers:{},method:'GET',validKey:'valid'};return{validate:function(t){if(t.value===''){return Promise.resolve({valid:!0})}var n=Object.assign({},e,t.options),l=n.data;'function'===typeof n.data&&(l=n.data.call(this,t));'string'===typeof l&&(l=JSON.parse(l));l[n.name||t.field]=t.value;var i='function'===typeof n.url?n.url.call(this,t):n.url;return O(i,{crossDomain:n.crossDomain,headers:n.headers,method:n.method,params:l}).then(function(e){return Promise.resolve({message:e.message,meta:e,valid:''+e[n.validKey]==='true'})}).catch(function(e){return Promise.reject({valid:!1})})}}}function P(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=Object.assign({},{case:'lower'},e.options),n=(t.case||'lower').toLowerCase();return{message:t.message||(e.l10n?'upper'===n?e.l10n.stringCase.upper:e.l10n.stringCase.default:t.message),valid:'upper'===n?e.value===e.value.toUpperCase():e.value===e.value.toLowerCase()}}}}function T(){var e=function(e){var t=e.length;for(var n=e.length-1;n>=0;n--){var l=e.charCodeAt(n);l>127&&l<=2047?t++:l>2047&&l<=65535&&(t+=2);l>=56320&&l<=57343&&n--}return''+t};return{validate:function(t){var n=Object.assign({},{trim:!1,utf8Bytes:!1},t.options),l=n.trim===!0||''+n.trim==='true'?t.value.trim():t.value;if(l===''){return{valid:!0}}var i=n.min?''+n.min:'',a=n.max?''+n.max:'',r=n.utf8Bytes?e(l):l.length,o=!0,d=t.l10n?n.message||t.l10n.stringLength.default:n.message;(i&&r<parseInt(i,10)||a&&r>parseInt(a,10))&&(o=!1);switch(!0){case !!i&&!!a:d=t.l10n?c(n.message||t.l10n.stringLength.between,[i,a]):n.message;break;case !!i:d=t.l10n?c(n.message||t.l10n.stringLength.more,parseInt(i,10)-1+''):n.message;break;case !!a:d=t.l10n?c(n.message||t.l10n.stringLength.less,parseInt(a,10)+1+''):n.message;break;default:break}return{message:d,valid:o}}}}function M(){var e={allowEmptyProtocol:!1,allowLocal:!1,protocol:'http, https, ftp'};return{validate:function(t){if(t.value===''){return{valid:!0}}var n=Object.assign({},e,t.options),l=n.allowLocal===!0||''+n.allowLocal==='true',i=n.allowEmptyProtocol===!0||''+n.allowEmptyProtocol==='true',a=n.protocol.split(',').join('|').replace(/\s/g,''),r=new RegExp("^(?:(?:"+a+")://)"+(i?'?':'')+"(?:\\S+(?::\\S*)?@)?"+"(?:"+(l?'':"(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})")+"(?:[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]))"+"|"+'(?:(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9]+)'+'(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9])*'+'(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))'+(l?'?':'')+")"+"(?::\\d{2,5})?"+"(?:/[^\\s]*)?$","i");return{valid:r.test(t.value)}}}}var z={between:u,blank:f,callback:p,choice:g,creditCard:h,date:E,different:V,digits:y,emailAddress:x,file:H,greaterThan:A,identical:w,integer:C,ip:F,lessThan:_,notEmpty:I,numeric:k,promise:S,regexp:N,remote:L,stringCase:P,stringLength:T,uri:M},D=function(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}},R=function(){function e(e,t){for(var n=0;n<t.length;n++){var l=t[n];l.enumerable=l.enumerable||!1;l.configurable=!0;"value" in l&&(l.writable=!0);Object.defineProperty(e,l.key,l)}}return function(t,n,l){n&&e(t.prototype,n);l&&e(t,l);return t}}(),Y=function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):(e[t]=n);return e},q=function(e,t){if(typeof t!=="function"&&t!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}});t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},W=function(e,t){if(!e){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return t&&(typeof t==="object"||typeof t==="function")?t:e},j=function(){function e(t,n){D(this,e);this.elements={};this.ee=a();this.filter=r();this.plugins={};this.results=new Map;this.validators={};this.form=t;this.fields=n}R(e,[{key:'on',value:function(e,t){this.ee.on(e,t);return this}},{key:'off',value:function(e,t){this.ee.off(e,t);return this}},{key:'emit',value:function(e){var t;for(var n=arguments.length,l=Array(n>1?n-1:0),i=1;i<n;i++)l[i-1]=arguments[i];(t=this.ee).emit.apply(t,[e].concat(l));return this}},{key:'registerPlugin',value:function(e,t){if(this.plugins[e]){throw new Error('The plguin '+e+' is registered')}t.setCore(this);t.install();this.plugins[e]=t;return this}},{key:'deregisterPlugin',value:function(e){var t=this.plugins[e];t&&t.uninstall();delete this.plugins[e];return this}},{key:'registerValidator',value:function(e,t){if(this.validators[e]){throw new Error('The validator '+e+' is registered')}this.validators[e]=t;return this}},{key:'registerFilter',value:function(e,t){this.filter.add(e,t);return this}},{key:'deregisterFilter',value:function(e,t){this.filter.remove(e,t);return this}},{key:'executeFilter',value:function(e,t,n){return this.filter.execute(e,t,n)}},{key:'addField',value:function(e,t){var n=Object.assign({},{selector:'',validators:{}},t);this.fields[e]=this.fields[e]?{selector:n.selector||this.fields[e].selector,validators:Object.assign({},this.fields[e].validators,n.validators)}:n;this.elements[e]=this.queryElements(e);this.emit('core.field.added',{elements:this.elements[e],field:e,options:this.fields[e]});return this}},{key:'removeField',value:function(e){if(!this.fields[e]){throw new Error('The field '+e+' validators are not defined. Please ensure the field is added first')}var t=this.elements[e],n=this.fields[e];delete this.elements[e];delete this.fields[e];this.emit('core.field.removed',{elements:t,field:e,options:n});return this}},{key:'validate',value:function(){var e=this;this.emit('core.form.validating');return this.filter.execute('validate-pre',Promise.resolve(),[]).then(function(){return Promise.all(Object.keys(e.fields).map(function(t){return e.validateField(t)})).then(function(t){switch(!0){case t.indexOf(d.Invalid)!==-1:e.emit('core.form.invalid');return Promise.resolve(d.Invalid);case t.indexOf(d.NotValidated)!==-1:e.emit('core.form.notvalidated');return Promise.resolve(d.NotValidated);default:e.emit('core.form.valid');return Promise.resolve(d.Valid)}})})}},{key:'validateField',value:function(e){var t=this,n=this.results.get(e);if(n===d.Valid||n===d.Invalid){return Promise.resolve(n)}this.emit('core.field.validating',e);var l=this.elements[e];if(l.length===0){this.emit('core.field.valid',e);return Promise.resolve(d.Valid)}var i=l[0].getAttribute('type');if('radio'===i||'checkbox'===i||l.length===1){return this.validateElement(e,l[0])}else{return Promise.all(l.map(function(n){return t.validateElement(e,n)})).then(function(n){switch(!0){case n.indexOf(d.Invalid)!==-1:t.emit('core.field.invalid',e);t.results.set(e,d.Invalid);return Promise.resolve(d.Invalid);case n.indexOf(d.NotValidated)!==-1:t.emit('core.field.notvalidated',e);t.results.delete(e);return Promise.resolve(d.NotValidated);default:t.emit('core.field.valid',e);t.results.set(e,d.Valid);return Promise.resolve(d.Valid)}})}}},{key:'validateElement',value:function(e,t){var n=this;this.results.delete(e);var l=this.elements[e],i=this.filter.execute('element-ignored',!1,[e,t,l]);if(i){this.emit('core.element.ignored',{element:t,elements:l,field:e});return Promise.resolve(d.Ignored)}var a=this.fields[e].validators;this.emit('core.element.validating',{element:t,elements:l,field:e});var r=Object.keys(a).map(function(l){return function(){return n.executeValidator(e,t,l,a[l])}});return this.waterfall(r).then(function(i){var a=i.indexOf(d.Invalid)===-1;n.emit('core.element.validated',{element:t,elements:l,field:e,valid:a});var r=t.getAttribute('type');('radio'===r||'checkbox'===r||l.length===1)&&n.emit(a?'core.field.valid':'core.field.invalid',e);return Promise.resolve(a?d.Valid:d.Invalid)}).catch(function(i){n.emit('core.element.notvalidated',{element:t,elements:l,field:e});return Promise.resolve(i)})}},{key:'executeValidator',value:function(e,t,n,l){var i=this,a=this.elements[e],r=this.filter.execute('validator-name',n,[n,e]);l.message=this.filter.execute('validator-message',l.message,[this.locale,e,r]);if(!this.validators[r]||l.enabled===!1){this.emit('core.validator.validated',{element:t,elements:a,field:e,result:this.normalizeResult(e,r,{valid:!0}),validator:r});return Promise.resolve(d.Valid)}var o=this.validators[r],s=this.getElementValue(e,t,r),c=this.filter.execute('field-should-validate',!0,[e,t,s,n]);if(!c){this.emit('core.validator.notvalidated',{element:t,elements:a,field:e,validator:n});return Promise.resolve(d.NotValidated)}this.emit('core.validator.validating',{element:t,elements:a,field:e,validator:n});var u=o().validate({element:t,elements:a,field:e,l10n:this.localization,options:l,value:s}),f='function'===typeof u.then;if(f){return u.then(function(l){var r=i.normalizeResult(e,n,l);i.emit('core.validator.validated',{element:t,elements:a,field:e,result:r,validator:n});return r.valid?d.Valid:d.Invalid})}else{var m=this.normalizeResult(e,n,u);this.emit('core.validator.validated',{element:t,elements:a,field:e,result:m,validator:n});return Promise.resolve(m.valid?d.Valid:d.Invalid)}}},{key:'getElementValue',value:function(e,t,n){var l=s(this.form,e,t,this.elements[e]);return this.filter.execute('field-value',l,[l,e,t,n])}},{key:'getElements',value:function(e){return this.elements[e]}},{key:'getFields',value:function(){return this.fields}},{key:'getFormElement',value:function(){return this.form}},{key:'getPlugin',value:function(e){return this.plugins[e]}},{key:'updateFieldStatus',value:function(e,t,n){var l=this,i=this.elements[e],a=i[0].getAttribute('type'),r='radio'===a||'checkbox'===a?[i[0]]:i;r.forEach(function(i){return l.updateElementStatus(e,i,t,n)});if(!n){switch(t){case d.NotValidated:this.emit('core.field.notvalidated',e);this.results.delete(e);break;case d.Validating:this.emit('core.field.validating',e);this.results.delete(e);break;case d.Valid:this.emit('core.field.valid',e);this.results.set(e,d.Valid);break;case d.Invalid:this.emit('core.field.invalid',e);this.results.set(e,d.Invalid);break}}return this}},{key:'updateElementStatus',value:function(e,t,n,l){var i=this,a=this.elements[e],r=this.fields[e].validators,o=l?[l]:Object.keys(r);switch(n){case d.NotValidated:o.forEach(function(n){return i.emit('core.validator.notvalidated',{element:t,elements:a,field:e,validator:n})});this.emit('core.element.notvalidated',{element:t,elements:a,field:e});break;case d.Validating:o.forEach(function(n){return i.emit('core.validator.validating',{element:t,elements:a,field:e,validator:n})});this.emit('core.element.validating',{element:t,elements:a,field:e});break;case d.Valid:o.forEach(function(n){return i.emit('core.validator.validated',{element:t,field:e,result:{message:r[n].message,valid:!0},validator:n})});this.emit('core.element.validated',{element:t,elements:a,field:e,valid:!0});break;case d.Invalid:o.forEach(function(n){return i.emit('core.validator.validated',{element:t,field:e,result:{message:r[n].message,valid:!1},validator:n})});this.emit('core.element.validated',{element:t,elements:a,field:e,valid:!1});break}return this}},{key:'resetForm',value:function(e){var t=this;Object.keys(this.fields).forEach(function(n){return t.resetField(n,e)});this.emit('core.form.reset',{reset:e});return this}},{key:'resetField',value:function(e,t){if(t){var n=this.elements[e],l=n[0].getAttribute('type');n.forEach(function(e){'radio'===l||'checkbox'===l?(e.removeAttribute('selected'),e.removeAttribute('checked'),e.checked=!1):(e.setAttribute('value',''),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(e.value=''))})}this.updateFieldStatus(e,d.NotValidated);this.emit('core.field.reset',{field:e,reset:t});return this}},{key:'revalidateField',value:function(e){this.updateFieldStatus(e,d.NotValidated);return this.validateField(e)}},{key:'disableValidator',value:function(e,t){return this.toggleValidator(!1,e,t)}},{key:'enableValidator',value:function(e,t){return this.toggleValidator(!0,e,t)}},{key:'updateValidatorOption',value:function(e,t,n,l){this.fields[e]&&this.fields[e].validators&&this.fields[e].validators[t]&&(this.fields[e].validators[t][n]=l);return this}},{key:'destroy',value:function(){var e=this;Object.keys(this.plugins).forEach(function(t){return e.plugins[t].uninstall()});this.ee.clear();this.filter.clear();this.results.clear();this.plugins={};return this}},{key:'setLocale',value:function(e,t){this.locale=e;this.localization=t;return this}},{key:'waterfall',value:function(e){return e.reduce(function(e,t,n,l){return e.then(function(e){return t().then(function(t){e.push(t);return e})})},Promise.resolve([]))}},{key:'queryElements',value:function(e){var t=this.fields[e].selector?'#'===this.fields[e].selector.charAt(0)?'[id="'+this.fields[e].selector.substring(1)+'"]':this.fields[e].selector:'[name="'+e+'"]';return[].slice.call(this.form.querySelectorAll(t))}},{key:'normalizeResult',value:function(e,t,n){var l=this.fields[e].validators[t];return Object.assign({},n,{message:n.message||l.message||(this.localization&&this.localization[t]&&this.localization[t].default?this.localization[t].default:'')||'The field '+e+' is not valid'})}},{key:'toggleValidator',value:function(e,t,n){var l=this,i=this.fields[t].validators;n&&i&&i[n]?(this.fields[t].validators[n].enabled=e):n||Object.keys(i).forEach(function(n){return l.fields[t].validators[n].enabled=e});return this.updateFieldStatus(t,d.NotValidated,n)}}]);return e}();function U(e,t){var n=Object.assign({},{fields:{},locale:'en_US',plugins:{}},t),l=new j(e,n.fields);l.setLocale(n.locale,n.localization);Object.keys(n.plugins).forEach(function(e){return l.registerPlugin(e,n.plugins[e])});Object.keys(z).forEach(function(e){return l.registerValidator(e,z[e])});Object.keys(n.fields).forEach(function(e){return l.addField(e,n.fields[e])});return l}var $=function(){function e(t){D(this,e);this.opts=t}R(e,[{key:"setCore",value:function(e){this.core=e;return this}},{key:"install",value:function(){}},{key:"uninstall",value:function(){}}]);return e}(),B={getFieldValue:s},X=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.opts=e||{};n.validatorNameFilter=n.getValidatorName.bind(n);return n}R(t,[{key:'install',value:function(){this.core.registerFilter('validator-name',this.validatorNameFilter)}},{key:'uninstall',value:function(){this.core.deregisterFilter('validator-name',this.validatorNameFilter)}},{key:'getValidatorName',value:function(e,t){return this.opts[e]||e}}]);return t}($),G=function(e){q(t,e);function t(){D(this,t);var e=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{}));e.elementValidatedHandler=e.onElementValidated.bind(e);e.fieldValidHandler=e.onFieldValid.bind(e);e.fieldInvalidHandler=e.onFieldInvalid.bind(e);e.messageDisplayedHandler=e.onMessageDisplayed.bind(e);return e}R(t,[{key:'install',value:function(){this.core.on('core.field.valid',this.fieldValidHandler).on('core.field.invalid',this.fieldInvalidHandler).on('core.element.validated',this.elementValidatedHandler).on('plugins.message.displayed',this.messageDisplayedHandler)}},{key:'uninstall',value:function(){this.core.off('core.field.valid',this.fieldValidHandler).off('core.field.invalid',this.fieldInvalidHandler).off('core.element.validated',this.elementValidatedHandler).off('plugins.message.displayed',this.messageDisplayedHandler)}},{key:'onElementValidated',value:function(e){e.valid&&(e.element.setAttribute('aria-invalid','false'),e.element.removeAttribute('aria-describedby'))}},{key:'onFieldValid',value:function(e){var t=this.core.getElements(e);t&&t.forEach(function(e){e.setAttribute('aria-invalid','false');e.removeAttribute('aria-describedby')})}},{key:'onFieldInvalid',value:function(e){var t=this.core.getElements(e);t&&t.forEach(function(e){return e.setAttribute('aria-invalid','true')})}},{key:'onMessageDisplayed',value:function(e){e.messageElement.setAttribute('role','alert');e.messageElement.setAttribute('aria-hidden','false');var t=this.core.getElements(e.field),n=t.indexOf(e.element),l='js-fv-'+e.field+'-'+n+'-'+Date.now()+'-message';e.messageElement.setAttribute('id',l);e.element.setAttribute('aria-describedby',l);var i=e.element.getAttribute('type');('radio'===i||'checkbox'===i)&&t.forEach(function(e){return e.setAttribute('aria-describedby',l)})}}]);return t}($),Z=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.invalidElements=[];n.opts=Object.assign({},{onPrefocus:function(){}},e);n.invalidFormHandler=n.onFormInvalid.bind(n);n.elementValidatedHandler=n.onElementValidated.bind(n);n.elementNotValidatedHandler=n.onElementNotValidated.bind(n);return n}R(t,[{key:'install',value:function(){this.core.on('core.form.invalid',this.invalidFormHandler).on('core.element.validated',this.elementValidatedHandler).on('core.element.notvalidated',this.elementNotValidatedHandler)}},{key:'uninstall',value:function(){this.invalidElements=[];this.core.off('core.form.invalid',this.invalidFormHandler).off('core.element.validated',this.elementValidatedHandler).off('core.element.notvalidated',this.elementNotValidatedHandler)}},{key:'onElementValidated',value:function(e){var t=this.invalidElements.indexOf(e.element);e.valid&&t>=0?this.invalidElements.splice(t,1):!e.valid&&t===-1&&this.invalidElements.push(e.element)}},{key:'onElementNotValidated',value:function(e){this.invalidElements.splice(this.invalidElements.indexOf(e.element),1)}},{key:'onFormInvalid',value:function(){if(this.invalidElements.length){var e=this.invalidElements[0],t={firstElement:e};this.core.emit('plugins.autofocus.prefocus',t);this.opts.onPrefocus(t);e.focus()}}}]);return t}($),K=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.opts=Object.assign({},{html5Input:!1,prefix:'data-fv-'},e);return n}R(t,[{key:'install',value:function(){var e=this,t=this.parseOptions();Object.keys(t).forEach(function(n){return e.core.addField(n,t[n])})}},{key:'parseOptions',value:function(){var e=this,t=this.opts.prefix,n={},l=this.core.getFields(),i=this.core.getFormElement(),a=[].slice.call(i.querySelectorAll('[name], ['+t+'field]'));a.forEach(function(l){var i=e.parseElement(l);if(!e.isEmptyOption(i)){var a=l.getAttribute('name')||l.getAttribute(t+'field');n[a]=Object.assign({},n[a],i)}});Object.keys(n).forEach(function(e){Object.keys(n[e].validators).forEach(function(t){n[e].validators[t].enabled=n[e].validators[t].enabled||!1;l[e]&&l[e].validators&&l[e].validators[t]&&Object.assign(n[e].validators[t],l[e].validators[t])})});return Object.assign({},l,n)}},{key:'isEmptyOption',value:function(e){var t=e.validators;return Object.keys(t).length===0&&t.constructor===Object}},{key:'parseElement',value:function(e){var t=new RegExp('^'+this.opts.prefix+'([a-z0-9-]+)(___)*([a-z0-9-]+)*$'),n=e.attributes.length,l={},i=e.getAttribute('type');for(var a=0;a<n;a++){var r=e.attributes[a].name,o=e.attributes[a].value;if(this.opts.html5Input){switch(!0){case 'minlength'===r:l.stringLength=Object.assign({},{enabled:!0,min:parseInt(o,10)},l.stringLength);break;case 'maxlength'===r:l.stringLength=Object.assign({},{enabled:!0,max:parseInt(o,10)},l.stringLength);break;case 'pattern'===r:l.regexp=Object.assign({},{enabled:!0,regexp:o},l.regexp);break;case 'required'===r:l.notEmpty=Object.assign({},{enabled:!0},l.notEmpty);break;case 'type'===r&&'color'===o:l.color=Object.assign({},{enabled:!0,type:'hex'},l.color);break;case 'type'===r&&'email'===o:l.emailAddress=Object.assign({},{enabled:!0},l.emailAddress);break;case 'type'===r&&'url'===o:l.uri=Object.assign({},{enabled:!0},l.uri);break;case 'type'===r&&'range'===o:l.between=Object.assign({},{enabled:!0,max:parseFloat(e.getAttribute('max')),min:parseFloat(e.getAttribute('min'))},l.between);break;case 'min'===r&&i!=='date'&&i!=='range':l.greaterThan=Object.assign({},{enabled:!0,min:parseFloat(o)},l.greaterThan);break;case 'max'===r&&i!=='date'&&i!=='range':l.lessThan=Object.assign({},{enabled:!0,max:parseFloat(o)},l.lessThan);break;default:break}}var d=t.exec(r);if(d&&d.length===4){var s=this.toCamelCase(d[1]);l[s]=Object.assign({},d[3]?Y({},this.toCamelCase(d[3]),o):{enabled:''===o||'true'===o},l[s])}}return{validators:l}}},{key:'toUpperCase',value:function(e){return e.charAt(1).toUpperCase()}},{key:'toCamelCase',value:function(e){return e.replace(/-./g,this.toUpperCase)}}]);return t}($),J=function(e){q(t,e);function t(){D(this,t);var e=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{}));e.onValidHandler=e.onFormValid.bind(e);return e}R(t,[{key:'install',value:function(){var e=this.core.getFormElement();if(e.querySelectorAll('[type="submit"][name="submit"]').length){throw new Error('Do not use `submit` for the name attribute of submit button')}this.core.on('core.form.valid',this.onValidHandler)}},{key:'uninstall',value:function(){this.core.off('core.form.valid',this.onValidHandler)}},{key:'onFormValid',value:function(){var e=this.core.getFormElement();e instanceof HTMLFormElement&&e.submit()}}]);return t}($),Q=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.opts=e||{};n.triggerExecutedHandler=n.onTriggerExecuted.bind(n);return n}R(t,[{key:'install',value:function(){this.core.on('plugins.trigger.executed',this.triggerExecutedHandler)}},{key:'uninstall',value:function(){this.core.off('plugins.trigger.executed',this.triggerExecutedHandler)}},{key:'onTriggerExecuted',value:function(e){if(this.opts[e.field]){var t=this.opts[e.field].split(' '),n=!0,l=!1,i=void 0;try{for(var a=t[Symbol.iterator](),r;!(n=(r=a.next()).done);n=!0){var o=r.value,d=o.trim();this.opts[d]&&this.core.revalidateField(d)}}catch(e){l=!0,i=e}finally{try{!n&&a.return&&a.return()}finally{if(l){throw i}}}}}}]);return t}($),ee=function(e){q(t,e);R(t,null,[{key:'defaultIgnore',value:function(e,t,n){var l=!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length),i=t.getAttribute('disabled');return i===''||i==='disabled'||t.getAttribute('type')==='hidden'||!l}}]);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.opts=Object.assign({},{excluded:t.defaultIgnore},e);n.ignoreValidationFilter=n.ignoreValidation.bind(n);return n}R(t,[{key:'install',value:function(){this.core.registerFilter('element-ignored',this.ignoreValidationFilter)}},{key:'uninstall',value:function(){this.core.deregisterFilter('element-ignored',this.ignoreValidationFilter)}},{key:'ignoreValidation',value:function(e,t,n){return this.opts.excluded.apply(this,[e,t,n])}}]);return t}($);function te(e,t){t.split(' ').forEach(function(t){e.classList?e.classList.add(t):(' '+e.className+' ').indexOf(' '+t+' ')&&(e.className+=' '+t)})}function ne(e,t){t.split(' ').forEach(function(t){e.classList?e.classList.remove(t):e.className=e.className.replace(t,'')})}function le(e,t){var n=[],l=[];Object.keys(t).forEach(function(e){e&&(t[e]?n.push(e):l.push(e))});l.forEach(function(t){return ne(e,t)});n.forEach(function(t){return te(e,t)})}function ie(e,t){var n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector;if(n){return n.call(e,t)}var l=[].slice.call(e.parentElement.querySelectorAll(t));return l.indexOf(e)>=0}function ae(e,t){var n=e;while(n){if(ie(n,t)){break}n=n.parentElement}return n}var re=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.messages=new Map;n.defaultContainer=document.createElement('div');n.opts=Object.assign({},{container:function(e,t){return n.defaultContainer}},e);n.elementIgnoredHandler=n.onElementIgnored.bind(n);n.fieldAddedHandler=n.onFieldAdded.bind(n);n.fieldRemovedHandler=n.onFieldRemoved.bind(n);n.validatorValidatedHandler=n.onValidatorValidated.bind(n);n.validatorNotValidatedHandler=n.onValidatorNotValidated.bind(n);return n}R(t,[{key:'install',value:function(){this.core.getFormElement().appendChild(this.defaultContainer);this.core.on('core.element.ignored',this.elementIgnoredHandler).on('core.field.added',this.fieldAddedHandler).on('core.field.removed',this.fieldRemovedHandler).on('core.validator.validated',this.validatorValidatedHandler).on('core.validator.notvalidated',this.validatorNotValidatedHandler)}},{key:'uninstall',value:function(){this.core.getFormElement().removeChild(this.defaultContainer);this.messages.forEach(function(e){return e.parentNode.removeChild(e)});this.messages.clear();this.core.off('core.element.ignored',this.elementIgnoredHandler).off('core.field.added',this.fieldAddedHandler).off('core.field.removed',this.fieldRemovedHandler).off('core.validator.validated',this.validatorValidatedHandler).off('core.validator.notvalidated',this.validatorNotValidatedHandler)}},{key:'onFieldAdded',value:function(e){var t=this,n=e.elements;n&&(n.forEach(function(e){var n=t.messages.get(e);n&&(n.parentNode.removeChild(n),t.messages.delete(e))}),this.prepareFieldContainer(e.field,n))}},{key:'onFieldRemoved',value:function(e){var t=this;if(!e.elements.length||!e.field){return}var n=e.elements[0].getAttribute('type'),l='radio'===n||'checkbox'===n?[e.elements[0]]:e.elements;l.forEach(function(e){if(t.messages.has(e)){var n=t.messages.get(e);n.parentNode.removeChild(n);t.messages.delete(e)}})}},{key:'prepareFieldContainer',value:function(e,t){var n=this;if(t.length){var l=t[0].getAttribute('type');'radio'===l||'checkbox'===l?this.prepareElementContainer(e,t[0],t):t.forEach(function(l){return n.prepareElementContainer(e,l,t)})}}},{key:'prepareElementContainer',value:function(e,t,n){var l=void 0;switch(!0){case 'string'===typeof this.opts.container:var i=this.opts.container;i='#'===i.charAt(0)?'[id="'+i.substring(1)+'"]':i;l=this.core.getFormElement().querySelector(i);break;default:l=this.opts.container(e,t);break}var a=document.createElement('div');l.appendChild(a);le(a,{'fv-plugins-message-container':!0});this.core.emit('plugins.message.placed',{element:t,elements:n,field:e,messageElement:a});this.messages.set(t,a)}},{key:'onValidatorValidated',value:function(e){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;if(this.messages.has(l)){var i=this.messages.get(l),a=i.querySelector('[data-field="'+e.field+'"][data-validator="'+e.validator+'"]');if(!a&&!e.result.valid){var r=document.createElement('div');r.innerHTML=e.result.message;r.setAttribute('data-field',e.field);r.setAttribute('data-validator',e.validator);this.opts.clazz&&le(r,Y({},this.opts.clazz,!0));i.appendChild(r);this.core.emit('plugins.message.displayed',{element:e.element,field:e.field,message:e.result.message,messageElement:r,meta:e.result.meta,validator:e.validator})}else a&&!e.result.valid?(a.innerHTML=e.result.message,this.core.emit('plugins.message.displayed',{element:e.element,field:e.field,message:e.result.message,messageElement:a,meta:e.result.meta,validator:e.validator})):a&&e.result.valid&&i.removeChild(a)}}},{key:'onValidatorNotValidated',value:function(e){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;if(this.messages.has(l)){var i=this.messages.get(l),a=i.querySelector('[data-field="'+e.field+'"][data-validator="'+e.validator+'"]');a&&i.removeChild(a)}}},{key:'onElementIgnored',value:function(e){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;if(this.messages.has(l)){var i=this.messages.get(l);i.querySelectorAll('[data-field="'+e.field+'"]').forEach(function(e){i.removeChild(e)})}}}],[{key:'getClosestContainer',value:function(e,t,n){var l=e;while(l){if(l===t){break}l=l.parentElement;if(n.test(l.className)){break}}return l}}]);return t}($),oe=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.results=new Map;n.containers=new Map;n.opts=Object.assign({},{defaultMessageContainer:!0,eleInvalidClass:'',eleValidClass:'',rowClasses:'',rowValidatingClass:''},e);n.elementIgnoredHandler=n.onElementIgnored.bind(n);n.elementValidatingHandler=n.onElementValidating.bind(n);n.elementValidatedHandler=n.onElementValidated.bind(n);n.elementNotValidatedHandler=n.onElementNotValidated.bind(n);n.iconPlacedHandler=n.onIconPlaced.bind(n);n.fieldAddedHandler=n.onFieldAdded.bind(n);n.fieldRemovedHandler=n.onFieldRemoved.bind(n);return n}R(t,[{key:'install',value:function(){var e,t=this;le(this.core.getFormElement(),(e={}, Y(e,this.opts.formClass,!0), Y(e,'fv-plugins-framework',!0), e));this.core.on('core.element.ignored',this.elementIgnoredHandler).on('core.element.validating',this.elementValidatingHandler).on('core.element.validated',this.elementValidatedHandler).on('core.element.notvalidated',this.elementNotValidatedHandler).on('plugins.icon.placed',this.iconPlacedHandler).on('core.field.added',this.fieldAddedHandler).on('core.field.removed',this.fieldRemovedHandler);this.opts.defaultMessageContainer&&this.core.registerPlugin('___frameworkMessage',new re({clazz:this.opts.messageClass,container:function(e,n){var l='string'===typeof t.opts.rowSelector?t.opts.rowSelector:t.opts.rowSelector(e,n),i=ae(n,l);return re.getClosestContainer(n,i,t.opts.rowPattern)}}))}},{key:'uninstall',value:function(){var e;this.results.clear();this.containers.clear();le(this.core.getFormElement(),(e={}, Y(e,this.opts.formClass,!1), Y(e,'fv-plugins-framework',!1), e));this.core.off('core.element.ignored',this.elementIgnoredHandler).off('core.element.validating',this.elementValidatingHandler).off('core.element.validated',this.elementValidatedHandler).off('core.element.notvalidated',this.elementNotValidatedHandler).off('plugins.icon.placed',this.iconPlacedHandler).off('core.field.added',this.fieldAddedHandler).off('core.field.removed',this.fieldRemovedHandler)}},{key:'onIconPlaced',value:function(e){}},{key:'onFieldAdded',value:function(e){var t=this,n=e.elements;n&&(n.forEach(function(e){var n=t.containers.get(e);if(n){var l;le(n,(l={}, Y(l,t.opts.rowInvalidClass,!1), Y(l,t.opts.rowValidatingClass,!1), Y(l,t.opts.rowValidClass,!1), Y(l,'fv-plugins-icon-container',!1), l));t.containers.delete(e)}}),this.prepareFieldContainer(e.field,n))}},{key:'onFieldRemoved',value:function(e){var t=this;e.elements.forEach(function(e){var n=t.containers.get(e);if(n){var l;le(n,(l={}, Y(l,t.opts.rowInvalidClass,!1), Y(l,t.opts.rowValidatingClass,!1), Y(l,t.opts.rowValidClass,!1), l))}})}},{key:'prepareFieldContainer',value:function(e,t){var n=this;if(t.length){var l=t[0].getAttribute('type');'radio'===l||'checkbox'===l?this.prepareElementContainer(e,t[0]):t.forEach(function(t){return n.prepareElementContainer(e,t)})}}},{key:'prepareElementContainer',value:function(e,t){var n='string'===typeof this.opts.rowSelector?this.opts.rowSelector:this.opts.rowSelector(e,t),l=ae(t,n);if(l!==t){var i;le(l,(i={}, Y(i,this.opts.rowClasses,!0), Y(i,'fv-plugins-icon-container',!0), i));this.containers.set(t,l)}}},{key:'onElementValidating',value:function(e){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element,i=this.containers.get(l);if(i){var a;le(i,(a={}, Y(a,this.opts.rowInvalidClass,!1), Y(a,this.opts.rowValidatingClass,!0), Y(a,this.opts.rowValidClass,!1), a))}}},{key:'onElementNotValidated',value:function(e){this.removeClasses(e.element,e.elements)}},{key:'onElementIgnored',value:function(e){this.removeClasses(e.element,e.elements)}},{key:'removeClasses',value:function(e,t){var n,l=e.getAttribute('type'),i='radio'===l||'checkbox'===l?t[0]:e;le(i,(n={}, Y(n,this.opts.eleValidClass,!1), Y(n,this.opts.eleInvalidClass,!1), n));var a=this.containers.get(i);if(a){var r;le(a,(r={}, Y(r,this.opts.rowInvalidClass,!1), Y(r,this.opts.rowValidatingClass,!1), Y(r,this.opts.rowValidClass,!1), r))}}},{key:'onElementValidated',value:function(e){var t,n=this,l=e.elements,i=e.element.getAttribute('type'),a='radio'===i||'checkbox'===i?l[0]:e.element;le(a,(t={}, Y(t,this.opts.eleValidClass,e.valid), Y(t,this.opts.eleInvalidClass,!e.valid), t));var r=this.containers.get(a);if(r){if(!e.valid){var o;this.results.set(a,!1);le(r,(o={}, Y(o,this.opts.rowInvalidClass,!0), Y(o,this.opts.rowValidatingClass,!1), Y(o,this.opts.rowValidClass,!1), o))}else{this.results.delete(a);var d=!0;this.containers.forEach(function(e,t){e===r&&n.results.get(t)===!1&&(d=!1)});if(d){var s;le(r,(s={}, Y(s,this.opts.rowInvalidClass,!1), Y(s,this.opts.rowValidatingClass,!1), Y(s,this.opts.rowValidClass,!0), s))}}}}}]);return t}($),de=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.icons=new Map;n.opts=Object.assign({},{invalid:'fv-plugins-icon--invalid',onPlaced:function(){},onSet:function(){},valid:'fv-plugins-icon--valid',validating:'fv-plugins-icon--validating'},e);n.elementValidatingHandler=n.onElementValidating.bind(n);n.elementValidatedHandler=n.onElementValidated.bind(n);n.elementNotValidatedHandler=n.onElementNotValidated.bind(n);n.elementIgnoredHandler=n.onElementIgnored.bind(n);n.fieldAddedHandler=n.onFieldAdded.bind(n);return n}R(t,[{key:'install',value:function(){this.core.on('core.element.validating',this.elementValidatingHandler).on('core.element.validated',this.elementValidatedHandler).on('core.element.notvalidated',this.elementNotValidatedHandler).on('core.element.ignored',this.elementIgnoredHandler).on('core.field.added',this.fieldAddedHandler)}},{key:'uninstall',value:function(){this.icons.forEach(function(e){return e.parentNode.removeChild(e)});this.icons.clear();this.core.off('core.element.validating',this.elementValidatingHandler).off('core.element.validated',this.elementValidatedHandler).off('core.element.notvalidated',this.elementNotValidatedHandler).off('core.element.ignored',this.elementIgnoredHandler).off('core.field.added',this.fieldAddedHandler)}},{key:'onFieldAdded',value:function(e){var t=this,n=e.elements;n&&(n.forEach(function(e){var n=t.icons.get(e);n&&(n.parentNode.removeChild(n),t.icons.delete(e))}),this.prepareFieldIcon(e.field,n))}},{key:'prepareFieldIcon',value:function(e,t){var n=this;if(t.length){var l=t[0].getAttribute('type');'radio'===l||'checkbox'===l?this.prepareElementIcon(e,t[0]):t.forEach(function(t){return n.prepareElementIcon(e,t)})}}},{key:'prepareElementIcon',value:function(e,t){var n=document.createElement('i');n.setAttribute('data-field',e);t.parentNode.insertBefore(n,t.nextSibling);le(n,{'fv-plugins-icon':!0});var l={classes:{invalid:this.opts.invalid,valid:this.opts.valid,validating:this.opts.validating},element:t,field:e,iconElement:n};this.core.emit('plugins.icon.placed',l);this.opts.onPlaced(l);this.icons.set(t,n)}},{key:'onElementValidating',value:function(e){var t,n=this.setClasses(e.field,e.element,e.elements,(t={}, Y(t,this.opts.invalid,!1), Y(t,this.opts.valid,!1), Y(t,this.opts.validating,!0), t)),l={element:e.element,field:e.field,iconElement:n,status:d.Validating};this.core.emit('plugins.icon.set',l);this.opts.onSet(l)}},{key:'onElementValidated',value:function(e){var t,n=this.setClasses(e.field,e.element,e.elements,(t={}, Y(t,this.opts.invalid,!e.valid), Y(t,this.opts.valid,e.valid), Y(t,this.opts.validating,!1), t)),l={element:e.element,field:e.field,iconElement:n,status:e.valid?d.Valid:d.Invalid};this.core.emit('plugins.icon.set',l);this.opts.onSet(l)}},{key:'onElementNotValidated',value:function(e){var t,n=this.setClasses(e.field,e.element,e.elements,(t={}, Y(t,this.opts.invalid,!1), Y(t,this.opts.valid,!1), Y(t,this.opts.validating,!1), t)),l={element:e.element,field:e.field,iconElement:n,status:d.NotValidated};this.core.emit('plugins.icon.set',l);this.opts.onSet(l)}},{key:'onElementIgnored',value:function(e){var t,n=this.setClasses(e.field,e.element,e.elements,(t={}, Y(t,this.opts.invalid,!1), Y(t,this.opts.valid,!1), Y(t,this.opts.validating,!1), t)),l={element:e.element,field:e.field,iconElement:n,status:d.Ignored};this.core.emit('plugins.icon.set',l);this.opts.onSet(l)}},{key:'setClasses',value:function(e,t,n,l){var i=t.getAttribute('type'),a='radio'===i||'checkbox'===i?n[0]:t;if(this.icons.has(a)){var r=this.icons.get(a);le(r,l);return r}else{return null}}}]);return t}($),se=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.invalidFields=new Map;n.opts=Object.assign({},{enabled:!0},e);n.validatorHandler=n.onValidatorValidated.bind(n);n.shouldValidateFilter=n.shouldValidate.bind(n);n.fieldAddedHandler=n.onFieldAdded.bind(n);n.elementNotValidatedHandler=n.onElementNotValidated.bind(n);n.elementValidatingHandler=n.onElementValidating.bind(n);return n}R(t,[{key:'install',value:function(){this.core.on('core.validator.validated',this.validatorHandler).on('core.field.added',this.fieldAddedHandler).on('core.element.notvalidated',this.elementNotValidatedHandler).on('core.element.validating',this.elementValidatingHandler).registerFilter('field-should-validate',this.shouldValidateFilter)}},{key:'uninstall',value:function(){this.invalidFields.clear();this.core.off('core.validator.validated',this.validatorHandler).off('core.field.added',this.fieldAddedHandler).off('core.element.notvalidated',this.elementNotValidatedHandler).off('core.element.validating',this.elementValidatingHandler).deregisterFilter('field-should-validate',this.shouldValidateFilter)}},{key:'shouldValidate',value:function(e,t,n,l){var i=(this.opts.enabled===!0||this.opts.enabled[e]===!0)&&this.invalidFields.has(t)&&!!this.invalidFields.get(t).length&&this.invalidFields.get(t).indexOf(l)===-1;return!i}},{key:'onValidatorValidated',value:function(e){var t=this.invalidFields.has(e.element)?this.invalidFields.get(e.element):[],n=t.indexOf(e.validator);e.result.valid&&n>=0?t.splice(n,1):!e.result.valid&&n===-1&&t.push(e.validator);this.invalidFields.set(e.element,t)}},{key:'onFieldAdded',value:function(e){e.elements&&this.clearInvalidFields(e.elements)}},{key:'onElementNotValidated',value:function(e){this.clearInvalidFields(e.elements)}},{key:'onElementValidating',value:function(e){this.clearInvalidFields(e.elements)}},{key:'clearInvalidFields',value:function(e){var t=this;e.forEach(function(e){return t.invalidFields.delete(e)})}}]);return t}($),ce=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.opts=Object.assign({},{selector:'[type="submit"]:not([formnovalidate])'},e);n.submitHandler=n.submitHandle.bind(n);return n}R(t,[{key:'install',value:function(){var e=this;if(!(this.core.getFormElement() instanceof HTMLFormElement)){return}var t=this.core.getFormElement();t.setAttribute('novalidate','novalidate');t.addEventListener('submit',this.submitHandler);var n=document.createElement('button');n.setAttribute('type','submit');Object.assign(n.style,{display:'none',height:'0',width:'0'});t.appendChild(n);var l=[].slice.call(t.querySelectorAll(this.opts.selector)),i=[].slice.call(t.querySelectorAll('[type="submit"]'));i.forEach(function(i){i.addEventListener('click',function(i){var a=i.currentTarget;if(!i.defaultPrevented&&a instanceof HTMLElement&&l.indexOf(a)===-1&&a!==n){t.removeEventListener('submit',e.submitHandler);t.submit();return!1}})})}},{key:'uninstall',value:function(){var e=this.core.getFormElement();e instanceof HTMLFormElement&&e.removeEventListener('submit',this.submitHandler)}},{key:'submitHandle',value:function(e){e.preventDefault();this.core.validate()}}]);return t}($),ue=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.messages=new Map;n.opts=Object.assign({},{placement:'top',trigger:'click'},e);n.iconPlacedHandler=n.onIconPlaced.bind(n);n.validatorValidatedHandler=n.onValidatorValidated.bind(n);n.elementValidatedHandler=n.onElementValidated.bind(n);n.documentClickHandler=n.onDocumentClicked.bind(n);return n}R(t,[{key:'install',value:function(){this.tip=document.createElement('div');le(this.tip,Y({'fv-plugins-tooltip':!0},'fv-plugins-tooltip--'+this.opts.placement,!0));document.body.appendChild(this.tip);this.core.on('plugins.icon.placed',this.iconPlacedHandler).on('core.validator.validated',this.validatorValidatedHandler).on('core.element.validated',this.elementValidatedHandler);'click'===this.opts.trigger&&document.addEventListener('click',this.documentClickHandler)}},{key:'uninstall',value:function(){this.messages.clear();document.body.removeChild(this.tip);this.core.off('plugins.icon.placed',this.iconPlacedHandler).off('core.validator.validated',this.validatorValidatedHandler).off('core.element.validated',this.elementValidatedHandler);'click'===this.opts.trigger&&document.removeEventListener('click',this.documentClickHandler)}},{key:'onIconPlaced',value:function(e){var t=this;le(e.iconElement,{'fv-plugins-tooltip-icon':!0});switch(this.opts.trigger){case 'hover':e.iconElement.addEventListener('mouseenter',function(n){return t.show(e.element,n)});e.iconElement.addEventListener('mouseleave',function(e){return t.hide()});break;case 'click':;default:e.iconElement.addEventListener('click',function(n){return t.show(e.element,n)});break}}},{key:'onValidatorValidated',value:function(e){if(!e.result.valid){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;this.messages.set(l,e.result.message)}}},{key:'onElementValidated',value:function(e){if(e.valid){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;this.messages.delete(l)}}},{key:'onDocumentClicked',value:function(e){this.hide()}},{key:'show',value:function(e,t){t.preventDefault();t.stopPropagation();if(!this.messages.has(e)){return}le(this.tip,{'fv-plugins-tooltip--hide':!1});this.tip.innerHTML='<span class="fv-plugins-tooltip__content">'+this.messages.get(e)+'</span>';var n=t.target,l=n.getBoundingClientRect(),i=0,a=0;switch(this.opts.placement){case 'top':;default:i=l.top-l.height;a=l.left+l.width/2-this.tip.clientWidth/2;break;case 'top-left':i=l.top-l.height;a=l.left;break;case 'top-right':i=l.top-l.height;a=l.left+l.width-this.tip.clientWidth;break;case 'bottom':i=l.top+l.height;a=l.left+l.width/2-this.tip.clientWidth/2;break;case 'bottom-left':i=l.top+l.height;a=l.left;break;case 'bottom-right':i=l.top+l.height;a=l.left+l.width-this.tip.clientWidth;break;case 'left':i=l.top+l.height/2-this.tip.clientHeight/2;a=l.left-this.tip.clientWidth;break;case 'right':i=l.top+l.height/2-this.tip.clientHeight/2;a=l.left+l.width;break}i+=document.body.scrollTop;a+=document.body.scrollLeft;this.tip.setAttribute('style','top: '+i+'px; left: '+a+'px')}},{key:'hide',value:function(){le(this.tip,{'fv-plugins-tooltip--hide':!0})}}]);return t}($),fe=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.handlers=[];n.timers=new Map;n.ieVersion=function(){var e=3,t=document.createElement('div'),n=t.all||[];while(t.innerHTML='<!--[if gt IE '+ ++e+']><br><![endif]-->', n[0]);;return e>4?e:document.documentMode}();var l=document.createElement('div');n.defaultEvent=n.ieVersion===9||!('oninput' in l)?'keyup':'input';n.opts=Object.assign({},{delay:0,event:n.defaultEvent,threshold:0},e);n.fieldAddedHandler=n.onFieldAdded.bind(n);n.fieldRemovedHandler=n.onFieldRemoved.bind(n);return n}R(t,[{key:'install',value:function(){this.core.on('core.field.added',this.fieldAddedHandler).on('core.field.removed',this.fieldRemovedHandler)}},{key:'uninstall',value:function(){this.handlers.forEach(function(e){return e.element.removeEventListener(e.event,e.handler)});this.handlers=[];this.timers.forEach(function(e){return window.clearTimeout(e)});this.timers.clear();this.core.off('core.field.added',this.fieldAddedHandler).off('core.field.removed',this.fieldRemovedHandler)}},{key:'prepareHandler',value:function(e,t){var n=this;t.forEach(function(t){var l=[];switch(!0){case !!n.opts.event&&n.opts.event[e]===!1:l=[];break;case !!n.opts.event&&!!n.opts.event[e]:l=n.opts.event[e].split(' ');break;case 'string'===typeof n.opts.event&&n.opts.event!==n.defaultEvent:l=n.opts.event.split(' ');break;default:var r=t.getAttribute('type');var a=t.tagName.toLowerCase();var i='radio'===r||'checkbox'===r||'file'===r||'select'===a?'change':n.ieVersion>=10&&t.getAttribute('placeholder')?'keyup':n.defaultEvent;l=[i];break}l.forEach(function(l){var i=function(l){return n.handleEvent(l,e,t)};n.handlers.push({element:t,event:l,field:e,handler:i});t.addEventListener(l,i)})})}},{key:'handleEvent',value:function(e,t,n){var l=this;if(this.exceedThreshold(t,n)){var i=function(){return l.core.validateElement(t,n).then(function(i){l.core.emit('plugins.trigger.executed',{element:n,event:e,field:t})})},a=this.opts.delay[t]||this.opts.delay;if(a===0)i();else{var r=this.timers.get(n);r&&window.clearTimeout(r);this.timers.set(n,window.setTimeout(i,a*1e3))}}}},{key:'onFieldAdded',value:function(e){this.handlers.filter(function(t){return t.field===e.field}).forEach(function(e){return e.element.removeEventListener(e.event,e.handler)});this.prepareHandler(e.field,e.elements)}},{key:'onFieldRemoved',value:function(e){this.handlers.filter(function(t){return t.field===e.field&&e.elements.indexOf(t.element)>=0}).forEach(function(e){return e.element.removeEventListener(e.event,e.handler)})}},{key:'exceedThreshold',value:function(e,t){var n=this.opts.threshold[e]===0||this.opts.threshold===0?!1:this.opts.threshold[e]||this.opts.threshold;if(!n){return!0}var l=t.getAttribute('type');if(['button','checkbox','file','hidden','image','radio','reset','submit'].indexOf(l)!==-1){return!0}var i=this.core.getElementValue(e,t);return i.length>=n}}]);return t}($),me={Alias:X,Aria:G,AutoFocus:Z,Declarative:K,DefaultSubmit:J,Dependency:Q,Excluded:ee,Framework:oe,Icon:de,Message:re,Sequence:se,SubmitButton:ce,Tooltip:ue,Trigger:fe};function pe(e,t){return e.classList?e.classList.contains(t):new RegExp('(^| )'+t+'( |$)','gi').test(e.className)}var ge={call:m,classSet:le,closest:ae,fetch:O,format:c,hasClass:pe,isValidDate:b},ve={};e.algorithms=i;e.formValidation=U;e.filters=B;e.locales=ve;e.plugins=me;e.utils=ge;e.validators=z;e.Plugin=$;e.Status=d;Object.defineProperty(e,'__esModule',{value:!0})}))
