hyperform
Version:
Capture form validation back from the browser
3 lines (2 loc) • 34.2 kB
JavaScript
// hyperform.js.org
var hyperform=function(){"use strict";var r=new WeakMap;function h(e,t){var n=r.get(e);if(n)return n.settings=t,n;this.form=e,this.settings=t,this.observer=null,r.set(e,this)}function d(e){var t;for(e.form&&(t=r.get(e.form));!t&&e;)t=r.get(e),e=e.parentNode;return t=t||r.get(window)}function i(e){var t=d(e);return Array.prototype.filter.call(e.elements,function(e){return!!(e.getAttribute("name")||t&&t.settings.validateNameless)})}h.prototype={destroy:function(){r.delete(this.form),this._destruct&&this._destruct()}};var e,o=Object.create(null);function t(r){var e,a,t=Array.prototype.slice.call(arguments,1);return r in o&&(e=o[r].reduce((a=t,function(e,t){var n=t.apply({state:e,hook:r},a);return void 0!==n?n:e}),e)),e}function a(r,e){var t=e,a=Array.prototype.slice.call(arguments,1);return r in o&&(t=o[r].reduce(function(e,t){a[0]=e;var n=t.apply({state:e,hook:r},a);return void 0!==n?n:e},t)),t}if(!((e=document.createEvent("Event")).initEvent("foo",!0,!0),e.preventDefault(),e.defaultPrevented)){var n=window.Event.prototype.preventDefault;window.Event.prototype.preventDefault=function(){this.cancelable&&(n.call(this),Object.defineProperty(this,"defaultPrevented",{get:function(){return!0},configurable:!0}))}}function f(e,t){var n=1<arguments.length&&void 0!==t?t:{},r=n.bubbles,a=void 0===r||r,i=n.cancelable,o=void 0!==i&&i,l=document.createEvent("Event");return l.initEvent(e,a,o),l}function l(e,t,n,r){var a=2<arguments.length&&void 0!==n?n:{},i=a.bubbles,o=void 0===i||i,l=a.cancelable,s=void 0!==l&&l,u=3<arguments.length&&void 0!==r?r:{};for(var c in t instanceof window.Event||(t=f(t,{bubbles:o,cancelable:s})),u)u.hasOwnProperty(c)&&(t[c]=u[c]);return e.dispatchEvent(t),t}var b=["datetime","date","month","week","time"],s=b.concat(["number","range"],"datetime-local"),v=["email","url"],u=["email","date","month","week","time","datetime","datetime-local","number","range","color"],c=["text","search","tel","password"].concat(v),m=["checkbox","color","file","image","radio","submit"].concat(s,c),g=["button","hidden","reset"].concat(m),p=["select-one","select-multiple","textarea"];function y(e){if(e instanceof window.HTMLTextAreaElement)return"textarea";if(e instanceof window.HTMLSelectElement)return e.hasAttribute("multiple")?"select-multiple":"select-one";if(e instanceof window.HTMLButtonElement)return(e.getAttribute("type")||"submit").toLowerCase();if(e instanceof window.HTMLInputElement){var t=(e.getAttribute("type")||"").toLowerCase();return t&&-1<g.indexOf(t)?t:e.type||"text"}return""}function w(e){var t=a("is_validation_candidate",null,e);if(null!==t)return!!t;if(e instanceof window.HTMLSelectElement||e instanceof window.HTMLTextAreaElement||e instanceof window.HTMLButtonElement||e instanceof window.HTMLInputElement){var n=y(e);if((-1<p.indexOf(n)||-1<m.indexOf(n))&&!e.hasAttribute("disabled")&&!e.hasAttribute("readonly")){var r=d(e);if((r&&!r.settings.novalidateOnElements||!e.hasAttribute("novalidate")&&!e.noValidate)&&!function(e){for(var t=e.parentNode;t&&1===t.nodeType;){if(t instanceof window.HTMLFieldSetElement&&t.hasAttribute("disabled"))return 1;if("DATALIST"===t.nodeName.toUpperCase())return 1;if(t===e.form)break;t=t.parentNode}}(e))return!0}}return!1}function M(e){return(M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function A(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return E(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?E(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){l=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw i}}}}function T(e){return-1<["object","function"].indexOf(M(e))&&(delete e.__hyperform,Object.defineProperty(e,"__hyperform",{configurable:!0,enumerable:!1,value:!0})),e}function L(e,t){switch(1<arguments.length&&void 0!==t?t:void 0){case"date":return(e.toLocaleDateString||e.toDateString).call(e);case"time":return(e.toLocaleTimeString||e.toTimeString).call(e);case"month":return"toLocaleDateString"in e?e.toLocaleDateString(void 0,{year:"numeric",month:"2-digit"}):e.toDateString();default:return(e.toLocaleString||e.toString).call(e)}}function N(e){for(var t=arguments.length,i=new Array(1<t?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];var o=i.length,l=0;return e.replace(/%([0-9]+\$)?([sl])/g,function(e,t,n){var r=l;t&&(r=Number(t.replace(/\$$/,""))-1),l+=1;var a="";return r<o&&(a=i[r]),(a instanceof Date||"number"==typeof a||a instanceof Number)&&(a="l"===n?(a.toLocaleString||a.toString).call(a):a.toString()),a})}function _(e,t){for(var n=1<arguments.length&&void 0!==t?t:2,r=e+"";r.length<n;)r="0"+r;return r}function D(e,t){if(!(e instanceof Date))return null;switch(t){case"datetime":return D(e,"date")+"T"+D(e,"time");case"datetime-local":return N("%s-%s-%sT%s:%s:%s.%s",e.getFullYear(),_(e.getMonth()+1),_(e.getDate()),_(e.getHours()),_(e.getMinutes()),_(e.getSeconds()),_(e.getMilliseconds(),3)).replace(/(:00)?\.000$/,"");case"date":return N("%s-%s-%s",e.getUTCFullYear(),_(e.getUTCMonth()+1),_(e.getUTCDate()));case"month":return N("%s-%s",e.getUTCFullYear(),_(e.getUTCMonth()+1));case"week":var n=function(e){(e=new Date(+e)).setUTCHours(0,0,0),e.setUTCDate(e.getUTCDate()+4-(e.getUTCDay()||7));var t=new Date(e.getUTCFullYear(),0,1),n=Math.ceil(((e-t)/864e5+1)/7);return[e.getUTCFullYear(),n]}(e);return N.call(null,"%s-W%s",n[0],_(n[1]));case"time":return N("%s:%s:%s.%s",_(e.getUTCHours()),_(e.getUTCMinutes()),_(e.getUTCSeconds()),_(e.getUTCMilliseconds(),3)).replace(/(:00)?\.000$/,"")}return null}function x(e,t){var n,r,a,i;switch(t){case"datetime":return/^([0-9]{4})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9])(?:\.([0-9]{1,3}))?)?$/.test(e)?(n=new Date(e+"z"),isNaN(n.valueOf())?null:n):null;case"date":return/^([0-9]{4})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/.test(e)?(n=new Date(e),isNaN(n.valueOf())?null:n):null;case"month":return/^([0-9]{4})-(0[1-9]|1[012])$/.test(e)?(n=new Date(e),isNaN(n.valueOf())?null:n):null;case"week":return/^([0-9]{4})-W(0[1-9]|[1234][0-9]|5[0-3])$/.test(e)?(r=Number(RegExp.$2),a=Number(RegExp.$1),(i=new Date(Date.UTC(a,0,1+7*(r-1)))).getUTCDay()<=4?i.setUTCDate(i.getUTCDate()-i.getUTCDay()+1):i.setUTCDate(i.getUTCDate()+8-i.getUTCDay()),i):null;case"time":return/^([01][0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9])(?:\.([0-9]{1,3}))?)?$/.test(e)?n=new Date("1970-01-01T"+e+"z"):null}return null}function O(e,t){var n=x(e,t);return null!==n?+n:Number(e)}var S={en:{TextTooLong:"Please shorten this text to %l characters or less (you are currently using %l characters).",ValueMissing:"Please fill out this field.",CheckboxMissing:"Please check this box if you want to proceed.",RadioMissing:"Please select one of these options.",FileMissing:"Please select a file.",SelectMissing:"Please select an item in the list.",InvalidEmail:"Please enter an email address.",InvalidURL:"Please enter a URL.",PatternMismatch:"Please match the requested format.",PatternMismatchWithTitle:"Please match the requested format: %l.",NumberRangeOverflow:"Please select a value that is no more than %l.",DateRangeOverflow:"Please select a value that is no later than %l.",TimeRangeOverflow:"Please select a value that is no later than %l.",NumberRangeUnderflow:"Please select a value that is no less than %l.",DateRangeUnderflow:"Please select a value that is no earlier than %l.",TimeRangeUnderflow:"Please select a value that is no earlier than %l.",StepMismatch:"Please select a valid value. The two nearest valid values are %l and %l.",StepMismatchOneValue:"Please select a valid value. The nearest valid value is %l.",BadInputNumber:"Please enter a number."}},k="en",C="en";function F(e){return k in S&&e in S[k]?S[k][e]:C in S&&e in S[C]?S[C][e]:e in S.en?S.en[e]:e}var H={"datetime-local":60,datetime:60,time:60},P={"datetime-local":1e3,datetime:1e3,date:864e5,week:6048e5,time:1e3},U={week:-2592e5},V={range:0},I={range:100};function R(e,t){var n=1<arguments.length&&void 0!==t?t:1,r=y(e),a=e.getAttribute("min"),i=V[r]||NaN;if(a){var o=O(a,r);isNaN(o)||(i=o)}var l=e.getAttribute("max"),s=I[r]||NaN;if(l){var u=O(l,r);isNaN(u)||(s=u)}var c=e.getAttribute("step"),d=H[r]||1;if(c&&"any"===c.toLowerCase())return[F("any value"),F("any value")];if(c){var f=O(c,r);isNaN(f)||(d=f)}var v=O(e.getAttribute("value"),r),m=O(e.value||e.getAttribute("value"),r);if(isNaN(m))return[F("any valid value"),F("any valid value")];var g=isNaN(i)?isNaN(v)?U[r]||0:v:i,h=P[r]||1,p=g+Math.floor((m-g)/(d*h))*(d*h)*n,w=g+(Math.floor((m-g)/(d*h))+1)*(d*h)*n;return p<i?p=null:s<p&&(p=s),s<w?w=null:w<i&&(w=i),-1<b.indexOf(r)&&(p=D(new Date(p),r),w=D(new Date(w),r)),[p,w]}function W(e){return e.match(/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g).length}var $=new WeakMap,j={set:function(e,t,n){var r=$.get(e)||{};return r[t]=n,$.set(e,r),j},get:function(e,t,n){var r=2<arguments.length&&void 0!==n?n:void 0,a=$.get(e);if(void 0!==a&&t in a)return a[t];var i="data-"+t.replace(/[A-Z]/g,"-$&").toLowerCase();return e.hasAttribute(i)?e.getAttribute(i):r},delete:function(e,t){var n=1<arguments.length&&void 0!==t?t:null;if(!n)return $.delete(e);var r=$.get(e)||{};return n in r&&(delete r[n],$.set(e,r),!0)}};function B(t){return t.form?Array.prototype.filter.call(t.form.elements,function(e){return"radio"===e.type&&e.name===t.name}):[t]}var z=new WeakMap;function q(e){return"radio"===e.type?B(e)[0]:e}var Z={set:function(e,t,n){var r=2<arguments.length&&void 0!==n&&n;if((e=q(e))instanceof window.HTMLFieldSetElement){var a=d(e);if(a&&!a.settings.extendFieldset)return Z}return"string"==typeof t&&(t=new String(t)),r&&(t.is_custom=!0),T(t),z.set(e,t),"_original_setCustomValidity"in e&&e._original_setCustomValidity(t.toString()),Z},get:function(e){e=q(e);var t=z.get(e);return void 0===t&&"_original_validationMessage"in e&&(t=new String(e._original_validationMessage)),t||new String("")},delete:function(e,t){var n=1<arguments.length&&void 0!==t&&t;"_original_setCustomValidity"in(e=q(e))&&e._original_setCustomValidity("");var r=z.get(e);return!(r&&n&&!r.is_custom)&&z.delete(e)}},Y=new WeakMap,G={set:function(e,t){var n=Y.get(e)||[];return n.push(t),Y.set(e,n),G},get:function(e){return Y.get(e)||[]},delete:function(e){return Y.delete(e)}};var J,K=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function Q(e){return e.replace(K,"")}function X(e){return e.split(",").map(function(e){return Q(e)}).filter(function(e){return e})}var ee=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[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])?)*$/;function te(n,r){return function(e){var t=!n(e);return t&&r(e),t}}function ne(e,t,n){Z.set(e,j.get(e,t,n))}var re=te(function(e){var t=y(e);if(-1===u.indexOf(t))return!0;if(!e.value)return!("_original_validity"in e&&!e._original_validity.__hyperform)||!e._original_validity.badInput;var n=!0;switch(t){case"color":n=/^#[a-f0-9]{6}$/.test(e.value);break;case"number":case"range":n=!isNaN(Number(e.value));break;case"datetime":case"date":case"month":case"week":case"time":n=null!==x(e.value,t);break;case"datetime-local":n=/^([0-9]{4,})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9])(?:\.([0-9]{1,3}))?)?$/.test(e.value)}return n},function(e){return ne(e,"badInput",F("Please match the requested type."))});function ae(e){if(e.__hf_custom_validation_running){var t=Z.get(e);return t&&t.is_custom}var n=G.get(e),r=n.length,a=!0;if(r){e.__hf_custom_validation_running=!0;for(var i=0;i<r;i++){var o=n[i](e);if(void 0!==o&&!o){a=!1;break}}delete e.__hf_custom_validation_running}if(a){var l=Z.get(e);a=!(l.toString()&&"is_custom"in l)}return!a}var ie=te(function(e){return!e.value||!e.hasAttribute("pattern")||new RegExp("^(?:"+e.getAttribute("pattern")+")$").test(e.value)},function(e){ne(e,"patternMismatch",e.title?N(F("PatternMismatchWithTitle"),e.title):F("PatternMismatch"))}),oe=te(function(e){var t,n,r=y(e);return!e.value||!e.hasAttribute("max")||(n=-1<b.indexOf(r)?(t=null===(t=x(e.value,r))?NaN:+t,null===(n=x(e.getAttribute("max"),r))?NaN:+n):(t=Number(e.value),Number(e.getAttribute("max"))),isNaN(n)||isNaN(t)||t<=n)},function(e){var t,n=y(e),r=d(e),a=r&&r.settings.classes.outOfRange||"hf-out-of-range",i=r&&r.settings.classes.inRange||"hf-in-range";switch(n){case"date":case"datetime":case"datetime-local":t=N(F("DateRangeOverflow"),L(x(e.getAttribute("max"),n),n));break;case"time":t=N(F("TimeRangeOverflow"),L(x(e.getAttribute("max"),n),n));break;default:t=N(F("NumberRangeOverflow"),O(e.getAttribute("max"),n))}ne(e,"rangeOverflow",t),e.classList.add(a),e.classList.remove(i)}),le=te(function(e){var t,n,r=y(e);return!e.value||!e.hasAttribute("min")||(n=-1<b.indexOf(r)?(t=null===(t=x(e.value,r))?NaN:+t,null===(n=x(e.getAttribute("min"),r))?NaN:+n):(t=Number(e.value),Number(e.getAttribute("min"))),isNaN(n)||isNaN(t)||n<=t)},function(e){var t,n=y(e),r=d(e),a=r&&r.settings.classes.outOfRange||"hf-out-of-range",i=r&&r.settings.classes.inRange||"hf-in-range";switch(n){case"date":case"datetime":case"datetime-local":t=N(F("DateRangeUnderflow"),L(x(e.getAttribute("min"),n),n));break;case"time":t=N(F("TimeRangeUnderflow"),L(x(e.getAttribute("min"),n),n));break;default:t=N(F("NumberRangeUnderflow"),O(e.getAttribute("min"),n))}ne(e,"rangeUnderflow",t),e.classList.add(a),e.classList.remove(i)}),se=te(function(e){var t=y(e);if(!e.value||-1===s.indexOf(t)||"any"===(e.getAttribute("step")||"").toLowerCase())return!0;var n=e.getAttribute("step");if((n=n?O(n,t):H[t]||1)<=0||isNaN(n))return!0;var r=P[t]||1,a=O(e.value,t),i=O(e.getAttribute("min")||e.getAttribute("value")||"",t);if(isNaN(a))return!0;isNaN(i)&&(i=U[t]||0),"month"===t&&(i=12*new Date(i).getUTCFullYear()+new Date(i).getUTCMonth(),a=12*new Date(a).getUTCFullYear()+new Date(a).getUTCMonth());var o=Math.abs(i-a)%(n*r);return o<1e-8||n*r-1e-8<o},function(e){var t=R(e),n=t[0],r=t[1],a=!1;null===n?a=r:null===r&&(a=n),ne(e,"stepMismatch",!1!==a?N(F("StepMismatchOneValue"),a):N(F("StepMismatch"),n,r))}),ue=te(function(e){if(!e.value||-1===c.indexOf(y(e))||!e.hasAttribute("maxlength")||!e.getAttribute("maxlength"))return!0;var t=parseInt(e.getAttribute("maxlength"),10);return!!(isNaN(t)||t<0)||W(e.value)<=t},function(e){ne(e,"tooLong",N(F("TextTooLong"),e.getAttribute("maxlength"),W(e.value)))}),ce=te(function(e){if(!e.value||-1===c.indexOf(y(e))||!e.hasAttribute("minlength")||!e.getAttribute("minlength"))return!0;var t=parseInt(e.getAttribute("minlength"),10);return!!(isNaN(t)||t<0)||W(e.value)>=t},function(e){ne(e,"tooShort",N(F("Please lengthen this text to %l characters or more (you are currently using %l characters)."),e.getAttribute("minlength"),W(e.value)))}),de=te(function(e){var t=y(e);if("file"!==t&&!e.value||"file"!==t&&-1===v.indexOf(t))return!0;var n=!0;switch(t){case"url":J=J||document.createElement("a");var r=Q(e.value);J.href=r,n=J.href===r||J.href===r+"/";break;case"email":n=e.hasAttribute("multiple")?X(e.value).every(function(e){return ee.test(e)}):ee.test(Q(e.value));break;case"file":if("files"in e&&e.files.length&&e.hasAttribute("accept")){var a=X(e.getAttribute("accept")).map(function(e){return/^(audio|video|image)\/\*$/.test(e)&&(e=new RegExp("^"+RegExp.$1+"/.+$")),e});if(!a.length)break;e:for(var i=0;i<e.files.length;i++){var o=!1;t:for(var l=0;l<a.length;l++){var s=e.files[i],u=a[l],c=s.type;if("string"==typeof u&&"."===u.substr(0,1)){if(-1===s.name.search("."))continue t;c=s.name.substr(s.name.lastIndexOf("."))}if(0===c.search(u)){o=!0;break t}}if(!o){n=!1;break e}}}}return n},function(e){var t=F("Please use the appropriate format."),n=y(e);"email"===n?t=e.hasAttribute("multiple")?F("Please enter a comma separated list of email addresses."):F("InvalidEmail"):"url"===n?t=F("InvalidURL"):"file"===n&&(t=F("Please select a file of the correct type.")),ne(e,"typeMismatch",t)}),fe=te(function(e){if("radio"!==e.type)return!e.hasAttribute("required")||(e instanceof window.HTMLSelectElement?(n=!(t=e).multiple&&t.size<=1&&0<t.options.length&&t.options[0].parentNode==t&&""===t.options[0].value,-1<t.selectedIndex&&Array.prototype.some.call(t.options,function(e){return(!n||0!==e.index)&&!e.disabled&&e.selected})):"checkbox"===e.type?e.checked:!!e.value);if(e.hasAttribute("required")&&e.checked)return!0;var t,n,r=B(e);return!r.some(function(e){return e.hasAttribute("required")})||r.some(function(e){return e.checked})},function(e){var t=F("ValueMissing"),n=y(e);"checkbox"===n?t=F("CheckboxMissing"):"radio"===n?t=F("RadioMissing"):"file"===n?t=e.hasAttribute("multiple")?F("Please select one or more files."):F("FileMissing"):e instanceof window.HTMLSelectElement&&(t=F("SelectMissing")),ne(e,"valueMissing",t)}),ve={badInput:re,customError:ae,patternMismatch:ie,rangeOverflow:oe,rangeUnderflow:le,stepMismatch:se,tooLong:ue,tooShort:ce,typeMismatch:de,valueMissing:fe,valid:function(e){var t=d(e),n=t&&t.settings.classes.valid||"hf-valid",r=t&&t.settings.classes.invalid||"hf-invalid",a=t&&t.settings.classes.userInvalid||"hf-user-invalid",i=t&&t.settings.classes.userValid||"hf-user-valid",o=t&&t.settings.classes.inRange||"hf-in-range",l=t&&t.settings.classes.outOfRange||"hf-out-of-range",s=t&&t.settings.classes.validated||"hf-validated";e.classList.add(s);for(var u=0,c=[re,ae,ie,oe,le,se,ue,ce,de,fe];u<c.length;u++){if((0,c[u])(e))return e.classList.add(r),e.classList.remove(n),e.classList.remove(i),("checkbox"===e.type||"radio"===e.type)&&e.checked!==e.defaultChecked||e.value!==e.defaultValue?e.classList.add(a):e.classList.remove(a),e.setAttribute("aria-invalid","true"),!1}return Z.delete(e),e.classList.remove(r),e.classList.remove(a),e.classList.remove(l),e.classList.add(n),e.classList.add(o),e.value!==e.defaultValue?e.classList.add(i):e.classList.remove(i),e.setAttribute("aria-invalid","false"),!0}},me=function e(t){if(!(t instanceof window.HTMLElement))throw new Error("cannot create a ValidityState for a non-element");var n=e.cache.get(t);return n||(this instanceof e?(this.element=t,void e.cache.set(t,this)):new e(t))},ge={};me.prototype=ge,me.cache=new WeakMap;function he(e,t){return function(){return w(this.element)?t(this.element):"valid"===e}}for(var pe in ve)Object.defineProperty(ge,pe,{configurable:!0,enumerable:!0,get:he(pe,ve[pe]),set:void 0});T(ge);var we,be,ye=(we="checkValidity",be=function(e){if(e instanceof window.HTMLFormElement)return i(e).map(ye).every(function(e){return e});var t=me(e).valid;if(t){var n=d(e);n&&n.settings.validEvent&&l(e,"valid")}else l(e,"invalid",{cancelable:!0});return t},function(){var e=t(we,Array.prototype.slice.call(arguments));return void 0!==e?e:be.apply(this,arguments)}),Me=0;var Ee=new WeakMap,Ae={attachWarning:function(e,t){t.parentNode.insertBefore(e,t.nextSibling)},detachWarning:function(e){e.parentNode&&e.parentNode.removeChild(e)},showWarning:function(e,t){var n,r=1<arguments.length&&void 0!==t&&t,a=e,i=[e];if("radio"===e.type){var o=B(e);if(r&&o[0]!==e)return;a=o[0],i=o}n=Ee.get(a);var l=Z.get(a).toString();if(l){if(!n){var s=d(a);(n=document.createElement("div")).className=s&&s.settings.classes.warning||"hf-warning",n.id=function(e){return(0<arguments.length&&void 0!==e?e:"hf_")+Me+++Math.random().toString(36).substr(2)}(),n.setAttribute("aria-live","polite"),Ee.set(a,n)}i.forEach(function(e){e.setAttribute("aria-errormessage",n.id),e.hasAttribute("aria-describedby")||e.setAttribute("aria-describedby",n.id)}),Te.setMessage(n,l,a),Te.attachWarning(n,a)}else n&&n.parentNode&&(i.forEach(function(e){e.getAttribute("aria-describedby")===n.id&&e.removeAttribute("aria-describedby"),e.removeAttribute("aria-errormessage")}),Te.detachWarning(n,a))},setMessage:function(e,t){e.textContent=t}},Te={attachWarning:Ae.attachWarning,detachWarning:Ae.detachWarning,showWarning:Ae.showWarning,setMessage:Ae.setMessage,set:function(e,t){t=t||Ae[e],Te[e]=t},getWarning:function(e){return Ee.get(e)}};function Le(e){if(e instanceof window.HTMLFormElement){e.__hf_form_validation=!0;var t=i(e).map(Le).every(function(e){return e});return delete e.__hf_form_validation,t}var n,r=me(e).valid;if(r){var a=d(e);a&&a.settings.validEvent&&(n=l(e,"valid",{cancelable:!0}))}else n=l(e,"invalid",{cancelable:!0});return n&&n.defaultPrevented||Te.showWarning(e,e.form&&e.form.__hf_form_validation),r}function Ne(e,t){t?Z.set(e,t,!0):Z.delete(e,!0);var n=Te.getWarning(e);n&&Te.setMessage(n,t,e),ve.valid(e)}function _e(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:void 0,n=y(e);if(-1<b.indexOf(n)){if(void 0!==t){if(null===t)e.value="";else{if(!(t instanceof Date))throw new window.DOMException("valueAsDate setter encountered invalid value","TypeError");isNaN(t.getTime())?e.value="":e.value=D(t,n)}return}var r=x(e.value,n);return r instanceof Date?r:null}if(void 0!==t)throw new window.DOMException("valueAsDate setter cannot set date on this element","InvalidStateError");return null}function De(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:void 0,e=y(t);if(!(-1<s.indexOf(e))){if(void 0!==n)throw new window.DOMException("valueAsNumber setter cannot set number on this element","InvalidStateError");return NaN}if("range"===e&&t.hasAttribute("multiple"))return NaN;if(void 0===n)return O(t.value,e);if(isNaN(n))t.value="";else{if("number"!=typeof n||!window.isFinite(n))throw new window.DOMException("valueAsNumber setter encountered invalid value","TypeError");try{_e(t,new Date(n))}catch(e){if(!(e instanceof window.DOMException))throw e;t.value=n.toString()}}}function xe(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;if(-1===s.indexOf(y(e)))throw new window.DOMException("stepDown encountered invalid type","InvalidStateError");if("any"===(e.getAttribute("step")||"").toLowerCase())throw new window.DOMException('stepDown encountered step "any"',"InvalidStateError");var n=R(e,t)[0];null!==n&&De(e,n)}function Oe(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;if(-1===s.indexOf(y(e)))throw new window.DOMException("stepUp encountered invalid type","InvalidStateError");if("any"===(e.getAttribute("step")||"").toLowerCase())throw new window.DOMException('stepUp encountered step "any"',"InvalidStateError");var n=R(e,t)[1];null!==n&&De(e,n)}function Se(e){var t=Z.get(e);return t?t.toString():""}function ke(e){return w(e)}var Ce=window.Element.prototype,Fe=Ce.matches||Ce.matchesSelector||Ce.msMatchesSelector||Ce.webkitMatchesSelector;function He(e){var t,n=f("submit",{cancelable:!0});n.preventDefault(),Object.defineProperty(n,"defaultPrevented",{value:!1,writable:!0}),Object.defineProperty(n,"preventDefault",{value:function(){return n.defaultPrevented=t=!0},writable:!0}),l(e.form,n,{},{submittedVia:e}),t||(function(e){if(-1<["image","submit"].indexOf(e.type)&&e.name){var t=d(e.form)||{},n=t.submit_helper;n?n.parentNode&&n.parentNode.removeChild(n):((n=document.createElement("input")).type="hidden",t.submit_helper=n),n.name=e.name,n.value=e.value,e.form.appendChild(n)}}(e),window.HTMLFormElement.prototype.submit.call(e.form),window.setTimeout(function(){return function(e){if(-1<["image","submit"].indexOf(e.type)&&e.name){var t=(d(e.form)||{}).submit_helper;t&&t.parentNode&&t.parentNode.removeChild(t)}}(e)}))}function Pe(e){if(!l(e.form,"validate",{cancelable:!0}).defaultPrevented){var t,n=!0;e.form.__hf_form_validation=!0,i(e.form).map(function(e){Le(e)||(n=!1,!t&&"focus"in e&&(t=e))}),delete e.form.__hf_form_validation,n?He(e):t&&(t.focus(),l(e.form,"forminvalid"))}}function Ue(e){return!("INPUT"!==e.nodeName&&"BUTTON"!==e.nodeName||"image"!==e.type&&"submit"!==e.type)}function Ve(e){return Ue(e)?e:(t=e,n='button:not([type]) *, button[type="submit"] *',Fe.call(t,n)?Ve(e.parentNode):null);var t,n}function Ie(e){var a=0<arguments.length&&void 0!==e&&e;return function(e){var t,n,r=Ve(e.target);!r||(n=r,(t=e).defaultPrevented||"button"in t&&!(t.button<2)||!Ue(n)||!n.form||n.form.hasAttribute("novalidate"))||(e.preventDefault(),(a||r.hasAttribute("formnovalidate")?He:Pe)(r))}}var Re=Ie(),We=Ie(!0);function $e(i){return function(e){if(!(a=e).defaultPrevented&&(13===a.keyCode&&"INPUT"===a.target.nodeName&&-1<c.indexOf(a.target.type)||(13===a.keyCode||32===a.keyCode)&&Ue(a.target))&&a.target.form&&!a.target.form.hasAttribute("novalidate")){if(e.preventDefault(),(d(e.target.form)||{settings:{}}).settings.preventImplicitSubmit)return;for(var t,n=e.target.form.elements.length,r=0;r<n;r++)if(-1<["image","submit"].indexOf(e.target.form.elements[r].type)){t=e.target.form.elements[r];break}if(l(e.target.form,"implicit_submit",{cancelable:!0},{trigger:e.target,submittedVia:t||e.target}).defaultPrevented)return;t?t.click():(i?He:Pe)(e.target)}var a}}var je=$e(),Be=$e(!0);function ze(e,t,n){n.configurable=!0,n.enumerable=!0,"value"in n&&(n.writable=!0);var r=Object.getOwnPropertyDescriptor(e,t);if(void 0===r&&(r=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),t)),r){if(!1===r.configurable){var a=d(e);return void(a&&a.settings.debug&&console.log("[hyperform] cannot install custom property "+t))}if(r.get&&r.get.__hyperform||r.value&&r.value.__hyperform)return;Object.defineProperty(e,"_original_"+t,r)}return delete e[t],Object.defineProperty(e,t,n),1}function qe(e){return e instanceof window.HTMLButtonElement||e instanceof window.HTMLInputElement||e instanceof window.HTMLSelectElement||e instanceof window.HTMLTextAreaElement||e instanceof window.HTMLFieldSetElement||e===window.HTMLButtonElement.prototype||e===window.HTMLInputElement.prototype||e===window.HTMLSelectElement.prototype||e===window.HTMLTextAreaElement.prototype||e===window.HTMLFieldSetElement.prototype}function Ze(t,n){try{delete t[n]}catch(e){var r=d(t);return void(r&&r.settings.debug&&console.log("[hyperform] cannot uninstall custom property "+n))}var e=Object.getOwnPropertyDescriptor(t,"_original_"+n);e&&Object.defineProperty(t,n,e)}var Ye=function(e){return function(){return a("attr_get_"+e,this.getAttribute(e),this)}},Ge=function(t){return function(e){this.setAttribute(t,a("attr_set_"+t,e,this))}},Je=function(e){return function(){return a("attr_get_"+e,this.hasAttribute(e),this)}},Ke=function(t){return function(e){a("attr_set_"+t,e,this)?this.setAttribute(t,t):this.removeAttribute(t)}},Qe=function(e){return function(){return a("attr_get_"+e,Math.max(0,Number(this.getAttribute(e))),this)}},Xe=function(t){return function(e){e=a("attr_set_"+t,e,this),/^[0-9]+$/.test(e)&&this.setAttribute(t,e)}};var et={checkValidity:{value:T(function(){return ye(this)})},reportValidity:{value:T(function(){return Le(this)})},setCustomValidity:{value:T(function(e){return Ne(this,e)})},stepDown:{value:T(function(){return xe(this,0<arguments.length&&void 0!==arguments[0]?arguments[0]:1)})},stepUp:{value:T(function(){return Oe(this,0<arguments.length&&void 0!==arguments[0]?arguments[0]:1)})},validationMessage:{get:T(function(){return Se(this)})},validity:{get:T(function(){return me(this)})},valueAsDate:{get:T(function(){return _e(this)}),set:T(function(e){_e(this,e)})},valueAsNumber:{get:T(function(){return De(this)}),set:T(function(e){De(this,e)})},willValidate:{get:T(function(){return ke(this)})}};function tt(e){if(qe(e)){for(var t in et)ze(e,t,et[t]);!function(e){for(var t=0,n=["accept","max","min","pattern","placeholder","step"];t<n.length;t++){var r=n[t];ze(e,r,{get:Ye(r),set:Ge(r)})}for(var a=0,i=["multiple","required","readOnly"];a<i.length;a++){var o=i[a];ze(e,o,{get:Je(o.toLowerCase()),set:Ke(o.toLowerCase())})}for(var l=0,s=["minLength","maxLength"];l<s.length;l++){var u=s[l];ze(e,u,{get:Qe(u.toLowerCase()),set:Xe(u.toLowerCase())})}}(e)}else(e instanceof window.HTMLFormElement||e===window.HTMLFormElement.prototype)&&(ze(e,"checkValidity",et.checkValidity),ze(e,"reportValidity",et.reportValidity))}function nt(e){qe(e)?(Ze(e,"checkValidity"),Ze(e,"reportValidity"),Ze(e,"setCustomValidity"),Ze(e,"stepDown"),Ze(e,"stepUp"),Ze(e,"validationMessage"),Ze(e,"validity"),Ze(e,"valueAsDate"),Ze(e,"valueAsNumber"),Ze(e,"willValidate"),function(e){for(var t=0,n=["accept","max","min","pattern","placeholder","step","multiple","required","readOnly","minLength","maxLength"];t<n.length;t++){Ze(e,n[t])}}(e)):e instanceof window.HTMLFormElement&&(Ze(e,"checkValidity"),Ze(e,"reportValidity"))}var rt=[window.HTMLButtonElement.prototype,window.HTMLInputElement.prototype,window.HTMLSelectElement.prototype,window.HTMLTextAreaElement.prototype,window.HTMLFieldSetElement.prototype];function at(e,t){t instanceof window.Element&&(t=[t]);for(var n=t.length,r=0;r<n;r++)e(t[r])}function it(a){var i=a.form;return function(){var e;if((e=i).removeEventListener("click",We),e.removeEventListener("keypress",Be),e.removeEventListener("click",Re),e.removeEventListener("keypress",je),i.removeEventListener("keyup",a.revalidator),i.removeEventListener("change",a.revalidator),i.removeEventListener("blur",a.revalidator,!0),i===window||9===i.nodeType)a.uninstall(rt),nt(window.HTMLFormElement);else if(i instanceof window.HTMLFormElement||i instanceof window.HTMLFieldSetElement)a.uninstall(i.elements),i instanceof window.HTMLFormElement&&nt(i);else if(i instanceof window.HTMLElement){a.observer.disconnect();var t,n=A(Array.prototype.slice.call(i.getElementsByTagName("form")));try{for(n.s();!(t=n.n()).done;){var r=t.value;a.uninstall(r.elements),nt(r)}}catch(e){n.e(e)}finally{n.f()}}}}function ot(c){var e=c.form,t=c.settings;if(c.revalidator=function(e){var t=0<arguments.length&&void 0!==e?e:"hybrid";return function(e){if(e.target instanceof window.HTMLButtonElement||e.target instanceof window.HTMLTextAreaElement||e.target instanceof window.HTMLSelectElement||e.target instanceof window.HTMLInputElement){if(e.target.form&&e.target.form.hasAttribute("novalidate"))return;"hybrid"===t?("blur"===e.type&&e.target.value!==e.target.defaultValue||me(e.target).valid||("keyup"===e.type&&9!==e.keyCode||"change"===e.type)&&me(e.target).valid)&&Le(e.target):"keyup"===e.type&&9===e.keyCode||Le(e.target)}}}(t.revalidate),c.observer={disconnect:function(){}},c.install=function(e){return at(tt,e)},c.uninstall=function(e){return at(nt,e)},c._destruct=it(c),function(e,t){1<arguments.length&&void 0!==t&&t?(e.addEventListener("click",We),e.addEventListener("keypress",Be)):(e.addEventListener("click",Re),e.addEventListener("keypress",je))}(e,"never"===t.revalidate),e===window||9===e.nodeType)c.install(rt),tt(window.HTMLFormElement);else if(e instanceof window.HTMLFormElement||e instanceof window.HTMLFieldSetElement)c.install(e.elements),e instanceof window.HTMLFormElement&&tt(e);else{if(!(e instanceof window.HTMLElement))throw new Error("Hyperform must be used with a node or window.");var n,r=A(Array.prototype.slice.call(c.form.getElementsByTagName("form")));try{for(r.s();!(n=r.n()).done;){var a=n.value;c.install(a.elements),tt(a)}}catch(e){r.e(e)}finally{r.f()}c.observer=new window.MutationObserver(function(e){var t,n=A(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;if("childList"===r.type){var a,i=A(Array.prototype.slice.call(r.addedNodes));try{for(i.s();!(a=i.n()).done;){var o=a.value;o instanceof window.HTMLFormElement&&(c.install(o.elements),tt(o))}}catch(e){i.e(e)}finally{i.f()}var l,s=A(Array.prototype.slice.call(r.removedNodes));try{for(s.s();!(l=s.n()).done;){var u=l.value;u instanceof window.HTMLFormElement&&(c.uninstall(u.elements),nt(u))}}catch(e){s.e(e)}finally{s.f()}}}}catch(e){n.e(e)}finally{n.f()}}),c.observer.observe(e,{subtree:!0,childList:!0})}"oninput"!==t.revalidate&&"hybrid"!==t.revalidate||(e.addEventListener("keyup",c.revalidator),e.addEventListener("change",c.revalidator)),"onblur"!==t.revalidate&&"hybrid"!==t.revalidate||e.addEventListener("blur",c.revalidator,!0)}function lt(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=t.classes,r=t.debug,a=void 0!==r&&r,i=t.extendFieldset,o=t.novalidateOnElements,l=t.preventImplicitSubmit,s=void 0!==l&&l,u=t.revalidate,c=t.strict,d=void 0!==c&&c,f=t.validEvent,v=t.validateNameless;void 0===i&&(i=!d),void 0===o&&(o=!d),void 0===s&&(s=!1),void 0===u&&(u=d?"onsubmit":"hybrid"),void 0===f&&(f=!d);var m={debug:a,strict:d,preventImplicitSubmit:s,revalidate:u,validEvent:f,extendFieldset:i,classes:n=n||{},novalidateOnElements:o,validateNameless:void 0!==v&&v};if(e instanceof window.NodeList||e instanceof window.HTMLCollection||e instanceof Array)return Array.prototype.map.call(e,function(e){return lt(e,m)});var g=new h(e,m);return ot(g),g}return lt.version="0.12.1",lt.checkValidity=ye,lt.reportValidity=Le,lt.setCustomValidity=Ne,lt.stepDown=xe,lt.stepUp=Oe,lt.validationMessage=Se,lt.ValidityState=me,lt.valueAsDate=_e,lt.valueAsNumber=De,lt.willValidate=ke,lt.setLanguage=function(e){return C=(k=e).replace(/[-_].*/,""),lt},lt.addTranslation=function(e,t){return function(e,t){for(var n in e in S||(S[e]={}),t)t.hasOwnProperty(n)&&(S[e][n]=t[n])}(e,t),lt},lt.setRenderer=function(e,t){return Te.set(e,t),lt},lt.addValidator=function(e,t){return G.set(e,t),lt},lt.setMessage=function(e,t,n){return j.set(e,t,n),lt},lt.addHook=function(e,t,n){var r,a,i;return a=t,i=n,(r=e)in o||(o[r]=[]),void 0===i&&(i=o[r].length),o[r].splice(i,0,a),lt},lt.removeHook=function(e,t){return function(e,t){if(e in o)for(var n=0;n<o[e].length;n++)if(o[e][n]===t){o[e].splice(n,1);break}}(e,t),lt},document.currentScript&&document.currentScript.hasAttribute("data-hf-autoload")&<(window),lt}();