{"_id":"@acmedinotech/dynform-react","_rev":"6-0f8e5cc74c3ab428eee18c439179a9bf","name":"@acmedinotech/dynform-react","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"name":"@acmedinotech/dynform-react","publishConfig":{"access":"public"},"private":false,"version":"0.0.1","description":"managed stateful, nested form data with ease and efficiency","author":{"name":"kaiser shahid","email":"kaisershahid@gmail.com"},"license":"MIT","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","ts-node":"^10.9.1","typescript":"^5.0.4"},"main":"dist/dynform-react.js","alias":{"dynform-react":["./src/*"]},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-export-default-from":"^7.18.10","@babel/plugin-transform-react-jsx":"^7.21.5","@babel/plugin-transform-runtime":"^7.21.4","@babel/preset-env":"^7.21.5","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.5","@testing-library/react":"^14.0.0","@testing-library/user-event":"^14.4.3","@types/jest":"^29.5.1","@types/jsdom":"^21.1.1","@types/node":"^18.16.3","@types/react":"^18.2.0","@types/react-dom":"^18.2.1","@types/webpack":"^5.28.1","babel-jest":"^29.5.0","babel-loader":"^9.1.2","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","jsdom":"^21.1.1","react-test-renderer":"^18.2.0","ts-jest":"^29.1.0","ts-loader":"^9.4.2","webpack":"^5.81.0","webpack-cli":"^5.0.2","webpack-node-externals":"^3.0.0"},"scripts":{"test":"npx jest","release:validate":"yarn test && npx webpack --mode production && echo '✅ release ready to go' && echo git sha: `git rev-parse HEAD` && echo '> tag/publish with: yarn release'","release":"node release.js"},"repository":{"type":"git","url":"git+https://github.com/acmedinotech/dynform-react.git"},"keywords":["react","forms"],"bugs":{"url":"https://github.com/acmedinotech/dynform-react/issues"},"homepage":"https://github.com/acmedinotech/dynform-react#readme","gitHead":"2b6bb88e1a61fc6fdd5cfeaa8027d6a1187b5c2e","_id":"@acmedinotech/dynform-react@0.0.1","_nodeVersion":"20.0.0","_npmVersion":"9.6.4","dist":{"integrity":"sha512-snY5ILtcqhgfywrd8+kxkOnYnbVTlkF0EAGTkUZ55O9D091wV+inS6/RopZb2KHp57SbJiH9QgW8gTz35cDNfQ==","shasum":"f1a40f25c8999c0fb2f084b7805dc233f73f170b","tarball":"https://registry.npmjs.org/@acmedinotech/dynform-react/-/dynform-react-0.0.1.tgz","fileCount":7,"unpackedSize":26567,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIcmVxihd39TDG+Gu6sxKREyvA3RkwFeO72jwJvoYWyAiEA/A7+ekKi2OIXm6X8cdjcPg+DKT1DEt8P2MWrkLlrxHY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTy6gACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqImw/+LcjAzTJSl7d9ZEpSXzOYSQTpnQtSRZJcy0yS8fDkgr0z33jY\r\nDaEDvV+jxHnFFwZLNrPI8k/np3A4p7PNJBkL4IEQzTXwc9eHxUcTVtFK2kaK\r\nwT+uJrpWMS3D2my6+IIs0PE4BYTFAl5INqOQucj0d32ZCXlfJKYh6EEPRYKq\r\niK92SYRg6+WiqoYGevxRXGdnIfp0kKsKwPx2TS7Q8o081vFdTtVkMTj7agv8\r\np49Rzy11QAbB0uq81mRY1Y5CzeT7HmCXkezNB0sAo9zyTES2c8rUODcOrd0K\r\nwIca1q2DLVeGd5ascZ6rPbJuQS2YPnpnu/mjE0dX5ZYqMw183ibdLV41NDhV\r\nyw1UlyiHMdnu8muUDlYyut80aWvVBQ1/dwFrKSS4QjZADVlo1lesL3aQR1EP\r\n9+/MAVog+DCTfoIycbfUFWCT0UzXU2XuHuVZsk+RJAIwdirx+sg6ZATcvXdc\r\nHn9UOHz3P9Y8vxksPrJi8jyYQ0PR7J4pBw5Ia8Kxewy011zl+F0GkHYbD1Nv\r\nYauSD9pk6FHTZD4j+QbydDKeoWxEyyMma1xW8uY1ijjAWxmoxZ6ejMWRTj6J\r\naYTlkRiguPDQJSnTLQd++D1sz3++Y5uGL7Zb/u+IUvTstgY2KcCHQhPAAN7f\r\nnWLIXTJkr4OAhYEWBhj8prPPopK9qD17+u0=\r\n=jxt0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kaisershahid","email":"kaisershahid@gmail.com"},"directories":{},"maintainers":[{"name":"kaisershahid","email":"kaisershahid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynform-react_0.0.1_1682910880538_0.05066375808792545"},"_hasShrinkwrap":false},"0.0.2":{"name":"@acmedinotech/dynform-react","publishConfig":{"access":"public"},"private":false,"version":"0.0.2","description":"managed stateful, nested form data with ease and efficiency","author":{"name":"kaiser shahid","email":"kaisershahid@gmail.com"},"license":"MIT","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","ts-node":"^10.9.1","typescript":"^5.0.4"},"main":"dist/dynform-react.js","types":"dist/index.d.ts","alias":{"dynform-react":["./src/*"]},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-export-default-from":"^7.18.10","@babel/plugin-transform-react-jsx":"^7.21.5","@babel/plugin-transform-runtime":"^7.21.4","@babel/preset-env":"^7.21.5","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.5","@testing-library/react":"^14.0.0","@testing-library/user-event":"^14.4.3","@types/jest":"^29.5.1","@types/jsdom":"^21.1.1","@types/node":"^18.16.3","@types/react":"^18.2.0","@types/react-dom":"^18.2.1","@types/webpack":"^5.28.1","babel-jest":"^29.5.0","babel-loader":"^9.1.2","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","jsdom":"^21.1.1","react-test-renderer":"^18.2.0","ts-jest":"^29.1.0","ts-loader":"^9.4.2","webpack":"^5.81.0","webpack-cli":"^5.0.2","webpack-node-externals":"^3.0.0"},"scripts":{"test":"npx jest","release:validate":"yarn test && npx webpack --mode production && echo '✅ release ready to go' && echo git sha: `git rev-parse HEAD` && echo '> tag/publish with: yarn release'","release":"node release.js"},"repository":{"type":"git","url":"git+https://github.com/acmedinotech/dynform-react.git"},"keywords":["react","forms"],"bugs":{"url":"https://github.com/acmedinotech/dynform-react/issues"},"homepage":"https://github.com/acmedinotech/dynform-react#readme","gitHead":"40cd4af3b719bbbc6626f08ce98d08a252ca396a","_id":"@acmedinotech/dynform-react@0.0.2","_nodeVersion":"20.0.0","_npmVersion":"9.6.4","dist":{"integrity":"sha512-HKCl7dSh2kgzhenE7uR+tXrala/HD8NWsu2sIN00ZvHk88ddoDKa7R1g5REhqTWCgtLDz24OFLNcp7zgwPVV3A==","shasum":"401cfe72654cb6f1e7f701da04372a31d3850f8b","tarball":"https://registry.npmjs.org/@acmedinotech/dynform-react/-/dynform-react-0.0.2.tgz","fileCount":7,"unpackedSize":26597,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYZ9MNVghRs2rMGh302L3DdiATNJV9FndoKa5XKx73eQIgBV5Xesz12YtGugH+19hXRVNuinYNAvL8L+VGN+dpma8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTzUhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp3Ng/8C/jzBtOYsyOmgYKfr3iwQ7ouP5O4hU/slGlE8YjyGcgCGeOT\r\n0nEz+XlWB5nAIP2IIjsv8XHqrrXe6PwNiDY4lTlAlP6VSWNjqT7auolst+ud\r\nDqthaLrQnCFEkny1r9hZTig62uJ8bbGZju8jXMIS1FpV10a3GBLDzTV0PbtA\r\n2VtM2ctfmNIO1dGx1Jt3hJPiLuKhUKOFWbn6k8ZQYXpQn9bwL2WWf4RJ2Tfw\r\nsXNjAvCxuuUyGs6lgi6fsbBYfxoX6S0dF54H91DMYUdjYrD6AFuQ3QwQE3Wi\r\nSLuDjTWEqgTQLvjXhGPP70GzRtYwHeBkQs1UmhIwu668woIEst+T50tg8jou\r\n21WJYUhW4lpd3ZRcPsSaF1sXueL+fg9g79oQxtGfT5K5ZDPUQfoEQtztR6Dz\r\nguiA5b5v2qmeKunMlkQoz8rffM3fT/5MHSOT36ETUSVM/Ha4XuiKuoVP099s\r\nsf3vZz1aiNmXP05zCOEkDX/kPcmcyCucS279zB6IrchN0yjva9F/sIivxgUh\r\nUV1P+UztJ+GibIFNEvF6rJg607+FsYTh9mtsTYgXL4/iU9PNm5xsMshW1App\r\nEAfgO0V4aUCMACExZ8Q1xyyjfL+O6mZHm6y3oIunILqd5ATf5S31Yj7CdyeE\r\nm/6/Az6h06hZJtQiVGcXz4INPrh1PnArbcM=\r\n=mtjF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kaisershahid","email":"kaisershahid@gmail.com"},"directories":{},"maintainers":[{"name":"kaisershahid","email":"kaisershahid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynform-react_0.0.2_1682912545212_0.575892399299778"},"_hasShrinkwrap":false},"0.0.3":{"name":"@acmedinotech/dynform-react","publishConfig":{"access":"public"},"private":false,"version":"0.0.3","description":"managed stateful, nested form data with ease and efficiency","author":{"name":"kaiser shahid","email":"kaisershahid@gmail.com"},"license":"MIT","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","ts-node":"^10.9.1","typescript":"^5.0.4"},"main":"dist/dynform-react.js","types":"dist/index.d.ts","alias":{"dynform-react":["./src/*"]},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-export-default-from":"^7.18.10","@babel/plugin-transform-react-jsx":"^7.21.5","@babel/plugin-transform-runtime":"^7.21.4","@babel/preset-env":"^7.21.5","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.5","@testing-library/react":"^14.0.0","@testing-library/user-event":"^14.4.3","@types/jest":"^29.5.1","@types/jsdom":"^21.1.1","@types/node":"^18.16.3","@types/react":"^18.2.0","@types/react-dom":"^18.2.1","@types/webpack":"^5.28.1","babel-jest":"^29.5.0","babel-loader":"^9.1.2","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","jsdom":"^21.1.1","react-test-renderer":"^18.2.0","ts-jest":"^29.1.0","ts-loader":"^9.4.2","webpack":"^5.81.0","webpack-cli":"^5.0.2","webpack-node-externals":"^3.0.0"},"scripts":{"test":"npx jest","release:validate":"yarn test && npx webpack --mode production && echo '✅ release ready to go' && echo git sha: `git rev-parse HEAD` && echo '> tag/publish with: yarn release'","release":"node release.js"},"repository":{"type":"git","url":"git+https://github.com/acmedinotech/dynform-react.git"},"keywords":["react","forms"],"bugs":{"url":"https://github.com/acmedinotech/dynform-react/issues"},"homepage":"https://github.com/acmedinotech/dynform-react#readme","_id":"@acmedinotech/dynform-react@0.0.3","gitHead":"6a8ab99134b206ba99be835bb1f29a0478ff170d","_nodeVersion":"20.5.0","_npmVersion":"9.8.0","dist":{"integrity":"sha512-1RR5QHrBVFe3hbj6cciXx0GZr9Af+HdzJuMiuea7XfDLpK4waKpd58eNjXbAPtZtcoFOrrJrBevGug0tJn3Xqw==","shasum":"cdb3a8556c587375774d9678d39d5fffc1299a26","tarball":"https://registry.npmjs.org/@acmedinotech/dynform-react/-/dynform-react-0.0.3.tgz","fileCount":3,"unpackedSize":17655,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGiaKsfVOBwPC5U10/wl0GSYeV3wtNCxyLVkd0MERvo3AiEA+e1yemEowiq0GuBMGAEfFZ+S2EprxnhpMNHyY66ShmE="}]},"_npmUser":{"name":"kaisershahid","email":"kaisershahid@gmail.com"},"directories":{},"maintainers":[{"name":"kaisershahid","email":"kaisershahid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynform-react_0.0.3_1692816571120_0.012857277670152545"},"_hasShrinkwrap":false},"0.0.4":{"name":"@acmedinotech/dynform-react","publishConfig":{"access":"public"},"private":false,"version":"0.0.4","description":"managed stateful, nested form data with ease and efficiency","author":{"name":"kaiser shahid","email":"kaisershahid@gmail.com"},"license":"MIT","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","ts-node":"^10.9.1","typescript":"^5.0.4"},"main":"dist/index.js","types":"dist/index.d.ts","alias":{"dynform-react":["./src/*"]},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-export-default-from":"^7.18.10","@babel/plugin-transform-react-jsx":"^7.21.5","@babel/plugin-transform-runtime":"^7.21.4","@babel/preset-env":"^7.21.5","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.5","@testing-library/react":"^14.0.0","@testing-library/user-event":"^14.4.3","@types/jest":"^29.5.1","@types/jsdom":"^21.1.1","@types/node":"^18.16.3","@types/react":"^18.2.0","@types/react-dom":"^18.2.1","@types/webpack":"^5.28.1","babel-jest":"^29.5.0","babel-loader":"^9.1.2","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","jsdom":"^21.1.1","react-test-renderer":"^18.2.0","ts-jest":"^29.1.0","ts-loader":"^9.4.2","webpack":"^5.81.0","webpack-cli":"^5.0.2","webpack-node-externals":"^3.0.0"},"scripts":{"test":"npx jest","release:validate":"yarn test && npx webpack --mode production && echo '✅ release ready to go' && echo git sha: `git rev-parse HEAD` && echo '> tag/publish with: yarn release'","release":"node release.js"},"repository":{"type":"git","url":"git+https://github.com/acmedinotech/dynform-react.git"},"keywords":["react","forms"],"bugs":{"url":"https://github.com/acmedinotech/dynform-react/issues"},"homepage":"https://github.com/acmedinotech/dynform-react#readme","_id":"@acmedinotech/dynform-react@0.0.4","gitHead":"93921449ad7838e8f66a81c6f1ccd2e45842b38e","_nodeVersion":"20.5.0","_npmVersion":"9.8.0","dist":{"integrity":"sha512-QCsez68Y4q8IRupD0m5H4EZ7cuMKYqXB+dXBtUe9xEmt1B5ItBLultDFUddlkS2aZrfMaWqoYCVMdMmEuwoKqA==","shasum":"b1b52f34f389459c8e1e6f4b10aababa56d18c74","tarball":"https://registry.npmjs.org/@acmedinotech/dynform-react/-/dynform-react-0.0.4.tgz","fileCount":3,"unpackedSize":17647,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdb9e5phdu/915aCx+7C5GBrszRbj26PZj7LKJp3wM9QIhAOiMmju+VcFDxX7iGpZqiL749JLhZW0vrC+jyrwCnnLi"}]},"_npmUser":{"name":"kaisershahid","email":"kaisershahid@gmail.com"},"directories":{},"maintainers":[{"name":"kaisershahid","email":"kaisershahid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynform-react_0.0.4_1692816800745_0.5674114204814882"},"_hasShrinkwrap":false},"0.0.5":{"name":"@acmedinotech/dynform-react","publishConfig":{"access":"public"},"private":false,"version":"0.0.5","description":"managed stateful, nested form data with ease and efficiency","author":{"name":"kaiser shahid","email":"kaisershahid@gmail.com"},"license":"MIT","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","ts-node":"^10.9.1","typescript":"^5.0.4"},"main":"dist/index.js","types":"dist/index.d.ts","alias":{"dynform-react":["./src/*"]},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-export-default-from":"^7.18.10","@babel/plugin-transform-react-jsx":"^7.21.5","@babel/plugin-transform-runtime":"^7.21.4","@babel/preset-env":"^7.21.5","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.5","@testing-library/react":"^14.0.0","@testing-library/user-event":"^14.4.3","@types/jest":"^29.5.1","@types/jsdom":"^21.1.1","@types/node":"^18.16.3","@types/react":"^18.2.0","@types/react-dom":"^18.2.1","@types/webpack":"^5.28.1","babel-jest":"^29.5.0","babel-loader":"^9.1.2","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","jsdom":"^21.1.1","react-test-renderer":"^18.2.0","ts-jest":"^29.1.0","ts-loader":"^9.4.2","webpack":"^5.81.0","webpack-cli":"^5.0.2","webpack-node-externals":"^3.0.0"},"scripts":{"test":"npx jest","release:validate":"yarn test && npx webpack --mode production && echo '✅ release ready to go' && echo git sha: `git rev-parse HEAD` && echo '> tag/publish with: yarn release'","release":"node release.js"},"repository":{"type":"git","url":"git+https://github.com/acmedinotech/dynform-react.git"},"keywords":["react","forms"],"bugs":{"url":"https://github.com/acmedinotech/dynform-react/issues"},"homepage":"https://github.com/acmedinotech/dynform-react#readme","_id":"@acmedinotech/dynform-react@0.0.5","gitHead":"13d84a650e337c3f035c3c03fa0d7618cb2b5c98","_nodeVersion":"20.5.0","_npmVersion":"9.8.0","dist":{"integrity":"sha512-4EkbCfOO/yMbtJeoCtm1bO6K/awXRQih/+5Gy1lL40sYY25Ub5b4OASeN0nctXxxIYX/BGf+Q8QuexKBRSstbg==","shasum":"5c717568fe138d5ed840bcabe8397ca28cf8f8dc","tarball":"https://registry.npmjs.org/@acmedinotech/dynform-react/-/dynform-react-0.0.5.tgz","fileCount":7,"unpackedSize":32638,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7iP+NC+GTc1xyYXJXIqfiQKsn3jhGEq6q5pZLroSQIwIhAN0SeVS2hNeAnJXQGwAzIYWpzBW27Y43eHbrF3ZWsfvR"}]},"_npmUser":{"name":"kaisershahid","email":"kaisershahid@gmail.com"},"directories":{},"maintainers":[{"name":"kaisershahid","email":"kaisershahid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynform-react_0.0.5_1692817061550_0.1636779903427399"},"_hasShrinkwrap":false},"0.0.6":{"name":"@acmedinotech/dynform-react","publishConfig":{"access":"public"},"private":false,"version":"0.0.6","description":"managed stateful, nested form data with ease and efficiency","author":{"name":"kaiser shahid","email":"kaisershahid@gmail.com"},"license":"MIT","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","ts-node":"^10.9.1","typescript":"^5.0.4"},"main":"dist/index.js","types":"dist/index.d.ts","alias":{"dynform-react":["./src/*"]},"scripts":{"test":"npx jest","pack":"npm pack","release:validate":"yarn test && npx webpack --mode production && echo '✅ release ready to go' && echo git sha: `git rev-parse HEAD` && echo '> tag/publish with: yarn release'","release":"node release.js"},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-export-default-from":"^7.18.10","@babel/plugin-transform-react-jsx":"^7.21.5","@babel/plugin-transform-runtime":"^7.21.4","@babel/preset-env":"^7.21.5","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.5","@testing-library/react":"^14.0.0","@testing-library/user-event":"^14.4.3","@types/jest":"^29.5.1","@types/jsdom":"^21.1.1","@types/node":"^18.16.3","@types/react":"^18.2.0","@types/react-dom":"^18.2.1","@types/webpack":"^5.28.1","babel-jest":"^29.5.0","babel-loader":"^9.1.2","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","jsdom":"^21.1.1","react-test-renderer":"^18.2.0","ts-jest":"^29.1.0","ts-loader":"^9.4.2","webpack":"^5.81.0","webpack-cli":"^5.0.2","webpack-node-externals":"^3.0.0"},"repository":{"type":"git","url":"git+https://github.com/acmedinotech/dynform-react.git"},"keywords":["react","forms"],"bugs":{"url":"https://github.com/acmedinotech/dynform-react/issues"},"homepage":"https://github.com/acmedinotech/dynform-react#readme","_id":"@acmedinotech/dynform-react@0.0.6","gitHead":"e25010c2f09edf767759eff227f7d1ecc3106902","_nodeVersion":"20.5.0","_npmVersion":"9.8.0","dist":{"integrity":"sha512-3yLhGcR92Gkn0QTq27j8NLTSO3AFnpyckoL+oQieWR+RqqDcwgsCzWO/pwNz1Y5uMHHAIn1oBzbggWjQDN2Jxg==","shasum":"a290ebacf3597abda537b8aa1c96e0f6c6c5d9ae","tarball":"https://registry.npmjs.org/@acmedinotech/dynform-react/-/dynform-react-0.0.6.tgz","fileCount":7,"unpackedSize":32662,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD87MXSFn4iHstjA+6kpNfYTMJKgKY37oTZpz80WJLlEAIgJQ+4Mbsc4ho/8to1nMMalBHHVu5EoB/HB+o87WwRxQw="}]},"_npmUser":{"name":"kaisershahid","email":"kaisershahid@gmail.com"},"directories":{},"maintainers":[{"name":"kaisershahid","email":"kaisershahid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynform-react_0.0.6_1692817517649_0.06889351460508286"},"_hasShrinkwrap":false},"0.0.7":{"name":"@acmedinotech/dynform-react","publishConfig":{"access":"public"},"private":false,"version":"0.0.7","description":"managed stateful, nested form data with ease and efficiency","author":{"name":"kaiser shahid","email":"kaisershahid@gmail.com"},"license":"MIT","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0","ts-node":"^10.9.1","typescript":"^5.0.4"},"main":"dist/index.js","types":"dist/index.d.ts","alias":{"dynform-react":["./src/*"]},"scripts":{"test":"npx jest","pack":"npm pack","release:validate":"yarn test && npx webpack --mode production && echo '✅ release ready to go' && echo git sha: `git rev-parse HEAD` && echo '> tag/publish with: yarn release'","release":"node release.js"},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-export-default-from":"^7.18.10","@babel/plugin-transform-react-jsx":"^7.21.5","@babel/plugin-transform-runtime":"^7.21.4","@babel/preset-env":"^7.21.5","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.21.5","@testing-library/react":"^14.0.0","@testing-library/user-event":"^14.4.3","@types/jest":"^29.5.1","@types/jsdom":"^21.1.1","@types/node":"^18.16.3","@types/react":"^18.2.0","@types/react-dom":"^18.2.1","@types/webpack":"^5.28.1","babel-jest":"^29.5.0","babel-loader":"^9.1.2","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","jsdom":"^21.1.1","react-test-renderer":"^18.2.0","ts-jest":"^29.1.0","ts-loader":"^9.4.2","webpack":"^5.81.0","webpack-cli":"^5.0.2","webpack-node-externals":"^3.0.0"},"repository":{"type":"git","url":"git+https://github.com/acmedinotech/dynform-react.git"},"keywords":["react","forms"],"bugs":{"url":"https://github.com/acmedinotech/dynform-react/issues"},"homepage":"https://github.com/acmedinotech/dynform-react#readme","_id":"@acmedinotech/dynform-react@0.0.7","gitHead":"48c20eee595cb206baa9a6c50d60f7e4659c1fc1","_nodeVersion":"20.5.0","_npmVersion":"9.8.0","dist":{"integrity":"sha512-sYzNnIEiWD3+B7rcA/FOmFSwTQwnRK3rsrKXuwKuIe91g8LPvSwX3F+475iqtwDpafyrBcO/fz33uasJIc2hHg==","shasum":"180c71d88777273bb72eb1d022a408f8953b64ea","tarball":"https://registry.npmjs.org/@acmedinotech/dynform-react/-/dynform-react-0.0.7.tgz","fileCount":7,"unpackedSize":32645,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCew/oIavUqXvM+0X5aq6/HttiRbys14HZ+GuXUbWAtYwIgEqw7dzS/AB1gs5F+niDvsPy9BHnuylgWSMdOFWz52Qo="}]},"_npmUser":{"name":"kaisershahid","email":"kaisershahid@gmail.com"},"directories":{},"maintainers":[{"name":"kaisershahid","email":"kaisershahid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynform-react_0.0.7_1692817888585_0.40826332147619127"},"_hasShrinkwrap":false}},"time":{"created":"2023-05-01T03:14:40.481Z","0.0.1":"2023-05-01T03:14:40.705Z","modified":"2023-08-23T19:11:28.921Z","0.0.2":"2023-05-01T03:42:25.387Z","0.0.3":"2023-08-23T18:49:31.267Z","0.0.4":"2023-08-23T18:53:20.895Z","0.0.5":"2023-08-23T18:57:41.778Z","0.0.6":"2023-08-23T19:05:18.003Z","0.0.7":"2023-08-23T19:11:28.753Z"},"maintainers":[{"name":"kaisershahid","email":"kaisershahid@gmail.com"}],"description":"managed stateful, nested form data with ease and efficiency","homepage":"https://github.com/acmedinotech/dynform-react#readme","keywords":["react","forms"],"repository":{"type":"git","url":"git+https://github.com/acmedinotech/dynform-react.git"},"author":{"name":"kaiser shahid","email":"kaisershahid@gmail.com"},"bugs":{"url":"https://github.com/acmedinotech/dynform-react/issues"},"license":"MIT","readme":"# Dynamic Form for React (`dynform-react`)\n\n_dynform-react_ (aka **dfr**) attempts to accomplish the following:\n\n- effecient rendering of forms by only updating the parent state when controls lose focus\n- convenient hooks and contexts that allow arbitrary control of the parent form\n- transparent management of embedded forms\n\n## First, a Quick Demo\n\n```jsx\nimport { DynamicForm, DynamicFormContext, ManagedControl } from '@acmedinotech/dynform-react';\n\nconst MyForm = (props:any) => {\n  const SaveButton = () => {\n    const formCtx = useContext(DynamicFormContext);\n    return <button onClick={() => {\n      formContext.saveFn();\n    }}>save</button>\n  }\n\n  console.log({formStatus: formCtx.formStatus})\n\n  return <DynamicForm\n    formId=\"test\"\n    saveFn={async (data: any) => {\n      console.log({saveFn: data});\n      return {status: 'ok' /* or 'err' */, errors: {}}\n    }}\n    ping={(action, curState, diff) => {\n      console.log({action, curState, diff});\n    }}\n    >\n    First Name: <ManagedControl><input type=\"text\" name=\"firstName\" placeholder=\"First Name\" /></ManagedControl> <br />\n    <SaveButton />\n  </DynamicForm>\n}\n```\n\nWhen this form renders, changing firstName won't trigger any events. If you click away from it, however, you should expect to see:\n\n```js\n{ formStatus: { status: '' }}\n{ action: \"beforeStateChange\", curState: {}, diff: { firstName: \"Your Value\" }}\n{ formStatus: { status: 'dirty' }}\n```\n\nWhen you click **save**, you should expect to see:\n\n```js\n{ saveFn: { firstName: \"Your Value\" } }\n{ formStatus: { status: 'ok' }}\n```\n\nWith very little effort, you immediately have access to dynamic form capabilities that follow React state conventions.\n\n## Efficient Rendering\n\nUsing basic React state management approaches, each control will update the entire state whenever `onChange` is triggered. For complex forms, this will result in a slower UI (and require you to save your control focus/cursor position). The ideal approach is to update the control on-change, and when a user is done with it, update the parent state.\n\ndfr solves this in two ways:\n\n1. `<DynamicForm/>` sets up a `DynamicFormContext` for its component tree\n2. individual controls wrapped with `<ManagedControl/>` have their `onChange` and `onBlur` hijaacked:\n   - `onChange` updates control-specific state\n   - `onBlur` takes the current control state and triggers form update via context \n\n## Convenient Hooks and Contexts\n\nThe `DynamicFormContext` provides the ability to change form state for whatever form a component is embedded in, and allows observation of upcoming changes. This saves you a considerable amount of overhead in wiring up this flow yourself.\n\n\n\n---\n\nA set of components and helpers to handling form interactions.\n\nThe `<DynamicForm />` accepts a set of controls, which can include other forms:\n\n```jsx\n<DynamicForm fields={[\n    {\n        name: 'firstName',\n        control: <input type='text' />\n    },\n    {\n        name: 'address',\n        control: <DynamicForm fields={[\n            {\n                name: 'line1',\n                control: <input type='text' />\n            }\n        ]}>\n    }\n]}>\n```\n\nA control's `onChange` handler is hijacked -- to preprocess a value before the form deals with it, set `getControlValue(event) => any`, otherwise the control's `value` or `checked` state will be used.\n\n> If you're supplying an embedded form, a different mechanism is used to communicate changes, which is described in the context section.\n\n## Lifecycle Extensions\n\nForms accept an async `saveFn(state)` which is given the form's current state and is expected to return a `FormStatus` object reflecting whether or not save succeeded.\n\nForms also accept a `ping(action,curState,change)` which is called before a form state change.\n\n## Status\n\nIndicates the general health of the form with `status` as `err` (error), `dirty` (unsaved), or `ok` (default). Additional keys are supported:\n\n- `errors`: for `status:'err'`, this object is expected to have a string `message` or `_errMap` with list of field names/messages\n- `payload`: for `status:'ok'`, this object should hold the most current version of the state (i.e. after saving to a server, set this as the saved value)\n\nStatus changes are expected to occur when a control changes, when the form is validated, and when a save completes.\n\n## Value Resolution\n\nIn order to capture the most current control value, the effective value is taken to be `state[controlId] ?? formStatus?.payload?.[controlId] ?? initialValue?.[controlId]`, meaning:\n\n- the most current state value\n- the most current value from `formStatus.status == 'ok'`\n- the initial value provided on component init\n\n## General Form Context Manager\n\nThe general form context manager (formCtx for short) exposes form data and various state operations that embedded controls can leverage for advanced changes. When state changes occur here, they change the state of the providing DynamicForm. `<DynamicForm />`s can be embedded, and a dependency is built between the child context and parent so that whenever a child's status changes, the parent is notified. We'll come back to this again.\n\n### `setState` and `ping`\n\nPartial changes can be persisted through `setState`:\n\n```js\nconst formCtx = useContext(DynamicFormContextManager);\n// ...\nformCtx.setState({oldField: 'newValue'});\n```\n\nThe `DynamicForm` can receive a `ping` function that, if defined, is called within `setState` before the change is persisted:\n\n```jsx\n<DynamicForm ping={(action, curState, change) => {\n    console.log('state is gonna change!', action, {curState, change});\n}} />\n```\n\nThis allows the caller to take additional steps in response, such as a nested control refreshing its own state before the parent form re-renders.\n\n### `setFormStatus`\n\nMarks the form `status` as `err` (error), `dirty` (unsaved), or `ok` (default). Additional keys are supported:\n\n- `errors`: for `status:'err'`, this object is expected to have a string `message` or `_errMap` with list of field names/messages\n- `payload`: for `status:'ok'`, this object should hold the most current version of the state (i.e. after saving to a server, set this as the saved value)\n\n### `saveFn`\n\nTriggers the save handler of the caller. It's expected to return a formStatus object, which will trigger `setFormStatus`.\n\n### Form Data Flow\n\n- ℹ️ `state = initialState ?? {}`\n- ℹ️ `formStatus = {}`\n- onChange: 🔔 `ping`, 🔄 `setState`\n- onBlur: if changes have occurred, 🔔 `saveFn`, 🔄 `setFormStatus`\n  - ℹ️ `formStatus = {status: 'ok' or 'err'}`\n","readmeFilename":"README.md"}