{"_id":"another-use-form-hook","_rev":"61-ed8d2390a489b4390e41fd71ed54e276","name":"another-use-form-hook","dist-tags":{"latest":"4.1.1","alpha":"4.2.0-alpha.0","beta":"3.0.0-beta.3"},"versions":{"1.1.0":{"name":"another-use-form-hook","version":"1.1.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.1"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/react":"^16.8.23","jest":"^24.8.0","kcd-scripts":"^1.4.0","semantic-release":"^15.13.18"},"scripts":{"build":"babel src/index.js -o dist/index.js","test":"npx jest","semantic-release":"semantic-release"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","gitHead":"5eefea09a78a86782a731c2d55eb2a3799d59bdf","_id":"another-use-form-hook@1.1.0","_nodeVersion":"10.16.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-cVrMccetJDK1b0JUueYcd6Q7vdsYOn6HxKqx61yEA0om78KxKuYVOh8MUaKTdADCdGWpovb6GEZ1dcuzBjIXDg==","shasum":"887e2edfa331ee93a4ed6b74986249263aaee5c3","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-1.1.0.tgz","fileCount":13,"unpackedSize":12427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIzXOCRA9TVsSAnZWagAApOcQAKG8uPCfsu01uiyjSSPR\nQuDuUVQcA253GEnP46DCgmj0mxKQyoedrwgqQO/NAOi4NWpee6bihp7WeR/c\nJW+z+8aXemBvAC38B7Rz1N0n64WujxYvc/cVSUh1CV0uWGRNJ0VrP1M44ZFv\nrYHPMweyx3yp/0X8Ryr69ErmXgQs6Y4g+gEGa7Dp6YTMIUezsCa9jw94Dqk3\ntHx6o+nVr9db69zFv6b8GSFYvzsIJYGz+F5xL/xiOJQ2Ey5zVDL7wSGO/U9b\nnfq1U4cD44yxfuU5CLD+IFVlwKIdOWYb2wGddDhmsrAj05ygfXAuzEQeJ7j7\nP7GDuqt9phvLjcLVCaSQf+MDEdcY6cemo4fKUN3XD+1mrzvAd7YZD2LyxE6d\nV0pT8O1x0+o3ibd0RSTce6Ml5ZFbl41i8fEl4PNUukCM2cns1nVnC8+AgAE/\nhOh7h8/yKGz3E+7aVrEyvlgSrVuZaODFPzFfnlA8sfrfZHNcTTbzj5/qhHTQ\niIkemM/fggexgicrl4T1yGYbTHIKrL90+7ao3v8UDaoVA7iYQLujwNzjijC5\nesxIdmEqcpEu+33MwGE5HFlmruthluCYFyaVSWEkqedQpO5fUv+6MGvxARde\nJr47ndVPQrWS/hQ+2fS9YsehBmJzqGRXgA+d3v7/2pcf1vlXbBxz52/UYJO3\ny9vR\r\n=cuvh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyBJgEw9zIxO30gQXc7a90rN9PGnIkOpJCoGePN9VjzAIhAM07LWpkigfLi42V5tgAmiVn5LQiK5TFZcoayffCHlMK"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_1.1.0_1562588621947_0.9577680266035589"},"_hasShrinkwrap":false},"1.1.1":{"name":"another-use-form-hook","version":"1.1.1","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.1"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/react":"^16.8.23","jest":"^24.8.0","kcd-scripts":"^1.4.0","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build --no-clean","test":"npx jest","semantic-release":"semantic-release"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","gitHead":"4dba7275f52e9ab6088d76d8a6b9a2cbac653ebd","_id":"another-use-form-hook@1.1.1","_nodeVersion":"10.16.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-4Vzw2YHxcFcD8CC/5mKAztbyehYdXOXf7Q7wL2u8puAobcvoAykFsNQ255LWij5SrNsbg1jQ6iuFxig8kiIbuQ==","shasum":"2a0617aa8d7f160c10c628f16f1c688bb2b0c5e2","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-1.1.1.tgz","fileCount":15,"unpackedSize":14063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdI0MNCRA9TVsSAnZWagAAmZEP/2CnbmeET+pUcazfgm5z\nPnXYQ35/zYzWoOjzOAdqhNJaD22WPHh4qLzD47XGBkSBtuoZkUUn+S+Z/TMb\nYtDDEZ+RJUcLuF8Tr/zTfLwAQypgBDMkDFlsOUkfbQYXdCcyUE7HvkoNrV4f\n6SRChF9/dp/Z52v/aFfE5It7zCG5vkRqUqF+LT/qR6JP6epAfoOu26ZOfXcT\nIMkA1i2ExTCPmAMq7OANvsOWpM/TG5pdsfHOcJa8lFNx5XZIEK7fmeMTPC6S\nCpsNnMHYtmyqDsoC3w54ULODTbpzWCdob7ocKSPXxFtchy/TYoo1QcKtwU/k\nvnh3wCitmnkKcP5+sd9z7kt8sDtKybBiSlMyibPfHMKE0ANgMO2FC8TuZ+9e\nNKI7WCCJu4ewWjRMtSMEog/66h/5ivkH8JTgcWj8vF5WbolwhwgeUgalHKM4\n3TDI454YET8iiZi7qt3VJbQBUZ0orLW8YW1l2mZZozZCul6pvHBpCUauf2tS\niRhG76SwJvyJD/ILkFTayudbw9o1gUNQG3sfcm1LQu1dILpC+T7aI3/BcJBS\n3ZVLZwwJzoXxojFgrHDy4ndQR0H6X24M0KCbO9T6XW8kiI3tDpPx4Qirh+8G\niguMY2PHXyz55Y/7m++VITk4rvhhcgd/891cYtf/06OJ4qn8Ajr3d6PTe/dB\nZReT\r\n=pYEM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDX1iFibJDgxq/ZWEGCSmc+2VOACWfPf5CtHGtxD+CZHAiAB8yTGZ26OTqG7C0X4zagSogq8AUFLspzq5xHU26J8RQ=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_1.1.1_1562592012505_0.38422354836180106"},"_hasShrinkwrap":false},"1.1.2":{"name":"another-use-form-hook","version":"1.1.2","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/another-use-form-hook.cjs.js","module":"dist/another-use-form-hook.esm.js","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.1"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/react":"^16.8.23","jest":"^24.8.0","kcd-scripts":"^1.4.0","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build --bundle","test":"npx jest","semantic-release":"semantic-release"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","gitHead":"aef8105eeec43608b4963c28f8e76f5487fca9a9","_id":"another-use-form-hook@1.1.2","_nodeVersion":"8.16.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-k9jVWQSVyO0LEb1XXPLxCf9f3RvfoJtBQz0pgQ/JHEOQDXvgu593xZF2/SH+LvGT7LLkBcbMNgLy1vWX/HfXQg==","shasum":"06884edcb1d4a7a8e6bead1f034d90c50a3a495f","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-1.1.2.tgz","fileCount":4,"unpackedSize":5031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdI0dKCRA9TVsSAnZWagAA4ysP/iGg++rDvxoudauQ8HEO\n/teDPteG3wS/ORy+t/L2hUwf8iPQ4yHiStFhkWU1cyuCxahd6cMbWbi7GsGu\nw9yL5dmoQ9sGmRa+zPPO4AFrlXVlvpwRbmt/e+OCopZdk4x1bk2s2A909tSS\nZ8BLqvyTfRSu82Te6mPDzFSwmBgw43szcou/z6M0l5zKYP1H3YX0WucmYqkj\nTOhMYJeveoxBL2ocybyH8I1ov3h6m+gA6J3Ubt0brspR/WfCtIbZJgI13V5m\nLa6V5HakWu1P9+UPLQzGJ+w6iSCYgkn2oyHXyXqFnrq1O0ltf73gWeAQ5Q95\nIvz+Ysm7spnJGlYzCP4Mll/PeOZEtLRUGVrI+CAYTX1S6T4Mh3YCRCHWTqoZ\n2hbbfwZhpFjkBTyjpY8B0OHGZ+czYicXKaDA2eM9524AWqZp3cAYOke85VO8\noAZy7QugMDN9J9KUk4v5MzvynhtSRRJSnhfkZZOYyjuc3rGqm4Ve1THyoB9h\nWQ/ytL9MJiuKDnSCfq0KYuMIdYX7XgosAzcBP0fur1DUf+L32/4kGRw/H8p4\nzQ5Gfsh0JZF0fhvsfFO7/yUpF3LNvvBWQ7wdez+XZ6xoVJ5Pp4y7sNb6tbwz\nSQW530Ssb6L17aHWV3KjxaTU/5ZjB/igCxZLHa/eov5Si1zAynDbWN3dNm5d\nHMV/\r\n=iIur\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEMUxmXTixezzHiGE2v7R/1vbvvhbCAjE5SlOLhfbDL4AiEA3htTwYMn/ncLqf6n/nWGr3r3x1pw/asQHBfD2GhKdWw="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_1.1.2_1562593098208_0.5242354861480585"},"_hasShrinkwrap":false},"1.1.3":{"name":"another-use-form-hook","version":"1.1.3","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/another-use-form-hook.cjs.js","module":"dist/another-use-form-hook.esm.js","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.1"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/react":"^16.8.23","jest":"^24.8.0","kcd-scripts":"^1.4.0","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build --bundle","validate":"kcd-scripts validate","test":"npx jest","semantic-release":"semantic-release"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","gitHead":"946887b7722e8d641ae7c12f88d1e118a8dcad75","_id":"another-use-form-hook@1.1.3","_nodeVersion":"8.16.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-rb1Hr0+15ptpRrlMEo9JUjQWIwe3PB26/ecih2kFIKSa/ey8VuMXhSHfXPeckIKXaeLaRvctWkckCh0GjdsvVw==","shasum":"4c0ddda7db0606f7bb8114f91b577f227672e673","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-1.1.3.tgz","fileCount":10,"unpackedSize":43200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdI0xLCRA9TVsSAnZWagAAVT8P+wYNAK3e5/2pIygLmbc7\nIiVvYn4Z3e7ld8YaMZ95gCWUWBuO1keCsy0AgoQM82OKn8Vw1XRczjXZQzad\nWYSPEbWwK91wwj9WB5KmRRg9UUBXszEqt+VHElPsUBQ0x2F/EC16ruWrL82W\n8pZavt9bsWF7YbICLsCVCKs+39tnd0whnQyJYICpc91o3DhDQZPMXyiiZ49T\nVUNdG0SABhEcRU2QWBYAidwKZse8VFqB1K4NddreJtImf/17ZRoaC/6uJE/g\nvDddx4IGCys54dZhruY92YI5hRiDCP02QG6QA7cGerXRUOewjUnL3WPWimTA\nfViqXDBwW1eFRsTIxCWQhfOBtJsKLwvxCdTWxQMoLRhgOPNSRfgFp77HzMad\n5Z/c48BplGYII5l9L4Kq1Odrl2JBVTM5Ivta01wmLA7nZQNQ5C+MhYtcT1U1\nZiNIcuRIWwhWa2FWeIhoKWIiFZ9SMX2hvK+VNqt469BLFB2IxW3SCQUpDSGQ\n/gGArEKWHReXwWwR0tub7m95X+kjLrhbk035UTCD5b0OUcsiKiAQXMY2I1dC\n6WEi7H1hTIZBxdmZQ2tpRGEVP1IF/oiWouEStELnThfoIomXgd0WTSzlZv7A\nqB2djvhEjfexjkyyUn9iI4IA7/3GPwp+CfkrivoN3OT3pqDUUDAZo8nAJEyA\n/Zb1\r\n=nAD8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCr8/vidyFtjFFSsQpwUPxMR8ZGF76VePI5sNJ2vq103AIgdrfOw3bpqB1EnYg39fC2cHhBfMH11W325hsp45QTLWY="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_1.1.3_1562594378602_0.7140314690199179"},"_hasShrinkwrap":false},"1.1.4":{"name":"another-use-form-hook","version":"1.1.4","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/another-use-form-hook.cjs.js","module":"dist/another-use-form-hook.esm.js","types":"types/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.1"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/react":"^16.8.23","jest":"^24.8.0","kcd-scripts":"^1.4.0","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build --bundle","validate":"kcd-scripts validate","test":"npx jest","semantic-release":"semantic-release"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","gitHead":"79735632c149029080b53eae4f5d8b122d61fbcb","_id":"another-use-form-hook@1.1.4","_nodeVersion":"8.16.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-xDu7J5PusDriBurD0zb8SThbJ4JurXGBwe8MhbVaXBBcjqF3emLQLLjs40HMfaZK8nV1ccbDeNC6S6yEhZi4ag==","shasum":"5e476d4fa84e730d0324373767e65331a842ce02","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-1.1.4.tgz","fileCount":10,"unpackedSize":43231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdI09TCRA9TVsSAnZWagAAUlMQAJliYSgZG0RF7uNn9ww1\n3yQeWe05ibvrhJ46svQ/Gz8nuZ2pFy1JyAqiU4G+Xjb2QlnzU/Nd2GjXdzNv\noHL5xn57MMGLaLfjsstSjS8sLUaxO5LuOeneyT8AOVxjtzswOPgeYsokDi+C\ncDHKiiEjmpj7+d4CP//z+R6IZoeXYY5C3sKODWHoIjToJhnRlWeXv9WvpbpC\nPHPSvskXWiZV5h2b4UJKZXbVPabWdsx3UInp2SgavsgXaaJEoNw/8j7P29yz\nMhN2G021JVUMUwY1AjZ6dXPmYelA6Ts/tye3OCAoOq9IM3nKcriOJACn7d3h\nujaYJaF4mWf07mLqo5qWSS4EMddakRfPch4KAn0DC7rdUhJYGBAqc+jpPW5b\ndgHyhN71of+IOpSTnyu90Lpjp0bKeBVGiV0+vChAU3f2lPBg6Vrl+6SIh4f6\nZ7tEpuRzZbdDpH5T5hQdWqM22RJzmlEqVlVg518RZkPJaG3mBsPHtYcfrOD1\nuw0HVMCliQZJ5g5W3dNY/QAk+TO6lXiqlFW3sLOptO1b3R0ldAqDB87Ve+jB\nYasaEiTXBOM1Q0wn/nVd62chqWI2OIztD8rKwWLM402rjN7Z1Qhxgfa/BvUV\nWfZgDLZK3vm5xXqxXwmcQKWHvD14SQEOPIfSlbNtiClr8yBC9oUwojNRxh7o\nk+QR\r\n=B9gJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQJNIPYfbtroTePXxTYUY1zxPLBZ3lydcHoegW9AnlSwIhAKOJpgz0uW5+k8UvdC9Zx8RGNjXfaTgJy0K80qJWrFls"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_1.1.4_1562595154523_0.24415844502801942"},"_hasShrinkwrap":false},"1.1.5":{"name":"another-use-form-hook","version":"1.1.5","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"types/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.1"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/react":"^16.8.23","jest":"^24.8.0","kcd-scripts":"^1.4.0","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","gitHead":"7fe0a71650e4de5ec05fb2ec93e2eb651fb69507","_id":"another-use-form-hook@1.1.5","_nodeVersion":"8.16.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Y8YLXlGf755AyTU0yLGfN35RsBiDb1713IkrmQKCUsaWAq4Jd3I4zRUW1ujpx4WkbGAydjVVIFIkohuNDQhTGw==","shasum":"9c50ada539b1929908c21aedf7c254533a1c5c35","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-1.1.5.tgz","fileCount":15,"unpackedSize":49129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdI1ILCRA9TVsSAnZWagAAl7YP+wRM1Kanr7DYOBMcEY+z\nDJFPbxp0uB6sDhkNXpOF1EKGcEoqTzaLTXyfbH3+M0XkuyoYH34kw729+oUt\nBn4472qiiVMUUx/5eQBZaJTaFeU41krpiBELNCIRsb9S0Vt4a66elQSsHAim\nJ6dIoXrNRRQrJPE/bYLAErNLO4H+xeIeug/ZfjD8cQM9LCLvkfKkLt0zCkQ0\nAS85+xAtiOMPD27sPaBw+OLdpEZA+wdJ403HrSbOu7i4e8ecr/PmGRvuYw3p\n36B+OffRiD90HU4SoenLAfm/arSjtPTLvOza+9w4uVmcCOKOpE22ghOxkKYB\nh8+ndrPBDVAAF4lNDNzQ3ytnaveuaAOHXp+A62fBgqB+A8GfzeqPc88R4OdY\nbq0mrYJxiMLvZSAJKVDtiGm3ilQ06r9MtZb6WnjeXB3i3mEoBQRsHdttcNro\n7E9AmYHqiaaqpP5Cj3K/xYw7oIrEnjZFjkd64+sNdh247HwnNm076bKGDxww\nBCxKv3/hPcd1AzoPIv00Gbq+MKlcgGrm4V9kUgM8rsjVJhEpJga1K9LxZgeZ\n4SjrUMwpgHb+qLPCJghBvE/Ez5iCX2JVa8lTDjqy32+0lHS9Hzk/FpR1S4s5\nuIReHh5u9TBVAIYJnsm0vpef3hcOvX4/633TCvT7KSieuWE6vgjdfY+wHVSR\nz8vR\r\n=RDQy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDD4hZ3MqnY9bpbJiLsjsXRHac28HcpMjWhtwfLCkD64gIhAPLmvlAZCTGgDGJzm89J0nBrcUiADyWbPwTQA9LmBjEw"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_1.1.5_1562595850133_0.10707134222501802"},"_hasShrinkwrap":false},"1.1.6":{"name":"another-use-form-hook","version":"1.1.6","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.1"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.0","@babel/preset-env":"^7.5.0","@types/react":"^16.8.23","jest":"^24.8.0","kcd-scripts":"^1.4.0","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","gitHead":"e089c2a673e7f140673f0c39497e8e26fe8b1441","_id":"another-use-form-hook@1.1.6","_nodeVersion":"8.16.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-K59+pkS4iX3QH6Mf8vSYur3VBC94bPYzlpTDdmqqRm6+hrxvtbHWpzauo0xJ3jZZ7QlbMby1UH/B5kZiQ/of4w==","shasum":"7c299ad562d511d2ab25c9366753f7942007e1f3","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-1.1.6.tgz","fileCount":19,"unpackedSize":53739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJD+LCRA9TVsSAnZWagAAOAkP/RI0aVYF6x/rI3DQrEFO\nQQRBTA47Hpp0mLwzdOEBdxN/28bF5iPsoEe+litzESN1NVmRzXfE/+9nYdL+\nffwy3xcq4WjaCm+heZ1XkHeXUB2Za92Ui2JRnQs6af2a4PO/F6np/JhkkvMG\nnMdrS/fvZaFR3y7NA7db6DWtYqwPZHSEOAPhCBAVEy9dzVBjFATPBGjfTsN6\nud7ezpRTQSs3dRc86wyRIhryDQRjdNJZ84o0G7E0Ylr38zDPMkHYJnXQJjgp\nmSHqbdUUJ5d2kKS8+d36C5nDYXMSTNDVDoBh5mMTzF32IoiaAcpbQmOURaHs\nAtmZMd09JlJ2qS4ZL755NFVzOwFHrAH9t75wgb8x7BTdAxGkTSWuZrWfMo36\n50+u3sSW0ccPb27k6qjzwEmDK079GjYuUaxvmQuVY23/GmLzg5T1RUWd7AsS\nJudPhRMtFTjsLfVutK3ufGw/5UhsKojmF3VG37CBCkHi3Qa6iTiynIyjkTyZ\n4m6QZqXXHFIAuqjtBUR/LjevFOIEQWN8ge8d9YSmP2eKdEkOprSTSX/Du0U4\n4mi+Iybh/ymGBkHCc9UzeNPgBDVAP2ijo/kXXHGfcu6YOz5B4LXJIeNt3I+S\nRDeJLQxD7KGr9rfH/NcXSG4HFcvZ2l1GkHInjPmrqZkic8Tn+LvgbfJLC2UE\ntGJq\r\n=JOkS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdt5SBO+SLulF+e2olyrZaGxF1K6sc3e+y3vtF4T7L2AIgc7krqyfYsfzLUNwuJdenVBC8mKbh7ns/oKPhZ9+U/mA="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_1.1.6_1562656650831_0.4996304154373723"},"_hasShrinkwrap":false},"2.0.0":{"name":"another-use-form-hook","version":"2.0.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.4"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.4","@babel/preset-env":"^7.5.4","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.5","@types/react":"^16.8.23","babel-jest":"^24.8.0","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test","test:coverage":"kcd-scripts test --coverage --coverageReporters html --watch","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"gitHead":"413e5e92d5ff5b9440f061b4d573c388935e5fba","_id":"another-use-form-hook@2.0.0","_nodeVersion":"8.16.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-YtFpq1Qk6ZyZaphc6iSxFkbaEAuEkTvlsh0Ut2CcRxTZ6b9PL5Xs68QYoW7SBGOBXnDUpzS5NGqKfelg083GDw==","shasum":"9b882f4d984412bf5fb59b8fa7113e581780a6db","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.0.0.tgz","fileCount":18,"unpackedSize":77157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKh6XCRA9TVsSAnZWagAAviEP/2hmjquHXszA2mK/9v9E\nT50MyVP6kB9JBQqDtT72irvmKaHVC/LRbbvibJx1WdpBPv1D9XarS2AkWEKS\ntx1ejk3nV7cb7VUBTfyHjSkIuedngYgzcduljsv1X0+k2527Oyku4YKmAnv2\nEABkDgOIZeUjxx0E3aXS6wYB2PUVkg5HnzSIw2L+QC9pTSJhEty+9kaKGpW5\nVs0m5zysxKhV5TgMVAdLghCBFnh/ElLwVFiQyQmweJZVy8W0XMTrnnwoHHpp\nK/Z9x0zFnmIZACQAK2u4gBIHdaXVxoA4sYkJQBZhRcD4eK9orSn6n7tGrjUD\nWTIvaBwc2cHUyjz+atlmSV/07OtJcH2Gw0Olx6ggjRSokNJekaAbZCpBpjWS\n5OTsT9iEDCZebLkJw+uZBz0ArpWNz5FnKr7qtiY9SsaUoTbQX+2RowGVHvGX\nLLEE30c8OqgSqBM+hO+gGnXbpxeBOxxdUbgzKEBpt+Qcz3b3xrEp7yeIx+Pp\nI7MRadBfWuCxp9EHKMl3fUiTSmRMBT1I9a0K319k3APLfbQPu6CBUTOPQ5kE\nAaLmNQ/SLuPHE6e8CC2hwGom6dD+p7G0WHzYbDTaYVCAf+0qJedbI1d8U3Mn\nKofHtVURC3AEzuCmJyUI2gJOp8Sn/T5Otr40xyiMWGxyhAeFiPNbx036b5e1\nziKp\r\n=dxLg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLyC6Th7BZ1AR21Hn1IpmovvDDL43IP0id1SIbnMFrIwIgB4mCcRGsSb26VhAIsqnytNbQA3m4bOWyZdv1SjJGuqI="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.0.0_1563041431050_0.4740961412790814"},"_hasShrinkwrap":false},"2.1.0":{"name":"another-use-form-hook","version":"2.1.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.4"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.4","@babel/preset-env":"^7.5.4","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.5","@types/react":"^16.8.23","babel-eslint":"^8.2.6","babel-jest":"^24.8.0","eslint":"^4.19.1","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test","test:coverage":"kcd-scripts test --coverage --coverageReporters html --watch","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"gitHead":"5e7a06ae1ba488f05ad2370604f6916d4d8d01cc","_id":"another-use-form-hook@2.1.0","_nodeVersion":"8.16.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-m6bInbh13+fu7suyOp5QVm7+Bc8T5Tx3UvbPCpKjVI/N3Wz5tnnllehlcZaSiRsAXb811exUFyuaHExpUHvKag==","shasum":"494172b8d17889bc5960f83fcea733698a9ce648","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.1.0.tgz","fileCount":18,"unpackedSize":79822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLZx+CRA9TVsSAnZWagAAOv0QAKNVdHRBRSBW0P1LJODC\nXydSEKriPqhdbFBTuDxGvc2Pd2GNAu2y1C0zMsqHS/H+joQPg/0ULZH6agai\nbNrcTwourTK+2yXWg9SfxJCuYh+ht2Jz6ACL3t3DrA2Jid/4awnZIQUzZGZ4\nfTJqGuoJMCldQ8Es5mX6M6rgOOH/xuPxoKl4Apjxr7xOOvMtVnM/1kPwuVxx\n1kPS7nC9Cc3E7iyGX1QMUu9F1VsSSjeZNiTY4TUt6GVy24GFPTPocIFAC1N2\nQQyUKVfrWpClzdLgSWCBUbgSD0mrp+CVaHocaOJG6OFbS/iKKxJdxytVJ4d6\nrA/QokH1mvK9HSpHiMoAeLr/jzVZAedjpoEiHs7jUyN3pUTRfCD4zdNN9yJy\ni0B57wBW1P3NZNJIXRYFS7GRrUukt1StcqXNqyqk1KYZgzDoIfj/2tbQ4SMn\nvJe41F0tdLb24tzimXpYMHs0/o5OWB4OtRqW7F/zzWUqZ/SEqFAnHhQGmNaw\ntewewmCVTNGhq5W3woE83taflajnN0rq8aKsTFvDsedg/MWKmD1JMItuVu5k\nxWY7E65XTfAK5Ebguuju/C9M3ETkgfkoWiFxo55G80HGmlopF/3BhCxWW4EP\nGh2B5KannWCAP/tSxkDEjCIzRzJldML+pMh5sH8rXnZIB45lwYtjKJ+25MlS\nK6ks\r\n=xNcP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDpoKye5fk9a8QhAByo6bEfxjNs0jJK9yxbPbvMelRQgIgBi4M4bX++sYqTDx2ftxCv4N/S54sTsSis7xYfE1LSR0="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.1.0_1563270269173_0.8707690240678465"},"_hasShrinkwrap":false},"2.1.1":{"name":"another-use-form-hook","version":"2.1.1","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.4"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.4","@babel/preset-env":"^7.5.4","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.5","@types/react":"^16.8.23","babel-eslint":"^8.2.6","babel-jest":"^24.8.0","eslint":"^4.19.1","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test","test:coverage":"kcd-scripts test --coverage --coverageReporters html --watch","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"gitHead":"03639309a283dad30a3a239bc6a40e62c9c739f0","_id":"another-use-form-hook@2.1.1","_nodeVersion":"8.16.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-aQnQAsnpWX1jFPN3UO7crADp+zlcSjaX/7b7TXP1YVls5FUY2EtftWlpYu7wqiaYJTPbwJoNE0UsBjCrFKeC1A==","shasum":"3ea7bafd6b3b5548484cf3aa763ee9f18bc50f1a","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.1.1.tgz","fileCount":18,"unpackedSize":79814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLcG+CRA9TVsSAnZWagAA4jIP/jqfrH1/uv4Z7kcbyL8n\nC3z3ULPstrjUd+uPLAmuH97ujqMBAsEphW0nXhw6jQlnaJXkfy3XiGOYSaPh\nkJuTw0R63qykna9X4+ep1lYmYVN1uE5ypMh9/POlfa5iNIB7H9q6cTVH1aG0\n28Fn6bsS6AygmS6FW+8bU4/KrkFZuQmrELTeIjPtVylV8QfRTMkvt6/q/ZOY\ny6h0fwuzTEjjN9siPtbDPwXcZDX8ZgM9RTrk1qV+AlVfKY34jUTIVrQz4fwv\n/YYIsoPm6CUIaJeQcUK3UEwiTdVRof6DyOkbx+NFaLfsmVp6U9blpu79Qvm4\n/OlYmCtA9gSkbi9aMIMNMJX1fcm5SA2fCH9ebYQW/poY1q8Iv8fm9dfKFcTN\n1f5IKWn154yLiqW5gD7NGfs4aI4x9hxzePMCFw1JwNz9+Rlgm9oUzlmNq3dC\nFcVqQzFBSLhWsGpP7eiWH4eqzRgwe9OdhUf1y6yyywtBppZ0uypgZNnVb1DM\ngnQqWWwXInoqvuX+fDv0S6DuoSYNNPUIb0cic/X8J3Tq8OBoZpIEjCtNHqFO\n2vs+KKM5njRXbR1EawJQEh4pR2m2P9hTym1S6eFy6ajJARSmlVd76KWUaund\ntT4RSgEa+22UEG+FaPF4MvonSM1QO8mmYudjVlTFadwcavjgPsEiRM+Z6nLh\nI4PL\r\n=GnAD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrWFoZ+qJi7Sohf5srqEc8Ai+CP6I58Qw4cg7re8bqhAIgH4kSmxpvGKnZy2Z9Adl8gpuscf34hw7lKYksItXOrp0="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.1.1_1563279806171_0.3662259448038845"},"_hasShrinkwrap":false},"2.2.0":{"name":"another-use-form-hook","version":"2.2.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.4"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.4","@babel/preset-env":"^7.5.4","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.5","@types/react":"^16.8.23","babel-eslint":"^8.2.6","babel-jest":"^24.8.0","eslint":"^4.19.1","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test","test:coverage":"kcd-scripts test --coverage --coverageReporters html --watch","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"gitHead":"fea9a894f8075943a5b3e7b48991d112a0fd2d67","_id":"another-use-form-hook@2.2.0","_nodeVersion":"8.16.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-TbBEGoIYX9YFk5dVyVQygpnwBfTAiZuF9brkJCcOCJk9+xjEM6rWiPKAa7XP4tHueD/TZw3x9QSzlMR7s78e+A==","shasum":"c92c2fcb368586c44a04d8d69ce7d8cbc63fded8","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.2.0.tgz","fileCount":18,"unpackedSize":80689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMZynCRA9TVsSAnZWagAA1EEP/R+wwioSScdB0awvPhZ3\njKLdmvXIjDYsw6DeqvD7f5oVJZKa6cBifzfA7bg0ktHYDZiyqNjrSqWNVsiu\n9fzhAuLPdX82OlU6qAvdPBIfskizajksCx56KPNuP46+Za2wMvZCjdM7JGPx\nsnU1ZjAmviNZZeLJp5knntlLhMwFFPVYPJx/c0ijj5sFul5xui4Kr6X/vN23\n5TEUz2HpD4Y1oSCFr7JOuM6+Ulp2ddDFbJHL5ige4BOiS3lqwPJIKCApW6xR\nuoSRFedIxuMXaZe4jb/bUQbrOm+2mA9RP/i1fOfqwiQI6phdWw7ZDaaceHLc\nnwnodp8ppGVpxEyEc4b+nLaaOC90dCHOOhtI2wqKNpKIntP48CHie33NcPS4\nvWJKY5+kFBHi9h6n0C2shJcF91egSTSXleMEX87tRpqErHdpFAvw2iZh17wN\nhGHHQeY6ZLwY8FBbdrzma5Il9AqbNSYftr5nadKvNWj/GDqgKJqI2JDbFG0i\nAUyCo+7J+wj+60eSxuumBmucuCEc/PotIqxJwBHD4N4fulr0ppw39uaXJrXL\njfJTDqbsg69D8A3RmDMFqhzUTcYE2y8sY7RA5heRnYcxSdhT5AoKG2kxFwye\nsAbrGS+ToWylO13jqqWSG3i9ZmDOldao5k/HbhI6OLORVAFeTNXRwVSEHolx\nhRz5\r\n=d0XO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmjxDzUBSehqx52HXPDbJgn3wUcBRGVZmsRFIuFgoPOAiBcGBzEt9keZScBD+ViKeHfhP59v13uYwLW6eQKQmT+AQ=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.2.0_1563532454032_0.10754568525928754"},"_hasShrinkwrap":false},"2.3.0":{"name":"another-use-form-hook","version":"2.3.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.4"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.6","@types/react":"^16.8.23","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.18"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test","test:coverage":"kcd-scripts test --coverage --coverageReporters html --watch","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"gitHead":"39397c536f12a58693867c628d7e17ede22048e5","_id":"another-use-form-hook@2.3.0","_nodeVersion":"8.16.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-mF7wcqH4Jqp6sfefJhGgNjFgIyuiGXpy0JCBIWBTJtTjtctAIuV3NDo0oWlKg5zXylVyHjVDJpK1jRgDQvHxOg==","shasum":"fd840e5f99b98232be038c05cf69017ccdb7cf40","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.3.0.tgz","fileCount":18,"unpackedSize":84523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNwueCRA9TVsSAnZWagAAR9cQAJjhqutosIi++CpPA7Pm\n+k1qKKh4EuDRTr49h5FU0qJJkW2+XfArSTkJmFnBCZS4mezssj91WJhK+Wy+\naC//Nhp8V4ZpPyrtQyoHYOJjtSqGktm9GH3cRznKmnEPCYrlue7EYHP8+XrI\n40iipbVy01PefPgFnMY5i+8z4RdnL8dRgb561g2wdy4El9e1eYmqTuKPNB5n\n+6Jk1ZCUlWoz8d7ErZ+ji6fZMTa/+6ieHiU2N5zsUNSmq2SiG3ptvghyLYVj\ny3Xq3fLarMn2x/lXoCyxfrTtpnxnR7uzVOcNT90wRd4WR190RubzZVdFhorw\n+zbsjrcU1qw5aQ4JkqtMVnIDTYMw4CD1Rn1HfLM3kUPMCy10BDsdHPFFUxD6\n7ztxyAetZwdESUYfR4dHfnFjmWJZc5HcJnfY4A3i6ISym2t6w9tvZCjMNxrv\n4i34M4Q7ftGYDkszWg6R3hU8zum+F5CjqSz79fmU4INlu8e5FZh5QtzK0dqL\n5TSqPIVjhLXc/IVqqVSqR+wPeJE2Zkq+Yj7kaqhHskJvau0RYxxcj9oLdt5K\nLZZ1JQH/Rhmc9bejarU4VQ1SMSTSXg3vtihgp7Fu/lr7N0zKCQk1wGmuN/mq\nAw7kcUpUyUkNjYue1FXxxesa7tVXxHTLSEoFgkMUWjr0XRTa3/ss25e7pIaa\nRL2i\r\n=jS/+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnc/KMKXs8SJ444fLemolAcj5KgpiwthFLDGaN6J9mvQIgYe7qGUBCR/CZ5pn5rvmtmgxvLY6Wrzp1+c/Xz4MtNBg="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.3.0_1563888541070_0.04328283572108149"},"_hasShrinkwrap":false},"2.4.0":{"name":"another-use-form-hook","version":"2.4.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.6","@types/react":"^16.8.23","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test","test:coverage":"kcd-scripts test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"gitHead":"e589df5d435e844ef765df6dd6dd1f03d8b1a623","_id":"another-use-form-hook@2.4.0","_nodeVersion":"8.16.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-STvnJpj8Q2FFyeMHkitcsiz2EDW36Hp2YHYP2jkrT1v7aoQqtIT92f8PKBzCkdFg7TiMarCe4kidLIUk26O6Lw==","shasum":"0640927707ed076bcc36589f803ce70955e83429","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.4.0.tgz","fileCount":18,"unpackedSize":90882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOig2CRA9TVsSAnZWagAA0rsP+wTBntACwrUr4qHfk07d\n6xR3Ld+J8mChNs9xZBZ0/0rg7kN33D2Mus/JkZkj505VT7TXyf6HKTqvkVBI\nHEs9Zf93vuFgNgbAK8IbfFplMdvU4IYFV0e3/0YX2wL5jIlghhHUwrzqnk+8\nK4ZziNusHd1CYlGSxx/QVLC/Aemz3dlFeOaajsKPnHlJYhMY87V26bJ4Dqpq\nTDwhB+UfI0G2jinN4U2oV9uOitSrkBtbrum75Uw6nSgch+36pd+HWY3OAIc+\ndlBdwmLEpMF1HnpzXD1ysNmY92fcVdE9qsH1LlgTpge6qyXpowWvaRQgoxsT\nm8DWEuNK/nrBoYYHkJ593OdI1jY0P+rILrSxCgqb1BxuBEdSaxlk8Kkiiiht\nFCf4wfxJPPtcRfetjkndvqNo/t4JOtTbLwgJSkXgx02kvxFIIHaGE2jx4041\nERmIyXlhaYovy8zW5BtHciyBjBwt0f3hRyX5VEjyYwnIdyKhbM5217LRI7kT\niLjootdCm+NTmXANXoVAgC22BYENlwBMlkEiw4FxmfY3gxKl7xzkh2ZiB1Ny\n6fZGiHBDbDbGBgl6kW4S6Q3isSOR8Y2yzm7t5kBg8ZF//u5QqLu++9X0IH8i\nqvoynVTeAsBO0y8pmQAoLYQeMAu/qLYcCvqjDCYkaeQ4lxmI4PYi05NLHNou\nOA3X\r\n=LkdL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEowouRm2w51OTkFeuxJQWORLX+bw72wzn0GhQZuc56UAiBJ2jWxrOXXRmSLSYEO2afeADQw9csTu/6v7nv1zPtx9Q=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.4.0_1564092469987_0.6130643306365919"},"_hasShrinkwrap":false},"2.5.0":{"name":"another-use-form-hook","version":"2.5.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.6","@types/jest":"^24.0.15","@types/react":"^16.8.23","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build --bundle","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"gitHead":"45e4a0d43454a42a87791efc50fccb7065896226","_id":"another-use-form-hook@2.5.0","_nodeVersion":"8.16.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-d43DYkkXyD+BQmSsyME9VZU0xWqI9I3vuzxWq7TgAFgaGW/Qi5mhgLUN4XlarImYcrOoAb163dWkI0Pl7h7HnA==","shasum":"d6ec6e99399b28fc02d0dbbd08cf8dbca47185ba","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.5.0.tgz","fileCount":14,"unpackedSize":81003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOwkVCRA9TVsSAnZWagAAwpAP/jA5OxBKI3QQZ8OcE+w5\nHJ4iKOBIHIQtjv6tqQKy7t3IymZnf/Nthvp3G09xUEE7YcyP+EoXB3fPGAjM\nagqkupoeHRuKkWGjqEHlmuLM8Wri1+OGY9C0XuQ+GxKfvmrSeHGmkk+CuYhw\nebtQpsl0Zp0qO8eZ0TGdga0VImUGkGxu2h/W/Mo8MqrSMEjhO+73TFh1niEI\n2vojaKo6rN/ud+zI3V1iGcm2RWWRdlpiSucm4Q2aW+8pvIQninHaL5jlanE9\ncPVg2NKCi4jg0+mjeA6a81E1yVXR9Ol6jjggPSBsPgfqwqxYeEAf9UPE1Ivo\ncQt3N9BrWUCfnnp7/LlGeHo/NYsRQlwCwegtt2WmCDImGSmnNtdXEgh1v1WA\nygOelCVcMD8aoF6jqcpx8/D5f4lZ0ZdUOk3rfRU3ev29sdwm47woRKUU+l57\nAn9svHV0R+XjZ4+QJ14aygfz3de8ZGG4IPgnpVyFhnG5E75P4howOb8HI96/\nQ617sK/gWEIuZgmoQXREmCx/OE9VfqAs7Lb1UciC0cagALve5x8BJhoVZxMW\nw71rtORJBuD6NLigK6+C59IaQ8YYgZNlxTku8yJDwjxCFEJK8LoPm99tJdlE\n5jDuFV6bhqpySFrEj39dFlBygoad47/BA2g6tbAYU+f3yey/uDyXZjXDabr8\nX2Nu\r\n=FnPN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCu1iif+Kd2/cfQchzS6l3fIZXUPGgTl++BglIzZ0l3agIhAMzanhI+wUdabuugs7D/NFMJTKn8KEcSfhdntOryZdOM"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.5.0_1564150036974_0.4066623628705581"},"_hasShrinkwrap":false},"2.5.1":{"name":"another-use-form-hook","version":"2.5.1","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.6","@types/jest":"^24.0.15","@types/react":"^16.8.23","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"gitHead":"8efab4d6d74b883960684ab83df3196ccedb38c1","_id":"another-use-form-hook@2.5.1","_nodeVersion":"8.16.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-EiLBvz0Xhd5FFz+ZXziP31uPoJoaeylKYvJW+oUubXl/9+9XLyeuchnVx/FHTXrHzFoPisbFA3cjvn1+f2z/ag==","shasum":"8310f029f703a62e52a8306dc5ee0fd8d3949ba7","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.5.1.tgz","fileCount":19,"unpackedSize":101554,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPqd0CRA9TVsSAnZWagAAHvUP/0L5l7TZbUQRtukXXd0p\nC8NRI97F1rNXkEM3yV0wrdss15T4HO9SYfUJkr6UYrwd4LsKeZfKPTCoK+Tq\naC+d9OMlPtPFWL+dtOoGKDurlAbHn7mvcR2ie2NkBqYwmmffZGTmsEkzGWUp\nCzkntrELEu9DPd4hjldo670qwk5SZBlrcfOxeeRs+Caapm0pGlpLDNqcOjNu\na/sj4VoaankQUK6sI0CWZ330Sug48nWOBYpUZC7OhihhA4B43vXTCechM5fr\n0+tHcmFfHIAbakODRFMdYFEN1MlI6Nou/2MPz3Z7Pfa9Zs4Bsw1EyOd6kzkz\nVXZp4pOJDE0eM0fu7QkIKxKMS9OctzZza1MuwskyjIO7VQEJUbpVG/BhhJi2\n0OjHUPwHO4zlud7vCMmn+PBwWGVhhY6O7cZoF6gf8ZDAorrX3mDU22svCxUt\nJ4ku3YSTQrZdEFZfAyqXI5VXh3pamwmiH0yeOY4swH2UbfjJSY9mtfxNZQpr\n6wAmnXThNvyi+6fGHGXq4hKIZA95n0/KjI3kLSrpkZMgqlgOoM0a2ZP6gfZo\nc2gcCKM9bSjy/Bgg2PEqP14FV91DO0Ow0aXoFsbJBXa1yG29uzjcZ7WZIK0h\nk5xCHaoITa4kglZN89Z9DrUvuddqFd/vE+ZkqFVjUyro+QuRuI5h9fuvYaPV\n2MG6\r\n=FZji\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5kDlsqfOO4AHO8cnrJrzgI99XF9GjSJLwB0g82cwkmAIgPzROSuWPk/K9LiBxSp+zLwSP9kgyL0nn87w1mjste8Y="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.5.1_1564387187400_0.4173297200872299"},"_hasShrinkwrap":false},"2.5.2":{"name":"another-use-form-hook","version":"2.5.2","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.6","@types/jest":"^24.0.15","@types/react":"^16.8.23","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"gitHead":"12e0009eb54be887fca2e7a5d561f7eede21bdf7","_id":"another-use-form-hook@2.5.2","_nodeVersion":"8.16.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-3YbjJ7LX3Si/cR+U+BjAyZlilvXYwPGkPf5gGMofpziMtCWufYledILs5LMLEsEYFTMveRBc9xxK1AcUSrpZ1g==","shasum":"e3cf9a9711b66c12c10a6bfc0c4e61a11bf73e0a","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.5.2.tgz","fileCount":19,"unpackedSize":101488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPrUpCRA9TVsSAnZWagAA89UP/2Wlu7JJ+THdh37X/WD4\npxQ44lJTvoqTi7SfrytQDn6GGqoidCc4aEj5hViLMbVOcEjjTxJq1c+CCnDx\nF71uwx2WMnAXQUflrviWqdxH0AzwqVRSmnauSmKaT3HW6YHwxcrDYxmxxulC\n+vQ/npNkLPxSqYPqPUNAecRqWUSUmUydvrPK0VunolMSN8h8rWwYf77bToYv\nlnHd78HgIuIJoqxITXF1OrqPCipVvuTNU4WlSTHzDEPLjhLkr2yPvjinEyZ2\nizU47nIEuNbbDzoNmpVpcuAVtDoAC05+0Mg4ijkCMTypJTbaApBAm10x5XzG\n3YQsRjkSusKiS7orQQG5YJn3Pk+5foSouY8YnGpFC05qWffY11aO5pJtMnz0\no1NSR6SUUfzU/5BRf3HoNqdTNRgc3W+gZBUC1ndTjEKUOUqUeFdt+fuke2yi\nNzTUPIr+zvESRjhZmfNtUHXfYus0ueUO2FcR8Iw4YydltFniXgqbzFTZfk0p\n61i7HOf4e/XoSNU5/kj8jOZ6VbjrNRwyIiCdez5LJuVAyDAjwIH1/+TPvm6u\nDWn5nS34yRW+9TkK2cEuZ6dO8+6pbnOUWhyXn/862FFGLF6KTXNxc0fxS2dA\nRSON0pPNhmelD7Dqkq2KECTxmQcCWt2FJBaM73XrwYwWM5YyJLDrM+gyePIk\nys1q\r\n=L1ut\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHH01+fT006jcFp5Df5xkAIcGmnUzxHucSpyhvU0uPozAiEA3fyTcy+H5ScoigsrYzQxreqYuTk7bGM6y9dfEZ0FziU="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.5.2_1564390697011_0.652899166012042"},"_hasShrinkwrap":false},"2.6.0":{"name":"another-use-form-hook","version":"2.6.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.6","@types/jest":"^24.0.15","@types/react":"^16.8.23","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"gitHead":"8994ade6cca521efbf230d51ff3efaa2cbabc843","_id":"another-use-form-hook@2.6.0","_nodeVersion":"8.16.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-rpLT2oLu9bW1PdTsw7Iat33MHVbIBLKqh41rR0IAgGhS4XTKKkYYv9TU6oHwi7ooGTiPj9r9kY8l0ikLFlLSpA==","shasum":"d41eae6b22e9369df766f4fb6bd817fe99c064a6","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.6.0.tgz","fileCount":19,"unpackedSize":101589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSA1ECRA9TVsSAnZWagAAuwgP/1eNono4v/q1yl/Exqh7\nSimNWjqnjE682qiRmHBEHcha0Mq+Exi+x/IelSCOh4XEGK3A8jZvXb/SU4Wg\n7BORvVOGSZ0EV2GOGUlnG0dlFUHTkgVXN0ERBHLiX4xWs9jupfeATBBQTD9T\nprcKx+NcG4x5ZjV5+eNRUjlfoFO93vHNHnyZNR429sp5ZAhMs9Ek4wOLbgmO\nWIw9tkLESQOgLogDYmcMGGqDXPAC0ummKthBDkH9EhyUod0KCVq8e8t2bO3G\n+Ft/cDgDI9oqXrqjuDzMzExFkl7dkczzEMOdX7kkorsztCW9RexSthNjplhX\nlvovJm6IiNkxl6t4CZXrCVYTPfEEURfaRrcHwKCCHfeWbO1UQyPtxy/8NjJ+\nfcKbiTpj0GojZUH+mDm4YmoTNfXBygx2gvBQ11Ej8ivnCeJ93hPmoTfAg2WH\nCp4zL2GqTGuTQpziRp97D/Y438TP9pOScz88ExVHogqU4C/A4MABIroMycWY\nGdk/pm61GPaTM+h5HBc71yePMkKAblC76Jjqk8zzVgGyXxapqY/1/zJLmobx\nHB2mWLbR7qgdmX2qKxE+FN9aFTBRJz93bdmhKmoHlRCSYwF+y9cXH1dkaL0X\nmZwLn8pAfptwaKyrbLy2SbJKLF1a7yJHcgzO9UUznYfBrDW3ZMYvYti/awt1\nRer2\r\n=fGBs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxxqDD4+dfH9puV+XcXVFqrSh4rBugEmTtxyypnjbAjAiBNG+gpORUyDN8LSq73Vulk9yR/L0JwgZ0pwXMHpY5Qzw=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.6.0_1565003075893_0.7175091065653245"},"_hasShrinkwrap":false},"2.6.1":{"name":"another-use-form-hook","version":"2.6.1","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.6","@types/jest":"^24.0.15","@types/react":"^16.8.23","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"gitHead":"8ee4c488e5c8fb2243bb799cffb5850570658a08","_id":"another-use-form-hook@2.6.1","_nodeVersion":"8.16.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Md60NpjRISfpHWt2ft8GZYpRNzmzaghSuVDlLHpp4EIJ8QxepNzXKIvaZTVAXY2CDGVNcQod9WecdLK9tf9VLw==","shasum":"9a8714226d54ea6d31827016e157a23d3c32a85a","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.6.1.tgz","fileCount":19,"unpackedSize":101591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSI1sCRA9TVsSAnZWagAA6bQP/0fe9BDxvdR6WUenXJi6\nv/JH3MXcBWQkKFOKjJxQh8eH3Ng1pcL1A03APRlPklimgMyQz5z3ZupwLcb7\nPZDk7U5WCuv1ANbqmQSD+CIXUTr7hZAxfBWJsGagNzqG0ka27dggFqJCJQW5\nHWS8FhbQZF3YjnwRSumzMjOBiTsUdsZdehLkpjoO5g1ZiIVlYH84XcQaRKA5\nUDJoHKmclTf0xK7lQNYcZ/gQesfANmU8YRsZMSGz7/G9RTKaX/nx35JINPcz\nQ+EehmRJEa1NAhYlFpcgDzSkLLrQQBNcZAq+UYvGTGJ7xplrRQ/uILUq1O6G\nZU9XOOnwqsj4LOBJl7LZnY96dENZL873bfjR7SNwBWJqY0kOIYB71jq+cJj0\n5oFv6ZQLcBKGD5+ujiMbbuTfIBqfxiA4c4ShWRHM5Zk1zEt0fgOg/LFCVEdz\nYSDaI7jnuqNzEGqtZC1XauVZi/EF6bvTgXvZJaSzChiqis8bfg+9t7UVLnUX\nWFaXghir1X4XCqA3yTrK0secAUx8NDeNuLDDybsn7dL2MnYq82uWX3Jzwiet\nyh1K6mK3XsBhZI2/hBWBt8HLJstlPzblvKkVHW1EOhtnwaVtJv8Q5EN6Njgd\nDqR+//CcL5SYmTR7Obg767caX5aKxrpp4PcxnmcMXyUhPTu9xNT0Ps+Ag1Jk\n6d7u\r\n=lymB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtbyag30qxl7tE6DyQSOoZQgUqBm+Hs1A31ubAUqWseAIhAOyc9Vj5XGM0nG2resMO3Mczfusb0r3ofphss+Q6DxLW"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.6.1_1565035882453_0.9217627657797747"},"_hasShrinkwrap":false},"3.0.0-alpha.0":{"name":"another-use-form-hook","version":"3.0.0-alpha.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.7","@types/jest":"^24.0.16","@types/react":"^16.8.24","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"ce4f0dc683455e16fbe465389c387ad88c8d2fa3","_id":"another-use-form-hook@3.0.0-alpha.0","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-eUWHjNMqP5KTq2PQkVTMFod1QpVYAJ7oP2M+J6QYjY07T75GWzmRj2SGEK90t9RrOAI+QYXlWimTwxrxqykx1g==","shasum":"66782e3d0263e79b785e03413ac32e1f5b6f90a8","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.0.tgz","fileCount":22,"unpackedSize":115410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSJYWCRA9TVsSAnZWagAAaVMQAIOe0o78gsGpa4HJ9OoY\nwzP2Sm1Y5CX4bCwSx6SmCSGgNPLlXXyJw2tFjDW1/2F/Qg8L5C28nZLTVukw\nT2mguVGcNRq7aXftg+jcEUtL8akr6BvOUEI7m+gT+Nvmsv0Jh18V92l88kd9\nHNCRdRgbtfubgRiBDrsaIrGF3uetlSV0OHXMYwStLLlV6wmDFNZYmERdcN74\nZSFmMZwSCdJHU8u4B5rIajuu6gkJ3zU3+Htx4kjvIoPC9CL/9GIgE5Eb4TaQ\nG0MKHcXHatBP/XtcMMx8rXZ1vZd52S9MlTXx2GCuX8AAgGMtuhZphS+e0Xap\nWMwQi7DEh8SDNDWRT4zv8Bz/v0mIg3cP7n0tw/qWpvWGtrWUUOFN1O/BjKQG\nyp7eILCzj+jCnTjWr+WFLHftswseGA7ZwLhnId9qKFSazjkMxxGJaZlrpd/o\nfGf50fCSf3FKa+6XCEQaiifSTNXjAg3tfAbe/b3HyCYfVDfZouBoRuIqFYgr\nU4S+Y/KFte6RZVvP0L8pI4fpbDlbg09CE2Ocb5EBU86n83a8SAelr3Kxh2Zg\nmwUuJVP0YZTs4aFG6GkyzlZcj9KuGuCQ9cTxuPF42iZ0SELDmOEfUkSPKPg9\nGBJt1drbG2mmR1JlMrprYN2uTDlDoNdc/GPJ3SEZH+xG+gy00mVmo7JSxCYs\nHORO\r\n=kJD9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcTXRvk2D3hr+2xxWDay4oZAbvJbeMgBSJXOyQAxmLkQIhAJR/G5zOQjqLpm3tpYpnPtfXwnIeVAscIdlNLdJtWfCs"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.0_1565038101869_0.25435894563939465"},"_hasShrinkwrap":false},"3.0.0-alpha.1":{"name":"another-use-form-hook","version":"3.0.0-alpha.1","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.7","@types/jest":"^24.0.16","@types/react":"^16.8.24","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"af2b8a99ff85662da1873f5951b67a0a6e343753","_id":"another-use-form-hook@3.0.0-alpha.1","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-9HAlvNlpI7y2JGUMeemVlmEpyiTbf6DveD3gN1xgq/gDRnhCfKRJQgBJy3GFRldBmWkFxz/ON2PXcJ1d9U/ooQ==","shasum":"56a3ac28fa8ddb8640f91e56f296b172314acfb6","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.1.tgz","fileCount":22,"unpackedSize":115466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSJbbCRA9TVsSAnZWagAA/goP/if+xoBAmex8ZsgoDGEa\naTbmwchFCBlwP4WlyYaxbFYaadSCcm6UNokZc2hBuSPIPnawNBk4UcGj7zNQ\nqsDES8TsE9luiHI6Wz6FxBotWZfX21e1euLo3ZtapJxJvDUGvNoS6TumDtkl\nvjjMb08XSvCgnW5dEADXL7Pm1yTB3e2DMdWT4ZqCFqPeGJSra+zzp1j4zgG5\nPN2FGcfuQTejAa2muUbvTpCKXzjaYKcP31RNk8XKBKWzA9DZhdAnljLczxVR\n6L8+MhMwfWRFwBrGF0L/38f2OkN/nfXGqgdNEluni8ksskU9yRSoked8VUmI\nIsPAWUYdlO4jCSths5wUxkN+mrd/YxiTm5s1gnZub3VxAKXzt8NwZzNbH6O5\nYWnE2aEv2cXOUUFlgr00x4/WMeU64IUyZQDOITjAfcuUBnpuTuRvZUGIJdgd\nvB/9gHXWGFFv/7mjRT7TtxeK1Gdkc2sZpormw+pPVPXrlOqyrMa3rzhKkOo3\nFH5xKmF0e9aXvXpTehw5o47rlTsoBuwkV63z8ySzDUtTAgViIYw4a4m25zVi\n8mv9exV+NKfcrtq7d3XyRIMGtZRlxFI6hkQ/keCgehX9sl/xu1JQJNOBci4i\ndApVUdhVFUsrTVj9gr9AR6uptvxMBZv9Y/DWrV87Xtl9TjD+Y1m32i2wgdI5\n4ZCr\r\n=fcF9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGJeKeyMvu2hv5mxEZls7CT6QK+EumHnTMHziLxajjR/AiBICrqzOh87GbC3UrkovZBZtuki9wxa1xTpCkumqq2E9w=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.1_1565038298675_0.3034134908231596"},"_hasShrinkwrap":false},"3.0.0-alpha.2":{"name":"another-use-form-hook","version":"3.0.0-alpha.2","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.7","@types/jest":"^24.0.16","@types/react":"^16.8.24","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"954fda517763e2426181dffcbe2da393f8f0835d","_id":"another-use-form-hook@3.0.0-alpha.2","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-D84Lw9meOvzAxq932AZQbbaO80+W741XeYD7bgFYVGWs5n02WKx1AkQy6lfHbpCeEUOyaFLJSYx+b/u1z5vL+A==","shasum":"e6abbfe57b9996182c174d6e1cf29a77233639df","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.2.tgz","fileCount":22,"unpackedSize":115508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSJhgCRA9TVsSAnZWagAASLgQAI9H2IJNO+/eqfeWeLOn\ndqBReaqIsW4OTbioi4eTS7HvnFiM2mFAsKMfR/vxQCPnKd+2RuWJznMZUel4\nGA9LHaKMRcR8HCgsyt/iqsXTRuhhjS4EJzppHfiK3nv169TbUP5F1RPBBP0A\nB9yfSZJfteEeuJ9dp1jdr7bu9eu9p8KLQYKvIyC0dXGnKUAqjMhgDWsm0TKn\n0EMybtlWEaynAyUoJa4+n6LSDyozt4ojuC6RI7FMnYP1+A7sgfw7jetWEtdK\n6viP3WIgNNk7KwM6Mb8W1xaDEMTSLhp3s6sqhmpAgsAXYJuGYRKxhpmmQ6pg\ngV7mFeilckv6mdahMkx1K9LX+IhxbgcdmGojLVjPD9aX8W2tMIOnJOHopEUS\nlIsvcCxaYz288AUSYDq2/Cm2UFKh7F8wiuFd9dSW+bhouj6gt69txgAJFq0Y\n8AUKb7i8FbUkKkEDwPsgayXLoDBVWAzlU6TkPoBV9GUB6nXuVFnvtfeLPGOp\noDgjq1kkAKlENcpuJJcm++ZwJdV7jnGn9KGOAUK7j0wWqREotoxzMblJRm5t\nInc4WlGBHkTS00q6XqAq4ztiJWaQw+wxPWW2j65D0HLppe4r8nVuQu+rOCKf\n/jrf0Woqbx+rnsZBt9v+elZy8ivrjS/t75U4ePgnb8mFY2f83Qt85Pc53WY/\nNweV\r\n=+Ra3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZVMuf5yrdqZuFE9bMnVAv7Xe1elUqAwYFq+YzmfswqAiEAoJFmn1+txhCoH4D8fGdgkMfuLU/yK5MPVf8BOlEXR/s="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.2_1565038688113_0.3547283473876206"},"_hasShrinkwrap":false},"2.7.0":{"name":"another-use-form-hook","version":"2.7.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.6","@types/jest":"^24.0.15","@types/react":"^16.8.23","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"gitHead":"519800bd434914773cf9eaeac531e8fb87f9a093","_id":"another-use-form-hook@2.7.0","_nodeVersion":"8.16.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-WlPlxtUGTZ/vz8HByrqwOZShZFqeFxOD3S1n+MXqX6wwjNgUdRvqrUuG3Dbx9ybBh2shO5/q7Hx2qbRWGukKKg==","shasum":"9d9ee0794822799ecf58f3c4adebfdedd845cd0e","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.7.0.tgz","fileCount":19,"unpackedSize":104118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSpIjCRA9TVsSAnZWagAA9yIP/09cuNVPC2yXmna7bxSz\nXsmgEOLbNrM1BmVsHd1ZG0AWvmlQRmO9Wtq/2BAz2ehp1I26YBIs356hlrSH\ni8XMCUrZ30+hqQkMsF1d5drKhv9BHLvy1syGiR7L/7bu8i0uQhbjlyQaqt14\nFvqopFIQizPylS+v1JhIMHCbNpKGPxuSPCmfW7v1Q1Ex5lSLNpYLRc9zTQJ3\nh5DbqjE5zVkDCHimy/Z8HyCDAwpPACqNy/V9G3OrMPCQMMNqwzQSi/cQ/qjn\nW0+KBUgvMGKJYTu/p+9EASZrc61l+IDfjrWwJh2+q+z/D4Z7TnjdQ4oCwLY0\nlGFcG76R3hamQ/ACNwcNN+8L+7ZPRu7R+muNXnmVVNS8j1DdH3h8/m8FfKqP\nNjjOkSFkRECcxde1XQ/PO/cJJL3WyLjl75Pou3FxIyigma3GqQRbSoK49zc3\n1YCKT6tAHYVrAaq6UOCH+01Wm0g5egUIaMh6c9tiKqo43fCkQ4mWHSdbooTA\nx5xBeN5ro1ewfp4Qm9AZKAhjOFVuupGoV9qdkOgKAlYK03jhSAyLgbD59NfR\nryOtJ0vpqg+KLTbHN+HnfHyrmnSf4c/QnJR5v33uwaWZ21YeeP5SS5DQXxXl\nfIIY8skxwotbXKHwJnoo4Ih2Po7PoLzQtcp/jPikX3Dnk3abHdc5NFUnKq/d\nTL6t\r\n=pn01\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGokIEK2olGQxAdgaySTb8qinKWLMwsUtRyzpO6D7MgeAiBKkKukDtjd9yxmRPExOPPM7oVCVKDAMt8F5qJ9YSFx7w=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.7.0_1565168162546_0.029491113030678306"},"_hasShrinkwrap":false},"2.8.0":{"name":"another-use-form-hook","version":"2.8.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.6","@types/jest":"^24.0.15","@types/react":"^16.8.23","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"gitHead":"15291e4a4a6d89ea73f4e88510d9770e05b0914c","_id":"another-use-form-hook@2.8.0","_nodeVersion":"8.16.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-khFYsjv+LOiaXY/OPuDXsW2m4ppozR7IBbCoYqsVvoQTlpheV0Bp/NH/PGVdTZvg8yp2BRjdl5l/uMfAPqAe6g==","shasum":"5df6663cfde273579c9c9d679aa7b380c4eaa066","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-2.8.0.tgz","fileCount":19,"unpackedSize":108173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSuovCRA9TVsSAnZWagAAT+QQAKDtK4W7pYzFh5pS8Jcx\ntTRbHA27sa3UNnb78xajwasr0FZSeLqfZ118n5GmtP0zm8uIIRHO2I/JwGM+\nvTR3eIAQOkGNBM0YvZTPc9v2r0Hfya4V0AMy8VvdknqB78/Vmom0pPnhc9hm\n20Et/XZe4ATbyrTPYVBGfS4xNnEdbyPn8o10lpDqHK+yP89gj4ks9JLJDdtD\ndfQWNHNrD/TlaiZ4ejXMK/i5XugHI9yJ2Q4Bau2RGs4ScPRGkfMQxOfXgcgV\nYLvn+Y50SAUihn5Rk03qM4MyCc2NN9iikXmKYRp1kfF+V1m9N0cU/6RoCtmS\naSzai2xT4ktgQ6pCJGafALmI8t8+adNSEEaJfVvB8fqUwC0pz+sKQXnNPhwT\nzvU2Xkzk6F/oZzPSCxITbfEJf4Fulcvr+2AE62GwXZmtD3jDxXZ3kCnU9LKH\n1u7lW+GQB7eG2kIna2InQRPzGyc0ucKLbssgtPggFqxPmVSXK6XEejE8Nv9o\nrSYdFkzG+hPJP8Yb/m5bmY4K6cKiKj2H/kx1nH6GmsJ8KKTCEf0ECAWtU2As\nfBeCgXeeEFoI49iea3nUjvIlbBirCQmrxSP8d+BvrI0a37LSvowJnilDGyr/\nWcrUge4//mumb1GslSEAMWRD9wb+f64kq53QiNYvYBvY+6mPVNSe1EM5eBZ4\nUBNp\r\n=A+8e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwunhjM7eQ5i4S5lEiIpRDZCH5V6SrcBaPSW+Zt2yGzwIhAIZHPbPQ2H8OTxLFLm8zlnso9DiXH/oQ5ReKYxzomaOY"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_2.8.0_1565190703098_0.19971530194981435"},"_hasShrinkwrap":false},"3.0.0-alpha.3":{"name":"another-use-form-hook","version":"3.0.0-alpha.3","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.7","@types/jest":"^24.0.16","@types/react":"^16.8.24","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"66214c738a2858dcfbee9d0f4ce4680e6691c15b","_id":"another-use-form-hook@3.0.0-alpha.3","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-0730+LPM66n06I9Q+HwNIhPQeXAkllICsh5BnM9RT5sH4fwVEBJk814/b4MGWMd3K77nVITrneFR+vUsrs76Xg==","shasum":"2aa65006fc8f97bafc4aa122dd353009f004c84a","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.3.tgz","fileCount":27,"unpackedSize":131896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdS04+CRA9TVsSAnZWagAAH4wP/RQEYTZwge00vT2LaRbG\nG7NbFY/e/QtQTO6vAPlVzsDuQEGFyDnNg8usoYpMRnF2O/lty01ca3z5qgon\n8K6qqzZo0E1PufUaGIXLtFOnTohMxXSfs8Nqg4bCXfRLoAM5gh6eeqWrpv78\nBGcVt2WccbzBwixKOb/bRYMhM24dvHIYjwH1OBGZ3wIsNiHIM5KENS6DR2rj\nwQHX6AEyHTPbxhIVhgI5mKHUMRKeMHg0ytnXruGAl7tKmxUQVXtpEZHMipE+\nSV1zUVpsBiN1T+inpfNsN/I70alL9FEQyLxctofVvmTIBTwORXSdlLQUw8/H\nFTQ/exwQ/h5PHjEgySo7nLSVSeh2+kxTHjD2aBl1jkSlucXgqKfhw4TPcZvj\nWpxMbEbhp9pL3aZhiNVAkrxgsQ9is9Bt6G8WBnAfaJ/dbPYk5ZIo87mUZwAe\nlUNg/CK5SbWnCLwGsm/fOX9fOODal/2VALp+vlHj1jGCcDtgz5YIJd3l6mZe\nN2uH3jMmCzRADizH+xNASN9tWtgCdujpRETjUMpG9Hl6YGefjui6pZgEfnI/\nnec9zVhaNN9EdLEqv0UrUliN2l5xJSVpoZjwISOazpPZpkdsxa4fNgb3z3tB\ndtAU3X0l7/bfIK+zipMd0mBgwAk1rnPshiRcxNqAnHOiIb5ZVnw6wNyhgeM4\niYPb\r\n=KIxk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDJq3ABJc4NicZyZgK8AQ/6iKbTrMp9DmgG1bp7auF9WAiEAg0skOAicqwlh0h9/ChY/cjy95XnRse92VLN4sWNLflg="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.3_1565216317475_0.927794453668805"},"_hasShrinkwrap":false},"3.0.0-alpha.4":{"name":"another-use-form-hook","version":"3.0.0-alpha.4","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.7","@types/jest":"^24.0.16","@types/react":"^16.8.24","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"3190ebcb201d8ee92c8a551ce160c26fcd160f01","_id":"another-use-form-hook@3.0.0-alpha.4","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-mBzdVH6/Ro/eFpio/laKsCOhfbXIXblsqIHTp4tG16w2leBQCZzQ8kq4XiMxGHMdUhR+8C4fe/neNoTZ3/IgIg==","shasum":"edfd34b2cb122a98f065d087cd395cf0c950ee15","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.4.tgz","fileCount":27,"unpackedSize":136917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdS1yPCRA9TVsSAnZWagAAbQMP/3px2NVkLodJLqOccTxl\nK+pRr8uQeiwzWCK7pSf3eNvAwMm3UXLh7fd9FD71gvZnPHWe/6gTqCs0XPL8\n9CZDoaEKfHQnuCOMFkrtTL7jgHaKGVaqzZ0g+ISoQWGs4mBaz3mjXa8uxYl3\n0qWnU66sdM5g0r9qo692yJhzhyU4LtHalSNzPvEbCaTGICPQ1gF69QaPQuvr\nyua8/8yOhyRdxFAJJs9gNdXxI3Jngd5DFgwRqhJjxi7LndN2cqzcggG1E/IH\nZIjLigfOK0jsYezp/za63ADptKjzLqtTlrMaTGr6DJTGpVDERNIiGPwnD2dF\ngL+AmCtcpniJUXDQbkXMFwRv8C8DlABAbT6HxU1tRnYZ/bqoqpplgttMxuqV\nPYzxdZIRXPF5yiW8oh86ZxcOLO/QSzwCS8Hl7BxCrq8HXE16jh8XVIg/9uch\n2/PDFDYC/opgwm18rM5qcUfb6uTJZVBETQCO9owhAbQJdxyX2r+0CqO3IMNc\nFrjrEvC16VppBaHQ6XT2CHdXg/eNcv5FXZoMUOicvCulv4Yfe81CT3C5xEHw\nJ+8D86UOPh5yR7lNy/FnbAKxxgqa1EaEdmN+Wmky81blBHyNNuXxYfClOEnM\nMvYCjc/OwsbtSQ/hrCetBlUyBB36wgn9G9Kt0POA9HxEA8AqDmYeBkGW+74d\nr7uZ\r\n=ovPK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHKKa2qAtOE7NF4f32Y/lLmcM4uEQz4FAPzTsTklfTaIAiEAt8g6OF3DoUTeOLFFEZJpslpZGQ4nBWriSn8LPE0KjvM="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.4_1565219983212_0.9242674313902159"},"_hasShrinkwrap":false},"3.0.0-alpha.5":{"name":"another-use-form-hook","version":"3.0.0-alpha.5","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.7","@types/jest":"^24.0.16","@types/react":"^16.8.24","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"de51b386497a68a7fba8dc40c2807274132c47a8","_id":"another-use-form-hook@3.0.0-alpha.5","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-vNEzsqta0HCZyWHm525mEiIBPg1jx75vxG2TmUJsdrPS11EsI+D+3H+1RvfItgwFkud27RJwBVNsApllQFp24w==","shasum":"c2290efd4ef83fe9d0851f729c165d4d9f10855d","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.5.tgz","fileCount":26,"unpackedSize":139704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTDNHCRA9TVsSAnZWagAAZ+sP/i01qsVxq+xuHFQ8RPXQ\nMHGJIOM0l2M7ea/L3KQ5JfEdwoFwbfYfZIYmbuEMTrNJaHET6kp+gsBQPo9g\ng6GxAV36HqyaslLi3pcdSwVYw7nODiiTtedUWLNqg8qVskjlLCJTGhcUjGFm\nrHRuHGYHxzIC3cDiz6dEzW0kQJ/vtM8ljriAj49KDlOm7swcXcg2M6DjJMnv\nWI+vQ+OrqM/wIsMTIlMmo+2hw9y5FWmrN2VOAJNzqYKxt2yuUYDr2nEWczqh\nHbKsZm8+u0ZllKt5uCNH+KoEbIX3O11hxUc5ZWWt1vje50ak+ZdsDcrDj0Tc\n1EjsuBw4d5AmnT2Krm1cfdNbXfEC3tz8020IyDMHEupnS/i1ZORTVLur23y8\nCn2HjSrQ2PN2LSv/mQQhu8LFsg8davEm+seCFA44uZrqpCc2H4dLC+366sST\nQiHRFI10090vztpilxhAozpSYusN6jkQEcNbMq1ZxhYSLPkkAxvsfUsw04yC\nJAqGgGxzDtoNVUQfwrBCcKP8i4t9trIpHk/r36Ip5iiHSvi0A+uduqzyKAPj\neMH6uIMmQ6dgjoEH661V29kTK3fVwZ1FzSzQYjDQg0vb1yrJMx7iQ0t0IWC0\nrJzog9THp6IoHxS3JeLBR4tBavENVtIG/RiFgX98rl68IwQaFR74Y5oP2B8Z\no0Gy\r\n=EM/N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDApLHjrRuVhE0g8dPYkqZ2uIPuMacRK8UkmK522khvGQIgIg5njQEb7dAYFkBvyhOumqgPDdBDV5DnKlnW3I6tD+o="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.5_1565274950657_0.902363544409595"},"_hasShrinkwrap":false},"3.0.0-alpha.6":{"name":"another-use-form-hook","version":"3.0.0-alpha.6","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^8.0.7","@types/jest":"^24.0.16","@types/react":"^16.8.24","babel-eslint":"^10.0.2","babel-jest":"^24.8.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.6.1","jest":"^24.8.0","kcd-scripts":"^1.5.2","react":"^16.8.6","react-dom":"^16.8.6","react-test-renderer":"^16.8.6","semantic-release":"^15.13.19"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/react/cleanup-after-each","@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"b1a5f497dfdcbf59c94e78bebdd679e2cd10fa3c","_id":"another-use-form-hook@3.0.0-alpha.6","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-qXVqkKpJw73AHoJRNX4quIfNsIge7t6gmIrXKNvazpmoUFnzRrf8jA7sumyZoj41DdK6jPmBc0Y88ExQPJ0uFw==","shasum":"7581473b4812e3d11eb49fdcade7280a1623fb5b","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.6.tgz","fileCount":26,"unpackedSize":144047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTDuECRA9TVsSAnZWagAALdIP/jdNlge/+3roTvSYF32t\naTM+LhGJ+Sa71DEFJJ32mJtSyTtCluqJ6K57RY5X3+0AF0jW/9HXxvEiSsG4\njkWfavUPANnZhQBFnxmMkcvzjU+X0DQI1JRMR9/Ai+QOjb8pkkyY5F4e0/h3\nAyI64BH4leYWCU1hudYfo0LOb/2emEbGRw4GVdXT1jES2M5KF1qCJMH6i3m4\nN86wgaNk9USxj92+JkiZVguPN0JoeOpJBcoA7dWa/aEh2RIyxJmxDidTdsfF\n4gly/MrcykYEt1lcHUNuisUsMZTxLPqGMKevL+EdqbjWTX2/soyqCI6wm1VR\nG7LrOCtjF2ottgHlmxW4KjhdmQx4gIkvltPQrWPynNDVPwmp7+wP0eg1cMLj\nIjLCZHvC6a2k4kWjrszkGalc4Mi72MuMvLYvhV0LRGeVe3klZlpGAmYRjVt4\nWiQWzXU10qSvIgM/egKVTCb4PVoLZqRzHNVJ/PDikBNePb5wxU0AtxLJI8Oj\nUiZWG2rSOlHLaLzSv2J2L1ljvlUlFuaHKbBpDWlBJHw/P6vFLdapSQLJOuc5\nvvPG1N29usoulop0wNtMQR/9YoOmt0sVh7c9PZAa2xDD4Rg/msV195fn9Bzs\n4qx1R86WpsAOj0nIVIoCaOlLcbcKJ5fDKY6PqtR1KbLUm/FdP2ZMwZXPQeIu\n7tgR\r\n=ebNE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHmcWAL3qknfh1/I0rkVOdtg5+F5bEXaghW13S4HImCPAiAXlLH8IqsfwivTc3KZHy3EohSo0iG08fvFlY2kee/7Xg=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.6_1565277059768_0.7270580377613209"},"_hasShrinkwrap":false},"3.0.0-alpha.7":{"name":"another-use-form-hook","version":"3.0.0-alpha.7","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.6.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"752d097fdfcfffdc0e0de9aef724c099945e4c9a","_id":"another-use-form-hook@3.0.0-alpha.7","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-iwjIBsLF2mILlw2q597mUOhLkNcyMz4SmVhXTtuwT/VnhtfwwEHQP/NP0HgHTYs5C28IIGEtXvxQD/YHgz7JBw==","shasum":"caa5b33901f5f51b92aed42f67bbec3090de93b9","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.7.tgz","fileCount":27,"unpackedSize":151991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWB8DCRA9TVsSAnZWagAALokQAINJ89tkMtW59wkKJad+\nV536Sg5I5ooWj8/diOZB+tFz+F7OiU5Da4voB4ZX73SdPGXRKbXa3iLLGSzu\n69uZ7+ENPdenMOU7no3HFALASVqLQX0LhPITmSz5sKVkPto1b7CwHv/V5F1o\nFIgd7E5OvwzXluGza5a4I70Y4eJv7dO2/pYJiyyZdotIKeKPGLnebOQNv4pY\nekJsH+eChezWeCTWQmsQ0HDCLGcMiO+ehayOfSGebizTHgO5TDUnpjiqtt38\ndi/QbBZcBox1LX+YTInhnWQO3Rbh1JrytZW3LhZlABiwdErR7rgGGY6stqhW\nDVPMlgDmVUrJ1JfT8FubofQOlmV/mlskgOVN5jt1QuGg0CmoSRzYAp9GHqC8\n/2oky6k6xPQ+Rl9ZUfSbVa01yOd/6POEdQgPSxuyt2L5MBCbl8yXb1vRKLt5\ngnxPGZ20s1P+0jwLzm40xwO7dX73sglElCZe88ra/IWIweCgJfyGXHCS9oor\nnZa9fpSio35tJPIiAvN5latZWWiqQ4vmaQ/Njc8n4RmPXFkPel4QwBZzdnuz\nrrY3/Xy5V0jt8MIUZ98Xr+xo04WfhlxuGlkIw2QXHbTp+lGO7MSTMprASGf7\nzNJswQYnJHQTsGaVERyZxHnxLc7qta1nEVob3bcR4g/HYehUjHqB72/2jjji\n46yA\r\n=yvcW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5uIVpl2s7iZ8x7aJ8m0XiubtgnOV4IvDfW+duUPwa8wIgVmQe7oF5eA1ZBsjg/EiXHyM7km8/AOYTYJ7IY6oShnM="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.7_1566056195172_0.44002729486044934"},"_hasShrinkwrap":false},"3.0.0-alpha.8":{"name":"another-use-form-hook","version":"3.0.0-alpha.8","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.6.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"c2893213ebac9ebfadc8c75359fee8f06e6ab23e","_id":"another-use-form-hook@3.0.0-alpha.8","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-+5FGLhr+u2lVpRnuyF8htwMsOzZzLDSbHkN2A6UOFkZ5Ms2lYZIS1KIoL07WRjr8y+IRADiuOzN8o9gA92OHkg==","shasum":"037f1eba347ce238be41182c5ec4b81e1e4d8b8d","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.8.tgz","fileCount":28,"unpackedSize":151824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWDzzCRA9TVsSAnZWagAA1C0P/3DKksMBJ89HzIqeS5pe\nehIW2KqaHRDfNv/rYLayW5P9+5LRjYMA5elcm/kth6cA7gPAyxLslEh1SbDb\nxraG20IKnqHoWzniBwgPoYaVcKw7FJvXxsGghQo6mYEj7pngYpl56horNRKd\nmuORLqyivte74icr6P31uCfovF3FwkvV97ogXGzLkLYHlTXQVLWdR+baxxeq\n2i0VGH3dCdTLAyqtsTpbhbm31gW4sks5h4EJhW+HDL3c6rSXxDGCL0pV9gU6\nXT2tr4aObRd0dgR9b+KVUTm6sBh+ou6Mx1mpJHNLHbNhvnIHUeq8NjXwJGqi\nkE4EzT3bd4uxU1p68SwMNkSaq0eCf5Z/FwcteVQLSBjJssWd5iS0Rb8lSbui\nYWEQqftts+wqchfIKeX94sSNxFODadGurHdZDyR3E5aBZ9kboPmUXRfvyivj\n0dm6NhDjeKQh1VCAFFu9Nfb8duUhy1q118LmThNj+W+hXPbJGSixJudeQ/UU\nZKqFdNK4hpUd3bGIZOvAWZnrDjVgkeIJUKZ0r1kLk0fnzyLnE86lcLNUQ+9n\nuRVJHDYZVCchECIKkJ5GkWIcwOX3G1qmOVaeF89UE3nN5JOGjkHPUHed6xhh\nHn7D8aMyBWXl9L0EqQPfQvTSmt5aMFVnUYSKCdc31hHe96lz1TW8t8xsV2lB\nEZZY\r\n=KR0S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBOuXu5ElNG5+dOM9xmubypW/aemptE68bgi9Lqs/SSEAiBCOg58XvWTWuenlgTsDsaeZdu6uaIeR/KMk6f9mhCghg=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.8_1566063858387_0.027223472449681152"},"_hasShrinkwrap":false},"3.0.0-alpha.9":{"name":"another-use-form-hook","version":"3.0.0-alpha.9","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.6.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"f1fd3d2d3370d7c8709eccfaf0361204aec212da","_id":"another-use-form-hook@3.0.0-alpha.9","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-W8W+1A+bymj4z8dm0L0gCj86QeIy5WRZx7PyWgwQdU3niBz/98Wd6aG8SLClkU06geLqCLuSPRSae1P855iWIA==","shasum":"3068320d040ea5b4e2e788172e9c2e498191f8b4","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.9.tgz","fileCount":27,"unpackedSize":151769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWD2/CRA9TVsSAnZWagAA9Q8P/RaGlg9nhuz2iVKoei/4\ny6mRS8o9g6VdVhaxd6RAQDBrdq6wJgKWTWzbbP5llDdxsPoCYnEcEnNKvi3P\n/HKpDaQ9/vRibX/BpUdJmC4Ew+8MFEDoFGmz0kPyz3Kzt/dej4YeFp1Cz3bu\n3Pd19gdL+8zrs/GKxf+BSRe1Z76pogSGpd3QA82KPsAoK6ZY4L1ts54Y04io\n+vxnNQO+SxqRyFMhAoD5FMpW5Gcyp4rD7dHotfsXXlxTRJF9O648JQ8etpMv\nw4Q4C8yOmJfNaatXOkaHTilOc2f39Ii8QKH3pjZc0PJkrKGyp7lmdJZxKfoI\npR29tBvEF1D8GuPZlqRfaIO5Z8dvjqgbMj4pj/MNz05LO6P/TZ2y9lLIfDMt\n/CIaLwEWWRLXxs0nTpIMjvNRxtZYhW7++acwQcE6M2ySagihmY60+H6tTHzc\nX6yIIj/WJr4rQOzXV8QIJgBRKxfVathPHfJb/05YftbLJBg43n+KZrN9xxRc\nyXiKbqCeddUR5KliLSq09t0FPFB7n7t08kbw1Clz3wSWAZ3nZcT4I/ZELHMY\ndayBKu3C/RR4m6YvPCAS7cBZoWGJ9QIOVhfTxepy6MjZRVZVE/PLpjOaE9lr\n/h5dnGhnQH6NC0RE1Hhh1wM4jwi1jgR0LiiuA4ow3ZEeFp3+d7HeRAyezYbT\nA/Am\r\n=dbPz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwoK4Z/PIk8Zk9gKuxZA7ewbIV5VWyAgbyvn/mg+UHrQIhAMHgswTf/+xydZQlE9S+thu/5TYbSDGREbn8+OHX6owa"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.9_1566064062481_0.8005716705643844"},"_hasShrinkwrap":false},"3.0.0-alpha.10":{"name":"another-use-form-hook","version":"3.0.0-alpha.10","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.6.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"c6ad5e1687b969b00cac18ded2ba7e5b7d1531b5","_id":"another-use-form-hook@3.0.0-alpha.10","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-aIFPWv4WDcgc7qPoxNJBnVC5ZNifqpF+ixudYR03wTWylyDokmCtJ8qYuyqp9QhxvNaeIMKwmSdIflnaJFYDlw==","shasum":"1ffbecec371678caed29e38a004d0d3a0332d851","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.10.tgz","fileCount":27,"unpackedSize":152328,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWEEcCRA9TVsSAnZWagAAWmkQAInYE3+OqbfrU/Yj59Lu\nuWrLschCezC4HMzUOd2oZsU2ne3c3Aib2NsW912wtwYpjQTM9LKtJjWCBwfV\nAdP4Pci8uYCwSTp+En6lYiG19sOejnC5Mb8nb73i/EBaIFjWr6MT+pFdR/Ce\n2aOOaebzWZUNa58ucLcAMAWYLdrUZCNG7i68EAhwNYCPKytL/NqoCClk5Q+e\ntk89XH0qr2ABLa9enGPXuTRKx1xvp4GwZEult9CVr64HfGRaohbR7OQHg81m\nReHu6Xi7JsCJ0k+FYUOQ4chSTv6JrioSFBI7GwVlQtbhKXNf2KlvSUTen8cq\nTMQMOQPjHAXkFXF8c4/toIvbIgf2FfMGzixvxYkLNymQBfPW4wr7DcIPHR4M\n+jITHBFU4lrXmwhgmTD6oQ7aIF3sYwvoL+TfgwsyqIMqLGsVxM78a/I2ea3J\nQwhk5pluHdeozp50HEqFK3311+U3FI+eSB51yBjg7cGMJNYtsYde6ClxJx6p\n22MbOBioxoGExYkwFQ0WAuK/wWZTO6RihIAUeSadpSY2kRB2KOSwwNfPW1rF\nlR2oZQLbSW27U+5uQGTL3cruCo1O+ikW41OB1+r0ph+9frPDk5Bo8+eMAN9f\nTHKr0o6/3AQuKz8wW7vIpEWaM3Iq8+EJbJQGi4FPLAdqZkSPLlL3fT7N8oXR\nToPP\r\n=TSRj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrHUj/2kFBZOJw7dfOM5D+22rp7w5erKOLegBKU5tnigIhAKoAG4jU/71zIstkXMMLH78ww+x2Ew+uOOH5GfOSYo8b"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.10_1566064923839_0.10503404609175204"},"_hasShrinkwrap":false},"3.0.0-alpha.11":{"name":"another-use-form-hook","version":"3.0.0-alpha.11","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.6.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"f5e2e0a19adfc70f9127b8c250a5153008e89769","_id":"another-use-form-hook@3.0.0-alpha.11","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-KArCJdq/wtFXilvH/Ifk1HaGGqniq2KQgR0s/KrNOleNHXBkHn2EXJ/YjkquFqN1FET98G6AJBSaaw/SJ/Lh6w==","shasum":"c124c1af609a35a70c9766e88277994131079f38","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.11.tgz","fileCount":27,"unpackedSize":152498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWU2mCRA9TVsSAnZWagAA5xwP/39ecQQ2+JuEdu2OwtxS\n03cXQOIh/PxerM0PkzVgfMcmnKD2quYoqecXeuxk2p+NeGsRoWcBoBWJ0J7W\ndiTU3VO8WQ3Ba1K30a1nRp1T8iV9o/FDiHEiOrDuHMOVkdzwQUhWCBqTKa40\ndHnZxvjrkwS61r2MDfSHSkI9Dcn0jWyhMkiikisDVQw5yS7Td3yLVA6YIxyw\njuev7Z24XPJyyvBeXZOtLtcNwt3TgoWRqJbU8xgjmlLWfOqOsEBx8G5ubzr/\nQ1xt8XHHV0nNBIGlsrQlLYEG1diTdQCqWWBvxj4GW8WTMIgGb/6y/6A9yxOE\nGo5A/8EsFnBsJGEj/NVbKlZYs74mlL5Pn5InDbakdnrBpJUlUMQPv/Vfrz6T\nY+BjMBtMNFSK/CZ/qvGuFuo+JjkjRApo6OR/YsG8OxOMIgadXz6cd9yq6PHc\n6s4MfZ6KW7NnRCqYtzWf/tdDP0GCwhhdcPorDIFONMLv6nTM9qIi1i2GJIN8\ncg9OfB+n49Pw1U7WqtDgqU2LysQl+mgynuFGiszVNMODmhcrwhCmCiJxLiw2\nHqyQeLdMGmdrs4OS3JcAH0VO7OsknElyhKXxaHiEt+5DCpr3pn0aF9Z7CEwK\nvruuSX+GUWauhKVElMxjSiNvBEC62aVSRTIqju2P63e2IcAvYmzraGc2D4Oe\n9GJD\r\n=gEx1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGOK/QNFfx0LaO8AjqmJU0KX65PprFtX/sU/lNZnIIHVAiA/3AuyNsfTOXzD4zRPumFC9KFJCMHVE+IjMnxMpzm5iA=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.11_1566133669199_0.6821237393640129"},"_hasShrinkwrap":false},"3.0.0-alpha.12":{"name":"another-use-form-hook","version":"3.0.0-alpha.12","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.0","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.1.0","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.6.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"d7606b5f1bbce584a9b311599561cd60fed087d5","_id":"another-use-form-hook@3.0.0-alpha.12","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-dN4MbQmRnRtCnhgt64aizY/IaEp0qHeOHvkVB4M3os5LNTLDlYNhXgjsH2jtqe/dLTsP1zWovXaaTsoaIXvN5A==","shasum":"aaa7ce7f123039e48eecd5019498400a2ef27567","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.12.tgz","fileCount":27,"unpackedSize":152539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWWImCRA9TVsSAnZWagAATkIP/3baRsHMo1uIdwTONNHA\nd0nCW+6TGYljsWF5ZV4vtQyR+0gIkD7mdpyMB1M5EUMN1LIEMCWZqv0jXKgB\n/6G+050lzbYH8ri1JmsLMh5EYIZ1IB8cm2ONMWapYqA3mL61ZLXcbcBpkRmu\nexU9UoVfVzDVaSLddDfLhw/fobI9N/vvc412WrtVjHly0VYRxKI2QEn7FvGX\npcnI4RakO/a+5CW2UOu+LW2hr3xWdCPPPpTdO6PM8wiVQSS1wRg5+Jei9UM/\nbaXVLTOXBZkBBSim9OhcahwockaPao0YtLYKko48WctWH27wn9zL2SuIhusf\nOjr8G8GJsXCjsPzY6neADH1R4QljI6M7FlOgoX6EHI9b23kdQNkHznzvGGjC\nc+lP2SVQn0FPteii1vcNIFxEJikmaeojnGHNb8vFbI9dEcc7GELbDKQDYtji\noAJQE8G1FsOhmkkTkoPbWYt5Yw5ILO0Arjs0ga/gUqFY/ETAQ7F9XZip47lL\nSkGYDyt4wF3zzZT1cYVcjnOiFGUrt9dIzrYvt44cLY9dwe8tbPVJ4qD4uxY2\nvyqpWx9+pEIoYqxlO8vMqcw2pljCnK6sI1MUFL+ZiPBEvl8Zq8YxtXxdoMN1\n2r6sjIaP1dFHMi2rssaV2wBFky10VEtdSaBjVIRDE7WJoPSFCqDdFFIxVEfp\nTjW0\r\n=BAE6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEiYB8e8GyFDvMgkCk1hz9JjPPFHlUtGAES0hXse2m9QIhAMNvmdhbJxDS4LffDvQ2C2AXtOYYQDa4JXMHYD2pg9GM"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.12_1566138917901_0.9519952355748647"},"_hasShrinkwrap":false},"3.0.0-alpha.13":{"name":"another-use-form-hook","version":"3.0.0-alpha.13","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.1","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.2.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"70a6db236f50e22e0b94fe46ecfa4699a7750d64","_id":"another-use-form-hook@3.0.0-alpha.13","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-YAXNFHt2WOKehMjVBom+JaKD7CdLI+YTWttR/08Iv0CQNcjbk+lGK1ALIaFCzycbe/Dx2ASsgJj6HHneK7lUWw==","shasum":"9a9cd1f9c0cfdcd7e8bda20c5d03cb44f8247ebb","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.13.tgz","fileCount":27,"unpackedSize":152020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWn/yCRA9TVsSAnZWagAAkm8QAJu6Mmi9NVqcGQi+EQUf\nIu0L0gE5PfMoTYGNLQoTPi2LqUny+c9u5N1BwstjLWCsSNSNquxZHkleZV5R\nE/gK2D4R1JyFBcLLSZgQKl7R952WG5pQhoAYBWYxkEbDVVqrZSIWu7vDuQGG\nYZK+RC7dR1DEgfTSTqs1VAIpc9wgfVg19mUf2IYJsRYbbctWdZ2YZpJD02fR\nb3Nun5r76ByGlMzV/+IrJJcXu2oK+8l4yjjknTWFqM/gQZX8GOjQm3p7+2uA\n1PqLTn7lrsmMbz4/y0xUjcXDmDcC7MHHUm+rr7YgWgPHyJZmPp13C5uuTNtd\ntv/b8slA6qpf3YhB6vEbmMnxjTqqmljqgXygzeaTdKadxUzCa96oiYhn7gvm\nbLVXcsiSqU/EwRM8LkvR5AqZKVQ+nWi/wTtU1HI4HfINYoeDlZE0UlrJGSqy\nDFWqyZRgAhs3nEjcMAKXb1FMRRCGlZAU7U/9LhNPEO22aAaWMfy3CibyrX0R\nzjas33pBmy34xq6e2izPTUhCSHDHT5OjtUtHWRi9v8BoujUdZyhUdPDE4kGV\ncDWtzgYS2wUhQXCdmEyOpvB42q+at3XwDdrLsBFhI41VU9XuCoAzorPF3cLr\nR26yTHQsBoE4E/9ssO8vLpWDZJeSMorbZbu2PC1pzIAzanTRg/cHvyeD8TjU\nHnJc\r\n=4Q6N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD15rNKEtBpWKMEKI6xeuCz/bLYz5hn6PvohXVl1L96gQIgCD1rf3vW8ClCrszJixScUsJffkYkbs4uqiH5b0K/c7k="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.13_1566212081800_0.017555292050422944"},"_hasShrinkwrap":false},"3.0.0-alpha.14":{"name":"another-use-form-hook","version":"3.0.0-alpha.14","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.1","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.2.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"2290670ab71c27b4635bc86bf32cd8d4a1252769","_id":"another-use-form-hook@3.0.0-alpha.14","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Mom5S5SD2cs3tkIz5E3FHscmxfmCqbF0rJqILh3KFO3L/k11yr822GNciEaeQDcSWHS7Vu5rX7vg/bfBk+HBCg==","shasum":"45c01e3f83bc40659f67636a23a848d26cd3e6e5","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.14.tgz","fileCount":27,"unpackedSize":152383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWob4CRA9TVsSAnZWagAAqNkP/iQARZcBP8Ag1ncvY7Yz\nswJi0fhboIvW33WX9Y8OsKmI7ciL23xfEYv2wdW/K+GLypAAbJWIJE0QxnLD\nJWMOIXfOqKmGFj1wjd5unQ83Lanb+ys2z/0BqW12LCYvm6Bfb9AFK7lZvrLQ\nOaRpEN9Popns3VMXwRmxson7xbJhbPfcQpCfkEDmgTPjYxl3khooHK1hgPrz\nS4yBCs7zs2+UcJvEWMuvr/JQy7gRDCkn0IZ6pA+7ewIeFORkPP+c6V6Aa2cT\n/NYxjE88E1BJf3Z6XfCm7F1vTcQJyuHkSTQcfeGedFrkAnYEoFTysSXqiYgW\nYZE0Be0mqFF3Jpcd2hLmzsPtPuv65Dzb5cDJRH9wVOChqc3uFYTjP1AKz9Pu\noIfFsoM3DcXSf3BoPn3Th7HEYqFUBwSd9hJbWQquVqZ/oTixJHn6o9GdFSb0\nXbMJwasgaSHK59bYq8EPgP3QaXmvSgGIYWOQ7dM2RKF0csb3JzYWcrTVzoPS\nSqahWe/qNNIrs89gkK9Ge0BMxu2JilJOvRkEdhaiByRqzJQJ/KjrBh7E1CbH\nMWJBR+jD50Hfl/QHbbQZbuPNKx59AzWutMjS/26Old2HdoDgqdl9IG1O/rli\n/j1DE5dsYiVD+lT2icce5/i6lS2ZYku+Cihl2ZStPY7VGZWq+b9xBFPooNtD\n10VD\r\n=IYVU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHpJlNXF1yYmPEDaoAifNY5N+RuwQdJh3JT1C65qq5qfAiEAqjPkpD0E8M3fwt7z9Xebhft2doJ6NfDXRosYmW6WO3k="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.14_1566213880109_0.7290322465363113"},"_hasShrinkwrap":false},"3.0.0-alpha.15":{"name":"another-use-form-hook","version":"3.0.0-alpha.15","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.1","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.2.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"7f8a27df0a1ea52f630742fefd044d73bcd9c392","_id":"another-use-form-hook@3.0.0-alpha.15","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RM4jxzxZl34/Uojln+jh9NiMups7rk2mDWlsKrTXL9uG++X0omAkWiXmfhGhBkLBtEeac0lCM3Yy12uWXNIGdQ==","shasum":"0ef88ba97aae534618285dcf8e4208f489b16912","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.15.tgz","fileCount":27,"unpackedSize":152427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWowwCRA9TVsSAnZWagAAja8P/2xdbQ4YnQjx0CNNhPMV\nG2QDr81AxUNvuwbRohZGFnYbMv/oarkDJHUZ+QA6lhzAQlnMDi31BUQKbn4L\nfWmaWlZDbMS5PPNnp+tgM2yybDnkDObBDb3Fgoh5ZS8h9T8IlRM8HDLGUq4V\nEzCcT/EJ0lXg+PbQAqxAqknE72I122aYsNGY+Y8QrMfwGCZE9zrAEXA2h3Wt\nlDX0S2ub6ELm7y05o9YWHzZVOxz+5Db7ORTumQd17cxf0EA+Xegtp7LP2fBs\nA+Z79GgoSBESs3Iqvoz4Z09xOf+mpc8HA8qviYpB+Codr6rJIVWZSZ2dOo86\nxJ7VWYVqxV3XWyEgqdyzVxcy1IJLdC5aDHhLM7ql0qntIa7axrrqF7hFZ3OJ\n5OC+cfXKJeG2DOJISpRwQjhBngZGWeugd80+Yg1g+UFSOLkeOGOCSFAeiymn\ni08iFUdm/PI58lpY6eqe1aAgFNhrXbkPE7iwGQoiuA7IjiztinWtHTwojxV6\nmt93yuLX9E3qJwjB3caDXXMtkva2Um5W+a7KmK9V15BK2uz9FGgPxKr/bnen\nGoSpAkVH/yPaRl0sozmttaRI9bY97sJUo0B6lHoDGWDbkyTx1P4jlRHT7HwV\nF8w8gUi7YcsP8bY5yUyRWnQHfjrlLiNo4iRFsqcAhVN44jkwXtWUzpnscSxy\n2us4\r\n=G1Lm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICeqPBnQYDVFfj4V1oKlY2rH2JYvpUmpfkIpKr0w2CzLAiBSsS1OzIB01X7UCjBPpDhoX2xcM+/E0mwnQKkbWXz/Mg=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.15_1566215215796_0.6928995614943099"},"_hasShrinkwrap":false},"3.0.0-alpha.16":{"name":"another-use-form-hook","version":"3.0.0-alpha.16","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.1","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.2.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"cce0f4ecdfedb061da72dc77f5c133c369b6d54e","_id":"another-use-form-hook@3.0.0-alpha.16","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-6a9aRqQBoKoXFeCoc0f3pgcZry7By2FNBODt3UjaDWzSg8dkj9Ztjy0COuRvDfK8Bn2Z6I/1emmMwq+k8herEw==","shasum":"3f1ff8a83c952144db1796e665c765891379133f","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.16.tgz","fileCount":27,"unpackedSize":152418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWo8WCRA9TVsSAnZWagAAdQMP/iXtxaJHs0uwGwwL8cpe\nL1nN8RfngbOA0saY+cQuJFGwA7o3sM/t22AW+HPaCR4gptZNf3ZUDoNS4XuR\nL345MJrzwMTMtfgLFPYKEW8nj15BlJPXiNCXdUTPnJ3x8ZwamFiDcCyD/7mB\nQv3hYd7d51Bcbs3TkQ83TX7N7qYq8huBnvigEauiSCFMK+50kQPqqCSa4TVP\nixBLV+qQXT7CkSfnsI4Ar61KD1XCtPeDxwCmyX99iITciUsidxnPF6uhXr7E\nY5ON1Grzfl71Q57ffI4h4TQA5oQ+XXSMYGcEmrYaVH5cyyzfp+GIuStew0ku\n3XiSCk1qCWoEGn3h3+9liKqVM9EBRKlc3xuuXBrR5o1a+z0szMe5Zo0ORzKa\nixIgrsJwoGXM20fiNjS+vikNzdtwTAzuZT5O1AKCSxHg4RGQnmSqOELppKQl\n7L+8l9/CUpGMFBncnDWpqBnr/lxdrqXoiwmMS4cybxihqQbZ7bRJ1fD+osVT\n/7XLvJwsBKloOk2CF74VhqykuLEDpWPzlgew01RvMeGXyp+M6eJ20Dmc8HVA\nq9JLUpSvm194AK83LgyZnbF8zvINa+CxSyxDBI+wjtM1V0o5vuNd4GmezPkS\nzTLERUtKdCV3krvOA9SnzVDjplIlU05bRMGUm2F7d5iaZ3mn3rOryNp+NIJ9\n+C1F\r\n=6tu6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEuQ8rTUYKt64JYNgghKynwpiAJ946v3F7X1F7fq8TCTAiAdhiiR2igeqtk6KpHknWdZNtGPfCN8G1KoPZpjpj9Aag=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.16_1566215958131_0.17362240281369634"},"_hasShrinkwrap":false},"3.0.0-alpha.17":{"name":"another-use-form-hook","version":"3.0.0-alpha.17","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.1","@testing-library/react":"^9.1.3","@types/jest":"^24.0.17","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.2.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"24041d7dd7b2283ec24bdd012c1d69c3a4438237","_id":"another-use-form-hook@3.0.0-alpha.17","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-7gBBYy8O28ROjy9Biy692uYItt5KqBnZxA83F9fHAsdX+z5pnh4cF6e6i5M641ssmuFeNH/DmTNBdcJxJykwmg==","shasum":"d290a9ab58e7d4d60710368a32fcd5775b38092c","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.17.tgz","fileCount":27,"unpackedSize":152223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWqeXCRA9TVsSAnZWagAAMAMP/1VQv+FMVk2OHtCzaaCj\nS3dWMQZoSXgPorunuZf2MJFHMBNn3aB0xncwR800JP0h7867pMZ6mXdv4BEy\nALDB3C0y0EcD6Do5SYuPyolryXpb9HPoyRsqDUaFO7kivjVCRDZfGVCYd7QN\nzvDL6RiK2AQukAvspRlTTjHlRoRDe8xR/1mjprwqQqt9JmhoT1QH83FNOJhS\nb23ZpK/AkbN+k+3zCSvOGUrS2ZhCf29dLpkCWOICTI+GOjRuosfjXXZ9DxMI\n0pVSZyRJ5vhoNeOhaKqFdvUBJjwbLp9zIPWizer8IwXquI8iWxjpnohETWjB\nNcpAeghyL2WswuZ8oSrGjAkrpLCMTpio14HNdzoeQd2QyH94NvjWrusexZFB\nW+WtyEOv53BO0E4yddjzWTwaYW9SbFuIYlXrvOqatLabvpY+akz1qXUMnpDd\nJnEK1iBvBNUCk7eVjNzc19bcRq3IAHIfOua8DjszPF8/vQX30Q5JNrhOIEXf\n9tW9yEvjb7lBHpa99pZHotGQXOMgJmxowIV2e8WaxfSYhb6H/uEdlQ6TECrZ\n5GqMdeoXgPVvCEpprE15wu3xV3H9clacTZy/JDxXP4S/JYwXNc7VzgDqW5Zj\nSVeeObM+pHSuPv/JktNbM3ap6pNc96y/0J29Cur+qWsCwgjoNczkkAVDjI6X\nTOSZ\r\n=IaVF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzmcETtmQ8o9vdIgGsYl+JkADdv+xKFmV/UvHnCXONggIhAPMxw0UoUr9x5rSsYs5AhFVnf3NFGQu+R9nvy4407emm"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.17_1566222230758_0.043193850177324355"},"_hasShrinkwrap":false},"3.0.0-alpha.18":{"name":"another-use-form-hook","version":"3.0.0-alpha.18","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.1","@testing-library/react":"^9.1.3","@types/jest":"^24.0.18","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.2.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n`NO_USE_FORM_ALPHA_WARNING`\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"814958b009736ed4476e91ab397c69c9e9143842","_id":"another-use-form-hook@3.0.0-alpha.18","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-0AHhFhCBA1Zk5ISNMWS81/Wzsq+jPMWDExqFIrwyAqojb3xrSUOAy5uaoeS2UH7+uHEsbxuhRUjDRMMJO4gpWw==","shasum":"a2f1191ee2402957354a161ff46968ccee1ff23a","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.18.tgz","fileCount":27,"unpackedSize":153215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWwP7CRA9TVsSAnZWagAAd7cP/2nNAeShpg5Q9f8xCB9F\n2yOAO3vI/LKY72nJzLZ4IncYv2z3LHIqlsQ5s/qDiB+VBME9+2oej3S2fai8\nexguK9dJlHFkZxiz844zDB8S91pw3TGz+pMJ9/3XPJEm8aylvg3piFdI/RQ4\ni+Qa7EGEs1oRxjsit0TmP3ZJS1FPzhIA3LY3aGfUVLV85xKE8IkB7DwL+w/u\n3101sMb4/t/azUy2iiCfbkms/JpMXzB3Bfpg5OFJPDaH4f5ypx8ZzpHDdrVo\nZQSC4QXKmdfMebzG7dbTTTEO7X1f5eYz/QMGj/1j48hERzbV628DCEnNvTrs\ntPD7qhpdHXjyvYpMpbhM8XnFctWzCchBVZd8ask3lNrY7wfPezx58THrzXfk\nMV4RMgsb2rq9s2cCcLcYKG/vbUEjHgpVbxHd3cGp8AfY+izJXwZXBLuCHw2M\n2cXq9Fr2Uxp1rPFQ1YgG/ml302R6SbH99KiCFSno0AaHLnvfNx+4tTJgnzOh\n421lImH7tsWQV1icSvKlZXHDmGb2vZxVMOdfkAoqPac3SU0XHk4ARV+zZ1ki\nOUOhzTH8fM7ZBj7ALFYTm/UO1p8n5BSGSTgLV2LNtrTodZslCHj1F0pQ7xVj\nz2DG5N+RiXAkF56Nx8ez/uwZC3MHqy5Cg+xJfgoa53cf0luF5X5SKHDj8m2i\nx+u1\r\n=YwQ5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqLB37gDbA04JSyg/R7+r9GOWcWHLfjkbI6JhNHnpAVwIhAKUW54+2yei1UkUrDpYm7FBMMjWdLh/l70DbAdChx44I"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.18_1566245882651_0.9228791055333347"},"_hasShrinkwrap":false},"3.0.0-alpha.19":{"name":"another-use-form-hook","version":"3.0.0-alpha.19","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.1","@testing-library/react":"^9.1.3","@types/jest":"^24.0.18","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.2.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"041a672de6e6250be78a154c3dd3247ca303eea1","_id":"another-use-form-hook@3.0.0-alpha.19","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-unW1w6YFrAhqwuSalm9ddMsrp2BOpZUYjoR2NZ1PZsFK56bb9ux2uCdJHKntsTPdiaMtcCil8oQXEX09kVLqbw==","shasum":"0da413e5f3b51dd41e3f0451512ebc92e00dab73","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.19.tgz","fileCount":27,"unpackedSize":153195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb3iACRA9TVsSAnZWagAA/xUP/j1guOblwN6eOxwyXfhl\njpPKJbAlkCdv63XpCAi+cN3bXlG31jIzY+PoLrZt/GccXl7VIx4mODL+gMZ2\nA+6xFodTLJmMImryCxU262xwvVEcNIlIMYRlqYQGR3H8xKWH+A35+VPZMvkO\nxyPAkK6MUnTK0oMjotIAy86EforgDf7tQCqwj47yqkKqQXBakBJ2h9klSfrx\nDsqrSIBv1UOJ/poCGfIBcyJQEbUv2Kc2miud4+D4Lh6ng2bM+o774Bf3jXmd\nB5r94o3GXJeOcYy+R+HD+KB0mJPPzLrwKpnpDhIAJutbAGfBDnFVIhuOSyUf\nUezhMRTbEaDh1rUQdIk+q1NlMJxre7QbZUrlPLPRDixN4e1qpK6aOSPs2NVX\nivMdxDWHIvgHuk/Yz1SLJXdR1YGTS5WS6ahS4OfJgT8M/jiC1TDDZ3dVp/3y\nyMVgh+kqXVXI+c3E8Xs5UYLyFxJ7p0CRsX1LIXtQnQg3zENvnXJv5lLpi3z2\naH293HfG7ldLl9qLbWNFDwkOCtreQfo5QkLbexKOB+y9rF1q1m4ndcffEGXn\nuUcUv464SPEnsIFP7SA/QT1vfTkX/3bGzIOFp+6XcGzWNbljbTl1bdorvQ/r\nxv8OzoXFLj2ywD6veEGU6y+nWZkgywuzeqe2oaO48KlUVhFbNGqp6PtTV5fn\nY2jL\r\n=rKsK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmaGDcscXwG+pUvUY31JSARQ/fOA1HqYdEPwGZkkY73AiBOV47xCVXOId8i4UxKE+Cdb0lY6uuPMBZqPBFppXn+og=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.19_1567586430015_0.10347391379678816"},"_hasShrinkwrap":false},"3.0.0-alpha.20":{"name":"another-use-form-hook","version":"3.0.0-alpha.20","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.1","@testing-library/react":"^9.1.3","@types/jest":"^24.0.18","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.2.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"2aadb17e3cf215f452571f636e86696eb3c6e228","_id":"another-use-form-hook@3.0.0-alpha.20","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-LPdNllp4DdpDPmTqPS4pRMNyYV4CLMoXpM22W4umM2pbDcZknHsCMoMGERZBWRmKl4IVv8XHdrj0rFVm7/lryw==","shasum":"7cf8687044f148f2b4d4649bc3c6689939b7a1a8","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.20.tgz","fileCount":27,"unpackedSize":153421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb5fbCRA9TVsSAnZWagAAVrAQAJF7xtM5fLJ5bGDBelmx\nMRcjlwlCEJCcomnDAeHe82sM5xBW+7wpKn1CQM+SeXNAOFJ1XlPFjVaOT9dA\n5gnm0EyIixOa7W9cJVza/RkAIwVtDwSo07y6hQH7Wu+AWLe0JhFqlGIfSK2S\nrXGssz0EIpBqDKircBKgABhdNiZT72U39QrmTrogthS7nmqvnIW+PFrWs/3G\ncp8zmTsAF/OufUke53M0qyRHibMvWh3jw7vgFMbGZ6cepHnGA7nScTKZzIv1\n2cPGuCq55mYdP4BRZc3cVZ1fCqAqmZvby4ajq6FifkL1NKyxpkUThX7VEEP2\n4pYxljLV6tQyK9IUdrc8haiSKRisA1cCjF3O+xfXfZeKwiC2wpWOiVS8cYGQ\nekmSRFdMWCZDigMl9pk+Xy5wZEXRmeSREU9wAXpDgdp/N7cZH8+GzX16w/nx\nA8+4Q449WronfXBvGGwrONXuWEHaU3U3lj8cNbLPC2XgMTt2FiIjsqICqK95\nP9b5gsc4pylrm4fOwJe0BhWek67Q2JrW7n0Vc/bB/uAmVCPUhurL6oe82aFd\n45I+6+1Z/nfMjHRvmtk5wZxNY6vrHuHSapHEMmIwOSL55hmszVQSqLJhAFZ7\nuN6ea0GXFf33wFOnGbq6cdp6k/UppXth4jJ2RSqCmiyG4okh28QiAbg1TlGr\n2Czb\r\n=m7yy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAJjmN+iUqPf2CWWxPh3bfGMqKnxQaKvmJ9MTBMgOpcaAiEA3YaREcM3uJbi/n2+WioX/7dlLPVoXmJdv4l9+Rijk7U="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.20_1567594458803_0.6672488780220414"},"_hasShrinkwrap":false},"3.0.0-alpha.21":{"name":"another-use-form-hook","version":"3.0.0-alpha.21","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.5.5"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.2.0","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.0.1","@testing-library/react":"^9.1.3","@types/jest":"^24.0.18","@types/react":"^16.9.2","babel-eslint":"^10.0.2","babel-jest":"^24.9.0","eslint":"^6.2.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^1.7.0","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.21"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n> ⚠ WARNING! This is still in development! ⚠\n\n> I am new to many things here... semantic-release, npm publishing and TypeScript is all the stuff I haven't tried before, so please excuse me for the \"messy\" start. I am hoping to keep everything clean from now on...\nThe documentation is still missing, and there are some rough edges on the inside, so please use with caution! Other than that, please enjoy! ✨💖🚀\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialState={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"695d521893142d53f85b28eca12ed6ff8118f284","_id":"another-use-form-hook@3.0.0-alpha.21","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-FyX/xxid3KVD22upK9AWrrMyCPLwaRpWkXTNKQpzBWABwuP9wTZgqitHD3SaByazDRQsTbqT8gr0sHBV2ofiuw==","shasum":"1d57c4c30bcea599269f6a1ac385e7bcc15eaca2","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-alpha.21.tgz","fileCount":27,"unpackedSize":152783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgNrtCRA9TVsSAnZWagAAmf8P/AgdRMdkKX0MQMHrAWTv\nFxXvprwPYfudSP+R0B8K610mYjjGiaE89KsMLhuiYtA98DS/8iwqmQf5sFK0\nc5TaDrVWQJ7e5KokjdNxOBSytDMFlMTxUaaIZkN+f474m+Z6wBUyLnOVIwmm\nGw5As8T4+hHWUOIlqDFzhdLFJ0qZhG+wYYoA3yQDdFTwfgAmHXYq7WE3wPta\nA3TqzpeMnOiA59lRSMkXlrGgoKzK1wbwjJ5EXQ+9eliL69MiEBH4fOmQEIzH\nGjjFITf3uAoNyCcca2JrlLbYLsmxPItJVxRXNmV51B7t3FHc2Irn0aCZLEOn\nJLeJDmJ682nxEehfzMEjtiL32jQ84OPlY3JarAC5LpY+gZX/QAkzPPf4cNTR\nZM29ODbDixY9XLQCR9J0Z/6NL781v7Dos0keVmO5SU/zIGiU8Igq8uVi9fPp\nyQGxCBdKPf48W77zW6r5K4HFVfcHMVn/ZuRl4EEQIuKeUGPUOLk+S7n1/Fv+\nz6XylQBypkq8PrKYZOqS06tjEeDI712YKgJ81nIfdY3wl+OcrTzwTo6zyWCl\n0UtmdJesIgv5AYz+qq1PN8vQJGd1GlnZkuTqOEOLsYxRRETu5Gdvf/6+MswW\nqyyVVLYebp/J8rt6ZGOKHXnEqRSP65djYkEeC1jjr0tJt81CAHBM5KQGXK+l\nWyrD\r\n=0lKH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGKRmTuW6Bm856u48cOrsCoTt4zPUtPgxpKZskd6bz4rAiEA9FxpKaYOA64uKbZO7XQfQz1wjjLvU5DEtlvEFNiGt3c="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-alpha.21_1568725741221_0.7373657465278851"},"_hasShrinkwrap":false},"3.0.0-beta.2":{"name":"another-use-form-hook","version":"3.0.0-beta.2","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.2"},"devDependencies":{"@babel/cli":"^7.6.2","@babel/core":"^7.6.2","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.2","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.1.0","@testing-library/react":"^9.1.4","@types/jest":"^24.0.18","@types/react":"^16.9.3","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.4.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^2.0.1","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.24"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialStates={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"2895970fb18018bdaf6f0c78e365cd5989cc96c4","_id":"another-use-form-hook@3.0.0-beta.2","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-kZVp70Mso6oO8Z4YTe2Iv+WGba/4/RMApVYUmQDa1+Sm7nzDFxrvMBNkLhvMfRbFvgoHSrSwaoNvahYA0+DjzA==","shasum":"64bd188d9f6a2fc9985bc20819cf187b192380d2","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-beta.2.tgz","fileCount":31,"unpackedSize":155758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjH2NCRA9TVsSAnZWagAArYAP/RZJTBjajcX+zXtWi/3z\n/xG2uMfsjtS0STARFYO6vzHRiaE88P5p9cXyuwdRbtnP8jTjuND33/cmOj7P\nTeN7EABo9yXFK8FvBMMWjLttCPmrIEyoTxIgHYed0DOLjKaAhFKMS+mVxwRD\nDP+YVF67jYNVzcfmAv51tzphKEEkKONNVy0VFgK6CHTIjDoXuf4gvlonW0ak\n7zT0HZWD4IdPdSkIR7oCy+K+D0cp4Z5Vb7bnAc98/lwGYetAFmAaCepzQHH9\nmegBqpvm6owxEJ42Le9cD+/zJmXYEuSQwzpLFJYUURjf4CXXtxYiNtjM1pKY\n3OhtwmvgduqigRz5SyOHq1FcXfDwmIl5Q8T2UfnwxhQqUljnvq0VnZGzK3Qe\n2gpRcksc1ovtU4EOobdyoiGkt9+XvKYpIPost4YqP0J1sZBfkUnOPqrekhNa\nahuWH3SzavZMNmnPVDB272pyWaCf9tGFdArXERaCj2jrTH0ogqwoscWVRF+X\nbLQByy058XlF9oDJHoZmpCMEYS+KjxoycjBPgiR5Lq5zxivmNt8sfB2WVn6P\nr9mzs0UkkGKonWvApmX1CZnRqnUIHW6R2Brwpns5yrhxnqqX1qyJUAfjNU71\nHJrpjSgAMnLfXiIfKtcsOpBs7ho1EE9ou/mseKcGoCNmwOLXD+Hwu0mGfLLP\nJ63U\r\n=XWor\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAPqGK0NSTFXIhBKSwrMHQmunwrqwNugk6iwOC5n1wCgIgO29NBynbKHL8ymlTYI6lK1tOybLJC4k/5WpwvSKw8HE="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-beta.2_1569488268282_0.3500012249257862"},"_hasShrinkwrap":false},"3.0.0-beta.3":{"name":"another-use-form-hook","version":"3.0.0-beta.3","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.2"},"devDependencies":{"@babel/cli":"^7.6.2","@babel/core":"^7.6.2","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.2","@babel/preset-react":"^7.0.0","@testing-library/jest-dom":"^4.1.0","@testing-library/react":"^9.2.0","@types/jest":"^24.0.18","@types/react":"^16.9.3","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.4.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^2.0.1","jest":"^24.9.0","kcd-scripts":"^1.7.0","react":"^16.9.0","react-dom":"^16.9.0","react-test-renderer":"^16.9.0","semantic-release":"^15.13.24"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n\n[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [LICENSE](#license)\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n## Usage\n\n> NOTE: This section is a work in progress.\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on anothers' values), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of asnyc-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nLet's see a complex example, to understand how it works, and what are its capabilities:\n\n\n```jsx\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport useForm, {FormProvider} from \"another-use-form-hook\"\n\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport {addDays, isAfter, differenceInDays} from \"date-fns\"\n\n\nconst TODAY = new Date()\n\n\nconst App = () => {\n  const form = useForm({\n    name: \"form\",\n    validators: {\n      // Earliest arrival tomorrow\n      arrival: ({arrival}) => isAfter(arrival, TODAY),\n      // Earliest departure day after tomorrow\n      departure: ({departure}) => isAfter(addDays(departure, 1), TODAY),\n      // Arrival and departure depends on each other to be valid.\n      minOneNight: ({arrival, departure}) => differenceInDays(departure, arrival) >= 1\n    }\n  })\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n\n      {/* With current (2.x) API */}\n\n      <label htmlFor=\"arrival\">\n        { form.fields.arrival.error ? \"Invalid\" : \"\" } arrival\n      </label>\n      <input \n        id=\"arrival\"\n        name=\"arrival\"\n        value={form.fields.arrival.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"departure\">\n        { form.fields.departure.error ? \"Invalid\" : \"\" } departure\n      </label>\n      <input \n        id=\"departure\"\n        name=\"departure\"\n        value={form.fields.departure.value}\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      {/* With new API (available from 3.0) */}\n      \n      <label htmlFor=\"departure\">\n        { form.errors.departure ? \"Invalid\" : \"\" } departure\n      </label>\n      <input\n        { ...form.inputs.date(\"departure\")\n        onChange={e => form.handleChange(e, [\"minOneNight\"])}\n      />\n\n      <label htmlFor=\"email\">{ form.errors.email ? \"Invalid\" : \"\" } email</label>\n      <input { ...form.inputs.email(\"email\") }/>\n\n    </form>\n  )\n}\n\nReactDOM.render(\n  <FormProvider initialStates={{\n    form: {\n      arrival: TODAY,\n      departure: addDays(TODAY, 1)\n    }\n  }}>\n    <App/>\n  </FormProvider>\n  , document.querySelector(\"#root\"))\n```\n\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n","readmeFilename":"README.md","gitHead":"e3f05285519757315ec0d33d7919b9a3be843efc","_id":"another-use-form-hook@3.0.0-beta.3","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-e+nI25LnlKchJqpNlN5R9/vHwZMI0UtD8NQ0iUIr5/LfaKz2fTvxYQ1LSUFVOeBX5g3JqudpPpL20q4YNW2zKQ==","shasum":"72194bbec3c62955a85306216ed96e8de1176653","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0-beta.3.tgz","fileCount":32,"unpackedSize":159070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjcmCCRA9TVsSAnZWagAAWzIP/iGu5RMB6OKD10XOdyGs\no9wxrrpOKi7QlF47gGMAfiGbQh/J4vm/wvgnjpZw5oVMwxoyUVVNPsclvEF0\nS0dRNvqdf2HOb8lOCJ2qRXdecZ7DH9n5mrJVfWEHX8e6sRB3rf+Ujxs2aw5N\n5Zzl6cjtfYLw+XsSUpFVtUkbgjAaGdKvbuEbLeZeEOXi/I/pfPQFAhOSTHXy\nSJYkGJTenrP2pnZ0SQUHQVfNKdmvHS17qVNv81Gl2yJg8VlRdywO2cdTygCP\nwg5n2/MiMG2bMWl2ue6rec1ob4g2HuGzcEKg9rHFvh3fKK+DkoD2/fTVwMsv\nSfEMp3v6DoQuyTvCdszmVV2137VFXNVmjyNgg6/CKhpZsHBdaHlijSiJyY0e\nQQBhAg6I2lbyW488izrjNA/x2a3XvP6heGgLqFmWZPaLzpUkL4PgcyKLRCCY\nIQr0JS/HcGjS1am0/vqqKxUEOF0a1cKe6KIjOuur21woWvC+rlVr5aAvYi/f\ndzSGQkGkusIwS7RukbmGqo1mAFrojEqGT2Kmh3mF+pvpB7jPL+th23/nibi5\n/COsUkOC49YdjpMR2F7WB97HWAW2rdvJQfv8BKD0OBFrWCCc2cqK1PHVpXlk\n61KsR0RDmupVPtC/p2pAFGWID6iL1pYikPAX8QRSBOolK3UQ6wSHIlnPtihf\nWVBG\r\n=9Sod\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID9vctVZ3ScqAs/DjYDsSvbJZbvaPOLXlf79FQlXJxWcAiAydrQwhTl1Th8tVgonDVxmkjR+pv0F+CY81SpjDfbvVg=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0-beta.3_1569573249478_0.07782828167600875"},"_hasShrinkwrap":false},"3.0.0":{"name":"another-use-form-hook","version":"3.0.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.3"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.3","@babel/preset-react":"^7.6.3","@testing-library/jest-dom":"^4.1.2","@testing-library/react":"^9.3.0","@types/jest":"^24.0.19","@types/react":"^16.9.6","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.5.1","eslint-plugin-react":"^7.16.0","eslint-plugin-react-hooks":"^2.1.2","jest":"^24.9.0","kcd-scripts":"^1.9.0","react":"^16.10.2","react-dom":"^16.10.2","react-test-renderer":"^16.10.2","semantic-release":"^15.13.24"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"288dd3f033ba273c9004be9b778a6d6bfeff61c5","_id":"another-use-form-hook@3.0.0","_nodeVersion":"8.16.2","_npmVersion":"6.11.3","dist":{"integrity":"sha512-Tn/C9c93rZLeHbwrTbKwrhyeEClSTdaCfiKtBKR7KmiEE1tr91EYd117KWWyta/HgLfSjHSq3R34QDKffxsXfQ==","shasum":"a40df39fefb392c52d56a20a108f15359f8fe99b","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.0.0.tgz","fileCount":30,"unpackedSize":157054,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpdiZCRA9TVsSAnZWagAAv1wP/2y3nh+Ea8+zkD5LM2tA\n2uO7nhI5OXbpsfhJXFRB2PUop5Kv69HXRTOufPDhpkcKWjNYVF+Cov2BVQjs\n23gNgmw941fNxRKvR+c5SWZjxEo34fm1jSKEBlZpJx6nUfZgSDGUnQq6kN+0\nsibZw3WgOA5PxUsxljlc9jEvO1psiKAWY7cAIiJ1xTx49ahaPP2QC0lyAOtd\nXWwCai++g4KXYvjFTeiBc3dEGdF+CNNhDemJCmzDHeV0L3K+E+E3S61meeBF\nZL+axmrHnP+C8ZaC7zlVHcDkBlXSacb2dlGPvDg1elXjai305b0mPJzVqHdD\nqhJQg85uciLQz8h10BCOznKhq+TrYezCtg/MUQCkCYkXa18p3LvjXA5d+hek\nJZUM6wfFxTQNVYBRqpPJ/YpZX6BSu3IYH28oI8hJJ3RgDFVze1g9xORS2nbL\nwGacMiIkW2b7Ucxw3VN7xTFCrpkrldZSYNdt3Ft7VFStk0rV/+6gdg2ClY8n\n/zCno7XjpyiWSLZRW2SqDkQ44vKN0R09/BWEIs74IlRHZ+WtTt+ZjsB3RWyN\nxDp/GlPHwThvESB7nT0Na6m27Ag0dHc8C+weKkfvRf5J8AKvNp4gImQCOERn\nWFqPpBb1Y+cCWmGN8mDRtNcruq0lS46UFsT5TcvI7ZRLwyoBwJsOa2mBgVR9\nk28T\r\n=CjMp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICF6F0q7FRYhonmLTHduCY2EGVtO8Je3eq7/kfR9sHJDAiEA7CdCM2/3mcbK7D1VNlnj5aLGycIb3LT1o2sN/I8FZgo="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.0.0_1571149976863_0.8600142557079473"},"_hasShrinkwrap":false},"3.1.0":{"name":"another-use-form-hook","version":"3.1.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.3"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.3","@babel/preset-react":"^7.6.3","@testing-library/jest-dom":"^4.1.2","@testing-library/react":"^9.3.0","@types/jest":"^24.0.19","@types/react":"^16.9.6","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.5.1","eslint-plugin-react":"^7.16.0","eslint-plugin-react-hooks":"^2.1.2","jest":"^24.9.0","kcd-scripts":"^1.9.0","react":"^16.10.2","react-dom":"^16.10.2","react-test-renderer":"^16.10.2","semantic-release":"^15.13.24"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"fe50d4e95f4c2fa7d1419f7081b743e9be5922bb","_id":"another-use-form-hook@3.1.0","_nodeVersion":"8.16.2","_npmVersion":"6.11.3","dist":{"integrity":"sha512-Co0YEaMiPQ2x4OIYzpQ8V7oTQBuRBBNLVg5WnQS/QGVou5p576d+l+42kcQOITWYSQbKeTs4JMSmGtFHjMOZyA==","shasum":"0a43d0ca344d45f9419ae54eede8fec402d0d852","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.1.0.tgz","fileCount":30,"unpackedSize":157055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpdtCCRA9TVsSAnZWagAAunkQAIwZykQeI3VAqBiGvUTr\nHsoPoBRTWZxSgsEPbHhHKaKJUPMiZbUPOqe9WTLHNJSvWivMhS+1FGA4ESkI\nwtEueshMedXRtkiCHV9OadS81mQqD0BiM7S+Gd9oHfyhAUbFmm2v2T7LHmUJ\nd8kMvrJN/ADGGFJ0UaacumVu5E4jViWor87oapK/YYXxKPxKJHyGb/vW84iQ\nbbNED8YEoOLbuoriCPO52fsfGfyFhkuglZGNTvHsiITQvwPlA18Ou257aQQD\nYSF8MLtwMvmJw9DgZpxdJUyPwYO1fpgv6ARZRX1lnq7pDj9XY7/iyL7T0QIF\nlPlk//zHvg/Okfq/yHHmmbaBfxeMg7nHC7ny9CUVLHHDC4rvOgxSHdlFuqbb\nqiXmobY+O3qr/xo4/hSsYVltOwUKRQHAm9N38UZeL1PldZcNutyM3wwXFzfZ\nlSFFVvZcDljpheZVH3T7hb1IwY7XN1qEGaowL8fTizzul9irQy4onKnz2F5O\nfXQY7KLaL82BGPg7zTD4IazumBsJWobDfK7HhhU6BHbrzhOezfh9n0XT5DIc\nfhSLlNK1P/2rfCS6a27K/r++txbVovySaVwBP37WQ9CSwnUYBHHZn8eBXrjJ\n3csF3CE91ZpwSdlDYytJotRFj2TB8esDHdrjV9BiVuhHpO1oyp3arh4qyLX3\n6fgC\r\n=h+jP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKuq4VwyGDjf6ablFprFJ3tghkjog5WiQahgfXDG0yqwIgN2GF8bzQkMPijO27/8zdUv7axee9M0ckpWxiF+cjjD4="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.1.0_1571150657661_0.7149809009674659"},"_hasShrinkwrap":false},"3.1.1":{"name":"another-use-form-hook","version":"3.1.1","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.3"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.3","@babel/preset-react":"^7.6.3","@babel/types":"^7.6.3","@testing-library/jest-dom":"^4.1.2","@testing-library/react":"^9.3.0","@types/babel__core":"^7.1.3","@types/jest":"^24.0.19","@types/react":"^16.9.6","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.5.1","eslint-plugin-react":"^7.16.0","eslint-plugin-react-hooks":"^2.1.2","jest":"^24.9.0","kcd-scripts":"^1.9.0","react":"^16.10.2","react-dom":"^16.10.2","react-test-renderer":"^16.10.2","semantic-release":"^15.13.24"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"9732ecf5dccfbf12a1bc619b6c171ca172b83306","_id":"another-use-form-hook@3.1.1","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-UItE3bcHos0WVTxZ0zi9cwTpbuZ9hjEL1fjHdXrlB33wSaMYaNGjFtTxp0+AvaxyYzcQaup6e5GSknq8W1lWiA==","shasum":"0763b51484d16887f041864f70a947310e7d5821","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.1.1.tgz","fileCount":30,"unpackedSize":165113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsw5yCRA9TVsSAnZWagAAJykP/iYGwyLs+Ci26sDHth37\nV45ZlDFeocZCa/DEYeEI+FvdVcRHClny2EeU+W/2jGvb7JRddTaXHA7nMyg9\nvsGGbSnjGcmmkVDgJL/OocoW+vF4LddhOHwfPCosNRm4LjqvFLF1LhPYKiCN\nxbAztPgJXMjj3nO4Z9TUj7WPeRVuCNTsbDaSfA0q3PAUc33klbTT4hKH8Jx0\n6j2JrvFIjTyG/cohuYfi2BSMEJc5e4hcfLO6zOxkmsZZjwh1C3dABSg6Kulh\nrlwGbEHdG5R7GfMci86yBu1NYZ7EDHY5xR9ezhx1Er+gD/pkOTgAh0taVL1v\nuUIolL+kfE4rinNVGCWgMxlrI2ySkCvsCR88dpf+xaRSHxpK2Lv8t0mRO8Kt\ntRnpX6L2v8CRHb6Rtknvmxd/f+iUETINQh4DTyXueP7KqvZH0zn+4XtEkJ3h\nVUL6qHPazKvwCaAjeNzhh8bb4ve3h9XWxwu/+wYLaiiiz6ByW8pAylC1w1Uk\nJem+SVAEdQPHZfAp+LzNmAMPPMz2ko7TRqt4yrxviOZs042V4RvMFIsHxwmi\npjjH/vZNjLcDQz6sJlM7PFvpnLXI38gCjRuk88o19Hp51JqXXrFYjoHoO4gV\nBin7dTh/Gjc5CwCGHUNeaUtKHZfSHX1tUEPkO17qD12YDqCog92VEledtm3A\nOlUh\r\n=50ng\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdmOnGPT52zu67qN/axu6OZ34M+ZRDalFqpOiAWQlfKAiEAirGiTUZMHlNpuR05gxoiV/i312FOWRjQi3LGzm9vMvw="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.1.1_1572015730338_0.22958138391193472"},"_hasShrinkwrap":false},"3.1.2":{"name":"another-use-form-hook","version":"3.1.2","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.3"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.3","@babel/preset-react":"^7.6.3","@testing-library/jest-dom":"^4.2.0","@testing-library/react":"^9.3.0","@types/jest":"^24.0.19","@types/react":"^16.9.11","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.5.1","eslint-plugin-react":"^7.16.0","eslint-plugin-react-hooks":"^2.2.0","jest":"^24.9.0","kcd-scripts":"^1.9.0","react":"^16.10.2","react-dom":"^16.11.0","react-test-renderer":"^16.11.0","semantic-release":"^15.13.27"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"7617ba6ec020196c60528ecb00bbc31ecc50ac5d","_id":"another-use-form-hook@3.1.2","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-Qhy9LwUNGcEPYV62BhMv8zfQBQm9HbkB1si7+vP/8sqiUMPATNBeuqC1TQ8VYlTags9ZJQhlYcEe8+MbtebZJw==","shasum":"f85bd3833d9fdb8435645de33e762c6235cb445d","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.1.2.tgz","fileCount":30,"unpackedSize":168782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtYHBCRA9TVsSAnZWagAAyZ4P/jDUpUo788Ur6AXqWmX5\ngODpqb2/gNREEaTA8ChPS4Lo65oG70wfHI5/MjjVEeGae5iVEqwUVO3bSXnT\nLBQMZbR7lsh9i2wvM2SLTVfbQeReEtknM05h7mmTn3BMQ67R1bqGGAanPt2Q\n0in2vjNDy3+Na5u0jAjoslGokXbD0NhAdxJ/dWSbMZBFgUH9y6Kc2cZhiUy7\nO6mJeIFabVd3BqxX8QagehFv/xagNS14Q6P2O6JjR9BXPmMPns56itl4iTDj\ngRQhtaNxjhTR+6/KSGkWL+e+lm/4B45T0lmqSFAhVbfYPms2C7yLLvjnJW4i\nlHBXXM7u2upX0TkUc6n6s0KSWgbGq12xH6PkUeuuBo+fbU7ZOMQg2YLf6Cgq\ni9GYIOxagkaO7NzbAu0FIB5ctHywpomsa1wxuTsM67+ANqybopvtNB31efQQ\nsOzTFCsuQSOmJBWvxrN/m+fE9agAFMD61T8SHp8bxC8BpCXQ7ZrpDorV+FOb\nQagLS5vs6P1x72/MMlIbBOjpGVe2fHdNAPaFNwcixDzhfWXOnmj7v2SaO0ax\nu9g3IBfXw5noueWV5M4qcK1T1SD1HDJe/OxiMA9ofYg0RgmVlDQDSUQzTU5G\nYQGg8elmtayETm6NyiOsJlA3eD1lZmX4ruYW5k/AVcpn2UJM5UbiJ2tosF11\nQoBr\r\n=e2m3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBHW0VFhSSd3f878zqX+o+cWp1aaotHZZVloJMUnt68gAiEA6vA44nIbAQXjT7ojAJKHTIgU/rnrPJYgBNUXqm9AAb4="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.1.2_1572176321261_0.6969521134919037"},"_hasShrinkwrap":false},"3.1.3":{"name":"another-use-form-hook","version":"3.1.3","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.3"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.3","@babel/preset-react":"^7.6.3","@testing-library/jest-dom":"^4.2.0","@testing-library/react":"^9.3.0","@types/jest":"^24.0.19","@types/react":"^16.9.11","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.5.1","eslint-plugin-react":"^7.16.0","eslint-plugin-react-hooks":"^2.2.0","jest":"^24.9.0","kcd-scripts":"^1.9.0","react":"^16.10.2","react-dom":"^16.11.0","react-test-renderer":"^16.11.0","semantic-release":"^15.13.27"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"8c466a2492a340bda595a1927084571b37f68cd0","_id":"another-use-form-hook@3.1.3","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-hOAqLsXs59WeqWvgeD1+rZt5tkMAVW6pGQAVCmyeF9taloLnAAIE6Ezom25dmaup6T7QoFRZgWBqAEn2J4FOvQ==","shasum":"1f391630a16a7269d8aaa97de33c832b14966362","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.1.3.tgz","fileCount":30,"unpackedSize":173902,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtb7rCRA9TVsSAnZWagAAlJEP/R5K4bl13t2Au/eBpS2p\njXt0uJAUl/Tbf0rOFQdDl82fcgVi9N7Pe45kXVYN+mL3GIDTQFPD8RuRNW6h\n3Lm5JrRiSnRpcYEpoEnAUIbnZ/ksLZBw6h8rdSx4ceIcdS687Q7qh34St9hn\nigv4bUAdmrJ+12EoAw979NFn2w9rvMraYJxkCZ47joWx02aUEODZAWFRgvAA\nwDxj0W29TkBhYx2pRPRVwdTnoqHV2coP4K2UEa7HBR7xyHkyhPWPOj15F7fE\nuAh4IQ40vH9N/hVHDJyKVbSNroUSvIKQiOWD4Co+6cUsOduVs+wBXjaZKa+O\nJItNGWsYRTAXIkeqwyxqHTlkCz5eFU44MbTRISQ7dFqyrqWfBU9IgPL05znD\ndNICC5VCDwqOwtMKoZB4PsC7RxNhDwX86NvlINui1i2d9VMRfEYEq9Y2gE1W\nVNxAPBv8owUpGaGZoZ1fhdQ8XG2IFI2TOU81yxiPlfS3a2kEKGKJ4/nk107X\nTvo6inKRFe6ydYxPe6ii8jzb4NR4mTdxBj+pffr9Kxr7/gQ5iVLrFGb261/n\nsGdYBcl7CQKrMUqdX189cjZ+kJMDo1SWBhpAqRu5AAjRzSErCizNjJPL7xP9\njjE1bSLEGt8fYjbCgiZ6ThfKPxo5YxXN/psN7nIspa6Nr0SJF5WxUaaoWoM0\nyzSy\r\n=H1tR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFoFyf26nqljJK65I+bqtDaChztxClZpGdyy+PzltNhwAiEAnn3PxOKbXVMpG63no0Vz484rVSOiB54GaOv3E3E2/gY="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.1.3_1572191978518_0.2136657783241971"},"_hasShrinkwrap":false},"3.1.4":{"name":"another-use-form-hook","version":"3.1.4","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.3"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.3","@babel/preset-react":"^7.6.3","@testing-library/jest-dom":"^4.2.0","@testing-library/react":"^9.3.0","@types/jest":"^24.0.19","@types/react":"^16.9.11","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.5.1","eslint-plugin-react":"^7.16.0","eslint-plugin-react-hooks":"^2.2.0","jest":"^24.9.0","kcd-scripts":"^1.9.0","react":"^16.10.2","react-dom":"^16.11.0","react-test-renderer":"^16.11.0","semantic-release":"^15.13.27"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"c6c39550492785efc79d8ae9065d13ccdd58a360","_id":"another-use-form-hook@3.1.4","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-kH8TjnvwaQoCxIBtpVk4zL/n1XOs7cTWvGgcjg7aRqcjkdTzp434kQAPVxcbvIwMydWICrLkMNRgF6P7Z6tCkw==","shasum":"98bb4272f8401b57193b55c089e42a77fc13b906","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.1.4.tgz","fileCount":30,"unpackedSize":173902,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtcUyCRA9TVsSAnZWagAArbsP/2sQArqTupI68J65ZbN1\n8hqj1BvbawBkbV+yycFksvNtwpFk7ALLoMfrMzTnxAzHdogDtRQyQW8hlqNf\nX6K9fPocJ+76mysVhSFwRGcJQejsaJLocyjCn3rFeDZr1ZwTUi98UWj831PK\nbEv6olCycgRmI2Ghy5u9G3okWkFHW5nYGLYhKbRLtr/L1rkGAj5DfmqLOEbd\nIvo93hWxxwOhUa6jGj8kfiLUU0ytZJBRU1WPTJRdRfjo0qhgCAHAqeygIGvy\nNdJSeWMa1EiqPuysq+kC+6emfktTvSk+P7t3no0lPWhtzC5jWZaOLdQP4hEL\nE4OT1Cwv5NUuZgqsyHeCuhoXmaBjWo2YSb0aPH8Su2HCKy8wJrg5UWVTdu0/\nVg7xvW39e9Ga4G009ewZjs1wnHI6V54hNswDbNI+lwIBPciZ2oe4nP52a7Hn\nSBFt2OuCN6iRgumwS9Ssi6PiReCHCBIw7HwL8PRg0rAB+21EvoMRPGBn01pp\nGorQbI1Xv/f1I1vinO25So+PLSZnqMz/TY0cWV0iH5oGp2PsmUH8vJ9U00Fy\nvT3mObRH/EZAMSi4TQftPlVvZwtcTD2CPrEzI4jHy8Jwe8l49XgCEWOBZaxS\nqnAgG30dhhGucpx67KslSQVs2VjYLzDVm8lPwy5DN9gMz89x0V9uuw4pHZ/B\nLP7V\r\n=Qvxz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDm8r6HG3qTEuay/SvQWHdYfe3jHKINlLGokpRGudcWAAiBc6LyGERnXTHAE59it3jcR14gKksgjMB7ICKsZAyJbuw=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.1.4_1572193585669_0.05599547398703009"},"_hasShrinkwrap":false},"3.1.5":{"name":"another-use-form-hook","version":"3.1.5","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.3"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.3","@babel/preset-react":"^7.6.3","@testing-library/jest-dom":"^4.2.0","@testing-library/react":"^9.3.0","@types/jest":"^24.0.20","@types/react":"^16.9.11","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.6.0","eslint-plugin-react":"^7.16.0","eslint-plugin-react-hooks":"^2.2.0","jest":"^24.9.0","kcd-scripts":"^1.9.0","react":"^16.11.0","react-dom":"^16.11.0","react-test-renderer":"^16.11.0","semantic-release":"^15.13.28"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"c2f8956d8148218202f9a9cd4f8c7e3c041cbfe1","_id":"another-use-form-hook@3.1.5","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-AYsXCO6It4JaNH2HBTNgKfP2rCODz2QxK8y1Yr8VWy6uw7LgoUfWAcm6zC3UaIFrmpk1XxVeuuPk4P5o8C32Yw==","shasum":"77df0ed94518bf3016e134268ab51f5899171a0f","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.1.5.tgz","fileCount":30,"unpackedSize":174075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtwDpCRA9TVsSAnZWagAAWM8QAJg+Vqwe2rBDtFXtvSRt\nwflT8c8tc3l0tpUBEO2lx1cjKZjYpdwe8gBS8Ju1cfJNHQOJwOUYS7MxqCPJ\nuY463+np8mBLSFvK6crlWDOo9YR9DUUtFKZFjXwFSC+5hVq2FkuXeUoneSg3\nHdgiWu2Q2BIRyUkCB5JCk4kVkDTBc0C1KTKOBn7DJ2Hhg6M6iQtj5ciwKhNZ\njLECclC0RVU+6p5s82GkMRyNzAanwc67LGwtQidcpd8n4vCf8+BrMC1rVEZ9\nOe0GOmCESbo1C5kQ3IdgWI8CWt+30gbtf5UPPXzyUp/OPu63Yube+Qr9/HlT\nCmhDdh0fg19YjL4eJ6eBrg5fsbYLek7RmQ04l2A1CaU2bdLWM7XE0NMZ3xIk\nkW+2VJTJowvRdfne0MVHJrISUncYQIjtzTLm2ScrYVXbVsK2fhzLqW7EdI2n\naG+xJ0GPkODONRUcr/hm+lRDZwVNN04gx2qya0SyIUsTuzl30AHuqETLZmtG\ns8MfJ+zsPcLlggMlmZJc0s7ylh/JdvDkx/y/zFZJscxkbjwkgFmqK9yEQl/z\n4YdKX+Kw4sDIoFs5c1LHfE4TaSwJ14Jf6SDHSF0P5Hac6sn0mvVhU1ZXKqSl\nMz59PP6yf+srAF4fYGwUGHPsdWZLiqTok2PrJohsCXiPoj+oJLRF/X6RJHjD\nBXgr\r\n=8MRX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFdHvFQ4Dhl38x3yVokzSL9BYK+KcR8a5BGjXrH8PMYcAiEAjPpOdKjHLKgKI/b+ik7tviYBYJJZhynmauDkpjFwL78="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.1.5_1572274409238_0.3018050824411862"},"_hasShrinkwrap":false},"3.2.0":{"name":"another-use-form-hook","version":"3.2.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.8"},"dependencies":{"@babel/runtime":"^7.6.3"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.4.4","@babel/plugin-proposal-optional-chaining":"^7.6.0","@babel/preset-env":"^7.6.3","@babel/preset-react":"^7.6.3","@testing-library/jest-dom":"^4.2.0","@testing-library/react":"^9.3.0","@types/jest":"^24.0.20","@types/react":"^16.9.11","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","eslint":"^6.6.0","eslint-plugin-react":"^7.16.0","eslint-plugin-react-hooks":"^2.2.0","jest":"^24.9.0","kcd-scripts":"^1.9.0","react":"^16.11.0","react-dom":"^16.11.0","react-test-renderer":"^16.11.0","semantic-release":"^15.13.28"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"2286cf69207b26ac14e65f134fdc5bdd9873dda1","_id":"another-use-form-hook@3.2.0","_nodeVersion":"8.16.2","_npmVersion":"6.12.0","dist":{"integrity":"sha512-ypnYSG9Iv049rbV0LJKiY26XlaPA+j3C6GxRN02vX8eswaD8qcZT4pQLByvJT40CKsdcYFNzkcBqeNcp1ckf4g==","shasum":"c9c49126b37d44b1d4ed4128ccf0505bf0916d71","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-3.2.0.tgz","fileCount":30,"unpackedSize":176844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdv/5FCRA9TVsSAnZWagAAPREQAKTlT4oVujL2FgYwcAWe\nyEU1HdGeuuDzJjLnkZdl0WQgng/itA5TJQpd98LYyyBzxMj33em7dHGrBg9s\nyjLC6RVtUW9O6mWFxDnTXfC//adHjFMqcHXqENkENq7GtAiB4X33X5jnpDw4\nIi7cpuvDCZbKMaLvckeg0qozElXfhmym/8nRwKvyC7by1Dx2Em2cA/dn+Zsb\nPGZFoi9SJI7rmWnKDaJNvfbFd70TsHWRMAuTmaPM5l28qW38JUTCV2eGttbp\n1u+fkApLBhyLzhnAy8y+rVSoPkk81A629kYEC5h2A+TuW1eRHbfSvclTsMfe\nPkpV4ZeLcdcMfbj4NB1N+WYqTFwNn7QTETn4bI430dEPhDuQ9Thd2jD7qEO6\nHr+qJ4aBv2Fk/9Y0ASGLc6ruM0/jN2mv29F3yO4yC2ssZA/NNRe7NnE/Pksi\nN5QhtiYZVU3gM6VGGRljT/AmqJONMl1EjHtE/qcS7XizaXKbGH2bJwYLifHB\nZO4m/FynRhZye/vvpyf8vSlduCUd7PwqXwOxLplgeq/iGRf+cQck0CSRQinl\nmangFVMCQYvZ2glp7D4FN43pK4JDEtWYvZjTi0gGAzf6Ubx0a0yD+HBHJq0C\nB36ljrrRRWDARqCMPq484H7NF53jKEJfjZZ13iOBmWg/TsjpmCrpXHGLAw6R\n/Y8I\r\n=+/bG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEikLhhwh7q2VnENauwbl1WQIemwTBD2aWxgJOvU9bPgIhALa6wl/G8Fqc6cgAHit5h81OBesB3ZDXWJtS9MJRaXk/"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_3.2.0_1572863556572_0.17789615599077435"},"_hasShrinkwrap":false},"4.0.0":{"name":"another-use-form-hook","version":"4.0.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.12"},"dependencies":{"@babel/runtime":"^7.8.4","use-deep-compare-effect":"^1.3.0"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/core":"^7.8.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.8.3","@babel/plugin-proposal-optional-chaining":"^7.8.3","@babel/preset-env":"^7.8.4","@babel/preset-react":"^7.8.3","@testing-library/jest-dom":"^5.1.1","@testing-library/react":"^9.4.0","@types/jest":"^25.1.2","@types/react":"^16.9.19","babel-eslint":"^10.0.3","babel-jest":"^25.1.0","eslint":"^6.8.0","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","jest":"^25.1.0","kcd-scripts":"^5.0.0","react":"^16.11.0","react-dom":"^16.12.0","react-test-renderer":"^16.12.0","semantic-release":"^17.0.2"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"2157c81b5f355112b03fa73e27f71903fb23f92d","_id":"another-use-form-hook@4.0.0","_nodeVersion":"10.19.0","_npmVersion":"6.13.7","dist":{"integrity":"sha512-lF8JdG9Eb8ix4hUq959EwZe8fphFUGDJhXHCTFBXine78Nocj87XINUFQhcIxdsPPSsmS1dRg+3ZnlJS7d4JLQ==","shasum":"59d3306c8de840906978bba0a4eafd1c968c7a61","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-4.0.0.tgz","fileCount":30,"unpackedSize":190392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePSxHCRA9TVsSAnZWagAAV7QQAIBOYnACxSHiQraLo2TR\nGP3osBuTQZklESnbheVkbcMp0oXjAFPzsx7ASZZA2xKXqKpzHnYgYkqzJ93c\nCqHTy59TNk/eQ+l89oCyoYuTYvL3/H4+56le5nmaGKMENiKGafrYECMQ3SI6\n5Gry+7oVrHL98qpeaqrs4ldqMyCp5KZpWRfeD7WjRBB/vlUFE9xUhbeqPd0x\n+6BilBOv300ORPhiGGgJafTozbaf8NrA3m0JVACnEe41PlIyeUfbcXtA3nP4\noVdeTVxFRu35wNZyNAn5Ym/4j6tofcFUdV218R+sjmvnyenntmxm3RemGoy0\nUiXXNoUO63M9pxrcTwVxFqkjemKIZC6d1lhUXjzsZC9hjo9RMb5RebhpQ7fz\ny/6pf6DLvTtHuJz61QttLq92GFvo8uAiBMsRlUCTB45tO0N12X6WZ96zu5hc\nTrvno0Y6QjJjdEiVcn6gBROOZJR8EUT2Kp21PPTaP4J41wBLD+7i+dpd99xL\nuIPd7HkwW5rfyqqx6eGUdOVQEi9DPMP7r6h/Ptx2zN3mtbvg0DbEhY4ho/yg\nTwMeVWFdGAi2Y5ihcz4stKHnDnQkwlvMUXUdlmuWKVwYbu6+7v151wHNtEJf\nNVePTuuIVZegZqjFDiFdUvpEScYvu/BcanaBIMVziXlLss2zhuS9RMi4LvFv\n2g+6\r\n=1saa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHlDhwZrGy1WOoy1SDpO29Etc9VdQGN1KGYTAhx1c77/AiAwFTm7qt57Os42ODXT09HgjzjnWBvvd9tR3JyZgpftTw=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_4.0.0_1581067334745_0.004983338024064032"},"_hasShrinkwrap":false},"4.0.1":{"name":"another-use-form-hook","version":"4.0.1","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.12"},"dependencies":{"@babel/runtime":"^7.8.4","use-deep-compare-effect":"^1.3.0"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/core":"^7.8.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.8.3","@babel/plugin-proposal-optional-chaining":"^7.8.3","@babel/preset-env":"^7.8.4","@babel/preset-react":"^7.8.3","@testing-library/jest-dom":"^5.1.1","@testing-library/react":"^9.4.0","@types/jest":"^25.1.2","@types/react":"^16.9.19","babel-eslint":"^10.0.3","babel-jest":"^25.1.0","eslint":"^6.8.0","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","jest":"^25.1.0","kcd-scripts":"^5.0.0","react":"^16.11.0","react-dom":"^16.12.0","react-test-renderer":"^16.12.0","semantic-release":"^17.0.2"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"e3f8a783a3a595f1fcf23d6ee63de6704d25e227","_id":"another-use-form-hook@4.0.1","_nodeVersion":"10.19.0","_npmVersion":"6.13.7","dist":{"integrity":"sha512-RyeRdX6f/U3cEZwMh/YDHkgvMfF8j60QT4FObCh8CosiVwVsxEJ3iD+VeoU/k/MJvp6oET91a5b6DE4bNa51kQ==","shasum":"3f09b3c91abd139b233f4a3be1ba058eaac17aa0","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-4.0.1.tgz","fileCount":30,"unpackedSize":188353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePTyCCRA9TVsSAnZWagAAhIoP/1CgnHL3b1m79FIVTZK9\nIzB7FU0kRoTnGOmx934TSMCgeerLygRy1RSG/FgXVtU393oTfqVX9CWzghzm\nSzBQgnIzRFjR9yyn8GCj76NcceWn58uY9dpbVGDHEGLZ4NPfZOIapZem+GF8\nzyhTK6llKkj7Ez7VwV0CcsgfNOrNNb0ND4VAg9Q2Igo3siAkPdAc9Fe/bllB\nBJQPKlhEb8W4fCm+LAhuNR7tBPoZRTymC6mAvorsXqEMg3majmcYYUbPYX45\nImFNCUaaI8DBRltRduxQKnr/H24kL8YKzsfhWRle7Q3tL1NYhISDWc6hIGcj\nB8AgHIzzjSU1j64Oxkr/1TpYQ5GRpTLJeA4E+Nsq0qu4yMit7nFPVPxcKao8\nek0lYZFS1dsPkUkv5mrtMwnhRIBXtPB9+nVFzNjpdNhS3rs6bBwSGSS/UeRh\nhe5IEoFcJUIO6uUS7BHyGlf1zmM4H1Oo6mI5ELUcvTZatd/10g0q+8Ga6I5T\nX9C8j7ddC19s4MXUjgMHnjVQpKoAaNibq/RPvG8VJrEc5R9HtP1JyjlpGe37\n50jXjEJWajn5hs07h9nfzkWOLza/ntrW1uOq/aBw80RwgEgKLaBNyC/lh1l4\nwdbS5U6+AUvBHrZgjaWDtrzqiPzPnoH0uNRlOid0XLO8xCxT8/qqMCYXWdQ2\n7CzK\r\n=P52f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFu24RUD8g9fqMvexdomisOw99qANhVzKmlFFiFDPeW9AiEA9AQolXm3zRRi4OZFLKPIeuiMQ12EGG81rc/HOtf3hLM="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_4.0.1_1581071489140_0.07704062512120258"},"_hasShrinkwrap":false},"4.1.0":{"name":"another-use-form-hook","version":"4.1.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.12"},"dependencies":{"@babel/runtime":"^7.8.4","use-deep-compare-effect":"^1.3.0"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/core":"^7.8.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.8.3","@babel/plugin-proposal-optional-chaining":"^7.8.3","@babel/preset-env":"^7.8.4","@babel/preset-react":"^7.8.3","@testing-library/jest-dom":"^5.1.1","@testing-library/react":"^9.4.0","@types/jest":"^25.1.2","@types/react":"^16.9.19","babel-eslint":"^10.0.3","babel-jest":"^25.1.0","eslint":"^6.8.0","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","jest":"^25.1.0","kcd-scripts":"^5.0.0","react":"^16.11.0","react-dom":"^16.12.0","react-test-renderer":"^16.12.0","semantic-release":"^17.0.2"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"dbe27144f144ce4acddf4ff122e9f0605169667c","_id":"another-use-form-hook@4.1.0","_nodeVersion":"10.19.0","_npmVersion":"6.13.7","dist":{"integrity":"sha512-hRLF1JiapeXrkK1mRbC1eVd1sv93s0K+bQofJB7O4M5fBOLHfMQ+34Nh+uscmJ/bRFoYTc1Qruo7XvDRrNowsQ==","shasum":"50c3a705b2c3cedce9d845d91b443b27abf45edd","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-4.1.0.tgz","fileCount":30,"unpackedSize":188754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePUIbCRA9TVsSAnZWagAAzK8P/RoLstHGBsaHiJAY5v6c\nQ+gdufzo3CwkgkbwPRLV9EEfSeormwRPjhNt/6XfXXz7MJbv0DnDVrBuxcma\nnu9orwEFcSjqgjjMQA+e/YwAHse6UeqlXuvc15nzMn+cDqUqzACEJx7Vsplt\nZZm8t9kPj79EHW6r4fSiUjY2yMv+PxBb+sIAwJLpgdBY1yA7chj+SaW/7K/5\nJTBKG05lbnv6MQDTC9CZKKScMPkiJqqEqe7TY5tj7wrpDcQMVcA+XdYiZMjO\n/VR2KwoyLA6BhjATLFhAxFRpSrmvDdk7g1cg2oA4v9zz3kkmdCHufc2Z8Wji\npGoPxmfkPEuqbZTW0iL/5PSt90XjNyU44L6Nut6+jjdvEE4NrHHkvZFP2VzC\nYhZIXpsy1bsgaWIaELp8sKVl+EB7QbFYVaV+LcRuAwG7FPX+Q44xABlS+Pyd\nwkwB9zkpq5h8I43UupGBV7v9W81LCnXVWGq1vY3Xtg6O1SO9ydSirvv12zUL\ncPkOZ/6mi/PhIXfj9R/PDQfpS8pXOBM5ZRjpcRVv3mghROaQlGA8fHcqKTeo\nigQ4IwuUJPOGtDm3N7TznVZYEa4uZdAs+KXkz3VgGV85D9jpotIXn2OEcvsN\nPKCRjJMMwFljc/JUiyYAlhMxQ/YnBLY+MGpd158bTIo0x+jzKqkyUUKhPaIU\nhqMH\r\n=Jb2f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMppK+y5cKIifbCrqGkRq7ew/Qv8rFpBPm9dDTK1/rQAiAQ4Cq0sqUnjgLsZSu5AxAfu3L/XvBw/0M642VVHUm68w=="}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_4.1.0_1581072922748_0.9942079190111663"},"_hasShrinkwrap":false},"4.1.1":{"name":"another-use-form-hook","version":"4.1.1","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.12"},"dependencies":{"@babel/runtime":"^7.8.4","use-deep-compare-effect":"^1.3.0"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/core":"^7.8.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.8.3","@babel/plugin-proposal-optional-chaining":"^7.8.3","@babel/preset-env":"^7.8.4","@babel/preset-react":"^7.8.3","@testing-library/jest-dom":"^5.1.1","@testing-library/react":"^9.4.0","@types/jest":"^25.1.2","@types/react":"^16.9.19","babel-eslint":"^10.0.3","babel-jest":"^25.1.0","eslint":"^6.8.0","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","jest":"^25.1.0","kcd-scripts":"^5.0.0","react":"^16.11.0","react-dom":"^16.12.0","react-test-renderer":"^16.12.0","semantic-release":"^17.0.2"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","publish:alpha":"yarn build; npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"gitHead":"6ee27c3deef600b5abcadd59e3e030af486fa42a","_id":"another-use-form-hook@4.1.1","_nodeVersion":"10.19.0","_npmVersion":"6.13.7","dist":{"integrity":"sha512-TTPnP+zR+yw7Yn/Fhjwfl5RunF5NFZAtBh0z+rQNIy5k0BH1xaT9JRH6BVNOfo232WJ7DPRR5mkcz6DJCMyCog==","shasum":"3eba7d64b0e3f147894bf3bbe235bc1183a510fc","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-4.1.1.tgz","fileCount":30,"unpackedSize":188827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePUxjCRA9TVsSAnZWagAAZAAP/0v7b6kTEWlSHu2XbamX\nCO+cZyiPGzjHi/BWva3ISLRPZOpUw8jbICVZIcfH7+DuzK2CBwITOiVe0TXq\nnK0YF4x1hbmowAZPikthIQrXkPXe/R/HuzoRrfCS7r/kxgwuyLVYCPpb1JMP\n57PYjxEw03PhpPnDUWnEWnSr2WiQYFnRaGm0XdZm5TBwR/WbXq5kBePVTM4N\nVcg4DqhPaWJEj/xWU8q+2YlRxdzqDQ1YCEllFvFdAnLYBghq50XV4GIqOx/q\nMZ3C3vTrKXmT3F4PlX9Kw7Hajyxrp1J92y+Ksb5J9v3MpYvl0OYyiVgy1sia\naWOy6zhnvK6ZvlfXxIgPfbWeYGOEsfpHvJLwTKzfNscKA7KNRiWblOggYFse\nD4+pL1GieYYKh59GtSiYmEcljayXw/reecLLrnbs4DUNHjy2+kARZR8EJi5+\nW7t48Il1j56wNsY2d0LOFTNG1sEh6dbwWMPwePTNwYm+QdIH837WHw2rEMXD\nhepGkf9uoJDnayyyG2xXTiHkBC4j1vxpsr3vjRqQFc1jHWllq8d7h1t27G/z\ngTo7sfQNURR9qA+qd4qfQnK7/Ztn+gwhR76qNj8ZGZOWG4zEFo/yv3ENxZuh\nWRHc4QzRLAGZDcpBrpwo+MkFFI13X6dR9eEuvOhvCicdvK+ULk2p5E/GL7C5\n7O7M\r\n=jLNZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMmcM/xav4G9xscfFeEAcTTUBsWycj11VK9bAfN53U6AIhAIRjoJF3Hbgmc0HBgN8a3dj6HMYdx2d4o4gePPwunHJb"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_4.1.1_1581075554503_0.34481536893179454"},"_hasShrinkwrap":false},"4.2.0-alpha.0":{"name":"another-use-form-hook","version":"4.2.0-alpha.0","maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"keywords":["react","hook","form","validation"],"description":"A React hook 🎣 for easy form handling","main":"dist/index.js","module":"dist/another-use-form-hook.esm.js","types":"typings/index.d.ts","author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"license":"MIT","private":false,"peerDependencies":{"react":">=16.12"},"dependencies":{"@babel/runtime":"^7.8.4","use-deep-compare-effect":"^1.3.0"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/core":"^7.8.4","@babel/plugin-proposal-nullish-coalescing-operator":"^7.8.3","@babel/plugin-proposal-optional-chaining":"^7.8.3","@babel/preset-env":"^7.8.4","@babel/preset-react":"^7.8.3","@testing-library/jest-dom":"^5.1.1","@testing-library/react":"^10.0.2","@types/jest":"^25.1.2","@types/react":"^16.9.19","babel-eslint":"^10.0.3","babel-jest":"^25.1.0","eslint":"^6.8.0","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^3.0.0","jest":"^25.1.0","kcd-scripts":"^5.0.0","react":"^16.11.0","react-dom":"^16.12.0","react-test-renderer":"^16.12.0","semantic-release":"^17.0.2"},"scripts":{"build":"kcd-scripts build && kcd-scripts build --bundle --no-clean","prepare":"yarn build","publish:alpha":"npm publish --tag alpha","validate":"kcd-scripts validate","test":"kcd-scripts test --verbose","test:coverage":"yarn test --coverage --coverageReporters html --watchAll","semantic-release":"semantic-release","setup":"npm install && npm run validate -s"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"homepage":"https://github.com/balazsorban44/use-form#readme","jest":{"setupFilesAfterEnv":["@testing-library/jest-dom/extend-expect","regenerator-runtime/runtime"],"collectCoverageFrom":["src/**/{!(test-utils|index),}.js","!src/**/*mock.js"],"testPathIgnorePatterns":["mock"]},"readme":"<div align=\"center\">\n<h1>another-use-form-hook</h1>\n\n<p>A React hook 🎣 for easy form handling</p>\n\n</div>\n\n---\n\n\n[![Build Status][build-badge]][build] [![Code Coverage][coverage-badge]][coverage] [![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends] [![Total downloads][total-downloads]][total-downloads] [![MIT License][license-badge]][license] [![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch] [![Star on GitHub][github-star-badge]][github-star]\n\n---\n\n## Table of Contents\n\n- [Table of Contents](#table-of-contents)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Documentation](#documentation)\n  - [useForm](#useform)\n    - [UseFormParams](#useformparams)\n      - [InitialState](#initialstate)\n      - [Validators](#validators)\n        - [Validations](#validations)\n      - [SubmitCallback](#submitcallback)\n      - [NotifyCallback](#notifycallback)\n    - [UseFormReturn](#useformreturn)\n      - [FieldValuesAndErrors](#fieldvaluesanderrors)\n      - [ChangeHandler](#changehandler)\n      - [SubmitHandler](#submithandler)\n      - [InputPropGenerators](#inputpropgenerators)\n        - [InputTypeOptions](#inputtypeoptions)\n        - [InputPropGeneratorsReturn](#inputpropgeneratorsreturn)\n  - [FormProvider](#formprovider)\n    - [FormProviderProps](#formproviderprops)\n  - [getForms](#getforms)\n    - [Forms](#forms)\n- [LICENSE](#license)\n\n\n## Installation\nThis should be installed as one of your project `dependencies`:\n\n```\nyarn add another-use-form-hook\n```\nor\n```\nnpm install --save another-use-form-hook\n```\n\n> NOTE: `another-use-form-hook` only works with [**react >=16.8**][react-hooks], since it is a hook.\n\n## Usage\n\nThis hook is intended to give a full solution for handling forms. From interdependent field value validations (meaning if a field value is dependent on other field value), to submitting the form, and providing information about when the UI should be unresponsive (loading of some kind of async-like operation), in addition to notification \"hooks\" to be able to inform the users the most efficient way.\n\nTo retrieve props for an input field, you have the following options:\n 1. Using the `form.inputs.{inputType}('name')` input prop generator function (`inputTypes` is one of [these][input-types-mdn])\n 2. Using `form.fields.{name}.{value|error}` and `form.handleChange` functions\n\n> NOTE: The example below is available live at [CodeSandbox][codesandbox-example]\n>\nLet's see a complex example to understand how it works:\n\n```jsx\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport useForm from \"another-use-form-hook\";\nimport \"./styles.css\";\n/**\n * NOTE: We are using date-fns for this example,\n * but it is absolutly not a requirement.\n */\nimport { addDays, isAfter, differenceInDays, parseISO } from \"date-fns\";\nconst isValidEmail = email => /\\w*@\\w*\\.\\w*/.test(email); // Do better 💩\n\nconst TODAY = new Date();\n\nconst App = () => {\n  const form = useForm({\n    initialState: {\n      email: \"\",\n      arrival: TODAY,\n      departure: TODAY\n    },\n    validators: (fields, isSubmitting) => ({\n      // if not submitting, don't throw errors for invalid e-mail, like an empty field\n      email: isSubmitting\n        ? isValidEmail(fields.email)\n        : typeof fields.email === \"string\",\n      // earliest arrival must be tomorrow\n      arrival: isAfter(parseISO(fields.arrival), TODAY),\n      // earliest departure must be after tomorrow\n      departure: isAfter(addDays(parseISO(fields.departure), 1), TODAY),\n      // departure must be at least a day after arrival\n      minOneNight: isSubmitting\n        ? differenceInDays(\n            parseISO(fields.departure),\n            parseISO(fields.arrival)\n          ) >= 1\n        : true\n    }),\n    onNotify: (type, reason) => {\n      // you can use type and reason to send specific notifications to the user\n      switch (type) {\n        case \"submitError\":\n          console.error(\"Form could not be submitted: \", reason);\n          break;\n        case \"submitSuccess\":\n          console.info(\"Form has been submitted.\", reason);\n          break;\n        case \"validationErrors\":\n          console.warn(\n            \"The following problems occurred while validating: \",\n            reason\n          );\n          break;\n        default:\n          break;\n      }\n    },\n    onSubmit: async ({ fields, setLoading, notify }) => {\n      try {\n        setLoading(true);\n        // submitting the form, eg.: fetch(\"path/to/my/submit\")\n        const response = await new Promise(resolve => {\n          setTimeout(() => {\n            console.log(\"Submitting: \", fields);\n            resolve(fields);\n          }, 1000);\n        });\n        notify(\"submitSuccess\", response);\n      } catch (error) {\n        notify(\"submitError\", error.message);\n      } finally {\n        setLoading(false);\n      }\n    }\n  });\n\n  return (\n    <form onSubmit={form.handleSubmit}>\n      {/* option 1 (control all the props with a one-liner)*/}\n      <fieldset>\n        <legend>Option 1</legend>\n\n        <label htmlFor=\"email\">\n          {form.fields.email.error ? \"Invalid\" : \"\"} email\n        </label>\n        <input {...form.inputs.email(\"email\")} />\n\n        <label htmlFor=\"departure\">\n          {form.fields.arrival.error ? \"Invalid\" : \"\"} arrival\n        </label>\n        <input\n          {...form.inputs.date(\"arrival\")}\n          // You can override props by simply defining them last\n          onChange={e => form.handleChange(e, [\"minOneNight\"])}\n        />\n      </fieldset>\n\n      {/* option 2 specify id, type, name, value props manually*/}\n      <fieldset>\n        <legend>Option 2</legend>\n        <label htmlFor=\"arrival\">\n          {form.fields.arrival.error ? \"Invalid\" : \"\"} arrival\n        </label>\n        <input\n          type=\"date\"\n          id=\"arrival\"\n          name=\"arrival\"\n          value={form.fields.arrival.value}\n          onChange={e => form.handleChange(e, [\"minOneNight\"])}\n        />\n\n        <label htmlFor=\"departure\">\n          {form.fields.departure.error ? \"Invalid\" : \"\"} departure\n        </label>\n        <input\n          type=\"date\"\n          id=\"departure\"\n          name=\"departure\"\n          value={form.fields.departure.value}\n          onChange={e => form.handleChange(e, [\"minOneNight\"])}\n        />\n      </fieldset>\n\n      {/* also from option 1 */}\n      <button {...form.inputs.submit()} disabled={form.loading}>\n        Submit\n      </button>\n    </form>\n  );\n};\n\nReactDOM.render(<App />, document.querySelector(\"#root\"));\n```\n\n## Documentation\n\n### useForm\n\n```ts\n  useForm(useFormParams: UserFormParams): UseForm\n```\n\n#### UseFormParams\n\n| name         | type       |                                                          description |\n| :----------- | :--------- | -------------------------------------------------------------------: |\n| name         | `string`   | Refer to one of the forms in [formProviderProps](#formproviderprops) |\n| initialState | `object`   |                                    See [InitialState](#initialstate) |\n| validators   | `function` |                                        See [Validators](#validators) |\n| onSubmit     | `function` |                                See [SubmitCallback](#submitcallback) |\n| onNotify     | `function` |                                See [NotifyCallback](#notifycallback) |\n\n##### InitialState\nAn object containing the default value of every field in a form.\n> Example:\n```js\nuseForm({\n  initialState: {\n    email: \"\",\n    name: \"\",\n    address: \"\",\n    age: 0\n  }\n})\n```\n\nIf `name` is defined, you can refer to `initialStates.{name}` in [formProviderProps](#formproviderprops).\n\n> Example:\n```jsx\n//...\n<FormProvider \n  initialStates={{\n    login: {\n      email: \"email@example.com\",\n      password: \"\"\n    }\n  }}\n>\n//...\nconst form = useForm({name: \"login\"})\nconsole.log(form.fields.email.value) // email@example.com\n```\n\n##### Validators\nThis function is invoked before [onChange](#changecallback) and [onSubmit](#submitcallback). The former only runs the validations for the changed fields, while the latter runs it on the whole form. For convenience, it is also returned from `useForm`.\n```ts\nfunction validators(fields: object, isSubmitting: boolean): Validations\n```\n\n| name        | type      |                                                      description |\n| :---------- | :-------- | ---------------------------------------------------------------: |\n| fields      | `object`  |   An object with the same shape as [initialState](#initialstate) |\n| submitting  | `boolean` | Set to `true`, when called before [handleSubmit](#submithandler) |\n| validations | `object`  |                                  See [Validations](#validations) |\n\n###### Validations\nAn object containing `boolean` expressions. Each input field must have at least a corresponding property in this object, but you can define custom ones as well.\n> Example:\n```js\n{\n  email: submitting\n    ? isValidEmail(fields.email)\n    : typeof fields.email === \"string\"\n}\n```\nYou can also look at the [live example](#usage).\n\n\n##### SubmitCallback\nInvoked when [handleSubmit](#submithandler) is called and there were no validation issues.\n\n```ts\nfunction onSubmit(onSubmitParams: OnSubmitParams): void\n```\n\n\n| name       | type       |                                                       description |\n| :--------- | :--------- | ----------------------------------------------------------------: |\n| name       | `string`   |                 Same as `name` in [useFormParams](#useformparams) |\n| fields     | `object`   |     Validated fields, same shape as [initialState](#initialstate) |\n| setLoading | `function` | Sets the returned `loading` property of [useForm](#useformreturn) |\n| notify     | `function` |                             See [NotifyCallback](#notifycallback) |\n\n##### NotifyCallback\nInvoked if there is a validation error when calling `handleChange` or `handleSubmit`. Can be manually triggered on `onSubmit` by calling `notify`.\n\n```ts\ntype NotifyType = \"validationErrors\" | \"submitError\" | \"submitSuccess\"\nfunction notify(type: NotifyType, reason: any): void\n```\n\n| name   | type     |                                                                                              description |\n| :----- | :------- | -------------------------------------------------------------------------------------------------------: |\n| type   | `string` |                                                                                     Type of notification |\n| reason | `any`    | When type is `validationErrors`, it is a list of field names, Otherwise you set it to whatever you want. |\n\n> Example:\n\nLook at the [live example](#usage).\n\n\n#### UseFormReturn\n\n| name         | type       |                                                                   description |\n| :----------- | :--------- | ----------------------------------------------------------------------------: |\n| name         | `string`   |                                   Same as in [useFormParams](#useformparams). |\n| fields       | `object`   |                             See [FieldValuesAndErrors](#fieldvaluesanderrors) |\n| hasErrors    | `boolean`  | For convenience. `true` if any of the returned fields.{name}.error is `true`. |\n| handleChange | `function` |                                           See [ChangeHandler](#changehandler) |\n| handleSubmit | `function` |                                           See [SubmitHandler](#submithandler) |\n| loading      | `boolean`  |                     Controlled by `setLoading` in [onSubmit](#submitcallback) |\n| inputs       | `object`   |                               See [InputPropGenerators](#inputpropgenerators) |\n| validators   | `function` |                                                 See [Validators](#validators) |\n\n##### FieldValuesAndErrors\nValidated field values and their errors.\n> Example:\n\n```js\n  const form = useForm({initialState: {\n    email: \"email@example.com\",\n    age: -2\n  }})\n  console.log(form.fields)\n  // {\n  //  email: {\n  //   value: \"email@example.com\",\n  //   error: false\n  //  },\n  //  age: {\n  //   value: -2,\n  //   error: truefields\n  //  }\n  // }\n  console.log(form.hasErrors) // true\n```\n##### ChangeHandler\nYou can call this two ways. Either pass an event as the first argument, or a partial `fields` object. With the latter, you can change multiple values at the same time. E.g.: resetting the form after submit, or any other reason you might have.\n```ts\nfunction handleChange(event: React.FormEvent, validations: string[]): void\nfunction handleChange(fields: object, validations: string[]): void\n```\n| name        | type              |                                                                                                      description |\n| :---------- | :---------------- | ---------------------------------------------------------------------------------------------------------------: |\n| event       | `React.FormEvent` |                                     Standard event. Using `target.{name\\|value\\|checked}` to infer the intention |\n| fields      | `object`          |                           Pass a partial `fields` object, if you want to change multiple values at the same time |\n| validations | `string[]`        | Which `validators` you would like to run. If omitted, only validators with the same event/field name will be run |\n\n> Example:\n\nLook at the [live example](#usage).\n\n##### SubmitHandler\nCall to submit the form. Before [onSubmit](#submitcallback) is invoked, [validators](#validators) is run for every form field. If there were any errors, [notify](#notifycallback) is invoked with `type` being `validationErrors`, and `reason` a list of form field names.\n\n```ts\nfunction handleSubmit(): void\n```\n\n\n##### InputPropGenerators\n\nAn object, containing properties with the same name as the [HTML input types][input-types-mdn], with some minor differences. \n\nFor convenience, since `datetime-local` contains a hyphen (-) character, it is also exposed as `datetimeLocal`, to overcome the need of `\"` characters, when accessing it.\nI.e.:\n```js\nconst form = useForm()\nform.inputs.datetimeLocal == form.inputs[\"datetime-local\"]\n```\nIn addition to the standard input types, there is a `select` type also available.\n\nEach property is a function:\n\n```ts\nfunction inputType(name: string, options: InputTypeOptions): InputPropGeneratorsReturn\n```\n\n| name    | type     |                                                                  description |\n| :------ | :------- | ---------------------------------------------------------------------------: |\n| name    | `string` | The name of a field. Same as the properties of [initialState](#initialstate) |\n| options | `object` |                                    See [InputTypeOptions](#inputtypeoptions) |\n\n> Example:\n\nFor examples of all types, you can check [this test suite][input-prop-generator-test-file]\n\n###### InputTypeOptions\nAn optional object\n\n| name          | type       |                                                                                                                          description |\n| :------------ | :--------- | -----------------------------------------------------------------------------------------------------------------------------------: |\n| value         | `string`   |                     Usually, when using radio buttons, values are static. (Each button in the same group must have different values) |\n| generateProps | `function` | Provides `name`, `value` and `error` that can be used to generate additional props. Useful, if you want to avoid using `form.fields` |\n| formName      | `string`   |                                      If the input type is `submit`, it can be used to override the name of the form being submitted. |\n\n> Example:\n1. \n```jsx\nconst form = useForm(/*...*/)\n// *click on option-2*\nconsole.log(form.fields.radio.value) // option-2\nreturn (\n  <radiogroup>\n    <input {...inputs.radio('radio', { value: 'option-1' })}/>\n    <input {...inputs.radio('radio', { value: 'option-2' })}/>\n    {/*You can do it the \"traditional\" way also*/}\n    <input\n      {...inputs.radio('radio')} \n      value='option-3'\n    />\n  </radiogroup>\n)\n```\n2. \n```jsx\nconst form = useForm(/*...*/)\nreturn(\n  <div>\n    <input\n      {...form.inputs.email(\"emailField\", {\n        generateProps: ({error}) => ({\n          className: error ? \"email-error\" : \"email\",\n        })\n      })}\n    />\n    {/*Tip: if your custom Input component takes an error prop, you can try this: */}\n    <Input {...form.inputs.email(\"emailField\", {generateProps: _ => _})}/>\n    {/* This will spread error to Input as well.*/}\n\n    {/*Or here is a more complex example for a custom Input component*/}\n    <Input \n      {...form.inputs.email(\"emailField\", {\n        generateProps: ({error, name}) => ({\n          error,\n          label: error ? `Invalid ${name}` : name,\n          placeholder: `Type ${name}`\n        })\n      })}\n    />\n  </div>\n)\n```\n\n\n###### InputPropGeneratorsReturn\nAn object that can be spread on a React input like element.\n\n| name     | type       |                                                                                                                                     description |\n| :------- | :--------- | ----------------------------------------------------------------------------------------------------------------------------------------------: |\n| name     | `string`   |                                                             The name of a field. Must be one of the properties in [initialState](#initialstate) |\n| id       | `string`   | By default, same as `name`. If input type is `radio`, it is the same as `value`, to avoid problems in radio groups where `id` would be the same |\n| value    | `any`      |                                                                                                                          The value of the field |\n| onChange | `function` |                                                                                                                  See [onChange](#changehandler) |\n| checked  | `boolean`  |                                                                                          If input type is `checkbox`, it is the same as `value` |\n| onClick  | `function` |                                                                                     If input type is `submit`, it is [onSubmit](#submithandler) |\n\n> Example:\n\n```jsx\nconst form = useForm(/*...*/)\n\nreturn (\n  <div>\n    <label htmlFor=\"emailField\">E-mail</label>\n\n    <input {...form.inputs.email(\"emailField\")}/>\n    {/* This is the same as */}\n    <input\n      name=\"emailField\"\n      id=\"emailField\"\n      type=\"email\"\n      onChange={form.handleChange}\n      value={form.fields.emailField.value}\n    />\n  </div>\n)\n```\n\n### FormProvider\n\n```ts\n  function FormProvider(formProviderProps: FormProviderProps): JSX.Element\n```\n\n#### FormProviderProps\n\n| name          | type           |                                                                                 description |\n| :------------ | :------------- | ------------------------------------------------------------------------------------------: |\n| initialStates | `object`       | Single place to define all `initialState` for every form. See [InitialState](#initialState) |\n| validators    | `object`       |      Single place to define all `validators` for every form. See  [Validators](#validators) |\n| onSubmit      | `function`     |                                                         Same as [onSubmit](#submitcallback) |\n| onNotify      | `function`     |                                                         Same as [onNotify](#notifycallback) |\n| children      | `ReactElement` |                                      The element you would like to wrap with `FormProvider` |\n\n\n\n### getForms\n```ts\n  function getForms() : Forms\n```\n\n#### Forms\nAn object containing all the forms' current values in [FormProvider](#formprovider). Same shape as `initialStates`.\n\n\n---\n\n## LICENSE\n\nMIT\n\n[build-badge]:\n  https://img.shields.io/travis/balazsorban44/use-form.svg?style=flat-square\n[build]: https://travis-ci.org/balazsorban44/use-form\n[coverage-badge]:\n  https://img.shields.io/codecov/c/github/balazsorban44/use-form.svg?style=flat-square\n[coverage]: https://codecov.io/github/balazsorban44/use-form\n[version-badge]:\n  https://img.shields.io/npm/v/another-use-form-hook.svg?style=flat-square\n[package]: https://www.npmjs.com/package/another-use-form-hook\n[downloads-badge]:\n  https://img.shields.io/npm/dm/another-use-form-hook.svg?style=flat-square\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n\n[npmtrends]: http://www.npmtrends.com/another-use-form-hook\n[license-badge]:\n  https://img.shields.io/npm/l/another-use-form-hook.svg?style=flat-square\n[license]:\n  https://github.com/balazsorban44/use-form/blob/master/LICENSE\n[prs-badge]:\n  https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[donate-badge]:\n  https://img.shields.io/badge/$-support-green.svg?style=flat-square\n[coc-badge]:\n  https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]:\n  https://github.com/balazsorban44/use-form/blob/master/CODE_OF_CONDUCT.md\n[github-watch-badge]:\n  https://img.shields.io/github/watchers/balazsorban44/use-form.svg?style=social\n[github-watch]: https://github.com/balazsorban44/use-form/watchers\n[github-star-badge]:\n  https://img.shields.io/github/stars/balazsorban44/use-form.svg?style=social\n[github-star]: https://github.com/balazsorban44/use-form/stargazers\n[react-hooks]: https://reactjs.org/blog/2019/02/06/react-v16.8.0.html\n[input-types-mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input\n[codesandbox-example]: https://codesandbox.io/s/another-use-form-hook-2mler\n[input-prop-generator-test-file]: https://github.com/balazsorban44/use-form/blob/master/src/__tests__/useForm-with-input-prop-generator.test.js\n[total-downloads]: https://img.shields.io/npm/dt/another-use-form-hook.svg?label=total%20downloads&style=flat-square\n","readmeFilename":"README.md","gitHead":"28335d866df1cf50c341445bea1507cf9b10f881","_id":"another-use-form-hook@4.2.0-alpha.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-L6q0hVLUf5v+RbNEv66ttgxre/lw8RF707Ho3uyEIyAIKXMm3WaNvT70frA6kVllh2baMuuLa76sSHfhTZuFIw==","shasum":"ae358638316c9aa5b1a73f8245b110b06eb49d7c","tarball":"https://registry.npmjs.org/another-use-form-hook/-/another-use-form-hook-4.2.0-alpha.0.tgz","fileCount":30,"unpackedSize":200711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejieaCRA9TVsSAnZWagAA/FQP/1W47dFpVpYd24ntciTq\nCwLUmo2InqQ7nylAhHOADANHk5fG4kEjFTTlrLTkYNo2HjA5rq1vgHKlGNWV\nVdvFvNNeKoLgJdOU082Ja5ZylUBUQiJmtBdXiQ3HUfOpQlYSgrCMbIG98rOk\ncv0oPI7Tcw5jmmrB+sgOwhveuDt3OJlig64T0x7RVgGmR1dmHCvSB3SsghWv\nTP5LC2Dz51FHHSCTJ05Dj1EsyXKQBQva72rihRdGypSVLxj2aaNgzFqCjhVk\nCq6OpR9blQxHxg5FaTNEgzgJasXI/uzVDRmXfz+94IulWUQxzf9wb0WuuDSZ\njC2yjGQPw+/WE9CWWDPKgWQVlFE8wmi2vOZ3eFPRRJEdbA4GFDBEzGKmVrV8\nzWaKFgv0uTBKCxEEmbAnZCQdDsdBoXVTUM/Lg66EdykV1xf5rHwJ0QOWGJ9L\njYH2WwUUGCq0nF0NPlVGdwFNPLoECT8RxLVHgiP5hHltg9mwN6dxnBrVz1R9\ngDpLsfDZsKtO8Cf1tMdqvd9nzJA99D15mz6b2tvJr+2zQZxuw5qRFrmrYaIZ\nsYnUogUPzuWdR6s9RRuNQ1v6WhLJhPQRgYShT9iEXYvt65KYCwLm5W3Sogah\n51UXsZahjqLPDylc4Qc1Mc3Dnyfm847dlkT8cAFH7vPgIzZpSTqiEWEk8DZG\noE1u\r\n=Vsn/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCu16yRmwO+g2YVbFZliALGRSUs/VG9u85id3xYkcMr9wIhAOzo26qpQULz2XGiYm+BWkDq6Ve/YlbIyY+gHqkB10KR"}]},"_npmUser":{"name":"balazsorban","email":"info@balazsorban.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/another-use-form-hook_4.2.0-alpha.0_1586374553445_0.3339673506802734"},"_hasShrinkwrap":false}},"time":{"created":"2019-07-08T12:23:41.946Z","1.1.0":"2019-07-08T12:23:42.095Z","modified":"2022-04-11T14:17:54.753Z","1.1.1":"2019-07-08T13:20:12.636Z","1.1.2":"2019-07-08T13:38:18.317Z","1.1.3":"2019-07-08T13:59:38.775Z","1.1.4":"2019-07-08T14:12:34.703Z","1.1.5":"2019-07-08T14:24:10.258Z","1.1.6":"2019-07-09T07:17:31.021Z","2.0.0":"2019-07-13T18:10:31.326Z","2.1.0":"2019-07-16T09:44:29.372Z","2.1.1":"2019-07-16T12:23:26.313Z","2.2.0":"2019-07-19T10:34:14.251Z","2.3.0":"2019-07-23T13:29:01.294Z","2.4.0":"2019-07-25T22:07:50.133Z","2.5.0":"2019-07-26T14:07:17.132Z","2.5.1":"2019-07-29T07:59:47.524Z","2.5.2":"2019-07-29T08:58:17.199Z","2.6.0":"2019-08-05T11:04:36.108Z","2.6.1":"2019-08-05T20:11:22.563Z","3.0.0-beta.0":"2019-08-05T20:29:05.311Z","3.0.0-beta.1":"2019-08-05T20:33:55.522Z","3.0.0-alpha.0":"2019-08-05T20:48:22.025Z","3.0.0-alpha.1":"2019-08-05T20:51:38.802Z","3.0.0-alpha.2":"2019-08-05T20:58:08.254Z","2.7.0":"2019-08-07T08:56:02.716Z","2.8.0":"2019-08-07T15:11:43.240Z","3.0.0-alpha.3":"2019-08-07T22:18:37.621Z","3.0.0-alpha.4":"2019-08-07T23:19:43.347Z","3.0.0-alpha.5":"2019-08-08T14:35:50.772Z","3.0.0-alpha.6":"2019-08-08T15:11:00.183Z","3.0.0-alpha.7":"2019-08-17T15:36:35.323Z","3.0.0-alpha.8":"2019-08-17T17:44:18.500Z","3.0.0-alpha.9":"2019-08-17T17:47:42.618Z","3.0.0-alpha.10":"2019-08-17T18:02:04.023Z","3.0.0-alpha.11":"2019-08-18T13:07:49.303Z","3.0.0-alpha.12":"2019-08-18T14:35:18.143Z","3.0.0-alpha.13":"2019-08-19T10:54:41.996Z","3.0.0-alpha.14":"2019-08-19T11:24:40.349Z","3.0.0-alpha.15":"2019-08-19T11:46:56.140Z","3.0.0-alpha.16":"2019-08-19T11:59:18.336Z","3.0.0-alpha.17":"2019-08-19T13:43:50.956Z","3.0.0-alpha.18":"2019-08-19T20:18:02.836Z","3.0.0-alpha.19":"2019-09-04T08:40:30.247Z","3.0.0-alpha.20":"2019-09-04T10:54:18.904Z","3.0.0-alpha.21":"2019-09-17T13:09:01.326Z","3.0.0-beta.2":"2019-09-26T08:57:48.391Z","3.0.0-beta.3":"2019-09-27T08:34:09.778Z","3.0.0":"2019-10-15T14:32:57.013Z","3.1.0":"2019-10-15T14:44:17.835Z","3.1.1":"2019-10-25T15:02:10.442Z","3.1.2":"2019-10-27T11:38:41.432Z","3.1.3":"2019-10-27T15:59:38.677Z","3.1.4":"2019-10-27T16:26:25.786Z","3.1.5":"2019-10-28T14:53:29.391Z","3.2.0":"2019-11-04T10:32:36.781Z","4.0.0":"2020-02-07T09:22:14.901Z","4.0.1":"2020-02-07T10:31:29.314Z","4.1.0":"2020-02-07T10:55:22.990Z","4.1.1":"2020-02-07T11:39:14.655Z","4.2.0-alpha.0":"2020-04-08T19:35:53.592Z"},"maintainers":[{"name":"balazsorban","email":"info@balazsorban.com"}],"description":"A React hook 🎣 for easy form handling","homepage":"https://github.com/balazsorban44/use-form#readme","keywords":["react","hook","form","validation"],"repository":{"type":"git","url":"git+https://github.com/balazsorban44/use-form.git"},"author":{"name":"Balázs Orbán","email":"info@balazsorban.com","url":"https://balazsorban.com"},"bugs":{"url":"https://github.com/balazsorban44/use-form/issues","email":"info@balazsorban.com"},"license":"MIT","readme":"","readmeFilename":""}