UNPKG

hyperform

Version:

Capture form validation back from the browser

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