{"_id":"use-formio","_rev":"32-3f368a87aff63a94865de4c2a0bbd39c","name":"use-formio","dist-tags":{"latest":"2.0.0"},"versions":{"0.0.1":{"name":"use-formio","version":"0.0.1","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.1","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"dist":{"shasum":"fceef4133f8703924125742d3008471112d89f3e","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.1.tgz","fileCount":14,"integrity":"sha512-MJXR4z0pLgP8mYGNRDxO6HemVBKwGqObup3OdNRiiGmgOhvrhOkHi2eS21Vg57CLCPpUHfdF7CDzXgGDNdU+zw==","signatures":[{"sig":"MEYCIQCwrjmLrIisQicYuln3lD7NB+fDRjw/2Nw2kOs08rmhaAIhAIIlppNym7ho4fG9bOOU2pDw4gJXtQ6lM7HjuW4IEj9N","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265989},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"3a86a962039a6f2f9b30cac5c6bda91dabdeed5b","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"semi":true,"printWidth":80,"singleQuote":true,"trailingComma":"es5"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"_npmVersion":"7.15.0","description":"Congrats! You just saved yourself hours of work by bootstrapping this project with TSDX. Let’s get you oriented with what’s here and how to use it.","directories":{},"_nodeVersion":"14.17.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.1_1633398128734_0.30318874795764694","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"use-formio","version":"0.0.2","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.2","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"dc9375bbb5efe07863c3de137c36c69a7bb8f557","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.2.tgz","fileCount":16,"integrity":"sha512-mJbvBjS8WX/T+lkOOE9mz6jNKmVyt8/lB5gFSs29tQSDyY85gUKq3iEWyMPCX5cca0mwU0p1eahrqsPXY27zEg==","signatures":[{"sig":"MEUCIQDzlvcxSeBOsY9mvOQw79AIRqE7XEKMypEj9JNemBc/YgIgMbRx/15s+YjGMDfMtJZxCpqZPfLknojpmehf9u7f0kM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":283950},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"ca62df181832e24c43fe115d6c02481712cfcd21","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"semi":true,"printWidth":80,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"_npmVersion":"7.15.0","description":"`use-formio` has 0 dependencies and less than 200 lines of code!","directories":{},"_nodeVersion":"14.17.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.2_1633404986439_0.0786681168741985","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"use-formio","version":"0.0.3","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.3","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"da2fab17c45c98008734e306bf22ee384270d8f4","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.3.tgz","fileCount":16,"integrity":"sha512-QWH13QJo9Hh0UWaSZMyiIlQQH5DOwvx/A24gaxakSbQKNlkb3UdqVZoXP0nHKcknyzlMt5s/5cNy0O13r4q4Fg==","signatures":[{"sig":"MEQCIBm4S7mQf/CwMZ4NpF4uZZ8zAJuLsuDyLoRRh8ZDFWSDAiAWK+ry/cI9eSVrqKv2gTfwQPFsshSQBbBhEhPp52F6fg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":290682},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"ee49b0aeecdb819e213510c1df75a6b0b538b722","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"semi":true,"printWidth":80,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"_npmVersion":"7.15.0","description":"`use-formio` has 0 dependencies and less than 200 lines of code!","directories":{},"_nodeVersion":"14.17.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.3_1633507283941_0.32622304385471934","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"use-formio","version":"0.0.4","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.4","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"a179db005021ec3a8eb204f9a2879404d09d40b3","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.4.tgz","fileCount":16,"integrity":"sha512-o3GCE89ZeoX4owwsamb+1aydWQWCI9CvzZ2WkgY7r4vFKPiDduJNdB3iepAiNqlEkVb18dqg4vwXpNiPxrlh5w==","signatures":[{"sig":"MEYCIQCzfEACik9pZApbuOO+1M/z9Ls1pFnhkgLAH0kdIy0qqQIhAK2XeEf0ntB84jDOtIiq6ZpXL+W/lxE8BkIfQDMJ7VT+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":291528},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"6c853a68691273ca78a35beff362cd3f0f3e6ba8","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"semi":true,"printWidth":80,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"_npmVersion":"7.15.0","description":"`use-formio` has 0 dependencies and less than 200 lines of code!","directories":{},"_nodeVersion":"14.17.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.4_1636109055141_0.644339695127885","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"use-formio","version":"0.0.5","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.5","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"4284ad55478f678634444d05ee3cedca3c687340","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.5.tgz","fileCount":16,"integrity":"sha512-BhwUuJD7TmucMoEnZpYRYSMd33+/NaVmJoh/U5Mj/05PHfaUUOZ6H+FS5H0f3P6yBByEbqId3caeGGcV0VZ3FA==","signatures":[{"sig":"MEUCIQClilaUssb/xfzN/4pU+SI7Qu+oShmi9ztJ4CwNsnXiJQIgSMCHMZsuXvAmBhaZyXDY+uvro5BtgCOJGC1XzLVAKxs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":291718},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"431951f9a68fa26dccb47b614d9d0ee518e55688","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"semi":true,"printWidth":80,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"_npmVersion":"7.15.0","description":"`use-formio` has 0 dependencies and less than 200 lines of code!","directories":{},"_nodeVersion":"14.17.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.5_1636965882085_0.24413704677584103","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"use-formio","version":"0.0.6","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.6","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"713cff24a77bc19edc41e4ceaf8ca1386403d317","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.6.tgz","fileCount":18,"integrity":"sha512-v64IK4vy4hGED6Z/jeM6pcZLzgEKbH91yiX4YmWq0KKl/iapllMG1mn9S4NIlMnZMi9usNqYp7gcJ3+Nbb+1FQ==","signatures":[{"sig":"MEYCIQDDOADbOfEIKpkcf1mgH2AubhksXE1sFT7Dut0r8Ca8KwIhALEYP0ScrF232YwkcP1yLTN16Lw+tai7/MBXkTiRGU0E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":295819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmLsuCRA9TVsSAnZWagAAhtsP+gMNg6x6IwBRzTpwuUHP\nUOqQCZziVH5NTrgMzDq8vuqsZQvh3IdwtuQfjOz0dEehQEDtE0ZC0pkMUuIO\nIW/zgDLPBGUT++kolCUjWKfr47n8t4EgPR/kOzxCCsR9MFrkwxQA5f6iRbcg\no6/0j686CK/6QPMwPTaok8Y3IRV3ziX3WmlXm7/48piqAZe0OC2XN6fHS0vI\nghHd3ntMGWooh+jm2Fh/7RuZogBIUTMmUiZcy5gvmlYJdjOqYUPT6sDiDUa5\nKNDsh4Q8Dp1W7LP3U7ZOYCJCmVY2IvlTURxCVT9IS3aluLRfPg4Yb2WS2Ozd\n4DYK5BfozT4mfuqi6G5HLSDiKSxKNy805ERzgeSTbUDBL0iOB43EjYxIu76w\n1rnd5uHXAnieDgCSu+n/7StKJ5AyESSeIckyxiRg9wwQC2lsZRenb26aNsfO\nxhs2NUYXcNGYpeoRczT6OFKAGkSfj/W7txPldzEe/cn7yxldPBOTWyJp3EJ7\nPG+hL52V5JhHdggJaw1TQp+ezJXBCAVsud92H/SR+TvLaGtDQmqkTD8Xg5xK\nXbi+xhntY7zpEJ6veNd3Dp8kci0UZJ0NEUSBL9WP1TbZBMTq6KqNQRPyK5Sm\nhwACypwHs2NrDjGp6yMEhgv80BgfylP8KHMg9ukywy2iP72mwRMx7ScE+aTu\n5Avm\r\n=IF9F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"d74b430cfacc321e226c64c7b5c02304b2510579","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"semi":true,"printWidth":80,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"_npmVersion":"7.10.0","description":"","directories":{},"_nodeVersion":"16.0.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.6_1637399342027_0.3620230542427296","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"use-formio","version":"0.0.7","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.7","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"74607836818b613414d8db784b2216fff10e9348","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.7.tgz","fileCount":18,"integrity":"sha512-GDyvhSemXWsi7sPwXPes2SBBZAM0kQ/24Cqp73gq6/ShuHu4GP0XP2NjkWZHVmVYp8qFwo/v1lcIYAd3OV9lFg==","signatures":[{"sig":"MEUCIQCZqi3w0bn4UAZaJ5QTRoFBH9NW6ZjMTzN22U+VYS2NKAIgdtqf3mconIFnyqzyWPC2YUFJ5GlY6scuzspiCJRCitI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":297255},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"d74b430cfacc321e226c64c7b5c02304b2510579","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"semi":true,"printWidth":80,"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"_npmVersion":"7.10.0","description":"","directories":{},"_nodeVersion":"16.0.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.7_1637409130785_0.8040506195395267","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"use-formio","version":"0.0.8","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.8","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"bf87a849438fea85a39934375d7660f9461dd1d4","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.8.tgz","fileCount":18,"integrity":"sha512-VVbvGDgbIIXDQ7WaJG9zOMxG8jBtqMU6tV1/rLykOwStJ3UvQ1SsapxQ/P2G2sSJ4Hlpfn6Lpt1N8aUx3h97wQ==","signatures":[{"sig":"MEQCIF8Gf/7J7FGysxSVRTwlXSzjB37By8frJ0UE1ShOIl0tAiBazD29zniC6eJfxuahCAOdOXfJYJOD5Ma6A1YF5ktZNA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":298214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmSzwCRA9TVsSAnZWagAA7DIP/378E0fre7xlLcdgnbsR\npUFQr3uwLvsZeO5BUk25E75FR4aBA/QLSnNFu2zSt3slPmRRmCYIGcCB7/DS\nctKOiweUo6sS1qNlIKTZfPLFuikbBOx5X/2h2I8qgtkRYvGDy7+jb1fDbRMA\nTLVAGpE1BCMSyEvvI5jHE5+qrAptai0ARt/EpwyKAq+3M50qPUdTAvFadUD5\nIpgN4VwG2XCdlqhJZVB3t2+nBfAp0m+qSB/tUGqJ5hz7juHG2lm8OMDVrfvg\nuVlbYygd29m16opaTbl0+EaKdyCOk7kc6eCWoJXIjeY5kl65daw73Y+5Ar8w\na3jL/+YEVnNDeZmR07w5d+6YhI8t5QALWMly9sNkZl/lPhstdOl5JPz5826I\nDvUus4di9e2XOeo2VZfisKJhmGD6HwsBteSp6lq0AaBN1ipThmNFjsVpxT3W\nQf6LFW7WBsxgtn2+Owa3q3Pc4GftmLOCmppZzgvAh7UoJDYQ/Fh7Y7MNvHuw\nlByv+bH7GJHd/mBFm/DC2RMD0GtrSLZo1gEghehZPpxHRWXXwDfWci8rygQD\nU540SlEvqq9Gj+ke+zeD4/5njnUl0cd4sq5hqbjCX17GPVvOcbZhbV6Suhyo\nPjmHS5IKESiv1DOQgL721ei+9zrgsgfzglc5Nqu7m5jXHWOmWkeZ18uybiBT\nMJir\r\n=PoI3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"b8f604b208d301ad0ffa8d89004d919a2d68edcb","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"7.15.0","description":"","directories":{},"_nodeVersion":"14.17.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.8_1637428463819_0.13766672708688765","host":"s3://npm-registry-packages"}},"0.0.9":{"name":"use-formio","version":"0.0.9","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.9","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"2cf59b0b5eead3f6bfaab45f695d1dcd93fb101f","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.9.tgz","fileCount":18,"integrity":"sha512-eGWwnf7vxJPJVrbNUxZqMn2RqLBrA9icAMpwfJieKeinz4Vc38IbtNwp29zVhxI65zzI5t1rPQx6g6DPPNSRCQ==","signatures":[{"sig":"MEUCIQDr7QzE6fvye/+WL/0uRU51DLHdOrWmcg8h+c6aSIzNSwIgRjQvpTYx1AVw7gCj3zReyWLZVeIvONV0ZKjEApuT4EM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":292489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmVxCCRA9TVsSAnZWagAAzPAP/iUco+jp5OFDK5UZ1Fsz\ntTQWMTYbDBvAragA24Cw61l3ru/YKlBP0uOmAiz1DJEDM0xK/pQKHkZihgbb\nDxh4EfhTx0KzFgvdWkTBBNhml3JhBLTKXQwkHF4/zakak8K+HW3dSr+Q85dO\nqgCJUKywrJVU2s9RNZMZMmePZZR7CBPnwqzrbNxQHDypQUQdx+bl91AWPhQr\nL+kzjKSz5hFtIkM/v13TPQRmnlTwosm2TvcaCTEI83VUYMpSAgG1chClM57K\nV7ZiN7M25K4OqsMOMiDKjH+PNGfyGtIEdH+nNqOXzCpM0IDx6OU89jC6fKZe\npuqd9fRN/x9MITmAnor07xWAM1s9NKg4IBSw+b68mJAZqQT8mZ8avEJwvTki\ncXHNhYbPjdUABqVryQRI2zNpSFYGmZT+oZuuF2JWC0t0rACCNSEUDovWmBfx\nvfjvczgkQeL94GHlxtLA4ag32+bxgeOkkKh01KcKu1li9P+9e+owY4qPnmlv\nk+6fOd9ipG8xWb+4Har8itFSfNuE35yD3imAJB9wvqC/mUgDxTzzultzBgvJ\n9fJie4q5lXoD2aq80VyUdQVPWXOiJSwE7isRvu8a8O9ByQh18E2lzicoA9Wg\nOaepdliTBvkVYCN/0wnmoPmmM8cjaeOB5vQL8edcHMAEJpWgRti0XKsZBOIJ\nm8+J\r\n=rW2x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"289401f7f8565383e4d4dd10b11af1fe367222f4","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"7.15.0","description":"[Online interactive documentation is availabe on http://use-formio.svehlik.eu](http://use-formio.svehlik.eu)","directories":{},"_nodeVersion":"14.17.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.9_1637440578617_0.9397525804727427","host":"s3://npm-registry-packages"}},"0.0.10":{"name":"use-formio","version":"0.0.10","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.10","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"fcef9e56296b563e4a7fc835ede63e5c87a4df19","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.10.tgz","fileCount":18,"integrity":"sha512-KKoB6gtX+DsaJxsc6vE/tPsWUN1//HrHDi53fgt2gXNyEIDY9sdOjZB7X4IBxBhY5WbaWsPyTjPO45GmRqYoEg==","signatures":[{"sig":"MEYCIQDSVpeEI9lsSdI6Vjj1uMDkvgQW1WjHjxOvR6oUaSvqrgIhAP/3rkY6A0drmkhb/KNjn4JuzPm27pZke+BoG5iyQ1VI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":294499,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm7d5CRA9TVsSAnZWagAA5NQP/R2XWnx3qv/RlnuFo4KG\nsT//fFX6i2qfRuMtGuWFNmL8Bj5G/2ylaI1C+oNaF3GCLCUd0CRgxCroolzR\nHsuq/utmWInbX2gh3X/SPhUdLXtojOrEOVOj7F0dJJnHzuLpjhRf5wsNBNQi\n2tmgJoG/PTmYufzSSPBP1LGoE5qJSfuI9kHsayYaCX0dPui500JIoa2kXIYm\nR041j+moeca6avrRh92PZNIJ9QajytajiC/mTC2k2zyRah1RwNd8Iwpjula5\nar4EIRSZT4OfCcMwI+AJl3twRy6XjFQA1vCdfveRB8z5Zs18dwAWFJbj5+7O\nhpQVnT+K0CvpKZKr/7iyo3+x1bXI6XdCGUHRWxvd1UMv0jteKkgTK0GyiFbT\n7hPTHv55KDanLtCaHB6X+xAAfSPE+JMuAP9hZFrgDJdShAQTFupRc0pfoIUX\nwBiJJdUpvFXBhdr2+NmW/ZXv2LDZ/JWVy/IaKlphIT6Jmb6FNVYMWFHQWFFx\nyOK20dcS+4CPFt1UpZ8EAaJmqRn5fyR2XzkDaNuievUgBA26m3BKqnZk3DGS\n1XYmWh5O+OKeOl4/6aXBGP79jlNNjEuOJH3yaGItH3zZ5zHdkXRQoSylaMcu\nOOnQggwXu50rZTZfu9XO1EHOJroWW/Xq1BMyra0iEWLJXflGvyFxp8MRifD9\nrfmO\r\n=CDpR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"2d0cf8d2e9661cad01b6441bb1d23c4641615b40","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"7.15.0","description":"[Online interactive documentation is availabe on http://use-formio.svehlik.eu](http://use-formio.svehlik.eu)","directories":{},"_nodeVersion":"14.17.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.10_1637595001701_0.506438176864884","host":"s3://npm-registry-packages"}},"0.0.11":{"name":"use-formio","version":"0.0.11","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.11","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"cfdae94f95d1f5c8a3c2765d265ae9ed979413ba","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.11.tgz","fileCount":18,"integrity":"sha512-hEJI2Q/Wua7kVM2ZSY9YChh3Ayw2EyPj71tvP73qBOMx49k/5kI7BYKje4wTj0FbbqG+1c4fppJiK+I0uY9dEQ==","signatures":[{"sig":"MEUCIQDpHNponRtc9BoXXJfGFyyjbCt1PXKGotL6bNtd/e2YGwIgZ29ciEwfvIbSqjpFvH5eJ4gyB7aj6bVcy1alpK+yT28=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":294499,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnKu8CRA9TVsSAnZWagAASM4P/Ak+vxrGOASWIQOpAhgs\ncnIFu9CSYd2nphbNhmnPbriCofpOTfB8VfdRDBBjXRuRhhCB+g2xSH+XXYiK\n2F3w5zsES0YGv+rWXpRlIM5glskBvsBbdOSdo7Ol7mxybLUUA8aLpmBJVJnL\n96i6jAUXa+Iw4qjirXJwUKDfxLpdXzK6JFYc3J7DYrF/SzEaXtpHQew4c/gq\ndxnNCstNxCPMexqaQ19phQBoyDWHD7qOXGnwt2oGXQZ8zEi045UV3GOJSfiA\nVJj4P50Nem3QMeWMrh12hdgCwbzx/HHdE6NI8Uk1Mi2FTAPyufyxDj0bnFpc\ntEpJw2Bzamph/3/V1rWCGpYnmg4CF2kAcN7GrDfAyavp7W3DfOzQIwMCZwi+\nK8sIwwRqcWCpXpkc+xSSFkuTXuMqeI0wylujmKD2dfYcZ6+EB292QdSulF6d\ncb9psDMaA5Ft41la8581ryJXHBo5YX9Kh7SFQXlb7rsGnzk83X78DKKuUt5G\nN/0G+NEllrQxOh4wgAS4BPao5lo2IKw3XwqUs0MdN33GTAGLp2ez7TiFZUa5\no1xL+FpifghHQk2j+Mi9e6WYmNWFk7gf4PynR5lR9snXdGYHTpveRU4u6ZJb\ntlXF3l7RqJ9CmATISi+V6UaisT5JI5Bd1272spxvAoNmcBiJ1R4I3VrP4S75\nlv32\r\n=bBah\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"02c4be232649ad0f9a5547d5ceb942be834433e8","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"7.15.0","description":"[Online interactive documentation is availabe on http://use-formio.svehlik.eu](http://use-formio.svehlik.eu)","directories":{},"_nodeVersion":"14.17.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.11_1637657532442_0.3427492982571756","host":"s3://npm-registry-packages"}},"0.0.12":{"name":"use-formio","version":"0.0.12","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.12","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"62e54a0ba3d12f6d8c18dd2cabb2a55b118cbed2","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.12.tgz","fileCount":18,"integrity":"sha512-ncC6TRaHbNxXSZn8+q8M9mPvfCdMi0iE9M65fDLJelOB2Eok6Bnp8Z3Qso7wwyXdAvtgIPRtAQlDYW/lvDH1LQ==","signatures":[{"sig":"MEUCIQDEByj5axov8ct5EISUWRHbi1vfVl1tborGaQHSbNvyyQIgOPPmoF9LZhG3j1b4JR+Pslulx9FtmfBB1xl0wMTDb/w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":295168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnKwNCRA9TVsSAnZWagAA8rMP/0XJb4MyrnLgeCNd1LzJ\nXOcS2hfVQvlgm/tfz6/O7RVKzPfORJ5tQsh67U+g9OziE8jA9EuH3jXX6F44\nw/pfl4rwqjEFDdREtqq1NbBaWB6DWi+psysc3CLnutPU1KNWt8zkyvf89rtu\nedeSklrv3yXYZKhLteL4msVOl/lDbsllQhSFqz8JafwzkceRpt0z1jgTZ/HW\nvO6NRL0GBDwgLdHb/5MdJfdTwkWXD7UWj09Tnzzu/nXilDkTSFBn7zccf7JF\ncL/+kIGb4Ke7YKZE7d7yxLSd8HQfuvg0Cw1izmwbfRh7giyHF3TmQAJSMsWA\nDtH+ryH2Kc0C7gcND3jhwFyt0+B7L9i1hKaAzzVMTX+HulZGv8ewfXZZ4jq4\n4mCi/iPUnhTcdDsmyWamHM5iTHAfn7ftm5kyJzHX7BKDj5AHTAGH7m9qjcTU\nXaNVQPZPlqhywDglxsnwHzAoazdjVRic8US4W8GY1HdkI2hEi2KGcSz/SaB2\np8rS8kv3gFNKckpscWVRNx72vaeUa2OWLtlbyPObwpXtUA8ALwcrjZNwIdVA\n58jUTE6YzCWmGcPzmctB/KhAKMrRjcPBXwxG7Ek34yLwsEuSF91xTS5Ib6S4\nTcznWOwyNnDN0Chz5AbLTUC4g5U9Q2zCbqT59FXv+wVgUrb86DtJPb7PKyu2\nPI0W\r\n=9YQ9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"23849904964ba0540c6f0fe57f7b930a15db2702","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"7.15.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"14.17.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.12_1637657612858_0.45388815747309375","host":"s3://npm-registry-packages"}},"0.0.13":{"name":"use-formio","version":"0.0.13","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.13","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"4113c59284c69021aef56c3d3838d767e01dde9c","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.13.tgz","fileCount":18,"integrity":"sha512-UMEl/88x2ieRpaCsoQ1fDBmu10pdtKN6iPjYYdmNXkIsUFyxcbqeqOjxBmatfrGY47wxrw07GCyWkT5RaiTW5g==","signatures":[{"sig":"MEUCIQCL/tmRxA+IiIbwll0yyQoTwbhpYNOACimsuXr7Nalh3AIgQAIBFZWB4mTOmJXXjEhSeYU4++3qfl5xAaZ0zJoD0XI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnNahCRA9TVsSAnZWagAAup4P+gNYirfDTHcUVU/PJbPc\n7T988H5C+7Qzelpm3FNHihnpevskRcLt7v1HSWru3HlD9I2IhkMuJU+4jM4h\nfYHxC1HqHfwAabsY3sg58sbm6gnswBiaixfndd0pXnGY4KKaBPA4c+UiQvod\nouU91TSqi5sW58PR4Vwq9MMSFBGffaBgpFTXCIx8VlUzXr3FXVlQETaQwO7/\nerAsPF35SflZU7HJFepxuTeC0T6oSFv0Y+PFQdjLszYzvdy3dYjIudxF2pGu\naxoduXP+bLoJ2kWGwVb1yLboQ3Eyth9tjoW8gzGxYie8gQcemWoTwWzShWGH\nKPKB3H0IZXGBLt1F4Q4A7J2Ykp7UXzFzoe9oZ0RVBsGfjVtLv0IIZ3yEs9U4\nZ0Qid867CO7mzOEywFqxynMlGc9zpC7jyebzkCMZ35cA8lba7qIVmN99DKlr\nMnyifiZ8N7ec7w1jbqFz66H9GUJm9oA3tqhmkNTPwqGL98YsYa9etrNzB6Ys\nH8EIF3zp1fGZOIJbEnu1UYWTWYhCH+W+kPWL0rFoehTbM40coivYdWw0X/kJ\nwfjXGWV9TXXEHMaKQEKPW6UDl+M4SrOmUWBRRsgJWDDcC+ZtGuJSeYUSMtdt\ndO0g9b2+EAQ6tfVHlqiVnE0aknL3kQkgBfLU3/cLhVEepIjcSGn+3PlC5k9U\njcZW\r\n=guP4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"58fe1f4d09169e9e4f2a4cd42b7d1ed2593fae07","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"7.15.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"14.17.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.13_1637668512760_0.6473909324874265","host":"s3://npm-registry-packages"}},"0.0.14":{"name":"use-formio","version":"0.0.14","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.14","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"7b4fcd53435cf3be970ba5d001e3e3c949ab072e","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.14.tgz","fileCount":18,"integrity":"sha512-99cV2wuVLkWCnhF2Ro9xFrRyqe6iXb8hVAkVEGW30dQDojb8WaXSQCpj5X43+Dve1iCfX7ESHl3qmmucS8qGvQ==","signatures":[{"sig":"MEYCIQCMHG+IdHBMZLSNQECFxtI8Kx28RNE2f3fGfHrXQ4avZwIhANdGCIQWKin0pPOdgAurN2aNf8UajENOBtWLsADeAfMf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":307136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoCXxCRA9TVsSAnZWagAAR8gP/jXzjrWNd844c4u30RT7\nLMDvKQiK3h8A+hEFXTkx7UqImWNtyjUlDZb1y8J8D7Vyul14uzME8msIf74f\nmQYQMKFoV91OtFmtR3hZHo3R9XibKNijfqpPCz4l3Ft0faZKxZ8ttpLFIwGE\nNUf3SHyFTXa7jnSR+syLMN9Am2M/yYf7QB+tLsUT50rPACVzPJLsbtpbMDtb\nySDNqrqiqC2k21JUeYadWwmF08whWkHC+Aui0fLmTlg0jeUmrorktHxjVcw7\nkadUe+40xAF5HkpUdZfrsE4lKapGpQ1IFjcBwKaF//iy6tdq1xt++H8Et8ZA\nxgae2NkMcfwYFLe5K5pX8dupiVR8QWK6R030oJvxcYiRJNsQzWgx86v6S5w7\nkvnZUOko4ZxrBsjdfldhtTXeadnIdHotKb+6e+nht+Zx6fKdAHtReP9s5Gup\nGqiLKoKzyEyuvhAF9h0LP8lg4SYwm8yds5hC4gFsJcxsLpVy/wyUEPg5PB/9\nYXiQEPMjC06ODVd2bZ0Sn16HV7LuKd+GPGSxu3fGONubPqIx7rS3+Bh4c2VW\nuVehga7iXf0AtPvBjG+JlhOGgGKJj4uUa+utIMj/CkOJZeYbbLVSPx9BTyes\nVxhc7eGZekDpuAAYBQ2XYhoHe2hUhkN9pv+frNJ5aaSk7uowWGDk/JT8xQOz\nriaE\r\n=TSwr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"612ba5656674bea142648a8e404eea241bfa8107","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"7.10.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"16.0.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.14_1637885425746_0.4969795350201658","host":"s3://npm-registry-packages"}},"0.0.15":{"name":"use-formio","version":"0.0.15","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.15","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"39c0d49e1e5d6facb42889e048989310db38b6c8","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.15.tgz","fileCount":18,"integrity":"sha512-MmX2T4BCc5v9NWkjc4kXoLOvjRD7TscZ5lH9jwch5wt3ooNSpca+xQ8bC0LWYHaSs+LatieHROHNltgUrq3A9g==","signatures":[{"sig":"MEYCIQDBFPCzimvSJ1TtonED2fuKfJ6nDKWgMjr/IZty00ZTDgIhAOmhy3jTk0dAuy2xOVo8uXLGW7HSMmfNfEGRmNdAJLdU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":312190,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoOGgCRA9TVsSAnZWagAAyasP/iLSuHlcY+ZM8Db5jggc\n5c3X4MddjzgREVtnE9Ordzxl/QTY5f5Ey4n3d+onKSm/ezf079kz/nS6TR12\neyuXiXFtmbSMq1FUd4PSis9ZUwlhIR7CaN4GrU7Yca5ludxRv5PCbo/JB0Ay\nBOXwNSNT9OJ1JpbsiOMZZ5aJEXnp/kN7w18jKGDCV2xGG2Pu7Bqh1wqPyGNH\nVmf+sdFQceon4dNiYOdBCb9646MQab6LvOVp7dhDEEnbcsARN/FBdow0DeJD\nuQqno1l6Y0yw9HdBu4PbIaJnvO59o/Zo11H0/xSRt9gx7unFGXGmaIABAjsE\nGBFND5Dn1gyBiZRD9HIOZyU5Om9YQhLWqHj2/To0/NMtaqGEJcwQt6KMBhJG\nUVFkZe+jtutNTQSuehNEPlOeFJ2ampsmT/j+pM4lkeiBqHsMMBwN5spYDfQZ\ntfdQoS3uthIjJ5CLkGIWGYIiamxz9ZPxH0dgh0w55OTgWNQejtxSxtYiSOQX\n6U2iRjglAQ7+qtt63/eQPd6ELRRs7h9izHX2e//5ckEiGuYbqIRIO8JuQkSK\nZ9fq4zVG5wLs9nsbhBy8xbQ6xrbD0quULekAlr0TULZ1h0qmP66661wqmvX6\nFNXuQUVsUzL+RysJT1uYnch9p+m5NMWUXksNcEAlIYSpxjvQFCnDSQEpY8O4\nu8wE\r\n=QN2U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"933ffd4fee014686bb162b9d982b0427f9c633d7","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"7.10.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"16.0.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.15_1637933471803_0.9279488056145755","host":"s3://npm-registry-packages"}},"0.0.16":{"name":"use-formio","version":"0.0.16","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.16","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"bcf8652547bff9f92431fa2d2b708bb5491554d6","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.16.tgz","fileCount":18,"integrity":"sha512-TcdaK6nhM5UwFTEZIko2Jco/pWPb+23WFHG6xgSfTEOV3uY6+/goghv54KX4lqzPf1WUQvQzU83T5s337HNRyQ==","signatures":[{"sig":"MEYCIQCpISF3lHgUci+N/JWIPEAg2O45wUthcS9JzyCwhVuZgwIhAK5YabO0uM79anaWZSnzEXfgJeneyDoyoc2fpeGB7K+a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":314743,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJht1OfCRA9TVsSAnZWagAAZrcP/22Pf5+pkgRDUTm2Bc6y\natzj2NhaKM1xD5uPrzjQ62kE7rH9UF0VO1bvMgEPffCYoU1fiV7p2GwsGW4q\nQ6FmQQhSBtMH9WTVp7H0c0r56doaReyC0Jjr6VlnZxkYrYSdRMYS/xqqDfgW\n+TU2svH2IO8gAl0qrjMNIDQAjIZtleIVyjZbMqihJImsAFbpilRT4B0MVWry\ncUxTX+0tvozZWEwpSxCZdw63fNt7295vEfpu/+UE2JZy/DfjuEdQvNhjWMOD\nJIxk0PyKWpoeHCIrmRMLpeRwR/0no0kfy35wOUx1j96tjp6KJnerGECSoXHL\ndMtbK8Cc15tB2cElImv7WIbSFcpEeirKBIGqhhBdtACV02pVqma/M9YrBE32\n99NE1umHg0DaumMBkm5/2ZA2/k9aP74iAQU32e/ZmTqw8VAt5GrDEwCgWhvn\n2Ccc6S/pXLfmBVdRvqxQLrTFQ5QrAoORFalFTPgaf/sI+Sg26PkA7K545/wB\nIjaUCLJ6zhob7mKrcG53TvPCuwz0Fevu8+rekfC8UZfpuOdnIPM8jk7NhB3J\nbH9fRJYsVHekET1mOjblQ/l4q4axo8YXdZeK8e8BwbA6CACY21Bt9JeR0Ili\nizYsHRHKhhAgpbUJyLBl3fSW0ecM789GJVLbunKMyThJ6imh8vH2mMclhAqu\nRbzu\r\n=AbOB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"376c35b1f42c4e12633296c795c8652f92a647bb","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"7.15.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"14.17.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.16_1639404447512_0.835365296589154","host":"s3://npm-registry-packages"}},"0.0.17":{"name":"use-formio","version":"0.0.17","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.17","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"13ea1f8352453692a4a212bcc680c673aa831860","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.17.tgz","fileCount":18,"integrity":"sha512-WEMuGBS9Bur8fI8ZvkdBr8CUTGrhW0T4ve/V/Ju0RdDJ9P8By2qvsyA2k5DKWOn0/39SI+sKTjozuahmA7yWYw==","signatures":[{"sig":"MEUCIQDAQavP7FzoGqN+BbmHPBEP/gMTQykREjZKx1ldhO8UEgIgY4t2iO3eJUXEBkhbWaAk92iX7iM4//nVgB4ohsRsF9c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":317877},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"4a29c711f46d02f2666cb11f7bbff838c56856d1","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"9.4.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"19.6.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.17_1688109722556_0.8006208357626716","host":"s3://npm-registry-packages"}},"0.0.18":{"name":"use-formio","version":"0.0.18","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.18","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"d7f8b5feb6c634eed24ee3852b0bf690b7e2453b","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.18.tgz","fileCount":18,"integrity":"sha512-A94g+1aQ61JzZi3rPvG2UvcMt3VjLB988rf4cNofWSseDPj2ev/ETZYuAoaIQuptBswv5gjBrwDBfsG2kyUfBQ==","signatures":[{"sig":"MEYCIQDJ0pCXUEzs1J61PlaSPDd7fhfVwrCvU3ENKmEudqcgVgIhAKq/QZ/pdb7DjfT/q5fAi8m5m9PoizaFArr/hBbwHYFb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":321158},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"7e8f8d77ef3443037530e6e4ee722df996c50860","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.18_1716106486222_0.3094521754863133","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"use-formio","version":"0.1.0","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.1.0","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"a8df0ae5d4e5ef9b7fbb4342912863c7133b3e20","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.1.0.tgz","fileCount":18,"integrity":"sha512-6m+LyRYtvl5yUPyrOHqgdXQV5di0xbXP2B9WSCf5RjarCPRIPzR0PvocTz3WCuhWbSJYXkY4RWXTMPUqUatX5w==","signatures":[{"sig":"MEUCIQDo2BIjdB/QD8jbRCsEJxOPvz3/tHJYU5FW2xC0/gLYkAIgHDdMX9kmwlBvbdKLv70fHNmqHbrIvuZNl69uxMLVlzs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":321133},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"gitHead":"a366da9dfbbb4aaa3de912beca557f369d10ce5d","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.1.0_1736427290000_0.9601210916117595","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"use-formio","version":"0.0.19","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.0.19","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"5d86d46342d7a038d8fcd41fcf121485145bc507","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.0.19.tgz","fileCount":18,"integrity":"sha512-HIGrAKnzWZttnx3eX+tk+GQ5vYDnx4nErBjvnJ7DEBC5VZvALsXmRk8mMkAtzdscQ6r6w5xyfohsAidw7amXGw==","signatures":[{"sig":"MEQCIEJDy/O2QhTY+5E2qYIH+xHAneAoMoiqTizwlnzR6q3HAiB5wX68EYTzi2aVcvvoYge1R1WH3KXGtBIecX17JRXkvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321205},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"7b3f24254347119cfcd06ccd78df3a4fbc1cddbd","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","dependencies":{"reactstrap":"^9.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","size-limit":"^5.0.5","typescript":"^4.4.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.0.19_1739090136735_0.913793116967234","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"use-formio","version":"0.1.1","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.1.1","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"4d8a30827d174248ecaa05e837c36272cbdb0e99","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.1.1.tgz","fileCount":18,"integrity":"sha512-f+14W8+HXbL15Wd7emilWQc7zwWEBHYLrM20xGkBsikH5/hON93fWhTmexXmTxuCgkJJQAPzm9EPg5gakQ3KfA==","signatures":[{"sig":"MEYCIQDD0rC3qtl0cVWuGBcQ5706apsuYzLOEmb1KOVDdun6hAIhAKp/Cukhlgc8tK8ENqZgcl7PAIgRQQJYILvIJJoukNv6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177601},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"1931a570fbdcc158ae0e9f4ae81007c89784a6c7","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.1.1_1739091553230_0.4342612326627786","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"use-formio","version":"0.1.2","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@0.1.2","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"9901a628021f55e6fd4ca21346001a915cca7559","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-0.1.2.tgz","fileCount":18,"integrity":"sha512-mvwqX/HrJ5jWKtxuAH6YAns0YC/2mOL+g5sQqrf74LND0OIqgNFDks/SEFIyvisCmLdldab3A/tCKQUkzP7usA==","signatures":[{"sig":"MEQCIErJKaSqgx67bT7KyDOy3JsknYVaW9c343v/Ni596bZNAiAZp8d2EqeLkiLQ339VGYXLlHVmRtPOzzgIpKQTlZFmvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":335679},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"6c1bfeff3985ec20d8f90a10b60c488ca2d18d9a","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_0.1.2_1739570353755_0.32168593953465674","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"use-formio","version":"1.0.0","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@1.0.0","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"2a374f7971c28dd41b9e7ab224d03d7ff457dfe5","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-1.0.0.tgz","fileCount":18,"integrity":"sha512-lo/GYfQaZOGk0E2bVzfVQ3q9tJHZIfMB9tsLs3EL+oT31+vNkb6BPoENxuk4iBmeNhOMubpQXNj6xHaaNEwJkA==","signatures":[{"sig":"MEUCIQD2pqw/d/ocDtlNQR5JFOJCh9OCrnv/yOB9dWIpRGFQEQIgcKGYFiZR57uI6YFcqTgB2lB3EYaLv4PXVKI5Zqynqiw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347767},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"359e6463badc9145a656604610e9269e3f86a681","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_1.0.0_1741777263686_0.6395397712428401","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"use-formio","version":"1.0.1","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@1.0.1","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"d28bebfe6db5622b77913a1544e69dbcae20eb3c","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-1.0.1.tgz","fileCount":18,"integrity":"sha512-F9U2u6QUqj/hmV4fH35Oux7CrZh1mzortjUdmLa5vwVenV81aQIva2SIdjgyH5HVY6NvU8Zmk6ny1rqiSivxxw==","signatures":[{"sig":"MEUCIDubhAvIIJWQf/HycYKEG52H5C91tGZlK8MHJSlT1M1DAiEAlDNHMiSGTt5zfo6mjOQxXz3j7wD4A8zWuPGe0ufPIOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":349582},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"d9a6689ffafa36ad9c42ad42614d912f63f377ae","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_1.0.1_1741780105707_0.8584103355135382","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"use-formio","version":"1.0.2","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@1.0.2","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"337e494a3665d3ba8db2c47b3c7deb5ff1e7134e","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-1.0.2.tgz","fileCount":18,"integrity":"sha512-7zHM0uMrzlS9W3ARIyr2aN9X1uL/CR6+qOdTjhI+zziWAWRrC7RGYys1xdcYNZge269y4j1M8z62KmTQIYc32g==","signatures":[{"sig":"MEUCIDOXumZP8NGvZ6u5YP+fRCJ5AOrRRdoE3NbLVv82TBwnAiEAvr9nZxOSlIaLxWY5rkQqzZjegWULrKK1XFL/FhHYfFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207332},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"c9a81169c6061db7d36e8e3d67bc67050927000c","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.9.2","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_1.0.2_1741786756952_0.3879970130186934","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"use-formio","version":"1.0.3","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@1.0.3","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"9409ccb2572e2a10c229859dbaabb60ddc154be5","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-1.0.3.tgz","fileCount":18,"integrity":"sha512-L1ZcpHpCQKi2S2bgM3fnUN8yCCP0uX1Sgsxi46XPrPlxd4dcRp1vYKCv1dX6N30amQYg0mq7jfZHZRUz232XUg==","signatures":[{"sig":"MEUCIDmgL5Xb8Rc+D3PqgP4zR7NWc5yUS5CXWCm0MUxJ5O/9AiEAvqkBasx353LL7fa898UFVG5bT6+23j0E5u2ZkGuVIoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352689},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"1e216d791c2d195e250a6156046320544a4697e1","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_1.0.3_1744635156097_0.18763558584669204","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"use-formio","version":"1.0.4","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@1.0.4","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"ea29ff98c0b80ba43cd34d01a0cdfb9ffdd8f8fc","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-1.0.4.tgz","fileCount":18,"integrity":"sha512-M09cdFeX5RnNqrQ39kTiDW3+CwZ4GA2JMRJkfF0/oXla+FZjkjKbWldJhXuOJzHYUGdFa8gmZXVsmnz1op2QtA==","signatures":[{"sig":"MEUCIDzWe+9l0nkl4dSzP7ls/iKUiL4RunT2s7VaIfbwv/jiAiEA71mPxdLFjoADMdLjDxN2vZWrZQgDUvD6DqTRiJK9AEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":354990},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"1e216d791c2d195e250a6156046320544a4697e1","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_1.0.4_1744641944803_0.3514143362583322","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"use-formio","version":"1.0.5","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@1.0.5","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"4b1aa5908aff983b1edb469436582c032e3a1587","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-1.0.5.tgz","fileCount":18,"integrity":"sha512-Ft/j599eRz2i6ONo5eWZYW/2uvF19kHZrTgGw/NfobY5N67hvx1gSzTVA+3H7Kn/MIUkG/8OAcYj+V1EyCVhuw==","signatures":[{"sig":"MEUCIELTZsKuoDvvH2TTkkhjyP9NYywIGNc1AvjYNtfGaED2AiEAoWUesAFyfCRYfJ+gz3WjjvwGXVfYcPW9EqnjXmwmBGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":357307},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"0dae94429003f3c85c6df407a5943b90c96b9384","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_1.0.5_1744702315628_0.6144769234109078","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"use-formio","version":"1.0.6","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@1.0.6","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"1524297db15a8bb1d61b7795201bf5ee387e6370","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-1.0.6.tgz","fileCount":18,"integrity":"sha512-QFpE0WBGDFKznViFOzrF+yDnlUVBChZ2JSplFbqh0VgJeTHFlxrwCVJRu6wJlj9wLnXcnk0J5cBKO3HjFNbuQA==","signatures":[{"sig":"MEQCIENUQoAEK2hHvEqZ86UgKLMawa93rIvUpeNvWyiGmE8jAiAHgAioGan/rF/Co00GMS5gtxSJR/Rug95ZfIySomYfkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358762},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"f5526fd55b255d798513c2003b20c881d7fdb47c","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.7.0","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_1.0.6_1744713244312_0.49406451772352145","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"use-formio","version":"1.0.7","author":{"name":"Jakub Švehla"},"license":"MIT","_id":"use-formio@1.0.7","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"homepage":"https://github.com/Svehla/use-formio#readme","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"dist":{"shasum":"bd9cc362ef671566bceee58ce5590e5336fc843f","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-1.0.7.tgz","fileCount":18,"integrity":"sha512-7Mxz6K1eDmoO+PgiBUigSVRXhbOxSSbLH1zrv15qzWj3HAkqY2Fg/0cZegbuuuNL6sXE8POSJX1BbIpMsRyIBg==","signatures":[{"sig":"MEYCIQCiyFZzqhIJcHmCgQqTDp/1TFVuPlOoQ/lgLfNj+0WjWwIhAJbzvxXRYdcP5CJWRmoQ/tqNd+7XUEQIiW83WTJOPJ4V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214779},"main":"dist/index.js","husky":{"hooks":{"pre-commit":"tsdx lint"}},"module":"dist/use-formio.esm.js","engines":{"node":">=10"},"exports":{".":"./dist/index.js"},"gitHead":"1133c0997bf35828dc6f717053be428f483db911","scripts":{"lint":"tsdx lint","size":"size-limit","test":"tsdx test --passWithNoTests","build":"tsdx build","start":"tsdx watch","analyze":"size-limit --why","prepare":"tsdx build","lint:fix":"tsdx lint --fix","test:watch":"tsdx test --passWithNoTests --watchAll","ts:check-types":"tsc"},"typings":"dist/index.d.ts","_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"prettier":{"printWidth":100},"repository":{"url":"git+https://github.com/Svehla/use-formio.git","type":"git"},"size-limit":[{"path":"dist/use-formio.cjs.production.min.js","limit":"10 KB"},{"path":"dist/use-formio.esm.js","limit":"10 KB"}],"// prettier":{"semi":true,"printWidth":100,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.9.2","description":"![Use formio logo](./example/assets/useformio-horizontal.svg)","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","husky":"^7.0.2","react":"^17.0.2","tslib":"^2.3.1","react-dom":"^17.0.2","reactstrap":"^9.0.1","size-limit":"^5.0.5","typescript":"^5.7.3","@types/react":"^17.0.27","@types/react-dom":"^17.0.9","eslint-config-react-app":"^6.0.0","@size-limit/preset-small-lib":"^5.0.5","@testing-library/react-hooks":"^7.0.2","eslint-plugin-sort-imports-es6-autofix":"^0.6.0"},"peerDependencies":{"react":">=16"},"_npmOperationalInternal":{"tmp":"tmp/use-formio_1.0.7_1754479022337_0.34754151807618205","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"use-formio","version":"2.0.0","description":"Tiny, fully type-inferred React form state hook — sync + async validation, zero dependencies, no form components","keywords":["react","hooks","form","forms","validation","typescript","use-formio"],"homepage":"http://use-formio.svehlik.eu","bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"repository":{"type":"git","url":"git+https://github.com/Svehla/use-formio.git"},"license":"MIT","author":{"name":"Jakub Švehla"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"sideEffects":false,"scripts":{"analyze":"size-limit --why","bench":"vitest bench --run --passWithNoTests","bench:gc":"NODE_OPTIONS=--expose-gc vitest run --config bench/vitest.perf.config.mts","bench:json":"vitest bench --run --passWithNoTests --outputJson=bench-results/bench.json","bench:summary":"node scripts/benchSummary.mjs bench-results/bench.json","build":"tsup","dev":"tsup --watch","format":"prettier --write \"{src,test,bench}/**/*.{ts,tsx}\" \"*.{ts,mts,mjs,json,md}\"","format:check":"prettier --check \"{src,test,bench}/**/*.{ts,tsx}\" \"*.{ts,mts,mjs,json,md}\"","lint":"eslint .","lint:fix":"eslint . --fix","prepare":"husky || true","prepublishOnly":"npm run lint && npm run typecheck && npm test && npm run build","size":"size-limit","test":"vitest run","test:coverage":"vitest run --coverage","test:perf":"vitest run --config bench/vitest.perf.config.mts","test:react-matrix":"bash scripts/test-react-matrix.sh","test:types":"vitest run --typecheck.enabled --typecheck.only","test:watch":"vitest","typecheck":"tsc --noEmit -p tsconfig.json","verify:consumer":"bash scripts/verify-consumer.sh"},"devDependencies":{"@eslint/js":"^10.0.1","@size-limit/preset-small-lib":"^13.0.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.3","@testing-library/user-event":"^14.6.7","@types/react":"^19.2.18","@types/react-dom":"^19.2.7","@vitest/coverage-v8":"^4.1.11","eslint":"^10.10.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","eslint-plugin-react-hooks":"^7.1.1","fast-check":"^4.9.0","globals":"^17.12.0","husky":"^9.1.7","jsdom":"^30.0.1","prettier":"^3.9.6","react":"^19.2.8","react-dom":"^19.2.8","size-limit":"^13.0.3","tsup":"^8.5.1","typescript":"^5.9.3","typescript-eslint":"^8.69.0","vitest":"^4.1.11"},"peerDependencies":{"react":">=18.0.0"},"engines":{"node":">=18"},"size-limit":[{"path":"dist/index.js","limit":"3.5 KB"},{"path":"dist/index.mjs","limit":"3.5 KB"}],"type":"commonjs","gitHead":"01020e8db07515707f4c0efe1320d03d3ed0a6f4","_id":"use-formio@2.0.0","_nodeVersion":"26.4.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-hpWji9QF0mIV7wjlY0wcsDQOcPIYt0e0PJ0Y4oPwrEd8H+gImaJ7KikCGy4jGqjIKZ2RbgF2OR3NkiGRuqeLFw==","shasum":"e4a780f4362f0d79ba30fa4f034dff703fe20d81","tarball":"https://registry.npmjs.org/use-formio/-/use-formio-2.0.0.tgz","fileCount":14,"unpackedSize":313831,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC8BbajZGEjLlIRXpWexUHwnzcMk+3ykcygjXJ33V4meQIhAP8BvkT6W/mXptEy2/OmXI2unyklYyzlFkjW+WN+NIu5"}]},"_npmUser":{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"},"directories":{},"maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/use-formio_2.0.0_1788786508537_0.9314896801167685"},"_hasShrinkwrap":false}},"time":{"created":"2021-10-05T01:42:08.734Z","modified":"2026-09-07T13:08:28.816Z","0.0.1":"2021-10-05T01:42:08.899Z","0.0.2":"2021-10-05T03:36:26.685Z","0.0.3":"2021-10-06T08:01:24.101Z","0.0.4":"2021-11-05T10:44:15.328Z","0.0.5":"2021-11-15T08:44:42.253Z","0.0.6":"2021-11-20T09:09:02.204Z","0.0.7":"2021-11-20T11:52:10.926Z","0.0.8":"2021-11-20T17:14:24.055Z","0.0.9":"2021-11-20T20:36:18.767Z","0.0.10":"2021-11-22T15:30:01.876Z","0.0.11":"2021-11-23T08:52:12.578Z","0.0.12":"2021-11-23T08:53:33.021Z","0.0.13":"2021-11-23T11:55:13.118Z","0.0.14":"2021-11-26T00:10:25.900Z","0.0.15":"2021-11-26T13:31:12.005Z","0.0.16":"2021-12-13T14:07:27.693Z","0.0.17":"2023-06-30T07:22:02.736Z","0.0.18":"2024-05-19T08:14:46.422Z","0.1.0":"2025-01-09T12:54:50.193Z","0.0.19":"2025-02-09T08:35:36.965Z","0.1.1":"2025-02-09T08:59:13.456Z","0.1.2":"2025-02-14T21:59:13.970Z","1.0.0":"2025-03-12T11:01:03.863Z","1.0.1":"2025-03-12T11:48:25.890Z","1.0.2":"2025-03-12T13:39:17.134Z","1.0.3":"2025-04-14T12:52:36.279Z","1.0.4":"2025-04-14T14:45:44.972Z","1.0.5":"2025-04-15T07:31:55.812Z","1.0.6":"2025-04-15T10:34:04.504Z","1.0.7":"2025-08-06T11:17:02.521Z","2.0.0":"2026-09-07T13:08:28.668Z"},"bugs":{"url":"https://github.com/Svehla/use-formio/issues"},"author":{"name":"Jakub Švehla"},"license":"MIT","homepage":"http://use-formio.svehlik.eu","repository":{"type":"git","url":"git+https://github.com/Svehla/use-formio.git"},"description":"Tiny, fully type-inferred React form state hook — sync + async validation, zero dependencies, no form components","maintainers":[{"name":"kuba-svehla","email":"svehl.jakub@gmail.com"}],"readme":"<div align=\"center\">\n\n<a href=\"http://use-formio.svehlik.eu\">\n  <img src=\"https://raw.githubusercontent.com/Svehla/use-formio/main/example/assets/useformio-horizontal.svg\" alt=\"use-formio\" width=\"420\" />\n</a>\n\n**Tiny, fully type-inferred React form state. One hook, no components, no dependencies.**\n\n[![npm version](https://img.shields.io/npm/v/use-formio.svg?color=%23c72e2e&label=npm)](https://www.npmjs.com/package/use-formio)\n[![CI](https://img.shields.io/github/actions/workflow/status/Svehla/use-formio/ci.yml?branch=main&label=CI)](https://github.com/Svehla/use-formio/actions/workflows/ci.yml)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/use-formio?label=bundle)](https://bundlephobia.com/package/use-formio)\n[![license](https://img.shields.io/npm/l/use-formio.svg?color=blue)](./LICENSE)\n\n[**Interactive documentation → use-formio.svehlik.eu**](http://use-formio.svehlik.eu)\n\n</div>\n\n---\n\n`use-formio` keeps the state of a form and nothing else. You describe your business model as a\nplain object, and you get back typed fields — `value`, `errors`, `set`, `validate` — that you wire\ninto your own inputs. There is no `<Form>` component, no `<Field>` component, no context, no schema\nDSL and no resolver plugins: validators are ordinary functions that return a string, an array of\nstrings, or `undefined`. Every field name, value type and validator argument type is inferred from\nthe init state, so there are no generics to write by hand. The whole library is under 3 kB\n(minified + brotli), has zero runtime dependencies, and hands out stable function pointers so\n`React.memo` on your inputs actually works — a 1000-field form re-renders exactly one input per\nkeystroke.\n\n```sh\nnpm install use-formio\n```\n\nPeer dependency: `react >= 18`.\n\n## Table of contents\n\n- [Quick start](#quick-start)\n- [Why use-formio](#why-use-formio)\n- [API reference](#api-reference)\n  - [`useFormio(initState, extraConfig?, stateSchema?)`](#useformioinitstate-extraconfig-stateschema)\n  - [`initState`](#initstate)\n  - [`extraConfig`](#extraconfig)\n  - [`stateSchema`](#stateschema)\n  - [The returned form object](#the-returned-form-object)\n  - [The `Field` object](#the-field-object)\n  - [`getUseFormio(initState, extraConfig?, stateSchema?)`](#getuseformioinitstate-extraconfig-stateschema)\n  - [`useCombineFormio(forms)`](#usecombineformioforms)\n  - [Exported types](#exported-types)\n  - [Identity and memoisation guarantees](#identity-and-memoisation-guarantees)\n- [Recipes](#recipes)\n- [Testing your forms](#testing-your-forms)\n- [Performance](#performance)\n- [Compatibility](#compatibility)\n- [Migrating to 2.0](#migrating-to-20)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Quick start\n\n```tsx\nimport { useFormio } from \"use-formio\";\n\nconst maxLen = (max: number) => (value: string) => value.length <= max;\n\nexport const SignUpForm = () => {\n  const form = useFormio(\n    { email: \"\", age: \"\", terms: false }, // 1. init state: the fields and their types\n    {}, // 2. extra config: metadata + lifecycle hooks (`{}` when you need neither)\n    {\n      // 3. state schema: validators and input constraints\n      email: { validator: value => (value.includes(\"@\") ? undefined : \"e-mail is not valid\") },\n      age: {\n        shouldChangeValue: maxLen(3), // reject the keystroke instead of storing junk\n        validator: value => (Number(value) >= 18 ? undefined : \"you have to be 18+\")\n      },\n      terms: { validator: value => (value ? undefined : \"you have to accept the terms\") }\n    }\n  );\n  const f = form.fields;\n\n  return (\n    <form\n      onSubmit={async event => {\n        event.preventDefault();\n        const [isValid, errors] = await form.validate();\n        if (isValid) await fetch(\"/api/sign-up\", { method: \"POST\" });\n        else console.error(errors);\n      }}\n    >\n      <input\n        value={f.email.value}\n        onChange={e => f.email.set(e.target.value)}\n        onBlur={() => f.email.validate()}\n      />\n      <div className=\"input-error\">{f.email.errors.join(\", \")}</div>\n\n      <input value={f.age.value} onChange={e => f.age.set(e.target.value)} />\n      <div className=\"input-error\">{f.age.errors.join(\", \")}</div>\n\n      <label>\n        <input\n          type=\"checkbox\"\n          checked={f.terms.value}\n          onChange={e => f.terms.set(e.target.checked)}\n        />\n        I accept the terms\n      </label>\n      <div className=\"input-error\">{f.terms.errors.join(\", \")}</div>\n\n      <button type=\"submit\" disabled={form.isValidating}>\n        Sign up\n      </button>\n    </form>\n  );\n};\n```\n\nEvery key used in `extraConfig` and in `stateSchema` must exist in the init state: the init state\nis the single source of truth for which fields a form has.\n\n## Why use-formio\n\n- **No abstraction layer over your UI.** A field is a plain object of values and callbacks. Spread\n  it into your own component (`<MyInput {...f.email} />`) or read the pieces you need. The library\n  renders nothing, ever.\n- **Types are inferred, not declared.** `useFormio({ age: 0 })` gives you `f.age.value: number` and\n  a validator typed `(value: number, values: { age: number }) => ...`.\n- **Validation is just functions.** Call zod, yup, a regex or your backend inside a validator; sync\n  and async validators are both first class, with per-field and per-form `isValidating`.\n- **Predictable under concurrent React.** The state lives in an external store read through\n  `useSyncExternalStore`, so `await form.getFormValues()` never waits for a render, and lifecycle\n  hooks fire exactly once per `set` — including in StrictMode.\n- **Memo-friendly by construction.** Every method has a stable identity for the lifetime of the\n  component, and a field object keeps its pointer while its own state did not change.\n- **Small enough to read.** ~950 lines of source, 0 dependencies, ESM + CJS.\n\nHonest trade-offs:\n\n- **No nested or array fields.** The state is one flat object. Compose several forms with\n  [`useCombineFormio`](#usecombineformioforms), or keep a serialised value in one field.\n- **The field set is fixed at mount.** The keys of the init state are captured on the first render\n  and can never change (see [`initState`](#initstate)).\n- **No `touched` / `dirty` bookkeeping** and no `onSubmit` handling — you own the `<form>` element.\n  See the [validate-on-touch recipe](#validate-only-after-a-field-was-once-invalid).\n- **No UI, no field components, no built-in i18n.** Errors are strings that you produce and render.\n- **`isValid` is not \"would pass validation\"** — it means \"no errors are stored right now\". Use\n  `isValidated` or the result of `validate()` for the real answer.\n\n# API reference\n\n## `useFormio(initState, extraConfig?, stateSchema?)`\n\n| #   | argument      | type                            | required | purpose                                          |\n| --- | ------------- | ------------------------------- | -------- | ------------------------------------------------ |\n| 1   | `initState`   | `T extends Record<string, any>` | yes      | the fields, their initial values and their types |\n| 2   | `extraConfig` | `FormioConfig<T, M>`            | no       | `metadata` and lifecycle `hooks` / `globalHooks` |\n| 3   | `stateSchema` | `FormioSchema<T, M>`            | no       | per-field `validator` and `shouldChangeValue`    |\n\nThe second argument exists so metadata types can be inferred before the schema is checked against\nthem; pass `{}` when you only need validators.\n\n### `initState`\n\nA flat object of field name → initial value. It defines the form's fields and their types.\n\n- **It is read on the first render only** (captured with `useState`). Passing a different object\n  later has no effect. To load server data, either `set()` the fields or remount the component with\n  a `key`.\n- **The key set is frozen at mount.** The library iterates those keys on every render and in every\n  form-level method. Adding a key later (through `__dangerous.setFormState`) is not supported.\n- `Object.keys(form.fields)` returns the keys in **declaration order**, which is what you want when\n  you render a form by mapping over its fields.\n\n### `extraConfig`\n\n```ts\nimport type { FormioConfig } from \"use-formio\";\n\ntype Values = { name: string };\n\nconst extraConfig: FormioConfig<\n  Values,\n  { name: (value: string, state: Values) => { label: string } }\n> = {\n  metadata: {\n    name: (value, state) => ({ label: \"Name\" })\n  },\n  hooks: {\n    name: { afterSet: (value, state, extra) => console.log(value, state, extra.metadata) }\n  },\n  globalHooks: {\n    afterSet: (key, value, state) => console.log(key, value, state)\n  }\n};\n```\n\n| key                    | signature                                                    | notes                                                                                                                               |\n| ---------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |\n| `metadata[key]`        | `(value: T[K], state: T) => any`                             | derives arbitrary per-field data; exposed as `field.metadata` and passed as the 3rd argument to `validator` and `shouldChangeValue` |\n| `hooks[key].afterSet`  | `(value: T[K], state: T, extra: { metadata }) => void`       | runs after an accepted `set()` of that field                                                                                        |\n| `globalHooks.afterSet` | `<K extends keyof T>(key: K, value: T[K], state: T) => void` | runs after an accepted `set()` of any field                                                                                         |\n\n**Metadata** is the mechanism for building generic, self-describing inputs: labels, min/max\nlengths, `options`, `isActive` flags. It is computed during render for `field.metadata`, and again\nwith the _new_ state inside `set()` and inside validation. A metadata function should be pure — the\nlibrary skips calling it when neither the function nor the `values` object changed, and reuses the\nprevious result when the new one is shallow-equal, which is what keeps field pointers stable.\n\"Shallow-equal\" means own keys of plain objects / arrays compared with `Object.is`; a `Date`, `Map`,\n`Set` or class instance counts as changed unless it is the very same object.\n\n**`afterSet` hooks** fire **synchronously inside `set()`**, after the state was written and before\nReact re-renders, in this order: the field hook first, then the global hook. Precisely:\n\n- exactly **once** per accepted `set()`, also in StrictMode and under `startTransition`;\n- also when the new value is identical to the current one — the call was accepted, even though the\n  state is not replaced and nothing re-renders in that case;\n- **never** when `shouldChangeValue` rejected the value;\n- **never** after the component unmounted;\n- `await form.getFormValues()` (or `field.getValue()`) inside a hook already sees the new value;\n- they do not fire for `setErrors`, `clearErrors`, `revertToInitState` or `__dangerous.setFormState`.\n\n### `stateSchema`\n\n```ts\nimport type { FormioSchema } from \"use-formio\";\n\nconst stateSchema: FormioSchema<{ age: string }> = {\n  age: {\n    shouldChangeValue: newValue => newValue.length <= 3,\n    validator: value => [\n      value === \"\" ? \"input cannot be empty\" : undefined,\n      Number(value) < 18 ? \"age has to be >= 18\" : undefined\n    ]\n  }\n};\n```\n\n**`validator: (value, values, metadata) => UserFormError | Promise<UserFormError>`**\n\n- Return `undefined` (or an array of only `null` / `undefined`) for \"valid\".\n- Return a `string` for one error, or an array of them — `null` / `undefined` items are filtered\n  out, which is what makes the `cond ? \"message\" : undefined` array style convenient.\n- Return a `Promise` for async validation. Sync and async are told apart with\n  `result instanceof Promise`, so a **sync validator never flips `isValidating`** and never causes\n  the extra `true → false` re-render pair.\n- The 2nd argument is the whole form state — that is how cross-field validation works.\n- A validator that **throws or rejects** propagates: `field.validate()` rejects with that reason,\n  and `isValidating` is still reset. `form.validate()` finishes and commits every other field\n  first, then rethrows the first rejection reason.\n- Fields **without** a validator are left untouched by `validate()`: their current errors (for\n  example ones you wrote with `setErrors`) are kept, and they are still marked as validated.\n\n**`shouldChangeValue: (newValue, nextValues, metadata) => boolean`**\n\nA guard run inside `set()`. The value is stored unless the guard returns **exactly `false`**\n(`undefined` counts as \"allow\"). Use it for input constraints: max length, digits only, allowed\noptions. Its 2nd argument, `nextValues`, is the form state **with the new value already applied**,\nand `metadata` is computed from that state. A `set()` of another field performed inside the guard\nis kept (the write is merged, never overwritten).\n\n### The returned form object\n\n| member              | type                                                     | notes                                                  |\n| ------------------- | -------------------------------------------------------- | ------------------------------------------------------ |\n| `fields`            | `{ [K in keyof T]: Field<T[K], Metadata> }`              | see [`Field`](#the-field-object)                       |\n| `validate`          | `() => Promise<[boolean, { [K in keyof T]: string[] }]>` | validates **every** field                              |\n| `clearErrors`       | `() => Promise<FormioFormState<T>>`                      | drops all errors, keeps the values                     |\n| `revertToInitState` | `() => Promise<FormioFormState<T>>`                      | values **and** errors back to the init state           |\n| `getFormValues`     | `() => Promise<T>`                                       | always resolves with the latest values                 |\n| `getFieldsState`    | `() => Promise<T>`                                       | **deprecated** alias of `getFormValues` (same pointer) |\n| `isValid`           | `boolean`                                                | no field has errors _right now_                        |\n| `isValidating`      | `boolean`                                                | some field has an async validation in flight           |\n| `isValidated`       | `boolean`                                                | every field has been validated since its last change   |\n| `__dangerous`       | `{ formState, setFormState, subscribe, getSnapshot }`    | internal escape hatch, not semver-protected            |\n\n**`validate()`** starts every field's validator synchronously against one snapshot of the state (so\ncross-field validators all see the same values), marks the async ones as validating, waits for all\nof them, and commits every result in a **single** state update. It returns\n`[isFormValid, errorsByField]`; fields whose validator rejected get `[]` in that record and the\nfirst rejection reason is rethrown after the commit.\n\n**`clearErrors()` / `revertToInitState()`** also reset `isValidated` for every field and discard\nthe results of validations that are still in flight (`isValidating` clears when they settle).\n\n**`isValid` is not \"the form would pass validation\".** It is \"no errors are stored\", so a brand-new\nempty form with required fields reports `isValid === true`. Combine it with `isValidated`, or use\n`const [isValid] = await form.validate()` for the real answer.\n\n**`getFormValues()`** reads the external store directly. It resolves even when no render happens:\ninside `act()`, inside an `afterSet` hook, inside a transition, and after unmount.\n\n**`__dangerous`** exposes the raw `{ values, errors, isValidating, isValidated }` state object and\nits setter (the interactive docs use it to render live state). It is internal and may change in any\nrelease. Changing the _key set_ of that state is not supported.\n\n## The `Field` object\n\n| member         | type                                                                     | notes                                                                             |\n| -------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------- |\n| `value`        | `T[K]`                                                                   | the current value                                                                 |\n| `errors`       | `string[]`                                                               | current errors; an empty array **keeps its pointer** across updates               |\n| `isValidating` | `boolean`                                                                | an async validation of this field is in flight                                    |\n| `isValidated`  | `boolean`                                                                | a validation completed since the last `set` / `clearErrors` / `revertToInitState` |\n| `set`          | `(value: T[K] \\| ((prev: T[K]) => T[K])) => void`                        | see below                                                                         |\n| `validate`     | `() => Promise<[boolean, string[]]>`                                     | validates this field only                                                         |\n| `setErrors`    | `(errors: UserFormError \\| ((prev: string[]) => UserFormError)) => void` | writes errors by hand                                                             |\n| `getValue`     | `() => Promise<T[K]>`                                                    | latest value, render-independent                                                  |\n| `metadata`     | `Metadata`                                                               | result of `extraConfig.metadata[key]` for the current render                      |\n| `getMetadata`  | `() => Promise<Metadata>`                                                | recomputed from the latest state                                                  |\n\n**`set(value)`** accepts a value or an updater, so several calls in one handler compose\n(`f.amount.set(0); f.amount.set(p => p + 1)`). An accepted `set`:\n\n1. runs `shouldChangeValue` and returns early if it returned `false`;\n2. writes the new value, **clears this field's errors** and resets its `isValidated`;\n3. invalidates any in-flight validation of that field (a late result is discarded, never written);\n4. fires the `afterSet` hooks synchronously.\n\nWhen the value is `Object.is`-equal to the current one and the field has neither errors nor an\n`isValidated` flag to reset, step 2 is skipped entirely — the state object is kept and nothing\nre-renders — while steps 3 and 4 still happen.\n\n**`validate()`** validates this field against the freshest state, so\n`f.a.set(\"x\"); await f.a.validate();` validates `\"x\"`. If a newer `set()` or validation of the same\nfield started in the meantime, the older result is returned to its caller but **not** written into\nthe state: latest write wins, always.\n\n**`setErrors(errors)`** normalises its input exactly like a validator result: a string becomes\n`[string]`, an array is filtered of `null` / `undefined`, and `null` / `undefined` clears the\nerrors. It does not run validators and does not change `isValidated`. Like `set()`, it supersedes\nan in-flight validation of the field: a result that resolves later is returned to its caller but\nnot written (`isValidating` is still reset), so server-side errors written during a debounced\nvalidation survive.\n\n`Field` is exported so you can type reusable inputs:\n\n```tsx\nimport * as React from \"react\";\nimport type { Field } from \"use-formio\";\nimport { useFormio } from \"use-formio\";\n\nconst TextInput = React.memo((props: Field<string> & { label: string }) => (\n  <div>\n    <label>{props.label}</label>\n    <input\n      value={props.value}\n      onChange={e => props.set(e.target.value)}\n      onBlur={() => props.validate()}\n      disabled={props.isValidating}\n    />\n    <div className=\"input-error\">{props.errors.join(\", \")}</div>\n  </div>\n));\n\nexport const Form = () => {\n  const form = useFormio({ firstName: \"\" });\n  return <TextInput label=\"First name\" {...form.fields.firstName} />;\n};\n```\n\n## `getUseFormio(initState, extraConfig?, stateSchema?)`\n\n`getUseFormio` takes the same three arguments as `useFormio` but **returns a hook** instead of\ncalling one. Define it once at module scope: the config objects and the validator pointers are then\ncreated once for the whole app instead of on every render.\n\n```tsx\nimport { getUseFormio } from \"use-formio\";\n\nconst isRequired = (value: string) => (value.trim() === \"\" ? \"field is required\" : undefined);\n\nconst useUserForm = getUseFormio(\n  { firstName: \"\", lastName: \"\" },\n  {},\n  { firstName: { validator: isRequired }, lastName: { validator: isRequired } }\n);\n\nexport const NewUser = () => {\n  const form = useUserForm();\n  return <input value={form.fields.firstName.value} readOnly />;\n};\n```\n\nThe returned hook accepts three optional overrides, merged into the predefined configuration:\n\n```text\nuseUserForm(overrideInitState?, overrideExtraConfig?, overrideStateSchema?)\n```\n\n| override                          | merge depth                    | details                                                                                                                    |\n| --------------------------------- | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |\n| `overrideInitState`               | per key                        | entries whose value is `undefined` are **ignored**, so `useUserForm({ lastName: props.maybeUndefined })` keeps the default |\n| `overrideExtraConfig.metadata`    | per key                        | `{ ...base.metadata, ...override.metadata }`                                                                               |\n| `overrideExtraConfig.hooks`       | per field **and** per hook     | `{ ...base.hooks[key], ...override.hooks[key] }`                                                                           |\n| `overrideExtraConfig.globalHooks` | per key                        | `{ ...base.globalHooks, ...override.globalHooks }`                                                                         |\n| `overrideStateSchema`             | per field **and** per property | overriding a `validator` keeps the field's predefined `shouldChangeValue`                                                  |\n\nIn every row an override entry whose value is `undefined` is **ignored** (the predefined one is\nkept) — `{ a: { validator: undefined } }` does not remove the base validator. `globalHooks` are\nmerged per hook _name_: an override `afterSet` **replaces** the predefined one, the two are not\nchained (call the base hook from the override if you need both).\n\n```tsx\nimport { getUseFormio } from \"use-formio\";\n\nconst useForm = getUseFormio(\n  { str1: \"str1\", str2: \"\" },\n  {},\n  { str2: { shouldChangeValue: value => value.length <= 10 } }\n);\n\nexport const Instance = () => {\n  // str2 keeps its shouldChangeValue and gains a validator\n  const form = useForm(\n    { str2: \"default value\" },\n    {},\n    { str2: { validator: (value, state) => (value === state.str1 ? \"must differ\" : undefined) } }\n  );\n  return <input value={form.fields.str2.value} readOnly />;\n};\n```\n\nTwo caveats:\n\n1. Overrides written as inline literals are recreated on every render. That is safe (the methods\n   stay stable and the latest config is always read), but it gives back the allocation that\n   `getUseFormio` exists to avoid — hoist them when you can.\n2. The merged init state must still produce the same key set on every render.\n\n## `useCombineFormio(forms)`\n\nRuns several independent forms as one unit — wizards, repeated sub-forms, a dynamic list of rows.\nIt accepts `useFormio` results, other `useCombineFormio` results, or a mix.\n\n| member              | type                                                   | notes                                    |\n| ------------------- | ------------------------------------------------------ | ---------------------------------------- |\n| `forms`             | the object you passed in                               | `combined.forms.a.fields.firstName`      |\n| `validate`          | `() => Promise<[boolean, { [K]: [boolean, errors] }]>` | per-form entries are the **whole tuple** |\n| `clearErrors`       | `() => Promise<{ [K]: ... }>`                          | clears every form                        |\n| `revertToInitState` | `() => Promise<{ [K]: ... }>`                          | resets every form                        |\n| `getFormValues`     | `() => Promise<{ [K]: values }>`                       | nested by form key                       |\n| `isValid`           | `boolean`                                              | `every(form.isValid)`                    |\n| `isValidating`      | `boolean`                                              | `some(form.isValidating)`                |\n| `isValidated`       | `boolean`                                              | `every(form.isValidated)`                |\n\nAll four methods have a stable identity and always operate on the forms of the latest render.\n`validate()` runs every form in parallel; if one rejects, the others still finish and write their\nstate before the first rejection reason is rethrown. An empty `useCombineFormio({})` is vacuously\nvalid (`[true, {}]`) — worth remembering when the forms are registered dynamically.\n\n**The flags are live.** `useCombineFormio` subscribes to every form's store (through\n`useSyncExternalStore`), so `isValid` / `isValidating` / `isValidated` follow the forms even when a\nform lives in a child component that re-rendered on its own; the combining component re-renders\nonly when one of the three flags actually flips. Plain objects that merely match the shape (the\nthree flags plus the four methods) are accepted too — without a store to subscribe to, their flags\nare read at render time.\n\n## Exported types\n\n| type                                      | use it for                                                          |\n| ----------------------------------------- | ------------------------------------------------------------------- |\n| `Field<Value, Metadata>`                  | props of a reusable input component                                 |\n| `FormioForm<T, M>`                        | the return type of `useFormio` (e.g. to pass a form down as a prop) |\n| `FormioFormState<T>`                      | the raw `{ values, errors, isValidating, isValidated }` state       |\n| `FormioConfig<T, M>`                      | the 2nd argument (`metadata`, `hooks`, `globalHooks`)               |\n| `FormioSchema<T, M>`                      | the 3rd argument (`validator`, `shouldChangeValue`)                 |\n| `FormioMetadataFns<T>`                    | the `metadata` map itself                                           |\n| `FormioMetadata<T, M, K>`                 | the metadata type of one field                                      |\n| `FieldValidator<Value, Values, Metadata>` | a standalone, reusable validator                                    |\n| `UserFieldValue`                          | what a field value may be (intentionally `any`)                     |\n| `UserFormError`                           | what a validator or `setErrors` may return                          |\n| `CombinedFormio<T>`                       | the return type of `useCombineFormio`                               |\n\n```tsx\nimport type { FieldValidator, FormioForm } from \"use-formio\";\n\ntype Values = { email: string; age: number };\n\nconst isEmail: FieldValidator<string, Values, undefined> = value =>\n  value.includes(\"@\") ? undefined : \"e-mail is not valid\";\n\nconst Summary = (props: { form: FormioForm<Values> }) => (\n  <div>{props.form.isValid ? \"ok\" : \"fix the errors\"}</div>\n);\n```\n\n## Identity and memoisation guarantees\n\nThese are asserted by the test suite (`test/regressions.test.tsx`, `bench/renderCount.test.tsx`)\nand will not silently regress:\n\n| member                                                                                     | guarantee                                                                                                                                                                                 |\n| ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `field.set` / `validate` / `setErrors` / `getValue` / `getMetadata`                        | one identity for the whole lifetime of the component, **even with an inline schema / config**                                                                                             |\n| `form.validate` / `clearErrors` / `revertToInitState` / `getFormValues` / `getFieldsState` | same                                                                                                                                                                                      |\n| `combined.validate` / `clearErrors` / `revertToInitState` / `getFormValues`                | same                                                                                                                                                                                      |\n| `field.errors`                                                                             | an empty array keeps its pointer across `set`, `validate`, `clearErrors` and `revertToInitState`                                                                                          |\n| `field.metadata`                                                                           | the previous object is kept when the new one is shallow-equal (plain objects / arrays; anything else by identity); the function is not called at all when neither it nor `values` changed |\n| a `field` object                                                                           | the same pointer while its `value`, `errors`, `isValidating`, `isValidated` and `metadata` are unchanged                                                                                  |\n| `form.fields`                                                                              | the same pointer while no field object changed                                                                                                                                            |\n| the form object                                                                            | the same pointer while `fields`, the state and the three flags are unchanged                                                                                                              |\n\nBecause the methods are stable, the _latest_ config is read at call time — a validator added in a\nlater render is used by the next `validate()`, and a hook closing over fresh props sees them.\n\n# Recipes\n\nEvery recipe below is a trimmed version of a runnable example in\n[`example/examples`](./example/examples); see them live at\n[use-formio.svehlik.eu](http://use-formio.svehlik.eu).\n\n### Async validation\n\n```tsx\nimport { useFormio } from \"use-formio\";\n\nexport const AsyncValidation = () => {\n  const form = useFormio(\n    { nickname: \"\" },\n    {},\n    {\n      nickname: {\n        validator: async value => {\n          const res = await fetch(`/api/is-free?nickname=${value}`);\n          return ((await res.json()) as { taken: boolean }).taken ? \"already taken\" : undefined;\n        }\n      }\n    }\n  );\n  const f = form.fields;\n\n  return (\n    <div>\n      <input\n        value={f.nickname.value}\n        onChange={e => f.nickname.set(e.target.value)}\n        onBlur={() => f.nickname.validate()}\n        disabled={f.nickname.isValidating}\n      />\n      <button type=\"submit\" disabled={form.isValidating}>\n        Submit\n      </button>\n    </div>\n  );\n};\n```\n\nWhile the request is in flight `f.nickname.isValidating` is `true`. If the user types again, the\n`set()` invalidates the running validation: its result is thrown away instead of overwriting the\nfresh value's errors, and `isValidating` is still reset when it settles.\n\n### Cross-field validation\n\nThe validator's 2nd argument is the whole form state.\n\n```tsx\nimport { useFormio } from \"use-formio\";\n\nexport const CrossValidation = () => {\n  const form = useFormio(\n    { parentID: \"\", age: \"15\" },\n    {},\n    {\n      parentID: {\n        validator: (value, state) => {\n          if (Number(state.age) >= 18) return undefined;\n          return value.trim() === \"\" ? \"parent ID is required under 18\" : undefined;\n        }\n      }\n    }\n  );\n  return <input value={form.fields.parentID.value} readOnly />;\n};\n```\n\n`form.validate()` starts all validators against one snapshot, so cross-field rules never see a\nhalf-updated state.\n\n### Input constraints\n\n```tsx\nimport { useFormio } from \"use-formio\";\n\nconst maxLen = (max: number) => (value: string) => value.length <= max;\nconst isInteger = (value: string) => /^\\d*$/.test(value);\n\nexport const Constrained = () => {\n  const form = useFormio(\n    { ID: \"\", age: \"\" },\n    {},\n    { ID: { shouldChangeValue: maxLen(10) }, age: { shouldChangeValue: isInteger } }\n  );\n  return (\n    <input value={form.fields.age.value} onChange={e => form.fields.age.set(e.target.value)} />\n  );\n};\n```\n\n### Validate only after a field was once invalid\n\nA three-line hook replaces a whole `touched` subsystem.\n\n```tsx\nimport * as React from \"react\";\nimport { useFormio, type Field } from \"use-formio\";\n\nconst useWasFieldInvalid = (field: { errors: string[] }) => {\n  const [wasInvalid, setWasInvalid] = React.useState(false);\n  React.useEffect(() => {\n    if (field.errors.length > 0) setWasInvalid(true);\n  }, [field.errors]);\n  return wasInvalid;\n};\n\nconst TextInput = React.memo((props: Field<string>) => {\n  const wasInvalid = useWasFieldInvalid(props);\n  return (\n    <input\n      value={props.value}\n      onChange={e => {\n        props.set(e.target.value);\n        if (wasInvalid) props.validate();\n      }}\n    />\n  );\n});\n\nexport const OnTouchValidation = () => {\n  const form = useFormio(\n    { firstName: \"\" },\n    {},\n    { firstName: { validator: v => (v.length < 10 ? \"min length is 10\" : undefined) } }\n  );\n  return <TextInput {...form.fields.firstName} />;\n};\n```\n\n### Debounced / uncontrolled input\n\n`set` is stable, so it can be debounced safely. The DOM node stays uncontrolled between commits,\nwhich means typing costs zero React renders.\n\n```tsx\nimport * as React from \"react\";\nimport type { Field } from \"use-formio\";\n\nconst debounce = <Args extends any[]>(callback: (...args: Args) => void, delay: number) => {\n  let timeout: ReturnType<typeof setTimeout>;\n  return (...args: Args) => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => callback(...args), delay);\n  };\n};\n\nexport const DebouncedInput = React.memo((props: Field<string>) => {\n  const inputRef = React.useRef<HTMLInputElement>(null);\n  const debouncedSet = React.useMemo(\n    () => debounce((set: Field<string>[\"set\"]) => set(inputRef.current?.value ?? \"\"), 500),\n    []\n  );\n\n  React.useEffect(() => {\n    if (inputRef.current) inputRef.current.value = props.value;\n  }, [props.value]);\n\n  return (\n    <div>\n      <input\n        ref={inputRef}\n        onChange={() => {\n          if (props.errors.length > 0) props.setErrors(null); // clear without a validator run\n          debouncedSet(props.set);\n        }}\n        onBlur={() => props.set(inputRef.current?.value ?? \"\")}\n      />\n      <div className=\"input-error\">{props.errors.join(\", \")}</div>\n    </div>\n  );\n});\n```\n\nFor a fully uncontrolled field, drop the debounce and push the value on `blur` only.\n\n### Metadata-driven fields\n\nMetadata makes an input self-describing, and is handed to the validator as its 3rd argument.\n\n```tsx\nimport { useFormio } from \"use-formio\";\n\nconst minMax = (value: string, m: { minLen: number; maxLen: number }) => [\n  value.length > m.maxLen ? `max length is ${m.maxLen}` : undefined,\n  value.length < m.minLen ? `min length is ${m.minLen}` : undefined\n];\n\nexport const MetadataForm = () => {\n  const form = useFormio(\n    { firstName: \"\", companyName: \"\", type: \"person\" },\n    {\n      metadata: {\n        firstName: () => ({ label: \"First name\", minLen: 3, maxLen: 10 }),\n        companyName: (_value, state) => ({ label: \"Company\", isActive: state.type === \"company\" })\n      }\n    },\n    {\n      firstName: { validator: (value, _state, metadata) => minMax(value, metadata) },\n      companyName: {\n        // metadata drives whether the field is validated at all\n        validator: (value, _state, metadata) =>\n          metadata.isActive && value === \"\" ? \"company name is required\" : undefined\n      }\n    }\n  );\n  const f = form.fields;\n\n  return (\n    <div>\n      <label>{f.firstName.metadata.label}</label>\n      {f.companyName.metadata.isActive && (\n        <input value={f.companyName.value} onChange={e => f.companyName.set(e.target.value)} />\n      )}\n    </div>\n  );\n};\n```\n\n### Lifecycle hooks\n\n```tsx\nimport { useFormio } from \"use-formio\";\n\nexport const Autosave = () => {\n  const form = useFormio(\n    { ID: \"\", age: 0 },\n    {\n      hooks: {\n        ID: { afterSet: (value, state) => console.log(\"ID changed\", value, state) }\n      },\n      globalHooks: {\n        afterSet: async (key, value) => {\n          // hooks run synchronously after the write, so this already sees `value`\n          const values = await form.getFormValues();\n          await fetch(\"/api/autosave\", { method: \"POST\", body: JSON.stringify({ key, values }) });\n        }\n      }\n    }\n  );\n  return <input value={form.fields.ID.value} onChange={e => form.fields.ID.set(e.target.value)} />;\n};\n```\n\nThe hooks fire exactly once per accepted `set()`, never after unmount, and never when\n`shouldChangeValue` rejected the value — so a POST inside them is safe without a guard.\n\n### Reusable forms with `getUseFormio`\n\nDefine the form once, instantiate it per screen, override per instance.\n\n```tsx\nimport { getUseFormio } from \"use-formio\";\n\nconst isRequired = (value: string) => (value.trim() === \"\" ? \"field is required\" : undefined);\n\nconst useUserForm = getUseFormio(\n  { firstName: \"\", lastName: \"\" },\n  {},\n  { firstName: { validator: isRequired }, lastName: { validator: isRequired } }\n);\n\nexport const NewUserScreen = () => <UserForm form={useUserForm()} />;\n\nexport const EditUserScreen = (props: { user: { firstName: string; lastName: string } }) => (\n  // `undefined` entries fall back to the predefined init state\n  <UserForm form={useUserForm(props.user)} />\n);\n\nconst UserForm = (props: { form: ReturnType<typeof useUserForm> }) => (\n  <input\n    value={props.form.fields.firstName.value}\n    onChange={e => props.form.fields.firstName.set(e.target.value)}\n  />\n);\n```\n\nBecause `Object.keys(form.fields)` keeps the declaration order, a generic renderer on top of a\ntyped form is a few lines. Iterating erases the key-to-value relation, so narrow the field back to\nthe type you just tested for:\n\n```tsx\nimport { getUseFormio, type Field } from \"use-formio\";\n\nconst useUserForm = getUseFormio({ firstName: \"\", amount: 0 });\n\nexport const GenericRenderer = () => {\n  const form = useUserForm();\n  return (\n    <div>\n      {Object.entries(form.fields).map(([key, field]) => (\n        <label key={key}>\n          {key}\n          {typeof field.value === \"number\" ? (\n            <input\n              type=\"number\"\n              value={field.value}\n              onChange={e => (field as Field<number>).set(Number(e.target.value))}\n            />\n          ) : (\n            <input\n              value={String(field.value)}\n              onChange={e => (field as Field<string>).set(e.target.value)}\n            />\n          )}\n        </label>\n      ))}\n    </div>\n  );\n};\n```\n\n### Combining forms\n\n```tsx\nimport { useCombineFormio, useFormio } from \"use-formio\";\n\nconst isRequired = (value: string) => (value.trim() === \"\" ? \"field is required\" : undefined);\n\nexport const Wizard = () => {\n  const combined = useCombineFormio({\n    step1: useFormio({ firstName: \"\" }, {}, { firstName: { validator: isRequired } }),\n    step2: useFormio({ age: \"\" }, {}, { age: { validator: isRequired } })\n  });\n\n  return (\n    <form\n      onSubmit={async e => {\n        e.preventDefault();\n        const [isValid, results] = await combined.validate();\n        // results.step1 === [false, { firstName: [\"field is required\"] }]\n        if (isValid) console.log(await combined.getFormValues());\n        else console.error(results);\n      }}\n    >\n      <input\n        value={combined.forms.step1.fields.firstName.value}\n        onChange={e => combined.forms.step1.fields.firstName.set(e.target.value)}\n      />\n      <button type=\"submit\" disabled={combined.isValidating}>\n        Submit\n      </button>\n    </form>\n  );\n};\n```\n\n### Dynamic list of forms\n\nA hook cannot be called in a loop, so each row owns its own `useFormio` and registers it with the\nparent. Register from an effect keyed on the form object: that pointer only changes when the form\nactually changed, so the parent re-renders exactly when its aggregated flags would be stale.\n\n```tsx\nimport * as React from \"react\";\nimport { getUseFormio, useCombineFormio } from \"use-formio\";\n\nconst isRequired = (value: string) => (value.trim() === \"\" ? \"field is required\" : undefined);\nconst useRowForm = getUseFormio({ firstName: \"\" }, {}, { firstName: { validator: isRequired } });\n\ntype RowForm = ReturnType<typeof useRowForm>;\ntype Register = (id: string, form: RowForm | null) => void;\n\nexport const DynamicForms = () => {\n  const [rowIds, setRowIds] = React.useState([\"1\", \"2\"]);\n  const [forms, setForms] = React.useState<Record<string, RowForm>>({});\n  const combined = useCombineFormio(forms);\n\n  const register = React.useCallback<Register>((id, form) => {\n    setForms(prev => {\n      const next = { ...prev };\n      if (form === null) delete next[id];\n      else next[id] = form;\n      return next;\n    });\n  }, []);\n\n  return (\n    <form\n      onSubmit={async e => {\n        e.preventDefault();\n        // note: an empty combine is vacuously valid, so guard on the row count too\n        const [isValid] = await combined.validate();\n        console.log(isValid && rowIds.length > 0);\n      }}\n    >\n      {rowIds.map(id => (\n        <Row key={id} id={id} register={register} />\n      ))}\n      <button type=\"button\" onClick={() => setRowIds(p => [...p, String(p.length + 1)])}>\n        add row\n      </button>\n      <button type=\"submit\">Submit</button>\n    </form>\n  );\n};\n\nconst Row = (props: { id: string; register: Register }) => {\n  const form = useRowForm();\n  const { id, register } = props;\n\n  React.useEffect(() => register(id, form), [id, register, form]);\n  React.useEffect(() => () => register(id, null), [id, register]);\n\n  return (\n    <input\n      value={form.fields.firstName.value}\n      onChange={e => form.fields.firstName.set(e.target.value)}\n    />\n  );\n};\n```\n\n### Reset\n\n```tsx\nimport { useFormio } from \"use-formio\";\n\nexport const ResetButtons = () => {\n  const form = useFormio({ firstName: \"Jakub\" });\n\n  return (\n    <div>\n      {/* values and errors back to the init state captured on the first render */}\n      <button type=\"button\" onClick={() => form.revertToInitState()}>\n        Reset\n      </button>\n      {/* keep the values, drop every error and every isValidated flag */}\n      <button type=\"button\" onClick={() => form.clearErrors()}>\n        Clear errors\n      </button>\n    </div>\n  );\n};\n```\n\nTo reset to _server_ data rather than to the init state, remount the component with a `key`, or\n`set()` each field.\n\n# Testing your forms\n\n`useFormio` is a plain hook, so `renderHook` from `@testing-library/react` is all you need. Because\nthe state lives outside React, `await form.getFormValues()` and `await form.validate()` resolve\ninside an `act()` scope without deadlocking — which is exactly what makes the pattern below work.\n\n```tsx\nimport { act, renderHook } from \"@testing-library/react\";\nimport { expect, it } from \"vitest\";\nimport { useFormio } from \"use-formio\";\n\nconst isRequired = (value: string) => (value.trim() === \"\" ? \"field is required\" : undefined);\n\nit(\"reports the errors of an empty form\", async () => {\n  const { result } = renderHook(() =>\n    useFormio({ email: \"\" }, {}, { email: { validator: isRequired } })\n  );\n\n  let isValid = true;\n  await act(async () => {\n    result.current.fields.email.set(\"\");\n    [isValid] = await result.current.validate();\n  });\n\n  expect(isValid).toBe(false);\n  expect(result.current.fields.email.errors).toEqual([\"field is required\"]);\n  expect(result.current.isValid).toBe(false);\n  expect(result.current.isValidated).toBe(true);\n});\n```\n\nThree rules that keep such tests stable:\n\n1. **Wrap every state change in `act`.** `set`, `validate`, `clearErrors` and `revertToInitState`\n   all write synchronously and re-render.\n2. **Assert after the `act` scope**, not inside it — `result.current` is only guaranteed to point\n   at the committed render once `act` returned.\n3. **Await async validators inside the same `act`.** Use a deferred promise when you want to assert\n   `isValidating === true` mid-flight.\n\nTesting components instead of hooks needs nothing special: render, `userEvent.type`, and assert on\nyour own error markup.\n\n# Performance\n\nWhat the library guarantees, and what is measured in CI:\n\n- **Stable pointers.** Every method keeps one identity for the component's lifetime, so\n  `React.memo` inputs, `useCallback` dependency arrays and `useEffect` dependencies all behave.\n- **One re-render per keystroke.** `bench/renderCount.test.tsx` renders 10 / 100 / 1000 `React.memo`\n  inputs, changes one field and asserts that **exactly one** child re-rendered — including for\n  fields configured with `metadata`.\n- **An idle re-render is O(1) in allocations.** When a parent re-renders and nothing in the form\n  changed, no field object, no `fields` object and no form object is recreated — and metadata\n  functions are not even called (they are assumed pure, and are skipped while their identity and\n  the `values` object are unchanged, like a `useMemo`).\n- **Sync validators do not toggle `isValidating`**, so they cost one state update, not three.\n- **No wasted state updates.** Writing a state that is `Object.is`-equal to the current one\n  notifies nobody: `clearErrors()` and `revertToInitState()` on an untouched form re-render nothing,\n  and empty `errors` arrays keep their pointer.\n\nMedians measured with the repo's benchmark suite (jsdom, M-series Mac) — relative numbers, not a\npromise about production latency. The `1.x` column is the same benchmark against the previous\nimplementation:\n\n| scenario                                         |     1.x |         2.0 |\n| ------------------------------------------------ | ------: | ----------: |\n| idle parent re-render, 1000-field form           | 1.59 ms | **0.14 ms** |\n| `set()` + re-render, 1000-field form             | 1.47 ms | **0.38 ms** |\n| `validate()`, 1000 sync validators               | 4.29 ms | **0.75 ms** |\n| 1000 sequential `set()` + render, 100-field form |  140 ms | **21.6 ms** |\n\n`npm run bench` prints the full table, `npm run bench:summary` renders it as Markdown, and\n`npm run test:perf` runs the regression gate (upper bounds plus the render-count assertions).\nAll three are documented in [`bench/README.md`](./bench/README.md).\n\n# Compatibility\n\n|              | status                                                       |\n| ------------ | ------------------------------------------------------------ |\n| React        | **>= 18** (uses `useSyncExternalStore`), tested on 18 and 19 |\n| TypeScript   | 5.x, full inference, `strict` clean                          |\n| Bundlers     | ESM + CJS, `sideEffects: false`, types for both entry points |\n| Node         | >= 18                                                        |\n| Dependencies | none                                                         |\n| Bundle size  | ~3.4 kB minified + brotli (`npm run size`, budget 3.5 kB)    |\n\n- **StrictMode** is fully supported: state writes happen outside React's updater functions, so\n  nothing is double-invoked and `afterSet` fires exactly once per `set`.\n- **Concurrent features** are safe: with an external store there is no update rebasing, so a value\n  read back from the store is always one that was really committed. `set()` inside\n  `startTransition` commits the value it computed.\n- **SSR** works out of the box: the server snapshot is the init state, no browser globals are\n  touched during render and no timers are scheduled.\n- **React Server Components**: `useFormio` is a client hook — put `\"use client\"` at the top of the\n  component that calls it.\n- **React 17 and older** are not supported since 2.0. Pin `use-formio@1` if you need them.\n\n# Migrating to 2.0\n\n| change                                                                                           | what to do                                                                                        |\n| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------- |\n| **React >= 18 is required**                                                                      | upgrade React, or stay on `use-formio@1`                                                          |\n| **`afterSet` hooks fire synchronously** inside `set()` instead of on the next macrotask          | remove `setTimeout` / `await tick()` workarounds; hooks now fire exactly once, also in StrictMode |\n| **`getFieldsState` is deprecated**                                                               | rename to `getFormValues` (same function, same pointer)                                           |\n| **`isValidated` was added** to fields, the form and combined forms                               | use it instead of guessing \"was this validated?\" from `errors.length === 0`                       |\n| **`Object.keys(form.fields)` is now declaration order** (it used to be alphabetical)             | rely on it for rendering; reorder your init state if you depended on the old order                |\n| **Superseded async validation results are discarded**                                            | remove your own race guards around `set()` during in-flight validation                            |\n| **`setErrors` accepts `string`, an array, `null`, `undefined` or an updater**                    | `setErrors(null)` now clears; passing a bare string no longer needs wrapping                      |\n| **`form.validate()` rethrows the first validator rejection** after committing every other field  | wrap `validate()` in `try/catch` if any validator can throw                                       |\n| **`__dangerous` is documented as internal**                                                      | do not ship code that depends on its shape                                                        |\n| **`shouldChangeValue`'s 2nd parameter is named `nextValues`** (it always received the new state) | rename the parameter if you annotated it explicitly; nothing changes at runtime                   |\n| **The returned form object is frozen in development**                                            | never mutate what `useFormio` returns — spread it if you need a modified copy                     |\n\nEverything else — the three arguments, the field API, `getUseFormio`, `useCombineFormio` — is\nsource-compatible with 1.x.\n\n# Contributing\n\nBug reports, examples and PRs are welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md) for the dev\nsetup, the scripts, and the one rule that matters: a behaviour change needs a test in `test/`.\n\n# License\n\n[MIT](./LICENSE) © Jakub Švehla\n","readmeFilename":"README.md","keywords":["react","hooks","form","forms","validation","typescript","use-formio"]}