UNPKG

use-form

Version:
1 lines 14.2 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("React")):"function"==typeof define&&define.amd?define("useForm",["React"],t):"object"==typeof exports?exports.useForm=t(require("React")):e.useForm=t(e.React)}(window,function(r){return o={},i.m=n=[function(e,t,r){"use strict";t.__esModule=!0;var n=r(3);t.nested=n.default;var i=r(4);t.flatten=i.default},function(e,t){e.exports=r},function(e,t,r){e.exports=r(5)},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){if(void 0===e&&(e=null),Object(e)!==e||Array.isArray(e))return e;for(var t=/\.?([^.\[\]]+)|\[(\d+)\]/g,r={},n=0,i=Object.keys(e).sort();n<i.length;n++){for(var o=i[n],a=r,u="",c=void 0;c=t.exec(o);)a=a[u]||(a[u]=c[2]?[]:{}),u=c[2]||c[1];a[u]=e[o]}return r[""]||r}},function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function o(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function a(e){return"object"===o(e)}t.__esModule=!0;var u=Object.keys;t.default=function(r){if(!a(r))throw new Error;function i(r,n,t){if(a(t)){var e=u(t);if(e.length)return e.forEach(function(e){i(r,n+"."+e,t[e])}),r}return function(e){return"array"===o(e)}(t)&&t.length?t.forEach(function(e,t){i(r,n+"["+t+"]",e)}):r[n]=t,r}return u(r).reduce(function(e,t){return n(n({},e),i(e,t,r[t]))},{})}},function(e,t,r){"use strict";r.r(t);var g=r(1),a=r.n(g),n=Object,i=Object,o=Object,u=Object,c=Object(g.createContext)({getField:n,setField:i,getMeta:o,getState:u}),l=c.Provider,j=(c.Consumer,c),f=r(0),s=function(r){return{is:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return e.includes(Object.prototype.toString.call(r).slice(8,-1).toLowerCase())}}};function b(e){return s(e).is("object")}var d=s;function p(e,t,r){var n=t.match(/([^[.\]])+/g).reduce(function(e,t){return d(e).is("array","object")?e[t]:void 0},e);return d(n).is("undefined")?r:n}function v(e){if(void 0===e)return!0;if("string"==typeof e)return 0===e.length;if(b(e))switch(e.toString()){case"[object File]":case"[object Map]":case"[object Set]":return 0===e.size;case"[object Object]":for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}return!1}function h(e,t){var r=Object.prototype.toString.call(e);if(0<=["[object Array]","[object Object]"].indexOf(r)){if(!O(e,t))return!1}else{if(r!==Object.prototype.toString.call(t))return!1;if("[object Function]"===r){if(e.toString()!==t.toString())return!1}else if(e!==t)return!1}}function y(e){return!(!e||"function"!=typeof e.stopPropagation)}function m(){}var O=function(e,t){var r=Object.prototype.toString.call(e);if(r!==Object.prototype.toString.call(t))return!1;if(["[object Array]","[object Object]"].indexOf(r)<0)return!1;var n="[object Array]"===r?e.length:Object.keys(e).length;if(n!==("[object Array]"===r?t.length:Object.keys(t).length))return!1;if("[object Array]"===r){for(var i=0;i<n;i++)if(!1===h(e[i],t[i]))return!1}else for(var o in e)if(e.hasOwnProperty(o)&&!1===h(e[o],t[o]))return!1;return!0},w=O,S=function(){return(S=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},E=function(o,a,u,c){return new(u=u||Promise)(function(e,t){function r(e){try{i(c.next(e))}catch(e){t(e)}}function n(e){try{i(c.throw(e))}catch(e){t(e)}}function i(t){t.done?e(t.value):new u(function(e){e(t.value)}).then(r,n)}i((c=c.apply(o,a||[])).next())})},F=function(r,n){var i,o,a,e,u={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(i)throw new TypeError("Generator is already executing.");for(;u;)try{if(i=1,o&&(a=2&t[0]?o.return:t[0]?o.throw||((a=o.return)&&a.call(o),0):o.next)&&!(a=a.call(o,t[1])).done)return a;switch(o=0,a&&(t=[2&t[0],a.value]),t[0]){case 0:case 1:a=t;break;case 4:return u.label++,{value:t[1],done:!1};case 5:u.label++,o=t[1],t=[0];continue;case 7:t=u.ops.pop(),u.trys.pop();continue;default:if(!(a=0<(a=u.trys).length&&a[a.length-1])&&(6===t[0]||2===t[0])){u=0;continue}if(3===t[0]&&(!a||t[1]>a[0]&&t[1]<a[3])){u.label=t[1];break}if(6===t[0]&&u.label<a[1]){u.label=a[1],a=t;break}if(a&&u.label<a[2]){u.label=a[2],u.ops.push(t);break}a[2]&&u.ops.pop(),u.trys.pop();continue}t=n.call(r,u)}catch(e){t=[6,e],o=0}finally{i=a=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};function x(e){return Array.from(e.entries()).reduce(function(e,t){var r,n=t[0],i=t[1];return S({},e,((r={})[n]=i,r))},{})}var M=Object.keys,P=function(e){var d=this,t=e.validate,r=void 0===t?m:t,n=e.onSubmit,i=void 0===n?m:n,o=e.initialValues,a=void 0===o?{}:o,u=e.initialErrors,c=void 0===u?{}:u;this.listener={on:function(e,t){return d.listeners.set(e,t)},off:function(e){return d.listeners.delete(e)},emit:function(){return E(d,void 0,void 0,function(){return F(this,function(e){return[2,this.listeners.forEach(function(e){return e()})]})})}},this.listeners=new Map,this.initialValues=new Map,this.initialErrors=new Map,this.fields=new Map,this.values=new Map,this.meta={errors:new Map,touched:new Map,validations:new Map},this.submitting=!1,this.handleReset=function(a){return E(d,void 0,void 0,function(){var t,r,n,i,o=this;return F(this,function(e){return t=x(this.values),r=M(S({},t,Object(f.flatten)(t))),this.values.clear(),this.meta.errors.clear(),this.meta.touched.clear(),y(a)?(a.preventDefault(),a.stopPropagation(),r.map(function(e){o.setValue(e,o.getDefaultValue(e))}),M(x(this.initialErrors)).map(function(e){o.setError(e,o.getDefaultError(e))})):b(a)&&!v(a)&&(this.initialValues.clear(),this.initialErrors.clear(),n=Object(f.flatten)(a.values),i=Object(f.flatten)(a.errors),M(n).map(function(e){o.initialValues.set(e,n[e]),o.setValue(e,o.getDefaultValue(e))}),M(i).map(function(e){o.initialErrors.set(e,i[e]),o.setError(e,i[e])})),this.listener.emit(),[2]})})},this.handleSubmit=function(i){return E(d,void 0,void 0,function(){var t,r,n;return F(this,function(e){switch(e.label){case 0:return y(i)&&(i.preventDefault(),i.stopPropagation()),this.submitting=!0,[4,this.listener.emit()];case 1:return e.sent(),this.handleValidate(this.getState().values),t=this.getState(),r=t.errors,n=t.values,r&&!v(r)?[3,3]:[4,this.onSubmit(n)];case 2:e.sent(),e.label=3;case 3:return this.submitting=!1,this.listener.emit(),[2]}})})},this.getState=function(){var e=Object(f.nested)(x(d.meta.errors));return{fields:Object(f.nested)(x(d.fields)),values:Object(f.nested)(x(d.values)),errors:e,touched:Object(f.nested)(x(d.meta.touched)),valid:0===M(e).length,submitting:d.submitting}},this.getField=function(e){return S({value:p(Object(f.nested)(x(d.values)),e,"")},p(Object(f.nested)(x(d.fields)),e,{}))},this.setField=function(u){return{mount:function(e){var t=e.type,r=void 0===t?"text":t,n=e.validate,i=void 0===n?m:n,o=e.multiple;d.fields.set(u,{type:r,name:u,multiple:o}),d.setValue(u,d.getDefaultValue(u));var a=d.getDefaultError(u);return d.setError(u,a),d.setMeta(u,"validations",i),d.getField(u)},unmount:function(){d.fields.delete(u),d.values.delete(u),d.meta.errors.delete(u),d.meta.touched.delete(u),d.meta.validations.delete(u)},value:function(e){var t,r=d.getValue(u,e),n=d.setValue(u,r);return d.setError(u),d.handleValidate(((t={})[u]=r,t)),d.listener.emit(),n},error:function(e){var t=d.setError(u,e);return d.listener.emit(),t},meta:function(e,t){d.setMeta(u,e,t);var r=d.getField(u);return d.listener.emit(),r}}},this.getMeta=function(e){return{error:p(Object(f.nested)(x(d.meta.errors)),e),touched:d.meta.touched.get(e),validate:d.meta.validations.get(e)}},this.setMeta=function(e,t,r){return r?d.meta[t].set(e,r):d.meta[t].delete(e),d.getField(e)},this.getDefaultValue=function(e){var t,r=d.getField(e),n=r.type,i=r.multiple;switch(n){case"checkbox":t=!1;break;case"select":t="",i&&(t=[]);break;default:t=""}return p(Object(f.nested)(x(d.initialValues)),e,t)},this.getValue=function(e,t){if(y(t)){var r=t.target,n=r.value,i=r.checked,o=r.options,a=d.getField(e),u=a.type,c=a.multiple;switch(u){case"checkbox":case"radio":return i;case"select":if(c){var l=[];if(o&&o.length)for(var s=0;s<o.length;s++){var f=o[s];f.selected&&l.push(f.value)}return l}return n;default:return n}}return t},this.setValue=function(e,t){var r,n;if(Array.isArray(t)){var i=Object(f.flatten)(((r={})[e]=p(Object(f.nested)(x(d.values)),e),r)),o=Object(f.flatten)(((n={})[e]=t,n));if(!w(i,o)){for(var a in i)i.hasOwnProperty(a)&&d.values.delete(a);for(var a in o)o.hasOwnProperty(a)&&d.values.set(a,o[a])}}return d.values.set(e,t),d.getField(e)},this.getDefaultError=function(e){return p(Object(f.nested)(x(d.initialErrors)),e)},this.setError=function(e,t){return d.setMeta(e,"touched",Boolean(t)),d.setMeta(e,"errors",t)},this.handleValidate=function(e){void 0===e&&(e={});var t=d.getState().values,i=S({},t,Object(f.flatten)(t)),o=Object(f.flatten)(d.validate(i)||{});M(S({},e,Object(f.flatten)(e))).forEach(function(e){var t=d.getField(e).value,r=d.getMeta(e).validate,n=r&&r(t,i)||o[e];d.setError(e,n)})},this.validate=r,this.onSubmit=i;var l=Object(f.flatten)(a),s=Object(f.flatten)(c);M(l).map(function(e){d.initialValues.set(e,l[e]),d.setValue(e,l[e])}),M(s).map(function(e){d.initialErrors.set(e,s[e]),d.setError(e,s[e])})};function V(e){var t=e.children,r=A(e,["children"]);if("function"!=typeof t)throw new Error("children must be specified as function");var n=_(r),i=n.api,o=n.state;return a.a.createElement(l,{value:{setField:i.setField,getField:i.getField,getMeta:i.getMeta,getState:i.getState}},t(C({},o,{handleSubmit:i.handleSubmit,handleReset:i.handleReset})))}function k(e){var t=e.component,r=T(e,["component"]),n=Object(g.useRef)(t).current;return a.a.createElement(n,I({},B(r)))}var _=function(e){var t=e.initialValues,r=e.initialErrors,n=e.validate,i=e.onSubmit,o=Object(g.useMemo)(function(){return new P({initialValues:t,initialErrors:r,validate:n,onSubmit:i})},[]),a=function(e){var n=e.getState,i=e.subscribe,t=Object(g.useState)(n()),o=t[0],a=t[1];return Object(g.useEffect)(function(){function e(){if(!r){var t=n();return a(function(e){return w(Object(f.flatten)(o),Object(f.flatten)(t))?e:t})}}var r=!1;e();var t=i(e);return function(){r=!0,t()}},[i]),o}(Object(g.useMemo)(function(){return{getState:o.getState,subscribe:function(e){return o.listener.on("subscribe",e),function(){return o.listener.off("subscribe")}}}},[]));return{api:o,state:a}},C=function(){return(C=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},A=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r},D=function(){return(D=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},R=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r},B=function(e){var t=Object(g.useContext)(j),r=e.name,n=e.onChange,i=void 0===n?m:n,o=e.onFocus,a=void 0===o?m:o,u=e.onBlur,c=void 0===u?m:u,l=(e.validate,R(e,["name","onChange","onFocus","onBlur","validate"])),s=Object(g.useRef)(!0);s.current&&t.setField(r).mount(e),Object(g.useEffect)(function(){return s.current=!1,t.setField(r).unmount},[]);var f=t.getField(r),d=f.type,b=f.value,p=f.multiple,v=t.getMeta(r).error,h=Object(g.useCallback)(function(e){t.setField(r).value(e),i(e)},[r]),y=Object(g.useCallback)(function(e){t.setField(r).meta("touched",!0),a(e)},[r]),O=Object(g.useCallback)(function(e){t.setField(r).value(e),c(e)},[r]);return D({input:D({name:r},"select"!==d&&{type:d},"checkbox"===d&&{checked:Boolean(b)},"checkbox"!==d&&{value:b},{multiple:p,onChange:h,onFocus:y,onBlur:O}),meta:{error:v}},l)},I=function(){return(I=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},T=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};r.d(t,"Form",function(){return V}),r.d(t,"Field",function(){return k}),r.d(t,"useForm",function(){return _}),r.d(t,"useField",function(){return B})}],i.c=o,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(r,n,function(e){return t[e]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=2);function i(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var n,o});