{"_id":"react-powerplug","_rev":"28-9ef417d02998066fc473f1c866c937f9","name":"react-powerplug","description":"Give life to your dumb components","dist-tags":{"latest":"1.0.0","next":"1.0.0-rc.0"},"versions":{"0.0.1-alpha.1":{"name":"react-powerplug","version":"0.0.1-alpha.1","main":"dist/react-powerplug.cjs.js","module":"dist/react-powerplug.esm.js","browser":"dist/react-powerplug.umd.js","scripts":{"build":"rollup -c","prepublish":"npm run build","np":"np"},"description":"Give life to your dumb components.","repository":{"type":"git","url":"git+ssh://git@github.com/renatorib/react-powerplug.git"},"author":{"name":"Renato Ribeiro","email":"renatoribroman@gmail.com"},"license":"MIT","devDependencies":{"@types/react":"^16.0.5","np":"^2.16.0","rollup":"^0.49.2","rollup-plugin-commonjs":"^8.2.0","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-typescript":"^0.8.1","tslint-consistent-codestyle":"^1.6.0","tslint-eslint-rules":"^4.1.1","tslint-microsoft-contrib":"^5.0.1","tslint-react":"^3.2.0","typescript":"^2.5.2","vrsource-tslint-rules":"^5.1.1"},"dependencies":{"react":"latest"},"gitHead":"77809ed327c51e1d80a1320358e9deb407992ade","bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug#readme","_id":"react-powerplug@0.0.1-alpha.1","_shasum":"613214b021d025bc125ef17752be45bc4fe4d3a9","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.0","_npmUser":{"name":"renatorib","email":"ola@rena.to"},"dist":{"shasum":"613214b021d025bc125ef17752be45bc4fe4d3a9","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.0.1-alpha.1.tgz","integrity":"sha512-yXgZDob/qDvZlekVGgasvgn9/A+jliz7iCvMT+meSIK8yrUEOApRMFhlTcQkkOJzD1zydIJ2Yio2HnQfbRlSDA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjZEBHLxYM+PPeDV+ae+09/3iReHygZU5A3M5JABhH1wIhAPCzARUMw+1OC49buDHTrVBJn7J+0gTzWv6ts+PcZDW0"}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug-0.0.1-alpha.1.tgz_1504584705961_0.9291083011776209"},"directories":{}},"0.0.1":{"name":"react-powerplug","version":"0.0.1","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","scripts":{"build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=rollup NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","lint":"eslint src","prepublish":"npm run lint && npm run clean && npm run build"},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-react":"^6.24.1","babel-preset-stage-1":"^6.24.1","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","rimraf":"^2.6.1","rollup":"^0.49.3","rollup-plugin-babel":"^3.0.2","rollup-plugin-commonjs":"^8.2.1","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"2adc90633deb830e1706c2fde25e352951a05066","_id":"react-powerplug@0.0.1","_shasum":"91e3b041a9a51333bf576ab0e85fb41d49982c33","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.0","_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"dist":{"shasum":"91e3b041a9a51333bf576ab0e85fb41d49982c33","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.0.1.tgz","integrity":"sha512-b1v6KKkjXw2XnZ8dnYRAYw6fY/Ztd/p9I5+CuA/jRjilW1yeaX1+qkb0qxYkTOJ9RBhDCVsuv0Tjk4FVL99Uxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBmfhmEtBxFtfqnsvXaaBt/97WiEQOgrodrKCzAHvs4xAiEAiTlvzWmbNK23XBp45u/NYpTiLm/9Ewe4RWyIi0Fe2AU="}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug-0.0.1.tgz_1505099548958_0.8126490749418736"},"directories":{}},"0.0.2":{"name":"react-powerplug","version":"0.0.2","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","scripts":{"build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=rollup NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","lint":"eslint src","prepublish":"npm run lint && npm run clean && npm run build"},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-react":"^6.24.1","babel-preset-stage-1":"^6.24.1","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","rimraf":"^2.6.1","rollup":"^0.49.3","rollup-plugin-babel":"^3.0.2","rollup-plugin-commonjs":"^8.2.1","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"f4a431bd89f5feb52e73d843775ae2130de2bafc","_id":"react-powerplug@0.0.2","_shasum":"1f4cfebca5f0a1408d3fe77caa1f7ae91ecfa3ab","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.0","_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"dist":{"shasum":"1f4cfebca5f0a1408d3fe77caa1f7ae91ecfa3ab","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.0.2.tgz","integrity":"sha512-ro4Y3rG3I+rHTm8XeJ5KhbYp2kTcIabqwZwkUJ+Mhj2OQrtdvG4B20J4QUyXL3I9QRenH7Soy9uDsiFc2UyUfw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrQr9rZIkAzv4IfPnWxqXZp6SydgaXsxTH6Q4nOpw1iQIhANYEQ+n9bJEtRXaszhPepEsRrJj5R+vPtJ0QBaH29jeM"}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug-0.0.2.tgz_1505103107789_0.4102394049987197"},"directories":{}},"0.1.0":{"name":"react-powerplug","version":"0.1.0","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","scripts":{"build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=rollup NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","lint":"eslint src","test":"jest","prepublishOnly":"npm run lint && npm run clean && npm run build"},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-jest":"^21.0.2","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.0","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-react":"^6.24.1","babel-preset-stage-1":"^6.24.1","cross-env":"^5.0.5","enzyme":"^2.9.1","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","jest":"^21.1.0","react":"^15.6.2","react-addons-test-utils":"^15.6.2","react-dom":"^15.6.2","react-test-renderer":"^16.0.0","rimraf":"^2.6.1","rollup":"^0.49.3","rollup-plugin-babel":"^3.0.2","rollup-plugin-commonjs":"^8.2.1","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"5c4fe1178b7e7d5f43a982d234747f71ab7aca8e","_id":"react-powerplug@0.1.0","_shasum":"cb19706726a08990a362209e937b1fc814224846","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.0","_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"dist":{"shasum":"cb19706726a08990a362209e937b1fc814224846","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.1.0.tgz","integrity":"sha512-nc10YABaICHVCdkKEmNoMtHWCmUSfAfSoUFigeG6z+iQCLn76nr2RhR9kqKloevIdBcHY8ZD/Zik6AN5c3Uf0A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGOQP/W2lhwRhlQuFyGTGN2MVIsJwXk/1/hfJFgxt3yAiBp3VSZkaPZ+6/qNiwvuOaDzVZeUChdz10j5J+Cg9kSJw=="}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug-0.1.0.tgz_1506664850450_0.337281585438177"},"directories":{}},"0.1.1":{"name":"react-powerplug","version":"0.1.1","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","scripts":{"build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=rollup NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","lint":"eslint src","test":"jest","prepublishOnly":"npm run lint && npm run clean && npm run build"},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-jest":"^21.0.2","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.0","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-react":"^6.24.1","babel-preset-stage-1":"^6.24.1","cross-env":"^5.0.5","enzyme":"^2.9.1","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","jest":"^21.1.0","react":"^15.6.2","react-addons-test-utils":"^15.6.2","react-dom":"^15.6.2","react-test-renderer":"^16.0.0","rimraf":"^2.6.1","rollup":"^0.49.3","rollup-plugin-babel":"^3.0.2","rollup-plugin-commonjs":"^8.2.1","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"e13786daecff2f6a453bec28f104b8476e428836","_id":"react-powerplug@0.1.1","_shasum":"3644c86fad91301d6d5b02d22c94a1b1e952666b","_from":".","_npmVersion":"4.6.1","_nodeVersion":"7.7.4","_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"dist":{"shasum":"3644c86fad91301d6d5b02d22c94a1b1e952666b","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.1.1.tgz","integrity":"sha512-mnj/jcPDktSoIP3zmucMBKrAdPUdH1NiGXiLR/1z/CkHEg3gJz7r6x+7g9QxYtBjtd1wE01RgnS3C2x7XO2grQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwu+tE/hW8df3IvPJJZ8qLYTpsmzmsb4x33uiCBvo4SgIhAKanrfxnX31IgmaQWaeys56gtvQ7xbGJAlN5VKDE/RNj"}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug-0.1.1.tgz_1506965434580_0.32206794642843306"},"directories":{}},"0.1.2":{"name":"react-powerplug","version":"0.1.2","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","scripts":{"build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=rollup NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","lint":"eslint src","test":"jest","prepublishOnly":"npm run lint && npm run clean && npm run build"},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-jest":"^21.0.2","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.0","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-react":"^6.24.1","babel-preset-stage-1":"^6.24.1","cross-env":"^5.0.5","enzyme":"^2.9.1","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","jest":"^21.1.0","react":"^15.6.2","react-addons-test-utils":"^15.6.2","react-dom":"^15.6.2","react-test-renderer":"^16.0.0","rimraf":"^2.6.1","rollup":"^0.49.3","rollup-plugin-babel":"^3.0.2","rollup-plugin-commonjs":"^8.2.1","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"51da5522b18f157d58e607051b32b4129ac0ae13","_id":"react-powerplug@0.1.2","_npmVersion":"5.4.2","_nodeVersion":"8.6.0","_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"dist":{"integrity":"sha512-LUznaH0x7S96TPN2jcAke8SoEzjVH1ugvCq2IRbskrVvnCYjRczUnmfI3KMGR4LOOxhlxudWfAX0vsi+ocgSuQ==","shasum":"070e97f7f064cf7a5e2f2db5d0003aae84adf1df","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF/JJaATRA1ZjuwNrw3Mh2HzPpAa6u3gKri5ksM3IXYlAiAVZZKiK5AWiPpOjsLmq7mht8oYpU16r3xRkLeb1MYeAw=="}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug-0.1.2.tgz_1508204188258_0.9031414578203112"},"directories":{}},"0.1.3":{"name":"react-powerplug","version":"0.1.3","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","scripts":{"build:flow":"cpy src/index.js.flow lib & cpy src/index.js.flow es","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=rollup NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min && npm run build:flow","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","typecheck:flow":"flow check && [[ $(flow check) == 'Found 0 errors' ]]","lint":"eslint src","test":"jest","prepublishOnly":"npm run lint && npm run clean && npm run build"},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-jest":"^22.1.0","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.0","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-react":"^6.24.1","babel-preset-stage-1":"^6.24.1","cpy-cli":"^1.0.1","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.63.1","jest":"^22.1.1","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.49.3","rollup-plugin-babel":"^3.0.2","rollup-plugin-commonjs":"^8.2.1","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"1c31e36b3f65a51bd58d2747d4a937f6f66a67b8","_id":"react-powerplug@0.1.3","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"dist":{"integrity":"sha512-5kHQ1rOZBgBEI3K6Xwn8Axy/4SnCZXqZRiHZ+lMJ8HHZMMSrt0pxRs/QCqwgG2DWQx6AYb5Dc8GQDLOnRAi5RA==","shasum":"a427318f59ce1cdb4ee6c20f9914e845e6d66bc3","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.1.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXxPaQU03F4fNJATwmZh6V6Gbj5xdsVoakKs7Pm4/dEAIgNrvtyQvXGv/9ATlZrWNQ7MWxFDcLqHgIAR0sr42cSjc="}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug-0.1.3.tgz_1516134280857_0.4426674358546734"},"directories":{}},"0.1.4":{"name":"react-powerplug","version":"0.1.4","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","scripts":{"build:flow":"cpy src/index.js.flow lib & cpy src/index.js.flow es","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=rollup NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min && npm run build:flow","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","typecheck:flow":"flow check && [[ $(flow check) == 'Found 0 errors' ]]","lint":"eslint src","test":"jest","prepublishOnly":"npm run lint && npm run clean && npm run build"},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-jest":"^22.1.0","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.0","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-react":"^6.24.1","babel-preset-stage-1":"^6.24.1","cpy-cli":"^1.0.1","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.63.1","jest":"^22.1.1","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.49.3","rollup-plugin-babel":"^3.0.2","rollup-plugin-commonjs":"^8.2.1","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"88be4d2a5bf0387ebccf9d61b34b133ef11b086a","_id":"react-powerplug@0.1.4","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"dist":{"integrity":"sha512-Xrj30JPhFFour4F7PQxf8HuoSts0IA/XvRgmRRRYA/R1zliQIfxxXGfXoiS8E5j95dgnbUZ4weCzHstKQrskxw==","shasum":"0d5468bd746378716d9e78a083cbdef69f070c64","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.1.4.tgz","fileCount":64,"unpackedSize":128300,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDf4I1Jg1DCpKuMBL5zcl0kvjAjYF1efhZg7ELt6ad3nwIhAMKzdk2siSCzCHJWj0cL5gZ8UrroRzZshuwJPjw98Sx+"}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_0.1.4_1518121193289_0.7617887322692682"},"_hasShrinkwrap":false},"1.0.0-alpha.2":{"name":"react-powerplug","version":"1.0.0-alpha.2","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","sideEffects":false,"scripts":{"build:flow":"cpy src/index.js.flow lib & cpy src/index.js.flow es","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=es NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=es NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min && npm run build:flow","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","typecheck:flow":"flow check && [[ $(flow check) == 'Found 0 errors' ]]","lint":"eslint src","test:only":"jest","test:bundle":"jest --setupTestFrameworkScriptFile ./tests/jestBundleSetup.js","test:lib":"jest --setupTestFrameworkScriptFile ./tests/jestLibSetup.js","test:all":"npm run lint && npm run test:only && npm run build && npm run test:bundle && npm run test:lib && npm run clean","test":"npm run test:all","precommit":"lint-staged","prepublishOnly":"npm run clean && npm run build"},"lint-staged":{"*.{js,md}":["prettier --write","git add"]},"jest":{"transformIgnorePatterns":["/node_modules/","/lib/","/dist/"]},"repository":{"type":"git","url":"https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{"@babel/runtime":"^7.0.0-beta.37"},"devDependencies":{"@babel/cli":"^7.0.0-beta.37","@babel/core":"^7.0.0-beta.37","@babel/plugin-transform-modules-commonjs":"^7.0.0-beta.37","@babel/plugin-transform-runtime":"^7.0.0-beta.37","@babel/preset-env":"^7.0.0-beta.37","@babel/preset-react":"^7.0.0-beta.37","@babel/preset-stage-3":"^7.0.0-beta.37","babel-core":"^7.0.0-bridge.0","babel-eslint":"^7.2.3","babel-jest":"^22.1.0","cpy-cli":"^1.0.1","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.63.1","husky":"^0.14.3","jest":"^22.1.1","lint-staged":"^6.0.0","prettier":"^1.10.2","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.53.4","rollup-plugin-babel":"^4.0.0-beta.0","rollup-plugin-node-resolve":"^3.0.2","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"readmeFilename":"README.md","readme":"<p align=\"center\">\n  <img src=\"./logo.png\" alt=\"react-powerplug\" />\n</p>\n\n<h1 align=\"center\"></h1>\n\n<br />\n\n> This branch is **unstable** and is in **active development**.  \n> To the latest stable version go to [0.1-stable branch](/tree/0.1-stable)\n\n[![npm](https://img.shields.io/npm/v/react-powerplug.svg?style=flat-square)](https://www.npmjs.com/package/react-powerplug)\n[![npm](https://img.shields.io/npm/dt/react-powerplug.svg?style=flat-square)](https://www.npmjs.com/package/react-powerplug)\n[![GitHub issues](https://img.shields.io/github/issues/renatorib/react-powerplug.svg?style=flat-square)](https://github.com/renatorib/react-powerplug/issues)\n[![GitHub stars](https://img.shields.io/github/stars/renatorib/react-powerplug.svg?style=flat-square)](https://github.com/renatorib/react-powerplug/stargazers)\n[![Twitter](https://img.shields.io/twitter/url/https/github.com/renatorib/react-powerplug.svg?style=social&style=flat-square)](https://twitter.com/intent/tweet?url=https://github.com/renatorib/react-powerplug)\n\n:electric_plug: Renderless Pluggable State Containers\n\n---\n\n**React PowerPlug is a set of pluggable renderless components** that provides different types of state and logics so you can use with your dumb components. It creates a state and pass down the logic to the children, so you can handle your data/callbacks.\n\nIt's has been created to (but not limited to) use with **storybook, react styleguidist, documentations, prototypes**. You can also use to create a bunch of uncontrolled components where the outside app don't care about your state, for example a menu dropdown.\n\n### Quick examples:\n\n```jsx\nimport { State, Toggle } from 'react-powerplug'\nimport { Pagination, Tabs, Checkbox } from './MyDumbComponents'\n\n<State initial={{ offset: 0, limit: 10, totalCount: 200 }}>\n  {({ state, setState }) => (\n    <Pagination {...state} onChange={(offset) => setState({ offset })} />\n  )}\n</State>\n\n<Toggle initial={true}>\n  {({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n</Toggle>\n\n// You can also use a `render` prop instead\n\n<Toggle\n  initial={false}\n  render={({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle}>\n  )}\n/>\n```\n\n# Renderless Components\n\nNote: Also known as `render props` or `children as function`.  \nFor most people, this may look pretty weird. **But it's extremely powerful**. Usually you render some element whitin your component, but if you are creating an 'agnostic' component or a kind of abstraction component you can not simply render elements, you don't know what the user wants to render. So you render values, actions, states, data... props. You pick these props passing a function to children (or render prop) and now with this data you have total control of what you want to do. Now render what you want to render and do what you want to do. **Renderless components are about abstracting some logic without any UI.**\n\nReact PowerPlug brings to you a bunch of components that act as state and logic containers, so you can get this powerful abstraction and use it any way you want.\n\n**Note:** with PowerPlug you can use `children` or `render` prop.  \nYou decide which one is best for you.\n\n# Components\n\n**_Note:_** _This is a kind of a cheat sheet for fast search._  \n_If you want a more detailed **API Reference** and examples for each component see the [Docs](/docs)_\n\n## State Containers\n\n### State\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ state, setState }`  \n[see docs](docs/components/State.md)\n\n```jsx\n<State initial={{ isLoading: false, data: null }}>\n  {({ state, setState }) => (\n    <DataReceiver\n      data={state.data}\n      onStart={() => setState({ isLoading: true })}\n      onFinish={data => setState({ data, isLoading: false })}\n    />\n  )}\n</State>\n```\n\n### Toggle\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ on, off, toggle, setOn }`  \n[see docs](docs/components/Toggle.md)\n\n```jsx\n<Toggle initial={true}>\n  {({ on, toggle }) => <Checkbox checked={on} onChange={toggle} />}\n</Toggle>\n```\n\n### Loading\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ isLoading, toggle, setLoading }`  \n[see docs](docs/components/Loading.md)\n\n```jsx\n<Loading initial={false}>\n  {({ isLoading, toggleLoading }) => (\n    <Button onClick={toggleLoading}>\n      {isLoading ? 'Loading...' : 'Click me'}\n    </Button>\n  )}\n</Loading>\n```\n\n### Value\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ value, setValue }`  \n[see docs](docs/components/Value.md)\n\n```jsx\n<Value initial=\"React\">\n  {({ value, setValue }) => (\n    <Select\n      label=\"Choose one\"\n      options={['React', 'Preact', 'Vue']}\n      value={value}\n      onChange={setValue}\n    />\n  )}\n</Value>\n```\n\n### Map\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ set, get, values }`  \n[see docs](docs/components/Map.md)\n\n```jsx\n<Map initial={{ sounds: true, graphics: 'medium' }}>\n  {({ set, get }) => (\n    <Maptings>\n      <ToggleCheck checked={get('sounds')} onChange={c => set('sounds', c)}>\n        Game Sounds\n      </ToggleCheck>\n      <Select\n        label=\"Graphics\"\n        options={['low', 'medium', 'high']}\n        selected={get('graphics')}\n        onSelect={value => set('graphics', value)}\n      />\n    </Maptings>\n  )}\n</Map>\n```\n\n### List\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ list, push, pull, sort, setList }`  \n[see docs](docs/components/List.md)\n\n```jsx\n<List initial={['react', 'babel']}>\n  {({ list, pull, push }) => (\n    <div>\n      <FormInput onSubmit={push} />\n      {list.map(tag => (\n        <Tag onRemove={() => pull(value => value === tag)}>\n          {tag}\n        </Tag>\n      )}\n    </div>\n  )}\n</List>\n```\n\n## Feedback Containers\n\n### Hover\n\n**Component Props:** `{ onChange }`  \n**Render Props:** `{ isHover, bindHover }`  \n[see docs](docs/components/Hover.md)\n\n```jsx\n<Hover>\n  {({ isHover, bindHover }) => (\n    <div {...bindHover}>\n      You are {isHover ? 'hovering' : 'not hovering'} this div.\n    </div>\n  )}\n</Hover>\n```\n\n### Active\n\n**Component Props:** `{ onChange }`  \n**Render Props:** `{ isActive, bindActive }`  \n[see docs](docs/components/Active.md)\n\n```jsx\n<Active>\n  {({ isActive, bindActive }) => (\n    <div {...bindActive}>\n      You are {isActive ? 'clicking' : 'not clicking'} this div.\n    </div>\n  )}\n</Active>\n```\n\n### Focus\n\n**Component Props:** `{ onChange }`  \n**Render Props:** `{ isFocus, bindFocus }`  \n[see docs](docs/components/Focus.md)\n\n```jsx\n<Focus>\n  {({ isFocus, bindFocus }) => (\n    <div>\n      <input {...bindFocus} placeholder=\"Focus me\" />\n      <div>You are {isFocus ? 'focusing' : 'not focusing'} the input.</div>\n    </div>\n  )}\n</Focus>\n```\n\n### Touch\n\n**Component Props:** `{ onChange }`  \n**Render Props:** `{ isTouched, bind }`  \n[see docs](docs/components/Touch.md)\n\n```jsx\n<Touch>\n  {({ isTouched, bind }) => (\n    <div {...bind}>\n      You are {isTouched ? 'touching' : 'not touching'} this div.\n    </div>\n  )}\n</Touch>\n```\n\n## Form Containers\n\n### Input\n\n**Component Props:** `{ initial, onChange, getValue }`  \n**Render Props:** `{ value, set, bind }`  \n[see docs](docs/components/Input.md)\n\n```jsx\n<Input initial=\"hello world\">\n  {({ bind, value }) => (\n    <div>\n      <ControlledInput {...bind} />\n      <div>You typed {value}</div>\n    </div>\n  )}\n</Input>\n```\n\n### Form\n\n**Component Props:** `{ initial, onChange, getValue }`  \n**Render Props:** `{ input }`  \n[see docs](docs/components/Form.md)\n\n```jsx\n<Form initial={{ subject: '', message: '' }}>\n  {({ input }) => {\n    const subject = input('subject')\n    const message = input('message')\n\n    return (\n      <div>\n        <ControlledInput\n          placeholder=\"Subject\"\n          {...subject.bind}\n        />\n        <ControlledTextArea\n          placeholder=\"Message\"\n          {...message.bind}\n        />\n        <Submit>Send</Submit>\n\n        {/*\n          input(id) => { bind, set, value }\n        */}\n      </div>\n    )\n  }\n</Form>\n```\n\n# Composing Components\n\nIf you want to merge two of more components functionalities, you can compose they in a single one.  \nFor complete guide [see Compose docs](docs/components/Compose.md)\n\n```jsx\nimport { compose } from 'react-powerplug'\n\nconst ToggleCounter = compose(Toggle, Counter)\n\n<ToggleCounter>\n  {({ toggle, on }, { count, inc, dec }) => (\n    <ProductCard\n      {...productInfo}\n      isFavorited={on}\n      onFavorite={toggle}\n      count={count}\n      onAdd={inc}\n      onRemove={dec}\n    />\n  )}\n</ToggleCounter>\n```\n\nIf you need to pass props, especially for `initial`, just pass a created element. Internals this will be cloned.\n\n```jsx\nconst ToggleCounter = compose(\n  <Toggle initial={false} />,\n  <Counter initial={2} />\n)\n\n// or just mix it\nconst ToggleCounter = compose(Toggle, <Counter initial={3} />)\n```\n\nAlso, you can use a built-in Compose component and pass components on `states` prop\n\n```jsx\nimport { Compose } from 'react-powerplug'\n\n<Compose states={[Toggle, Counter]}>\n  {(toggle, counter) => (\n    <ProductCard {...} />\n  )}\n</Compose>\n```\n\nBehind the scenes, that's what happens:\n\n```jsx\n<Counter /* passed props */>\n  {counter => (\n    <Toggle /* passed props */>\n      {toggle => (\n        <ProductCard\n          {...productInfo}\n          isFavorited={toggle.on}\n          onFavorite={toggle.toggle}\n          count={counter.count}\n          onAdd={counter.inc}\n          onRemove={counter.dec}\n        />\n      )}\n    </Toggle>\n  )}\n</Counter>\n```\n\nBecause of that, when you use `toggle` function, only `<Toggle>` will be rerendered, but if you use `inc` or `dec` functions, both `<Counter>` and `<Toggle>` will be rerendered. **Even** using `compose()` utility.\n\n# CodeSandbox examples\n\n[Using Toggle in a Checkbox](https://codesandbox.io/s/jp890p2x7w)  \n[Using State in a Pagination](https://codesandbox.io/s/8x9m4893l2)\n\n# Install\n\n### Node Module\n\n```\nyarn add react-powerplug\n```\n\n```\nnpm i react-powerplug\n```\n\n### UMD library\n\n```html\n<script src=\"https://unpkg.com/react-powerplug/dist/react-powerplug.min.js\"></script>\n```\n\nexposed as `ReactPowerPlug`\n\n# Contribute\n\nYou can help improving this project sending PRs and helping with issues.  \nAlso you can ping me at [Twitter](http://twitter.com/renatorib_)\n","_id":"react-powerplug@1.0.0-alpha.2","dist":{"shasum":"16f6789a92f22e7c1c770da9093ac62890867ef0","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-1.0.0-alpha.2.tgz","fileCount":78,"unpackedSize":122186,"integrity":"sha512-PerhoNhnX2o1E7BICGaOBx1QXdGKwfvjffz0CeM3xtvM/doHcYM7p/5DPfsvqC/UTmYG97Wd4TWc+9pwcz2uwg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATkFIxq2CEH+cpw2G85MpIzB3Qaw71jWBO0jElx5TKKAiBA/EwbcuJDFeEDu9z0UVpfjuONA+xGrNi7rV72QnAI/w=="}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_1.0.0-alpha.2_1518624426513_0.24791250930014597"},"_hasShrinkwrap":false},"0.1.5":{"name":"react-powerplug","version":"0.1.5","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","scripts":{"build:flow":"cpy src/index.js.flow lib & cpy src/index.js.flow es","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=rollup NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min && npm run build:flow","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","typecheck:flow":"flow check && [[ $(flow check) == 'Found 0 errors' ]]","lint":"eslint src","test":"jest","prepublishOnly":"npm run lint && npm run clean && npm run build"},"repository":{"type":"git","url":"https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-jest":"^22.1.0","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.0","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-react":"^6.24.1","babel-preset-stage-1":"^6.24.1","cpy-cli":"^1.0.1","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.63.1","jest":"^22.1.1","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.49.3","rollup-plugin-babel":"^3.0.2","rollup-plugin-commonjs":"^8.2.1","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"_id":"react-powerplug@0.1.5","dist":{"shasum":"f3dd7612c60efc55b6c7a2ddee284a8bcb6db783","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.1.5.tgz","fileCount":75,"unpackedSize":128287,"integrity":"sha512-djDreiCOaYEei6Ubw483uZHnXBNZ5vUgptGkZnGBV6pkKh79SgC+gxfgNNdasVtffHkNzAfLy9lRHicd3cGhmA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDe5KN2DXsA6ZOUE8hAfpjdXoZpQ+UtUkVcFBxpqMWeaAIgAM69KnseGUy7q3QiFE9DmENLiKCl6epRagKvoDIeHi0="}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_0.1.5_1519064152801_0.33775289633967653"},"_hasShrinkwrap":false},"1.0.0-alpha.3":{"name":"react-powerplug","version":"1.0.0-alpha.3","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","sideEffects":false,"scripts":{"build:flow":"cpy src/index.js.flow lib & cpy src/index.js.flow es","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=es NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=es NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min && npm run build:flow","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","typecheck:flow":"flow check --max-warnings=0","lint":"eslint src","test:only":"jest","test:bundle":"jest --setupTestFrameworkScriptFile ./tests/jestBundleSetup.js","test:lib":"jest --setupTestFrameworkScriptFile ./tests/jestLibSetup.js","test:all":"npm run lint && npm run test:only && npm run build && npm run test:bundle && npm run test:lib && npm run clean","test":"npm run test:all","precommit":"lint-staged","prepublishOnly":"npm run clean && npm run build"},"lint-staged":{"*.{js,md}":["prettier --write","git add"]},"jest":{"transformIgnorePatterns":["/node_modules/","/lib/","/dist/"]},"repository":{"type":"git","url":"https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{"@babel/runtime":"^7.0.0-beta.37"},"devDependencies":{"@babel/cli":"^7.0.0-beta.37","@babel/core":"^7.0.0-beta.37","@babel/plugin-transform-modules-commonjs":"^7.0.0-beta.37","@babel/plugin-transform-runtime":"^7.0.0-beta.37","@babel/preset-env":"^7.0.0-beta.37","@babel/preset-react":"^7.0.0-beta.37","@babel/preset-stage-3":"^7.0.0-beta.37","babel-core":"^7.0.0-bridge.0","babel-eslint":"^7.2.3","babel-jest":"^22.1.0","cpy-cli":"^1.0.1","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.66.0","husky":"^0.14.3","jest":"^22.1.1","lint-staged":"^6.0.0","prettier":"^1.10.2","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.53.4","rollup-plugin-babel":"^4.0.0-beta.0","rollup-plugin-node-resolve":"^3.0.2","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"readmeFilename":"README.md","readme":"<p align=\"center\">\n  <img src=\"./logo.png\" alt=\"react-powerplug\" />\n</p>\n\n<h1 align=\"center\"></h1>\n\n<br />\n\n> This branch is **unstable** and is in **active development**.  \n> To the latest stable version go to [0.1-stable branch](/tree/0.1-stable)\n\n[![npm](https://img.shields.io/npm/v/react-powerplug.svg?style=flat-square)](https://www.npmjs.com/package/react-powerplug)\n[![npm](https://img.shields.io/npm/dt/react-powerplug.svg?style=flat-square)](https://www.npmjs.com/package/react-powerplug)\n[![GitHub issues](https://img.shields.io/github/issues/renatorib/react-powerplug.svg?style=flat-square)](https://github.com/renatorib/react-powerplug/issues)\n[![GitHub stars](https://img.shields.io/github/stars/renatorib/react-powerplug.svg?style=flat-square)](https://github.com/renatorib/react-powerplug/stargazers)\n[![Twitter](https://img.shields.io/twitter/url/https/github.com/renatorib/react-powerplug.svg?style=social&style=flat-square)](https://twitter.com/intent/tweet?url=https://github.com/renatorib/react-powerplug)\n\n:electric_plug: Renderless Pluggable State Containers\n\n---\n\n**React PowerPlug is a set of pluggable renderless components** that provides different types of state and logics so you can use with your dumb components. It creates a state and pass down the logic to the children, so you can handle your data/callbacks.\n\nIt's has been created to (but not limited to) use with **storybook, react styleguidist, documentations, prototypes**. You can also use to create a bunch of uncontrolled components where the outside app don't care about your state, for example a menu dropdown.\n\n### Quick examples:\n\n```jsx\nimport { State, Toggle } from 'react-powerplug'\nimport { Pagination, Tabs, Checkbox } from './MyDumbComponents'\n\n<State initial={{ offset: 0, limit: 10, totalCount: 200 }}>\n  {({ state, setState }) => (\n    <Pagination {...state} onChange={(offset) => setState({ offset })} />\n  )}\n</State>\n\n<Toggle initial={true}>\n  {({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n</Toggle>\n\n// You can also use a `render` prop instead\n\n<Toggle\n  initial={false}\n  render={({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle}>\n  )}\n/>\n```\n\n# Renderless Components\n\nNote: Also known as `render props` or `children as function`.  \nFor most people, this may look pretty weird. **But it's extremely powerful**. Usually you render some element whitin your component, but if you are creating an 'agnostic' component or a kind of abstraction component you can not simply render elements, you don't know what the user wants to render. So you render values, actions, states, data... props. You pick these props passing a function to children (or render prop) and now with this data you have total control of what you want to do. Now render what you want to render and do what you want to do. **Renderless components are about abstracting some logic without any UI.**\n\nReact PowerPlug brings to you a bunch of components that act as state and logic containers, so you can get this powerful abstraction and use it any way you want.\n\n**Note:** with PowerPlug you can use `children` or `render` prop.  \nYou decide which one is best for you.\n\n# Components\n\n**_Note:_** _This is a kind of a cheat sheet for fast search._  \n_If you want a more detailed **API Reference** and examples for each component see the [Docs](/docs)_\n\n## State Containers\n\n### State\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ state, setState }`  \n[see docs](docs/components/State.md)\n\n```jsx\n<State initial={{ isLoading: false, data: null }}>\n  {({ state, setState }) => (\n    <DataReceiver\n      data={state.data}\n      onStart={() => setState({ isLoading: true })}\n      onFinish={data => setState({ data, isLoading: false })}\n    />\n  )}\n</State>\n```\n\n### Toggle\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ on, off, toggle, setOn }`  \n[see docs](docs/components/Toggle.md)\n\n```jsx\n<Toggle initial={true}>\n  {({ on, toggle }) => <Checkbox checked={on} onChange={toggle} />}\n</Toggle>\n```\n\n### Loading\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ isLoading, toggle, setLoading }`  \n[see docs](docs/components/Loading.md)\n\n```jsx\n<Loading initial={false}>\n  {({ isLoading, toggleLoading }) => (\n    <Button onClick={toggleLoading}>\n      {isLoading ? 'Loading...' : 'Click me'}\n    </Button>\n  )}\n</Loading>\n```\n\n### Value\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ value, setValue }`  \n[see docs](docs/components/Value.md)\n\n```jsx\n<Value initial=\"React\">\n  {({ value, setValue }) => (\n    <Select\n      label=\"Choose one\"\n      options={['React', 'Preact', 'Vue']}\n      value={value}\n      onChange={setValue}\n    />\n  )}\n</Value>\n```\n\n### Map\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ set, get, values }`  \n[see docs](docs/components/Map.md)\n\n```jsx\n<Map initial={{ sounds: true, graphics: 'medium' }}>\n  {({ set, get }) => (\n    <Maptings>\n      <ToggleCheck checked={get('sounds')} onChange={c => set('sounds', c)}>\n        Game Sounds\n      </ToggleCheck>\n      <Select\n        label=\"Graphics\"\n        options={['low', 'medium', 'high']}\n        selected={get('graphics')}\n        onSelect={value => set('graphics', value)}\n      />\n    </Maptings>\n  )}\n</Map>\n```\n\n### List\n\n**Component Props:** `{ initial, onChange }`  \n**Render Props:** `{ list, push, pull, sort, setList }`  \n[see docs](docs/components/List.md)\n\n```jsx\n<List initial={['react', 'babel']}>\n  {({ list, pull, push }) => (\n    <div>\n      <FormInput onSubmit={push} />\n      {list.map(tag => (\n        <Tag onRemove={() => pull(value => value === tag)}>\n          {tag}\n        </Tag>\n      )}\n    </div>\n  )}\n</List>\n```\n\n## Feedback Containers\n\n### Hover\n\n**Component Props:** `{ onChange }`  \n**Render Props:** `{ isHover, bindHover }`  \n[see docs](docs/components/Hover.md)\n\n```jsx\n<Hover>\n  {({ isHover, bindHover }) => (\n    <div {...bindHover}>\n      You are {isHover ? 'hovering' : 'not hovering'} this div.\n    </div>\n  )}\n</Hover>\n```\n\n### Active\n\n**Component Props:** `{ onChange }`  \n**Render Props:** `{ isActive, bindActive }`  \n[see docs](docs/components/Active.md)\n\n```jsx\n<Active>\n  {({ isActive, bindActive }) => (\n    <div {...bindActive}>\n      You are {isActive ? 'clicking' : 'not clicking'} this div.\n    </div>\n  )}\n</Active>\n```\n\n### Focus\n\n**Component Props:** `{ onChange }`  \n**Render Props:** `{ isFocus, bindFocus }`  \n[see docs](docs/components/Focus.md)\n\n```jsx\n<Focus>\n  {({ isFocus, bindFocus }) => (\n    <div>\n      <input {...bindFocus} placeholder=\"Focus me\" />\n      <div>You are {isFocus ? 'focusing' : 'not focusing'} the input.</div>\n    </div>\n  )}\n</Focus>\n```\n\n### Touch\n\n**Component Props:** `{ onChange }`  \n**Render Props:** `{ isTouched, bind }`  \n[see docs](docs/components/Touch.md)\n\n```jsx\n<Touch>\n  {({ isTouched, bind }) => (\n    <div {...bind}>\n      You are {isTouched ? 'touching' : 'not touching'} this div.\n    </div>\n  )}\n</Touch>\n```\n\n## Form Containers\n\n### Input\n\n**Component Props:** `{ initial, onChange, getValue }`  \n**Render Props:** `{ value, set, bind }`  \n[see docs](docs/components/Input.md)\n\n```jsx\n<Input initial=\"hello world\">\n  {({ bind, value }) => (\n    <div>\n      <ControlledInput {...bind} />\n      <div>You typed {value}</div>\n    </div>\n  )}\n</Input>\n```\n\n### Form\n\n**Component Props:** `{ initial, onChange, getValue }`  \n**Render Props:** `{ input }`  \n[see docs](docs/components/Form.md)\n\n```jsx\n<Form initial={{ subject: '', message: '' }}>\n  {({ input }) => {\n    const subject = input('subject')\n    const message = input('message')\n\n    return (\n      <div>\n        <ControlledInput\n          placeholder=\"Subject\"\n          {...subject.bind}\n        />\n        <ControlledTextArea\n          placeholder=\"Message\"\n          {...message.bind}\n        />\n        <Submit>Send</Submit>\n\n        {/*\n          input(id) => { bind, set, value }\n        */}\n      </div>\n    )\n  }\n</Form>\n```\n\n# Composing Components\n\nIf you want to merge two of more components functionalities, you can compose they in a single one.  \nFor complete guide [see Compose docs](docs/components/Compose.md)\n\n```jsx\nimport { compose } from 'react-powerplug'\n\nconst ToggleCounter = compose(Toggle, Counter)\n\n<ToggleCounter>\n  {({ toggle, on }, { count, inc, dec }) => (\n    <ProductCard\n      {...productInfo}\n      isFavorited={on}\n      onFavorite={toggle}\n      count={count}\n      onAdd={inc}\n      onRemove={dec}\n    />\n  )}\n</ToggleCounter>\n```\n\nIf you need to pass props, especially for `initial`, just pass a created element. Internals this will be cloned.\n\n```jsx\nconst ToggleCounter = compose(\n  <Toggle initial={false} />,\n  <Counter initial={2} />\n)\n\n// or just mix it\nconst ToggleCounter = compose(Toggle, <Counter initial={3} />)\n```\n\nAlso, you can use a built-in Compose component and pass components on `states` prop\n\n```jsx\nimport { Compose } from 'react-powerplug'\n\n<Compose states={[Toggle, Counter]}>\n  {(toggle, counter) => (\n    <ProductCard {...} />\n  )}\n</Compose>\n```\n\nBehind the scenes, that's what happens:\n\n```jsx\n<Counter /* passed props */>\n  {counter => (\n    <Toggle /* passed props */>\n      {toggle => (\n        <ProductCard\n          {...productInfo}\n          isFavorited={toggle.on}\n          onFavorite={toggle.toggle}\n          count={counter.count}\n          onAdd={counter.inc}\n          onRemove={counter.dec}\n        />\n      )}\n    </Toggle>\n  )}\n</Counter>\n```\n\nBecause of that, when you use `toggle` function, only `<Toggle>` will be rerendered, but if you use `inc` or `dec` functions, both `<Counter>` and `<Toggle>` will be rerendered. **Even** using `compose()` utility.\n\n# CodeSandbox examples\n\n[Using Toggle in a Checkbox](https://codesandbox.io/s/jp890p2x7w)  \n[Using State in a Pagination](https://codesandbox.io/s/8x9m4893l2)\n\n# Install\n\n### Node Module\n\n```\nyarn add react-powerplug\n```\n\n```\nnpm i react-powerplug\n```\n\n### UMD library\n\n```html\n<script src=\"https://unpkg.com/react-powerplug/dist/react-powerplug.min.js\"></script>\n```\n\nexposed as `ReactPowerPlug`\n\n# Contribute\n\nYou can help improving this project sending PRs and helping with issues.  \nAlso you can ping me at [Twitter](http://twitter.com/renatorib_)\n","_id":"react-powerplug@1.0.0-alpha.3","dist":{"shasum":"06fa6fb25d2d6e437a0d01eff755d91df491d9aa","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-1.0.0-alpha.3.tgz","fileCount":78,"unpackedSize":122208,"integrity":"sha512-NjOD8RGBKQv90BCIJ0eoEjWtv4ykTgvpLajmOrbVqFLspbsHJGycFqjdfFWtWFS4R/bGCCSub/Uda3fu74qB4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpulTvN2W9R1kYJnmhbyRNgnBAmuvgUn52sJms0gBijAIgdwGF6ovF0C5HQzeOLNYC214Ag96EbNTbLjxFza24yJE="}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_1.0.0-alpha.3_1519337098549_0.32246853527485464"},"_hasShrinkwrap":false},"1.0.0-alpha.4":{"name":"react-powerplug","version":"1.0.0-alpha.4","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"dist/react-powerplug.cjs.js","module":"dist/react-powerplug.esm.js","files":["dist","src"],"sideEffects":false,"scripts":{"build:flow":"echo \"// @flow\n\nexport * from '../src'\" > dist/react-powerplug.cjs.js.flow","build:code":"cross-env NODE_ENV=code rollup -c","build":"npm run clean && npm run build:code && npm run build:flow","clean":"rimraf dist","typecheck:flow":"flow check --max-warnings=0","lint":"eslint src","test:only":"npm run build:code && jest","test:umd":"jest --setupTestFrameworkScriptFile ./tests/jestUMDSetup.js","test:cjs":"jest --setupTestFrameworkScriptFile ./tests/jestCJSSetup.js","test":"npm run build && npm run lint && jest && npm run test:umd && npm run test:cjs","precommit":"lint-staged","prepublishOnly":"npm run clean && npm run build"},"lint-staged":{"*.{js,md}":["prettier --write","git add"]},"jest":{"globalSetup":"jest-environment-puppeteer/setup","globalTeardown":"jest-environment-puppeteer/teardown","transformIgnorePatterns":["/node_modules/","/dist/"]},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{"@babel/runtime":"^7.0.0-beta.42"},"devDependencies":{"@babel/cli":"^7.0.0-beta.42","@babel/core":"^7.0.0-beta.42","@babel/plugin-transform-modules-commonjs":"^7.0.0-beta.42","@babel/plugin-transform-runtime":"^7.0.0-beta.42","@babel/preset-env":"^7.0.0-beta.42","@babel/preset-react":"^7.0.0-beta.42","@babel/preset-stage-3":"^7.0.0-beta.42","babel-core":"^7.0.0-bridge.0","babel-eslint":"^8.2.2","babel-jest":"^22.1.0","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.66.0","husky":"^0.14.3","jest":"^22.1.1","jest-environment-node":"^22.4.3","jest-environment-puppeteer":"^2.0.0","lint-staged":"^6.0.0","prettier":"^1.10.2","puppeteer":"^1.0.0","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.57.1","rollup-plugin-babel":"^4.0.0-beta.3","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-size-snapshot":"^0.3.0","rollup-plugin-uglify":"^3.0.0"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"readme":"<h1 align=\"center\">\n  <img src=\"/logo.png\" alt=\"React PowerPlug\" />\n</h1>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/react-powerplug\" target=\"_blank\">\n    <img src=\"https://img.shields.io/npm/dt/react-powerplug.svg?style=flat-square\" alt=\"npm\" />\n  </a>\n  <a href=\"https://github.com/renatorib/react-powerplug/stargazers\" target=\"_blank\">\n    <img src=\"https://img.shields.io/github/stars/renatorib/react-powerplug.svg?style=flat-square\" alt=\"stars\" />\n  </a>\n  <a href=\"https://twitter.com/intent/tweet?url=https://github.com/renatorib/react-powerplug\" target=\"_blank\">\n    <img src=\"https://img.shields.io/twitter/url/https/github.com/renatorib/react-powerplug.svg?style=flat-square\" alt=\"tweet\" />\n  </a>\n</p>\n\n<br />\n \n > **React PowerPlug is a set of pluggable renderless components and helpers** that provides different types of state and logics so you can use with your dumb components. It creates a state and pass down the logic to the children, so you can handle your data. Read about [Render Props](https://reactjs.org/docs/render-props.html) pattern.\n \n \n## Highlights\n- :ok_hand: Dependency free\n- :electric_plug: Plug and play\n- :crystal_ball: Tree shaking friendly (ESM, no side effects)\n- :package: Super tiny (~4kb)\n- :books: Well documented\n- :beers: Bunch of awesome utilities\n\n<details>\n  <summary>See quick examples</summary>\n\n```jsx\nimport { State, Toggle } from 'react-powerplug'\nimport { Pagination, Tabs, Checkbox } from './MyDumbComponents'\n\n<State initial={{ offset: 0, limit: 10, totalCount: 200 }}>\n  {({ state, setState }) => (\n    <Pagination {...state} onChange={(offset) => setState({ offset })} />\n  )}\n</State>\n\n<Toggle initial={true}>\n  {({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n</Toggle>\n\n// You can also use a `render` prop instead\n\n<Toggle\n  initial={false}\n  render={({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n/>\n```\n\n</details>\n\n## Components\n\n> **_Note 1:_** This branch is **unstable** and is in **active development**.  \n> To the latest stable version go to [0.1-stable branch](https://github.com/renatorib/react-powerplug/tree/0.1-stable)\n\n> **_Note 2:_** _This is a kind of a cheat sheet for fast search._  \n> _If you want a more detailed **API Reference** and examples for each component see [full docs](/docs)_\n\n| Component                    | Component Props         | Render Props                                   |                                                                             |\n| ---------------------------- | ----------------------- | ---------------------------------------------- | --------------------------------------------------------------------------- |\n| <h6>STATE CONTAINERS</h6>    |\n| **\\<State>**                 | `{ initial, onChange }` | `{ state, setState }`                          | [:point_down:](#state) [:books:](docs/components/State.md)                  |\n| **\\<Toggle>**                | `{ initial, onChange }` | `{ on, toggle, set }`                          | [:point_down:](#toggle) [:books:](docs/components/Toggle.md)                |\n| **\\<Counter>**               | `{ initial, onChange }` | `{count, inc, dec, incBy, decBy, set }`        | [:point_down:](#counter) [:books:](docs/components/Counter.md)              |\n| **\\<Value>**                 | `{ initial, onChange }` | `{ value, setValue, set }`                     | [:point_down:](#value) [:books:](docs/components/Value.md)                  |\n| **\\<Map>**                   | `{ initial, onChange }` | `{ set, get, over, values }`                   | [:point_down:](#map) [:books:](docs/components/Map.md)                      |\n| **\\<Set>**                   | `{ initial, onChange }` | `{ values, add, clear, remove, has }`          | [:point_down:](#set) [:books:](docs/components/Set.md)                      |\n| **\\<List>**                  | `{ initial, onChange }` | `{ list, first, last, push, pull, sort, set }` | [:point_down:](#list) [:books:](docs/components/List.md)                    |\n| <h6>FEEDBACK CONTAINERS</h6> |\n| **\\<Hover>**                 | `{ onChange }`          | `{ isHovered, bind }`                          | [:point_down:](#hover) [:books:](docs/components/Hover.md)                  |\n| **\\<Active>**                | `{ onChange }`          | `{ isActive, bind }`                           | [:point_down:](#active) [:books:](docs/components/Active.md)                |\n| **\\<Focus>**                 | `{ onChange }`          | `{ isFocused, bind }`                          | [:point_down:](#focus) [:books:](docs/components/Focus.md)                  |\n| **\\<Touch>**                 | `{ onChange }`          | `{ isTouched, bind }`                          | [:point_down:](#touch) [:books:](docs/components/Touch.md)                  |\n| **\\<FocusManager>**          | `{ onChange }`          | `{ isFocused, blur, bind }`                    | [:point_down:](#focusmanager) [:books:](docs/components/FocusManager.md)    |\n| <h6>FORM CONTAINERS</h6>     |\n| **\\<Input>**                 | `{ initial, onChange }` | `{ set, value, bind }`                         | [:point_down:](#input) [:books:](docs/components/Input.md)                  |\n| **\\<Form>**                  | `{ initial, onChange }` | `{ input, values }`                            | [:point_down:](#form) [:books:](docs/components/Form.md)                    |\n| <h6>OTHER</h6>               |\n| **\\<Compose>**               | `{ components }`        | _depends on components prop_                   | [:point_down:](#composing-components) [:books:](docs/components/Compose.md) |\n\n## Utilities\n\n| Name                          |                                        |\n| ----------------------------- | -------------------------------------- |\n| compose(...components)        | [:books:](docs/utils/compose.md)       |\n| composeEvents(...objOfEvents) | [:books:](docs/utils/composeEvents.md) |\n\n## Examples\n\n#### State\n\n```jsx\n<State initial={{ isLoading: false, data: null }}>\n  {({ state, setState }) => (\n    <DataReceiver\n      data={state.data}\n      onStart={() => setState({ isLoading: true })}\n      onFinish={data => setState({ data, isLoading: false })}\n    />\n  )}\n</State>\n```\n\n#### Toggle\n\n```jsx\n<Toggle initial={true}>\n  {({ on, toggle }) => <Checkbox checked={on} onChange={toggle} />}\n</Toggle>\n```\n\n#### Counter\n\n```jsx\n<Counter initial={0}>\n  {({ count, inc, dec }) => (\n    <CartItem\n      productName=\"Lorem ipsum\"\n      unitPrice={19.9}\n      count={count}\n      onAdd={inc}\n      onRemove={dec}\n    />\n  )}\n</Counter>\n```\n\n#### Value\n\n```jsx\n<Value initial=\"React\">\n  {({ value, setValue }) => (\n    <Select\n      label=\"Choose one\"\n      options={['React', 'Angular', 'Vue']}\n      value={value}\n      onChange={setValue}\n    />\n  )}\n</Value>\n```\n\n#### Map\n\n```jsx\n<Map initial={{ sounds: true, graphics: 'medium' }}>\n  {({ set, get }) => (\n    <Settings>\n      <ToggleCheck checked={get('sounds')} onChange={c => set('sounds', c)}>\n        Game Sounds\n      </ToggleCheck>\n      <Select\n        label=\"Graphics\"\n        options={['low', 'medium', 'high']}\n        selected={get('graphics')}\n        onSelect={value => set('graphics', value)}\n      />\n    </Settings>\n  )}\n</Map>\n```\n\n#### Set\n\n```jsx\n<Set initial={['react', 'babel']}>\n  {({ values, remove, add }) => (\n    <TagManager>\n      <FormInput onSubmit={add} />\n      {values.map(tag => (\n        <Tag onRemove={() => remove(tag)}>{tag}</Tag>\n      )}\n    </TagManager>\n  )}\n</Set>\n```\n\n#### List\n\n```jsx\n<List initial={['Buy new shoes']}>\n  {({ list, pull, push }) => (\n    <Todo>\n      <TodoFormInput onSubmit={push} />\n      {list.map(todo => (\n        <TodoItem onDelete={() => pull(i => i === todo)}>\n          {todo}\n        </TodoItem>\n      )}\n    </Todo>\n  )}\n</List>\n```\n\n#### Hover\n\n```jsx\n<Hover>\n  {({ isHovered, bind }) => (\n    <div {...bind}>\n      You are {isHovered ? 'hovering' : 'not hovering'} this div.\n    </div>\n  )}\n</Hover>\n```\n\n#### Active\n\n```jsx\n<Active>\n  {({ isActive, bind }) => (\n    <div {...bind}>\n      You are {isActive ? 'clicking' : 'not clicking'} this div.\n    </div>\n  )}\n</Active>\n```\n\n#### Touch\n\n```jsx\n<Touch>\n  {({ isTouched, bind }) => (\n    <div {...bind}>\n      You are {isTouched ? 'touching' : 'not touching'} this div.\n    </div>\n  )}\n</Touch>\n```\n\n#### Focus\n\n```jsx\n<Focus>\n  {({ isFocused, bind }) => (\n    <div>\n      <input {...bind} placeholder=\"Focus me\" />\n      <div>You are {isFocused ? 'focusing' : 'not focusing'} input.</div>\n    </div>\n  )}\n</Focus>\n```\n\n#### Input\n\n```jsx\n<Input initial=\"hello world\">\n  {({ bind, value }) => (\n    <div>\n      <ControlledInput {...bind} />\n      <div>You typed {value}</div>\n    </div>\n  )}\n</Input>\n```\n\n#### Form\n\n```jsx\n<Form initial={{ subject: '', message: '' }}>\n  {({ input, values }) => (\n    <form\n      onSubmit={e => {\n        e.preventDefault()\n        console.log(values)\n      }}\n    >\n      <ControlledInput placeholder=\"Subject\" {...input('subject').bind} />\n      <ControlledTextArea placeholder=\"Message\" {...input('message').bind} />\n      <Submit>Send</Submit>\n\n      {/*\n                                                              input(id) => { bind, set, value }\n                                                            */}\n    </form>\n  )}\n</Form>\n```\n\n# Composing Components\n\nIf you want to avoid 'render props hell' you can compose two or more components in a single one.  \n**[:books: For complete guide, see docs](docs/components/Compose.md)**\n\n```jsx\nimport { Compose } from 'react-powerplug'\n\n<Compose components={[Toggle, Counter]}>\n  {(toggle, counter) => (/* ... */)}\n</Compose>\n```\n\n```jsx\nimport { compose } from 'react-powerplug'\n\nconst ToggleCounter = compose(\n  <Counter initial={5} />,\n  <Toggle initial={false} />\n)\n\n<ToggleCounter>\n  {(toggle, counter) => (\n    <ProductCard {...} />\n  )}\n</ToggleCounter>\n```\n\n---\n\n<p align=\"center\">\n  <a href=\"https://egghead.io/lessons/react-rapid-prototyping-with-react-powerplug\" target=\"_blank\">\n    <img src=\"https://user-images.githubusercontent.com/3277185/37249517-cde30352-24c7-11e8-8f3a-614e2162784d.png\" alt=\"Watch 'Rapid Prototyping with React PowerPlug' by Andrew Del Prete on egghead.io\" />\n  </a>\n</p>\n\n---\n\n# Install\n\n### Node Module\n\n```\nyarn add react-powerplug\n```\n\n```\nnpm i react-powerplug\n```\n\n### UMD\n\n```html\n<script src=\"https://unpkg.com/react-powerplug/dist/react-powerplug.min.js\"></script>\n```\n\nexposed as `ReactPowerPlug`\n\n# Contribute\n\nYou can help improving this project sending PRs and helping with issues.  \nAlso you can ping me at [Twitter](http://twitter.com/renatorib_)\n","readmeFilename":"README.md","gitHead":"20fe31899df543a8d2f92f844a732699448f029d","_id":"react-powerplug@1.0.0-alpha.4","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"dist":{"integrity":"sha512-rxfo5a3EkblAlkIXZKM8Z8yxCI7M/8a2zUOlJkFitfXJlSCS4KoXhq0cGJixqSYXB4m2/Oh+r1i8i9s5UuOkSA==","shasum":"7f299a491cb62761c07df6a2327275274e99dbdf","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-1.0.0-alpha.4.tgz","fileCount":30,"unpackedSize":96887,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3Vb7FhwvkhwYzqPvmH0sYAu/UK/zBQwsYAPk4Su2jJAIhAKrGk8g3XGSaU/g1RfREonpOanAJadDAHCFmNnu8srnF"}]},"maintainers":[{"name":"renatorib","email":"ola@rena.to"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_1.0.0-alpha.4_1523410522230_0.490737806172"},"_hasShrinkwrap":false},"1.0.0-alpha.6":{"name":"react-powerplug","version":"1.0.0-alpha.6","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"dist/react-powerplug.cjs.js","module":"dist/react-powerplug.esm.js","files":["dist","src"],"scripts":{"build:flow":"echo \"// @flow\n\nexport * from '../src'\" > dist/react-powerplug.cjs.js.flow","build:code":"cross-env NODE_ENV=code rollup -c","build":"npm run clean && npm run build:code && npm run build:flow","clean":"rimraf dist","typecheck:flow":"flow check --max-warnings=0","lint":"eslint src","test:only":"jest","test:umd":"jest --setupTestFrameworkScriptFile ./tests/jestUMDSetup.js","test:cjs":"jest --setupTestFrameworkScriptFile ./tests/jestCJSSetup.js","test":"npm run build && npm run lint && jest && npm run test:umd && npm run test:cjs","precommit":"lint-staged","prepublishOnly":"npm run clean && npm run build"},"lint-staged":{"*.{js,md}":["prettier --write","git add"]},"jest":{"globalSetup":"jest-environment-puppeteer/setup","globalTeardown":"jest-environment-puppeteer/teardown","transformIgnorePatterns":["/node_modules/","/dist/"]},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{"@babel/runtime":"^7.0.0-beta.46"},"devDependencies":{"@babel/cli":"^7.0.0-beta.46","@babel/core":"^7.0.0-beta.46","@babel/plugin-transform-modules-commonjs":"^7.0.0-beta.46","@babel/plugin-transform-runtime":"^7.0.0-beta.46","@babel/preset-env":"^7.0.0-beta.46","@babel/preset-react":"^7.0.0-beta.46","@babel/preset-stage-3":"^7.0.0-beta.46","babel-core":"^7.0.0-bridge.0","babel-eslint":"^8.2.2","babel-jest":"^22.1.0","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.66.0","husky":"^0.14.3","jest":"^22.1.1","jest-environment-node":"^22.4.3","jest-environment-puppeteer":"^2.0.0","lint-staged":"^6.0.0","prettier":"^1.10.2","puppeteer":"^1.0.0","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.59.1","rollup-plugin-babel":"^4.0.0-beta.4","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-size-snapshot":"^0.4.1","rollup-plugin-uglify":"^4.0.0"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"readme":"<h1 align=\"center\">\n  <img src=\"/logo.png\" alt=\"React PowerPlug\" />\n</h1>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/react-powerplug\" target=\"_blank\">\n    <img src=\"https://img.shields.io/npm/dt/react-powerplug.svg?style=flat-square\" alt=\"npm\" />\n  </a>\n  <a href=\"https://github.com/renatorib/react-powerplug/stargazers\" target=\"_blank\">\n    <img src=\"https://img.shields.io/github/stars/renatorib/react-powerplug.svg?style=flat-square\" alt=\"stars\" />\n  </a>\n  <a href=\"https://twitter.com/intent/tweet?url=https://github.com/renatorib/react-powerplug\" target=\"_blank\">\n    <img src=\"https://img.shields.io/twitter/url/https/github.com/renatorib/react-powerplug.svg?style=flat-square\" alt=\"tweet\" />\n  </a>\n</p>\n\n<br />\n \n > **React PowerPlug is a set of pluggable renderless components and helpers** that provides different types of state and logics so you can use with your dumb components. It creates a state and pass down the logic to the children, so you can handle your data. Read about [Render Props](https://reactjs.org/docs/render-props.html) pattern.\n \n \n## Highlights\n- :ok_hand: Dependency free\n- :electric_plug: Plug and play\n- :crystal_ball: Tree shaking friendly (ESM, no side effects)\n- :package: Super tiny (~3kb)\n- :books: Well documented\n- :beers: Bunch of awesome utilities\n\n<details>\n  <summary>See quick examples</summary>\n\n```jsx\nimport { State, Toggle } from 'react-powerplug'\nimport { Pagination, Tabs, Checkbox } from './MyDumbComponents'\n\n<State initial={{ offset: 0, limit: 10, totalCount: 200 }}>\n  {({ state, setState }) => (\n    <Pagination {...state} onChange={(offset) => setState({ offset })} />\n  )}\n</State>\n\n<Toggle initial={true}>\n  {({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n</Toggle>\n\n// You can also use a `render` prop instead\n\n<Toggle\n  initial={false}\n  render={({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n/>\n```\n\n</details>\n\n## ⚠️ Master is unstable\n\n> This branch is **unstable** and is in **active development**.  \n> For the latest stable version go to [0.1-stable branch](https://github.com/renatorib/react-powerplug/tree/0.1-stable)\n\n## Components\n\n> **_Note_** _This is a kind of a cheat sheet for fast search._  \n> _If you want a more detailed **API Reference** and examples for each component see [full docs](/docs)_\n\n| Component                    | Component Props         | Render Props                                   |                                                                             |\n| ---------------------------- | ----------------------- | ---------------------------------------------- | --------------------------------------------------------------------------- |\n| <h6>STATE CONTAINERS</h6>    |\n| **\\<State>**                 | `{ initial, onChange }` | `{ state, setState }`                          | [:point_down:](#state) [:books:](docs/components/State.md)                  |\n| **\\<Toggle>**                | `{ initial, onChange }` | `{ on, toggle, set }`                          | [:point_down:](#toggle) [:books:](docs/components/Toggle.md)                |\n| **\\<Counter>**               | `{ initial, onChange }` | `{ count, inc, dec, incBy, decBy, set }`       | [:point_down:](#counter) [:books:](docs/components/Counter.md)              |\n| **\\<Value>**                 | `{ initial, onChange }` | `{ value, setValue, set }`                     | [:point_down:](#value) [:books:](docs/components/Value.md)                  |\n| **\\<Map>**                   | `{ initial, onChange }` | `{ set, get, over, values }`                   | [:point_down:](#map) [:books:](docs/components/Map.md)                      |\n| **\\<Set>**                   | `{ initial, onChange }` | `{ values, add, clear, remove, has }`          | [:point_down:](#set) [:books:](docs/components/Set.md)                      |\n| **\\<List>**                  | `{ initial, onChange }` | `{ list, first, last, push, pull, sort, set }` | [:point_down:](#list) [:books:](docs/components/List.md)                    |\n| <h6>FEEDBACK CONTAINERS</h6> |\n| **\\<Hover>**                 | `{ onChange }`          | `{ isHovered, bind }`                          | [:point_down:](#hover) [:books:](docs/components/Hover.md)                  |\n| **\\<Active>**                | `{ onChange }`          | `{ isActive, bind }`                           | [:point_down:](#active) [:books:](docs/components/Active.md)                |\n| **\\<Focus>**                 | `{ onChange }`          | `{ isFocused, bind }`                          | [:point_down:](#focus) [:books:](docs/components/Focus.md)                  |\n| **\\<Touch>**                 | `{ onChange }`          | `{ isTouched, bind }`                          | [:point_down:](#touch) [:books:](docs/components/Touch.md)                  |\n| **\\<FocusManager>**          | `{ onChange }`          | `{ isFocused, blur, bind }`                    | [:point_down:](#focusmanager) [:books:](docs/components/FocusManager.md)    |\n| <h6>FORM CONTAINERS</h6>     |\n| **\\<Input>**                 | `{ initial, onChange }` | `{ set, value, bind }`                         | [:point_down:](#input) [:books:](docs/components/Input.md)                  |\n| **\\<Form>**                  | `{ initial, onChange }` | `{ input, values }`                            | [:point_down:](#form) [:books:](docs/components/Form.md)                    |\n| <h6>OTHER</h6>               |\n| **\\<Interval>**              | `{ delay }`             | `{ stop, start, toggle }`                      | [:point_down:](#interval) [:books:](docs/components/Interval.md)            |\n| **\\<Compose>**               | `{ components }`        | _depends on components prop_                   | [:point_down:](#composing-components) [:books:](docs/components/Compose.md) |\n\n## Utilities\n\n| Name                          |                                        |\n| ----------------------------- | -------------------------------------- |\n| compose(...components)        | [:books:](docs/utils/compose.md)       |\n| composeEvents(...objOfEvents) | [:books:](docs/utils/composeEvents.md) |\n\n## Examples\n\n#### State\n\n```jsx\n<State initial={{ isLoading: false, data: null }}>\n  {({ state, setState }) => (\n    <DataReceiver\n      data={state.data}\n      onStart={() => setState({ isLoading: true })}\n      onFinish={data => setState({ data, isLoading: false })}\n    />\n  )}\n</State>\n```\n\n#### Toggle\n\n```jsx\n<Toggle initial={true}>\n  {({ on, toggle }) => <Checkbox checked={on} onChange={toggle} />}\n</Toggle>\n```\n\n#### Counter\n\n```jsx\n<Counter initial={0}>\n  {({ count, inc, dec }) => (\n    <CartItem\n      productName=\"Lorem ipsum\"\n      unitPrice={19.9}\n      count={count}\n      onAdd={inc}\n      onRemove={dec}\n    />\n  )}\n</Counter>\n```\n\n#### Value\n\n```jsx\n<Value initial=\"React\">\n  {({ value, setValue }) => (\n    <Select\n      label=\"Choose one\"\n      options={['React', 'Angular', 'Vue']}\n      value={value}\n      onChange={setValue}\n    />\n  )}\n</Value>\n```\n\n#### Map\n\n```jsx\n<Map initial={{ sounds: true, graphics: 'medium' }}>\n  {({ set, get }) => (\n    <Settings>\n      <ToggleCheck checked={get('sounds')} onChange={c => set('sounds', c)}>\n        Game Sounds\n      </ToggleCheck>\n      <Select\n        label=\"Graphics\"\n        options={['low', 'medium', 'high']}\n        selected={get('graphics')}\n        onSelect={value => set('graphics', value)}\n      />\n    </Settings>\n  )}\n</Map>\n```\n\n#### Set\n\n```jsx\n<Set initial={['react', 'babel']}>\n  {({ values, remove, add }) => (\n    <TagManager>\n      <FormInput onSubmit={add} />\n      {values.map(tag => (\n        <Tag onRemove={() => remove(tag)}>{tag}</Tag>\n      )}\n    </TagManager>\n  )}\n</Set>\n```\n\n#### List\n\n```jsx\n<List initial={['Buy new shoes']}>\n  {({ list, pull, push }) => (\n    <Todo>\n      <TodoFormInput onSubmit={push} />\n      {list.map(todo => (\n        <TodoItem onDelete={() => pull(i => i === todo)}>\n          {todo}\n        </TodoItem>\n      )}\n    </Todo>\n  )}\n</List>\n```\n\n#### Hover\n\n```jsx\n<Hover>\n  {({ isHovered, bind }) => (\n    <div {...bind}>\n      You are {isHovered ? 'hovering' : 'not hovering'} this div.\n    </div>\n  )}\n</Hover>\n```\n\n#### Active\n\n```jsx\n<Active>\n  {({ isActive, bind }) => (\n    <div {...bind}>\n      You are {isActive ? 'clicking' : 'not clicking'} this div.\n    </div>\n  )}\n</Active>\n```\n\n#### Touch\n\n```jsx\n<Touch>\n  {({ isTouched, bind }) => (\n    <div {...bind}>\n      You are {isTouched ? 'touching' : 'not touching'} this div.\n    </div>\n  )}\n</Touch>\n```\n\n#### Focus\n\n```jsx\n<Focus>\n  {({ isFocused, bind }) => (\n    <div>\n      <input {...bind} placeholder=\"Focus me\" />\n      <div>You are {isFocused ? 'focusing' : 'not focusing'} input.</div>\n    </div>\n  )}\n</Focus>\n```\n\n#### Input\n\n```jsx\n<Input initial=\"hello world\">\n  {({ bind, value }) => (\n    <div>\n      <ControlledInput {...bind} />\n      <div>You typed {value}</div>\n    </div>\n  )}\n</Input>\n```\n\n#### Form\n\n```jsx\n<Form initial={{ subject: '', message: '' }}>\n  {({ input, values }) => (\n    <form\n      onSubmit={e => {\n        e.preventDefault()\n        console.log(values)\n      }}\n    >\n      <ControlledInput placeholder=\"Subject\" {...input('subject').bind} />\n      <ControlledTextArea placeholder=\"Message\" {...input('message').bind} />\n      <Submit>Send</Submit>\n\n      {/*\n                                                                                                                    input(id) => { bind, set, value }\n                                                                                                                  */}\n    </form>\n  )}\n</Form>\n```\n\n### Interval\n\n```jsx\n<Interval delay={1000}>\n  {({ stop, start }) => (\n    <>\n      <div>The time is now {new Date().toLocaleTimeString()}</div>\n      <button onClick={() => stop()}>Stop interval</button>\n      <button onClick={() => start()}>Start interval</button>\n    </>\n  )}\n</Interval>\n```\n\n# Composing Components\n\nIf you want to avoid 'render props hell' you can compose two or more components in a single one.  \n**[:books: For complete guide, see docs](docs/components/Compose.md)**\n\n```jsx\nimport { Compose } from 'react-powerplug'\n\n<Compose components={[Toggle, Counter]}>\n  {(toggle, counter) => (/* ... */)}\n</Compose>\n```\n\n```jsx\nimport { compose } from 'react-powerplug'\n\nconst ToggleCounter = compose(\n  <Counter initial={5} />,\n  <Toggle initial={false} />\n)\n\n<ToggleCounter>\n  {(toggle, counter) => (\n    <ProductCard {...} />\n  )}\n</ToggleCounter>\n```\n\n---\n\n<p align=\"center\">\n  <a href=\"https://egghead.io/lessons/react-rapid-prototyping-with-react-powerplug\" target=\"_blank\">\n    <img src=\"https://user-images.githubusercontent.com/3277185/37249517-cde30352-24c7-11e8-8f3a-614e2162784d.png\" alt=\"Watch 'Rapid Prototyping with React PowerPlug' by Andrew Del Prete on egghead.io\" />\n  </a>\n</p>\n\n---\n\n# Install\n\n### Node Module\n\n```\nyarn add react-powerplug\n```\n\n```\nnpm i react-powerplug\n```\n\n### UMD\n\n```html\n<script src=\"https://unpkg.com/react-powerplug/dist/react-powerplug.min.js\"></script>\n```\n\nexposed as `ReactPowerPlug`\n\n# Contribute\n\nYou can help improving this project sending PRs and helping with issues.  \nAlso you can ping me at [Twitter](http://twitter.com/renatorib_)\n","readmeFilename":"README.md","gitHead":"c04a47b96ddcd486c465626f14e9739012e8668f","_id":"react-powerplug@1.0.0-alpha.6","_npmVersion":"6.0.1","_nodeVersion":"9.11.1","_npmUser":{"name":"trysound","email":"trysound@yandex.ru"},"dist":{"integrity":"sha512-oqfegxou8QkPsv1wxT+QM760IqGRvrRqOfM5k4IcqMwJx75pfdIpgWK+V/+lvwBy7FoibYIfZInq+xTziVwz0A==","shasum":"af64d904801b4ad78187e719966848256fa86803","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-1.0.0-alpha.6.tgz","fileCount":31,"unpackedSize":106154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBTqZCRA9TVsSAnZWagAAhQoP/jvHcQpYMWCLT3TzH/6/\nT0uC4dyCUWSGFmkNn49TYjfYo7s7c1GZItEYjPAtdudY3JrR7m+/knodyIk1\n3hFd4uxatecyAwdBUxmb3amgqiVzVXtk7xTR+CQjmp/bk0C2UkWyqsuMJmSg\naFU1kjgDHswsy1jwTON6Z4l1SUBT3JkqLqOn+Ybsto0XOuzK/cW9q0qde5y7\n8BoF0sUbPGHdiFKjKEKwdgK5FtIzC4wJrERezoQwgV+M/DJT028x9RGJxi3e\n8/ROxcYYUmenF07T1xGbp2WYS7EFh0B7w+e6NOyVXw8I6whc5yCm2746gX5M\n/sDD2XMXdd0iZPd4i+NuC6DydFMYAtT4Siw017YGRJfyd/cH2MqvD9XlEitQ\nuViHBDKqchBqUgEX5TVHzxsaW9dGAtlrwt/y/4vlYwKMwFA4CSAUDO1+gI22\nUpecbbiwAkq1jkJnKP64Abr1ZEqb6XheS8WoVFp1qP3mryE+xapKwc2epVVd\nJp17675ACDohEQUITvEywqtQ9kdxVT1XPEQuFRtrzTBQ1i9cVsJ5Pd7ktX+S\nSHK2ECc01aDHhVAiYE0Ja/eN77m0KoVLIvtQBS//zIPV9E+oHIjrCQEXL+WW\nCtjFc1yS1Y13bJ2li42Vb2qUkDet8oCkQhVgA1IRtB+4Il4DscMB1b9Ebx5j\nD0tK\r\n=zMCB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRJggiSUboJqCgp6FwoaUiJG1P57L6llqT28iupVcRsQIhAM/O8+0aQV00NTgBCw2NNIF2X/VlBvR/KWGpSXWa3wi6"}]},"maintainers":[{"email":"renatoribroman@gmail.com","name":"renatorib"},{"email":"trysound@yandex.ru","name":"trysound"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_1.0.0-alpha.6_1527069336837_0.35342381221550845"},"_hasShrinkwrap":false},"1.0.0-alpha.7":{"name":"react-powerplug","version":"1.0.0-alpha.7","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"dist/react-powerplug.cjs.js","module":"dist/react-powerplug.esm.js","files":["dist","src"],"scripts":{"build:flow":"echo \"// @flow\n\nexport * from '../src'\" > dist/react-powerplug.cjs.js.flow","build:code":"cross-env NODE_ENV=code rollup -c","build":"npm run clean && npm run build:code && npm run build:flow","clean":"rimraf dist","typecheck:flow":"flow check --max-warnings=0","lint":"eslint src test","test:only":"jest","test:umd":"jest --setupTestFrameworkScriptFile ./tests/jestUMDSetup.js","test:cjs":"jest --setupTestFrameworkScriptFile ./tests/jestCJSSetup.js","test":"npm run build && npm run lint && jest && npm run test:umd && npm run test:cjs","precommit":"lint-staged","prepublishOnly":"npm run clean && npm run build"},"lint-staged":{"*.{js,md}":["prettier --write","git add"]},"jest":{"globalSetup":"jest-environment-puppeteer/setup","globalTeardown":"jest-environment-puppeteer/teardown","transformIgnorePatterns":["/node_modules/","/dist/"]},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{"@babel/runtime":"7.0.0-beta.49"},"devDependencies":{"@babel/cli":"^7.0.0-beta.49","@babel/core":"^7.0.0-beta.49","@babel/plugin-transform-modules-commonjs":"^7.0.0-beta.49","@babel/plugin-transform-runtime":"^7.0.0-beta.49","@babel/preset-env":"^7.0.0-beta.49","@babel/preset-react":"^7.0.0-beta.49","@babel/preset-stage-3":"^7.0.0-beta.49","babel-core":"^7.0.0-bridge.0","babel-eslint":"^8.2.2","babel-jest":"^23.0.0","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.66.0","husky":"^0.14.3","jest":"^23.0.0","jest-environment-node":"^23.0.0","jest-environment-puppeteer":"^2.4.0","lint-staged":"^6.0.0","prettier":"^1.10.2","puppeteer":"^1.4.0","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.59.3","rollup-plugin-babel":"^4.0.0-beta.4","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-size-snapshot":"^0.5.1","rollup-plugin-uglify":"^4.0.0"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"dc718e99faf27a49edf804118647b78a2e714f5b","_id":"react-powerplug@1.0.0-alpha.7","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"trysound","email":"trysound@yandex.ru"},"dist":{"integrity":"sha512-KjydNp0WAE7k13ezLWEKdiq5E3c5JovdWdoikv+hCAAC+fdBLEJBfUOr25gtAlrYHno4DnexSdNjT52D2clqfA==","shasum":"aaba5d773fdd655e1e48cae37b9251d9d72a44a4","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-1.0.0-alpha.7.tgz","fileCount":31,"unpackedSize":107435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEV0UCRA9TVsSAnZWagAAV3sP/iLSQPn25lKBkOqRMyxB\nMNTSOApHvHTdk2S4CERPtiJuA4Y9HHI6Hbrq/RmfOM8xuBfzj4AoozAkvNZ/\nOh55p0ckQc7Z2d+7anYKVrvtcL9oDK2+NLPb1oUF3CCV8ZZhjIfwG3KM9Agd\nf+8j3QuInXox8RgSMDea7gGtLYFO294drdh1ZfXWPFNAoKfCe+P4n5ifnrWX\n+xhl/5MptF6y5FBfU7a6yxnjtx5gSVSfu+Y9hzLTrit5hTwzeJglSGpoBaOf\nMcIXY3At+EHIfWxDJXQg22s04N0ndRVycGcwl/bkMrERBdDq+66UWCDcRMpM\n8LkYcpX8/RJFv4mPHAamknUqsLPVfsMx4GhAOWfZb/Ga22/vMwsFZA9sjGXB\n94WsDTXnIf5OOklzyAxahN6OYw4TnkUYs+FBRMLh67YtNccMoZQdjJiHNj2D\n54oQM7/E3/au09lW2ZPSJj1z9kPw2kMQQH3342uAsCTZOiJi2Man+0lBtogG\nf+prs96ciCMVl8DneSmps/C9SmvlvToZ5gt1Il8HCNC7om2CaBN5QC3dP4AC\nSosSXtlJpMC7CYFgAlgYUJ+CbAosCxeWScXZyAcGDnDaJjom675u/cD8Ztrk\nwHzH9c3Et5EkEEe5l44BtDt/p8qe33xYFLBoRO3v0E7WjaSDPut2lruZTML+\nsU3H\r\n=Lp9v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmix/HZUEPBLaT8xQkkmjPiDuFRcoYeoq3n1nwnu5/8AiBbsM9fVTVqrwQtrPQ4GaK4SfHN75sKL47BWQbPe+0etw=="}]},"maintainers":[{"email":"renatoribroman@gmail.com","name":"renatorib"},{"email":"trysound@yandex.ru","name":"trysound"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_1.0.0-alpha.7_1527864594845_0.3354007630560405"},"_hasShrinkwrap":false},"1.0.0-rc.0":{"name":"react-powerplug","version":"1.0.0-rc.0","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"dist/react-powerplug.cjs.js","module":"dist/react-powerplug.esm.js","files":["dist","src"],"scripts":{"build:flow":"echo \"// @flow\n\nexport * from '../src'\" > dist/react-powerplug.cjs.js.flow","build:code":"cross-env NODE_ENV=code rollup -c","build":"npm run clean && npm run build:code && npm run build:flow","clean":"rimraf dist","typecheck:flow":"flow check --max-warnings=0","lint":"eslint src test","test:only":"jest","test:umd":"jest --setupTestFrameworkScriptFile ./tests/jestUMDSetup.js","test:cjs":"jest --setupTestFrameworkScriptFile ./tests/jestCJSSetup.js","test":"npm run build && npm run lint && jest && npm run test:umd && npm run test:cjs","precommit":"lint-staged","prepublishOnly":"npm run clean && npm run build","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate"},"lint-staged":{"*.{js,md}":["prettier --write","git add"]},"jest":{"globalSetup":"jest-environment-puppeteer/setup","globalTeardown":"jest-environment-puppeteer/teardown","transformIgnorePatterns":["/node_modules/","/dist/"]},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{"@babel/runtime":"7.0.0-beta.49"},"devDependencies":{"@babel/cli":"^7.0.0-beta.49","@babel/core":"^7.0.0-beta.49","@babel/plugin-transform-modules-commonjs":"^7.0.0-beta.49","@babel/plugin-transform-runtime":"^7.0.0-beta.49","@babel/preset-env":"^7.0.0-beta.49","@babel/preset-react":"^7.0.0-beta.49","@babel/preset-stage-3":"^7.0.0-beta.49","all-contributors-cli":"^4.11.2","babel-core":"^7.0.0-bridge.0","babel-eslint":"^8.2.2","babel-jest":"^23.0.0","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.66.0","husky":"^0.14.3","jest":"^23.0.0","jest-environment-node":"^23.0.0","jest-environment-puppeteer":"^2.4.0","lint-staged":"^6.0.0","prettier":"^1.10.2","puppeteer":"^1.4.0","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.59.3","rollup-plugin-babel":"^4.0.0-beta.4","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-size-snapshot":"^0.5.1","rollup-plugin-uglify":"^4.0.0"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"readme":"<h1 align=\"center\">\n  <img src=\"/logo.png\" alt=\"React PowerPlug\" />\n</h1>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/react-powerplug\" target=\"_blank\">\n    <img src=\"https://img.shields.io/npm/dt/react-powerplug.svg?style=flat-square\" alt=\"npm\" />\n  </a>\n  <a href=\"https://github.com/renatorib/react-powerplug/stargazers\" target=\"_blank\">\n    <img src=\"https://img.shields.io/github/stars/renatorib/react-powerplug.svg?style=flat-square\" alt=\"stars\" />\n  </a>\n  <a href=\"https://twitter.com/intent/tweet?url=https://github.com/renatorib/react-powerplug\" target=\"_blank\">\n    <img src=\"https://img.shields.io/twitter/url/https/github.com/renatorib/react-powerplug.svg?style=flat-square\" alt=\"tweet\" />\n  </a>\n</p>\n\n<br />\n \n > **React PowerPlug is a set of pluggable renderless components and helpers** that provides different types of state and logics so you can use with your dumb components. It creates a state and pass down the logic to the children, so you can handle your data. Read about [Render Props](https://reactjs.org/docs/render-props.html) pattern.\n \n \n## Highlights\n- :ok_hand: Dependency free\n- :electric_plug: Plug and play\n- :crystal_ball: Tree shaking friendly (ESM, no side effects)\n- :package: Super tiny (~3kb)\n- :books: Well documented\n- :beers: Bunch of awesome utilities\n\n<details>\n  <summary>See quick examples</summary>\n\n```jsx\nimport { State, Toggle } from 'react-powerplug'\nimport { Pagination, Tabs, Checkbox } from './MyDumbComponents'\n\n<State initial={{ offset: 0, limit: 10, totalCount: 200 }}>\n  {({ state, setState }) => (\n    <Pagination {...state} onChange={(offset) => setState({ offset })} />\n  )}\n</State>\n\n<Toggle initial={true}>\n  {({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n</Toggle>\n\n// You can also use a `render` prop instead\n\n<Toggle\n  initial={false}\n  render={({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n/>\n```\n\n</details>\n\n## ⚠️ Master is unstable\n\n> This branch is **unstable** and is in **active development**.  \n> For the latest stable version go to [0.1-stable branch](https://github.com/renatorib/react-powerplug/tree/0.1-stable)\n\n## Components\n\n> **_Note_** _This is a kind of a cheat sheet for fast search._  \n> _If you want a more detailed **API Reference** and examples for each component see [full docs](/docs)_\n\n| Component                    | Component Props         | Render Props                                   |                                                                             |\n| ---------------------------- | ----------------------- | ---------------------------------------------- | --------------------------------------------------------------------------- |\n| <h6>STATE CONTAINERS</h6>    |\n| **\\<State>**                 | `{ initial, onChange }` | `{ state, setState }`                          | [:point_down:](#state) [:books:](docs/components/State.md)                  |\n| **\\<Toggle>**                | `{ initial, onChange }` | `{ on, toggle, set }`                          | [:point_down:](#toggle) [:books:](docs/components/Toggle.md)                |\n| **\\<Counter>**               | `{ initial, onChange }` | `{ count, inc, dec, incBy, decBy, set }`       | [:point_down:](#counter) [:books:](docs/components/Counter.md)              |\n| **\\<Value>**                 | `{ initial, onChange }` | `{ value, setValue, set }`                     | [:point_down:](#value) [:books:](docs/components/Value.md)                  |\n| **\\<Map>**                   | `{ initial, onChange }` | `{ set, get, over, values }`                   | [:point_down:](#map) [:books:](docs/components/Map.md)                      |\n| **\\<Set>**                   | `{ initial, onChange }` | `{ values, add, clear, remove, has }`          | [:point_down:](#set) [:books:](docs/components/Set.md)                      |\n| **\\<List>**                  | `{ initial, onChange }` | `{ list, first, last, push, pull, sort, set }` | [:point_down:](#list) [:books:](docs/components/List.md)                    |\n| <h6>FEEDBACK CONTAINERS</h6> |\n| **\\<Hover>**                 | `{ onChange }`          | `{ hovered, bind }`                            | [:point_down:](#hover) [:books:](docs/components/Hover.md)                  |\n| **\\<Active>**                | `{ onChange }`          | `{ active, bind }`                             | [:point_down:](#active) [:books:](docs/components/Active.md)                |\n| **\\<Focus>**                 | `{ onChange }`          | `{ focused, bind }`                            | [:point_down:](#focus) [:books:](docs/components/Focus.md)                  |\n| **\\<Touch>**                 | `{ onChange }`          | `{ touched, bind }`                            | [:point_down:](#touch) [:books:](docs/components/Touch.md)                  |\n| **\\<FocusManager>**          | `{ onChange }`          | `{ focused, blur, bind }`                      | [:point_down:](#focusmanager) [:books:](docs/components/FocusManager.md)    |\n| <h6>FORM CONTAINERS</h6>     |\n| **\\<Input>**                 | `{ initial, onChange }` | `{ set, value, bind }`                         | [:point_down:](#input) [:books:](docs/components/Input.md)                  |\n| **\\<Form>**                  | `{ initial, onChange }` | `{ input, values }`                            | [:point_down:](#form) [:books:](docs/components/Form.md)                    |\n| <h6>OTHER</h6>               |\n| **\\<Interval>**              | `{ delay }`             | `{ stop, start, toggle }`                      | [:point_down:](#interval) [:books:](docs/components/Interval.md)            |\n| **\\<Compose>**               | `{ components }`        | _depends on components prop_                   | [:point_down:](#composing-components) [:books:](docs/components/Compose.md) |\n\n## Utilities\n\n| Name                          |                                        |\n| ----------------------------- | -------------------------------------- |\n| compose(...components)        | [:books:](docs/utils/compose.md)       |\n| composeEvents(...objOfEvents) | [:books:](docs/utils/composeEvents.md) |\n\n## Examples\n\n#### State\n\n```jsx\n<State initial={{ loading: false, data: null }}>\n  {({ state, setState }) => (\n    <DataReceiver\n      data={state.data}\n      onStart={() => setState({ loading: true })}\n      onFinish={data => setState({ data, loading: false })}\n    />\n  )}\n</State>\n```\n\n#### Toggle\n\n```jsx\n<Toggle initial={true}>\n  {({ on, toggle }) => <Checkbox checked={on} onChange={toggle} />}\n</Toggle>\n```\n\n#### Counter\n\n```jsx\n<Counter initial={0}>\n  {({ count, inc, dec }) => (\n    <CartItem\n      productName=\"Lorem ipsum\"\n      unitPrice={19.9}\n      count={count}\n      onAdd={inc}\n      onRemove={dec}\n    />\n  )}\n</Counter>\n```\n\n#### Value\n\n```jsx\n<Value initial=\"React\">\n  {({ value, setValue }) => (\n    <Select\n      label=\"Choose one\"\n      options={['React', 'Angular', 'Vue']}\n      value={value}\n      onChange={setValue}\n    />\n  )}\n</Value>\n```\n\n#### Map\n\n```jsx\n<Map initial={{ sounds: true, graphics: 'medium' }}>\n  {({ set, get }) => (\n    <Settings>\n      <ToggleCheck checked={get('sounds')} onChange={c => set('sounds', c)}>\n        Game Sounds\n      </ToggleCheck>\n      <Select\n        label=\"Graphics\"\n        options={['low', 'medium', 'high']}\n        selected={get('graphics')}\n        onSelect={value => set('graphics', value)}\n      />\n    </Settings>\n  )}\n</Map>\n```\n\n#### Set\n\n```jsx\n<Set initial={['react', 'babel']}>\n  {({ values, remove, add }) => (\n    <TagManager>\n      <FormInput onSubmit={add} />\n      {values.map(tag => (\n        <Tag onRemove={() => remove(tag)}>{tag}</Tag>\n      )}\n    </TagManager>\n  )}\n</Set>\n```\n\n#### List\n\n```jsx\n<List initial={['Buy new shoes']}>\n  {({ list, pull, push }) => (\n    <Todo>\n      <TodoFormInput onSubmit={push} />\n      {list.map(todo => (\n        <TodoItem onDelete={() => pull(i => i === todo)}>\n          {todo}\n        </TodoItem>\n      )}\n    </Todo>\n  )}\n</List>\n```\n\n#### Hover\n\n```jsx\n<Hover>\n  {({ hovered, bind }) => (\n    <div {...bind}>\n      You are {hovered ? 'hovering' : 'not hovering'} this div.\n    </div>\n  )}\n</Hover>\n```\n\n#### Active\n\n```jsx\n<Active>\n  {({ active, bind }) => (\n    <div {...bind}>\n      You are {active ? 'clicking' : 'not clicking'} this div.\n    </div>\n  )}\n</Active>\n```\n\n#### Touch\n\n```jsx\n<Touch>\n  {({ touched, bind }) => (\n    <div {...bind}>\n      You are {touched ? 'touching' : 'not touching'} this div.\n    </div>\n  )}\n</Touch>\n```\n\n#### Focus\n\n```jsx\n<Focus>\n  {({ focused, bind }) => (\n    <div>\n      <input {...bind} placeholder=\"Focus me\" />\n      <div>You are {focused ? 'focusing' : 'not focusing'} input.</div>\n    </div>\n  )}\n</Focus>\n```\n\n#### Input\n\n```jsx\n<Input initial=\"hello world\">\n  {({ bind, value }) => (\n    <div>\n      <ControlledInput {...bind} />\n      <div>You typed {value}</div>\n    </div>\n  )}\n</Input>\n```\n\n#### Form\n\n```jsx\n<Form initial={{ subject: '', message: '' }}>\n  {({ input, values }) => (\n    <form\n      onSubmit={e => {\n        e.preventDefault()\n        console.log(values)\n      }}\n    >\n      <ControlledInput placeholder=\"Subject\" {...input('subject').bind} />\n      <ControlledTextArea placeholder=\"Message\" {...input('message').bind} />\n      <Submit>Send</Submit>\n    </form>\n  )}\n</Form>\n```\n\n### Interval\n\n```jsx\n<Interval delay={1000}>\n  {({ stop, start }) => (\n    <>\n      <div>The time is now {new Date().toLocaleTimeString()}</div>\n      <button onClick={() => stop()}>Stop interval</button>\n      <button onClick={() => start()}>Start interval</button>\n    </>\n  )}\n</Interval>\n```\n\n# Composing Components\n\nIf you want to avoid 'render props hell' you can compose two or more components in a single one.  \n**[:books: For complete guide, see docs](docs/components/Compose.md)**\n\n```jsx\nimport { Compose } from 'react-powerplug'\n\n<Compose components={[Toggle, Counter]}>\n  {(toggle, counter) => (/* ... */)}\n</Compose>\n```\n\n```jsx\nimport { compose } from 'react-powerplug'\n\nconst ToggleCounter = compose(\n  <Counter initial={5} />,\n  <Toggle initial={false} />\n)\n\n<ToggleCounter>\n  {(toggle, counter) => (\n    <ProductCard {...} />\n  )}\n</ToggleCounter>\n```\n\n---\n\n<p align=\"center\">\n  <a href=\"https://egghead.io/lessons/react-rapid-prototyping-with-react-powerplug\" target=\"_blank\">\n    <img src=\"https://user-images.githubusercontent.com/3277185/37249517-cde30352-24c7-11e8-8f3a-614e2162784d.png\" alt=\"Watch 'Rapid Prototyping with React PowerPlug' by Andrew Del Prete on egghead.io\" />\n  </a>\n</p>\n\n---\n\n# Install\n\n### Node Module\n\n```\nyarn add react-powerplug\n```\n\n```\nnpm i react-powerplug\n```\n\n### UMD\n\n```html\n<script src=\"https://unpkg.com/react-powerplug/dist/react-powerplug.min.js\"></script>\n```\n\nexposed as `ReactPowerPlug`\n\n# Contributors\n\nThanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars2.githubusercontent.com/u/3277185?v=4\" width=\"100px;\"/><br /><sub><b>Renato Ribeiro</b></sub>](http://twitter.com/renatorib_)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=renatorib \"Code\") [🎨](#design-renatorib \"Design\") [📖](https://github.com/renatorib/react-powerplug/commits?author=renatorib \"Documentation\") [⚠️](https://github.com/renatorib/react-powerplug/commits?author=renatorib \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/5635476?v=4\" width=\"100px;\"/><br /><sub><b>Bogdan Chadkin</b></sub>](https://github.com/TrySound)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=TrySound \"Code\") [📖](https://github.com/renatorib/react-powerplug/commits?author=TrySound \"Documentation\") [⚠️](https://github.com/renatorib/react-powerplug/commits?author=TrySound \"Tests\") [🚇](#infra-TrySound \"Infrastructure (Hosting, Build-Tools, etc)\") | [<img src=\"https://avatars1.githubusercontent.com/u/2762082?v=4\" width=\"100px;\"/><br /><sub><b>Travis Arnold</b></sub>](http://travisrayarnold.com)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=souporserious \"Code\") [📖](https://github.com/renatorib/react-powerplug/commits?author=souporserious \"Documentation\") [🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3Asouporserious \"Bug reports\") | [<img src=\"https://avatars3.githubusercontent.com/u/1301959?v=4\" width=\"100px;\"/><br /><sub><b>Max Graey</b></sub>](https://github.com/MaxGraey)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=MaxGraey \"Code\") | [<img src=\"https://avatars2.githubusercontent.com/u/9800850?v=4\" width=\"100px;\"/><br /><sub><b>Mateusz Burzyński</b></sub>](https://github.com/Andarist)<br />[🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3AAndarist \"Bug reports\") | [<img src=\"https://avatars0.githubusercontent.com/u/1448194?v=4\" width=\"100px;\"/><br /><sub><b>Andy Edwards</b></sub>](http://helloandy.xyz)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=jedwards1211 \"Code\") | [<img src=\"https://avatars2.githubusercontent.com/u/1159781?v=4\" width=\"100px;\"/><br /><sub><b>Andrea Vanini</b></sub>](http://uidu.org)<br />[🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3Aapuntovanini \"Bug reports\") |\n| :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n| [<img src=\"https://avatars3.githubusercontent.com/u/5077042?v=4\" width=\"100px;\"/><br /><sub><b>Ivan Starkov</b></sub>](https://twitter.com/icelabaratory)<br />[🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3Aistarkov \"Bug reports\") | [<img src=\"https://avatars1.githubusercontent.com/u/25376?v=4\" width=\"100px;\"/><br /><sub><b>Sean Roberts</b></sub>](http://factore.ca)<br />[📖](https://github.com/renatorib/react-powerplug/commits?author=SeanRoberts \"Documentation\") | [<img src=\"https://avatars3.githubusercontent.com/u/83964?v=4\" width=\"100px;\"/><br /><sub><b>Braden Kelley</b></sub>](https://github.com/redbmk)<br />[🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3Aredbmk \"Bug reports\") |\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n# Contribute\n\nYou can help improving this project sending PRs and helping with issues.  \nAlso you can ping me at [Twitter](http://twitter.com/renatorib_)\n","readmeFilename":"README.md","gitHead":"cb3809ffb7fdcbb5d350e5a6831b450d39d8908a","_id":"react-powerplug@1.0.0-rc.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"trysound","email":"trysound@yandex.ru"},"dist":{"integrity":"sha512-J8b7pf9DNZb1KgaP2ioXE09WYv+7xul+JAToTL5wn4Exe2flvGJHunt8U+AZxObPztpjE20N7LWphfHKO6YskA==","shasum":"28a52d6190e352db470bba47bbb733e3289caaaa","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-1.0.0-rc.0.tgz","fileCount":32,"unpackedSize":112926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHly9CRA9TVsSAnZWagAA3EAQAJH4CGq/zQ2W7kbCnU3r\nnRpQA6hPeSWAJU8MkfM5YIodcbjhT/4HpNqFVmhuEvFPSQYtG9BLH8f5osKh\njEklnocyLD8imdAsdPML1ewVXyy0GUZuDldWxMXfiaiBEB59W79+sbyC2JXU\n6UbuaTXF5knAIi11eLFZWQXbWNYb5vmay/1E/SiJ62mEwRFRYtrSR0CmFYa9\n5b28p+HpH5L3v4jo1+FUoBYWUJVlI4gED5HDupFsDBZdT2nHQZ8TCNNOmXh3\nbVibgxrzPmYlMSitDDTzkLSb088tdMq45FEFRdAqxumjaj/kLNhLZz2tfg1U\nJalStTd1BMT+20hSbv/OOQ5OoIrVmiAcZjQxbr6fqnP0+zLzsE189M3YZXy+\nnJmjZ7Uija0db4GoCxIt/7S/+3cpNXmaAp4rci4Ws48v4Vvikz4eXXWuUwiv\niSdN01p6KlxUC2XuKYWwR7feNcMlBW/ap6z1CD1YP04JeCqto4dB6vmwmZed\nOU/4EerTZUZzNaeZ6dwv7aaBbqV5o+A7fJ3VlQKOJE5Pq9lNRfebHFhvXu/X\njsBjifN09EQ3wxOHpd1mLUl8ftFiHEn7ICSPe3hp4etrWbpo1IxS0HflX8Sa\nJIbmaJR72kr9eRXSvGUNsu+mtlLrYeSPWpMa16p9Gjh9ElDGfmIcU37PZRm0\nne7G\r\n=DkZc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3r0k87mKi+sdD5khP1LXkiCEVPP9m7V+6v1t0r5WGVgIhALPiSi6y+uiAp5o/VViwfenH0k8o9uSZbaMXucDzZo9x"}]},"maintainers":[{"email":"renatoribroman@gmail.com","name":"renatorib"},{"email":"trysound@yandex.ru","name":"trysound"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_1.0.0-rc.0_1528716476791_0.9153898762540824"},"_hasShrinkwrap":false},"0.1.6":{"name":"react-powerplug","version":"0.1.6","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","scripts":{"build:flow":"cpy src/index.js.flow lib & cpy src/index.js.flow es","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","build:umd":"cross-env BABEL_ENV=rollup NODE_ENV=development rollup -c -o dist/react-powerplug.js","build:umd:min":"cross-env BABEL_ENV=rollup NODE_ENV=production rollup -c -o dist/react-powerplug.min.js","build:all":"npm run build:commonjs && npm run build:es && npm run build:umd && npm run build:umd:min && npm run build:flow","build":"npm run clean && npm run build:all","clean":"rimraf lib dist es","typecheck:flow":"flow check && [[ $(flow check) == 'Found 0 errors' ]]","lint":"eslint src","test":"jest","prepublishOnly":"npm run lint && npm run clean && npm run build"},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"files":["dist","lib","src","es"],"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-jest":"^22.1.0","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.0","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-react":"^6.24.1","babel-preset-stage-1":"^6.24.1","cpy-cli":"^1.0.1","cross-env":"^5.0.5","eslint":"^4.6.1","eslint-plugin-import":"^2.7.0","eslint-plugin-react":"^7.3.0","flow-bin":"^0.63.1","jest":"^22.1.1","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.49.3","rollup-plugin-babel":"^3.0.2","rollup-plugin-commonjs":"^8.2.1","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-uglify":"^2.0.1"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"e1dd7177ab53c28ece6dcfab90f7799f465de91b","_id":"react-powerplug@0.1.6","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"trysound","email":"trysound@yandex.ru"},"dist":{"integrity":"sha512-2bBoBaulpNnmXvM4nTQL3KKdsyzcufHI9ebpzoWlFZAplM0gn7Z0cBOcw2H8FFHGI38OMzo8CSpKYJaOJ8e/KA==","shasum":"054f25fd45f8c26a1f75ca02f62d07d12b712035","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.1.6.tgz","fileCount":64,"unpackedSize":128287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbI6muCRA9TVsSAnZWagAA03sQAJvVT+fta340Q6PvUfJA\nOAdFRG/zqxwXImPaVdkqudY6zgDb2GT+YsVU516wEPbWIguNqaMVA+vLIGN+\n4C4vNmnhAncmYlzwgpAV3/CR87efGToBB2RGAE3t1ml4JPrZoy8hWXDt8Lph\nkLuwgEdtdUBGhpfz4hVuKDfSdUN9ShdxAi/Qpfet/KLiHAwkhhCEnlGlC3T9\n7ZaQofYKojI9aDGd6ZRYIRY88bSbTZsnUXL4LyZ8HgmYw127QfRU8oMgXcTj\nBxaGnm/3ziM86oRoLobhjLkjUGuN2oME8co4S/KGNVGqmZX87tbe//saXKNW\n5yql10pcRriprIE4dAjO8IZtr9yVVq60sXpNTN9PW1HCpaVoK/Bsqw807n9c\n+jGV9Oztbs/7zThDieN5AHQRr0jglOf4AxXpgYtXAXL4PjuDFJb7hku55ST2\n0YnW2/30bBO0zwQFjTwC1CUbol1HyNK9g1lU7/kkJ29f57soxFZq9ZNFfHm3\nadK9cwSm8eDlFqeC/mFKmRhncuyjWf5z9fABvsghCEb72Awgjbml10cuPxzd\nPu/Mj4D7AU/02xKDmpVVmQNge0O0/gYEEMaEYOD0EVaP+/yeWlruHqGlFd/f\nb4oTK86LjZsnsVMzd/1kpP4ouopO9pz0LoLEeupf4M9rghN0MLd2MrqjFaEl\n48/Q\r\n=2jsW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEIL9LZT7J6ja9CDHgbIeU7MmvqemXSZojdaXXQLu4nQIgfCHy8aj08dKHIByWZr3/xsfggNzSvvgtO0/5ck2uME8="}]},"maintainers":[{"email":"renatoribroman@gmail.com","name":"renatorib"},{"email":"trysound@yandex.ru","name":"trysound"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_0.1.6_1529063853796_0.1639975732305463"},"_hasShrinkwrap":false},"1.0.0-rc.1":{"name":"react-powerplug","version":"1.0.0-rc.1","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"dist/react-powerplug.cjs.js","module":"dist/react-powerplug.esm.js","types":"types/index.d.ts","files":["dist","src","types"],"scripts":{"build:flow":"echo \"// @flow\n\nexport * from '../src'\" > dist/react-powerplug.cjs.js.flow","build:code":"cross-env NODE_ENV=code rollup -c","build":"npm run clean && npm run build:code && npm run build:flow","clean":"rimraf dist","typecheck:flow":"flow check --max-warnings=0","typecheck:ts":"dtslint types","lint":"eslint src test","test:only":"jest","test:umd":"jest --setupTestFrameworkScriptFile ./tests/jestUMDSetup.js","test:cjs":"jest --setupTestFrameworkScriptFile ./tests/jestCJSSetup.js","test":"npm run build && npm run lint && jest && npm run test:umd && npm run test:cjs","precommit":"lint-staged","prepublishOnly":"npm run clean && npm run build","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate"},"lint-staged":{"*.{js,md,ts,tsx}":["prettier --write","git add"]},"jest":{"globalSetup":"jest-environment-puppeteer/setup","globalTeardown":"jest-environment-puppeteer/teardown","transformIgnorePatterns":["/node_modules/","/dist/"]},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{"@babel/runtime":"7.0.0-beta.49"},"devDependencies":{"@babel/cli":"^7.0.0-beta.49","@babel/core":"^7.0.0-beta.49","@babel/plugin-transform-modules-commonjs":"^7.0.0-beta.49","@babel/plugin-transform-runtime":"^7.0.0-beta.49","@babel/preset-env":"^7.0.0-beta.49","@babel/preset-react":"^7.0.0-beta.49","@babel/preset-stage-3":"^7.0.0-beta.49","@types/react":"^16.3.13","all-contributors-cli":"^4.11.2","babel-core":"^7.0.0-bridge.0","babel-eslint":"^8.2.3","babel-jest":"^23.0.0","cross-env":"^5.0.5","dtslint":"^0.3.0","eslint":"^4.19.1","eslint-plugin-import":"^2.12.0","eslint-plugin-react":"^7.9.1","flow-bin":"^0.66.0","husky":"^0.14.3","jest":"^23.0.0","jest-environment-node":"^23.0.0","jest-environment-puppeteer":"^2.4.0","lint-staged":"^6.0.0","prettier":"^1.10.2","puppeteer":"^1.4.0","react":"^16.2.0","react-dom":"^16.2.0","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.59.3","rollup-plugin-babel":"^4.0.0-beta.4","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-size-snapshot":"^0.5.1","rollup-plugin-uglify":"^4.0.0"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"0cb59d5ade8f1ac6d8cd771343d0ec8ef78f6587","_id":"react-powerplug@1.0.0-rc.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"trysound","email":"trysound@yandex.ru"},"dist":{"integrity":"sha512-TqeC/QT0xJ1gAI0SlqorHwzT9QD8z2tI+hQ/FFFiK6wZdRq4iQetYGcbgmcw7mpblOA8lIKwBgpk00Ja4VwncA==","shasum":"6b3bc57e31684e8bc36baa7a65af602ba0e31145","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-1.0.0-rc.1.tgz","fileCount":35,"unpackedSize":127839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOpd3CRA9TVsSAnZWagAAadoP/1URDgvxGbzj2aHDacS1\nHhCOFrz1dK0vD57qxoqI4ThbDuuz1JKLaXASRTR5CSBbB5AtP5bcwqSM61Gk\n28IRzyCfEI3de+qJeKrpyhbSW2v4zf6D1NwjlG7fk5W3jCyWoi+Qm3swJ08G\nzhvsZ/gM7izLyGSpiYQOpkEqYJPajMph+dK1vT8w/oJPQJKFXBTuwZSPnSBo\nng6D927yyaxUg8QfFIzxSUI3dcIh/bbwzaXZY2okmPiW3NMC78rRFKucZ0u8\n9tXhT7e7vimotr7dxDYdGnOfzgRQj0GMjb9+PSsOs7grGh77B5q8gDV4s2PI\ni2zKX0DEHjxCiB+fWOrbKVyw10nPz0wPIV6iy6GR8/VPYqy+rRwwbdro7pTA\nFtH8QPXzMkKvdzc4X0e4tbW/RMk6/Qv1XYvcHLsqqGnfTDY+X6JWddyGo/hN\n2mDFJ5euWjH2rb+Jh4dtW2MTnvs+EdqliTzmOQKqNwvM8JerYqFLheD7Dd7s\nH4Tm5PrhHvf0dK2g8mgqT+uaBHBnWjsdQKx1nK58K84uK81B+UmdCg8qUcLR\nh6tJXMgoKJq6WH15kC7cxgYRVK+TkJ5Ya1gi0e1L09nssAvkKcoxwqiGjg7Q\nVoSdEG2EOQ3H5+BP+wfAqOojk8fACV8uD+WUCbO/0QXyT0gt1Y0urI8P3vuf\nVQa9\r\n=pgM/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFWDCC0DsZT6ws48IIIa8+LmqrUKCNHOkLWJeaS1JRSZAiEA+hnjiwYuFzjFdCp1r8Zed9tgnabQz8adSj7jCyVmrIM="}]},"maintainers":[{"email":"renatoribroman@gmail.com","name":"renatorib"},{"email":"trysound@yandex.ru","name":"trysound"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_1.0.0-rc.1_1530566519760_0.18608465475773417"},"_hasShrinkwrap":false},"1.0.0":{"name":"react-powerplug","version":"1.0.0","description":"Give life to your dumb components","author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"license":"MIT","main":"dist/react-powerplug.cjs.js","module":"dist/react-powerplug.esm.js","types":"types/index.d.ts","scripts":{"build:flow":"echo \"// @flow\n\nexport * from '../src'\" > dist/react-powerplug.cjs.js.flow","build:code":"rollup -c","build":"npm run clean && npm run build:code && npm run build:flow","clean":"rimraf dist","typecheck:flow":"flow check --max-warnings=0","typecheck:ts":"dtslint types","lint":"eslint src tests","test:only":"jest","test:umd":"jest --setupTestFrameworkScriptFile ./tests/jestUMDSetup.js","test:cjs":"jest --setupTestFrameworkScriptFile ./tests/jestCJSSetup.js","test":"npm run build && npm run lint && jest && npm run test:umd && npm run test:cjs","precommit":"lint-staged","prepublishOnly":"npm run clean && npm run build","contributors:add":"all-contributors add","contributors:generate":"all-contributors generate","docz:dev":"docz dev","docz:build":"docz build","docz:publish":"npm run docz:build && gh-pages -d .docz/dist"},"lint-staged":{"*.{js,md,ts,tsx}":["prettier --write","git add"]},"jest":{"globalSetup":"jest-environment-puppeteer/setup","globalTeardown":"jest-environment-puppeteer/teardown","transformIgnorePatterns":["/node_modules/","/dist/"]},"repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"keywords":["react","reactjs","components","dumb","state"],"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"homepage":"https://github.com/renatorib/react-powerplug","dependencies":{"@babel/runtime":"^7.0.0"},"devDependencies":{"@babel/core":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.0.0","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","@babel/preset-react":"^7.0.0","@types/react":"^16.3.13","all-contributors-cli":"^4.11.2","babel-core":"^7.0.0-bridge.0","babel-eslint":"^9.0.0","babel-jest":"^23.0.0","cross-env":"^5.0.5","docz":"0.11.2","docz-core":"0.11.2","docz-theme-default":"0.11.2","dtslint":"^0.3.0","eslint":"^5.3.0","eslint-plugin-flowtype":"^2.50.0","eslint-plugin-import":"^2.13.0","eslint-plugin-react":"^7.10.0","flow-bin":"^0.82.0","gh-pages":"^2.0.0","husky":"^0.14.3","jest":"^23.0.0","jest-environment-node":"^23.0.0","jest-environment-puppeteer":"^2.4.0","lint-staged":"^6.0.0","prettier":"^1.10.2","puppeteer":"^1.4.0","react":"^16.4.2","react-dom":"^16.4.2","react-test-renderer":"^16.2.0","rimraf":"^2.6.1","rollup":"^0.65.0","rollup-plugin-babel":"^4.0.1","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-replace":"^2.0.0","rollup-plugin-size-snapshot":"^0.6.1","rollup-plugin-uglify":"^4.0.0"},"peerDependencies":{"react":"^0.14.0 || ^15.0.0-0 || ^16.0.0-0"},"gitHead":"e316165bdf3ef59fcbf70dd27e49e7c5a532217d","_id":"react-powerplug@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.2","_npmUser":{"name":"renatorib","email":"renatoribroman@gmail.com"},"dist":{"integrity":"sha512-H7U+1sNiOqlaPgZpfciVZ3BMHtXHsd0tkXrOmrwV7ZTpK+YGRddK7+Um1RT2OTe+4G+1muXfyFMAwcnasABMtA==","shasum":"f9c10a761ece115661b8fd10920c4e573ea95909","tarball":"https://registry.npmjs.org/react-powerplug/-/react-powerplug-1.0.0.tgz","fileCount":33,"unpackedSize":116511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4hemCRA9TVsSAnZWagAAfT4P/jQQNE+spZyv3fIHjxMu\n7Qf5VbbS1yXvzLEgmJhnrpMMF8wgATTQq2ABDIFg6QKmYYpxu0SyhicZKN7f\nuHPq5WE6xSjweiQWZhWaZES6h9sRQq5NTGTgWJEbJIQhGz7+zABA6VrWWIo1\nn4/OO3rBqmpW0hxJ9ewKefhbuU92YGFcdnijMO16xulLggmDdqI3el7gx4hg\nDMF14wGJqAzZXczM4E4R0KCBflD0lhI3svYeH8Xgu2zPZ4ByOfx+S/mcIzcq\nFPo/F70+H4v0w3SnzqVaV4AM5RG2/2p9aLzK7tJrWjHBzHxSarbVcsARsEZV\nIl6WwTq/HQgLLU0kSunDbBe9vqaY5FrYlTC29Fiqa0fp1QyLpBYWwEeLidHZ\ncq22FzT/EYv3eCyVnA7514mTx/IeOulRapB6F6+cM3MZwbeHDuSSJfe1jVch\n3MXYKNkQ6BaFyGMal7HH5jktjsVmd6/ximEQXrfNvj5W4aP/HJ2ZTYJEeos8\n5am/ublxXcMp9WQQSewT87EYOVbEhtaJwIWV8T5o3g4c8feOghtLy3NOnrr6\nxV/Xb2kP+RAC4CrZe3tcoGMXuRkLsFT73pXaojwW9DonVF55GLs9zxGmXziX\nD3hIVreib1rTJxod6Rkw5taz6QEjL54jrfPREYdLXQzJnPRUbSucHdY8sI8F\nitvS\r\n=Mmlr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjoE3Pkebb7GizA9Lm/ZYJpsULzBwBrgS1R2FPjSwquwIhAJB/MgyNtKz+nX3QkVLLKWlJCAk6xp6RHi1PSEQZMPww"}]},"maintainers":[{"email":"renatoribroman@gmail.com","name":"renatorib"},{"email":"trysound@yandex.ru","name":"trysound"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-powerplug_1.0.0_1541543846064_0.099698917081541"},"_hasShrinkwrap":false}},"readme":"<h1 align=\"center\">\n  <img src=\"/logo.png\" alt=\"React PowerPlug\" />\n</h1>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/react-powerplug\" target=\"_blank\">\n    <img src=\"https://img.shields.io/npm/dt/react-powerplug.svg?style=flat-square\" alt=\"npm\" />\n  </a>\n  <a href=\"https://github.com/renatorib/react-powerplug/stargazers\" target=\"_blank\">\n    <img src=\"https://img.shields.io/github/stars/renatorib/react-powerplug.svg?style=flat-square\" alt=\"stars\" />\n  </a>\n  <a href=\"https://twitter.com/intent/tweet?url=https://github.com/renatorib/react-powerplug\" target=\"_blank\">\n    <img src=\"https://img.shields.io/twitter/url/https/github.com/renatorib/react-powerplug.svg?style=flat-square\" alt=\"tweet\" />\n  </a>\n</p>\n\n<br />\n \n > **React PowerPlug is a set of pluggable renderless components and helpers** that provides different types of state and logic utilities that you can use with your dumb components. It creates state and passes down the logic to the children, so you can handle your data. Read about the [Render Props](https://reactjs.org/docs/render-props.html) pattern.\n\n## Highlights\n\n- :ok_hand: Dependency free\n- :electric_plug: Plug and play\n- :crystal_ball: Tree shaking friendly (ESM, no side effects)\n- :package: Super tiny (~3kb)\n- :books: Well documented\n- :beers: Bunch of awesome utilities\n\n<details>\n  <summary>See quick examples</summary>\n\n```jsx\nimport { State, Toggle } from 'react-powerplug'\nimport { Pagination, Tabs, Checkbox } from './MyDumbComponents'\n\n<State initial={{ offset: 0, limit: 10, totalCount: 200 }}>\n  {({ state, setState }) => (\n    <Pagination {...state} onChange={(offset) => setState({ offset })} />\n  )}\n</State>\n\n<Toggle initial={true}>\n  {({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n</Toggle>\n\n// You can also use a `render` prop instead\n\n<Toggle\n  initial={false}\n  render={({ on, toggle }) => (\n    <Checkbox checked={on} onChange={toggle} />\n  )}\n/>\n```\n\n</details>\n\n## Guide & Documentation\n\nhttp://rena.to/react-powerplug/\n\n---\n\n<p align=\"center\">\n  <a href=\"https://egghead.io/lessons/react-rapid-prototyping-with-react-powerplug\" target=\"_blank\">\n    <img src=\"https://user-images.githubusercontent.com/3277185/37249517-cde30352-24c7-11e8-8f3a-614e2162784d.png\" alt=\"Watch 'Rapid Prototyping with React PowerPlug' by Andrew Del Prete on egghead.io\" />\n  </a>\n</p>\n\n---\n\n# Install\n\n### Node Module\n\n```\nyarn add react-powerplug\n```\n\n```\nnpm i react-powerplug\n```\n\n### UMD\n\n```html\n<script src=\"https://unpkg.com/react-powerplug/dist/react-powerplug.min.js\"></script>\n```\n\nexposed as `ReactPowerPlug`\n\n# Contributors\n\nThanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars2.githubusercontent.com/u/3277185?v=4\" width=\"100px;\"/><br /><sub><b>Renato Ribeiro</b></sub>](http://twitter.com/renatorib_)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=renatorib \"Code\") [🎨](#design-renatorib \"Design\") [📖](https://github.com/renatorib/react-powerplug/commits?author=renatorib \"Documentation\") [⚠️](https://github.com/renatorib/react-powerplug/commits?author=renatorib \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/5635476?v=4\" width=\"100px;\"/><br /><sub><b>Bogdan Chadkin</b></sub>](https://github.com/TrySound)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=TrySound \"Code\") [📖](https://github.com/renatorib/react-powerplug/commits?author=TrySound \"Documentation\") [⚠️](https://github.com/renatorib/react-powerplug/commits?author=TrySound \"Tests\") [🚇](#infra-TrySound \"Infrastructure (Hosting, Build-Tools, etc)\") | [<img src=\"https://avatars1.githubusercontent.com/u/2762082?v=4\" width=\"100px;\"/><br /><sub><b>Travis Arnold</b></sub>](http://travisrayarnold.com)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=souporserious \"Code\") [📖](https://github.com/renatorib/react-powerplug/commits?author=souporserious \"Documentation\") [🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3Asouporserious \"Bug reports\") | [<img src=\"https://avatars3.githubusercontent.com/u/1301959?v=4\" width=\"100px;\"/><br /><sub><b>Max Graey</b></sub>](https://github.com/MaxGraey)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=MaxGraey \"Code\") | [<img src=\"https://avatars2.githubusercontent.com/u/9800850?v=4\" width=\"100px;\"/><br /><sub><b>Mateusz Burzyński</b></sub>](https://github.com/Andarist)<br />[🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3AAndarist \"Bug reports\") | [<img src=\"https://avatars0.githubusercontent.com/u/1448194?v=4\" width=\"100px;\"/><br /><sub><b>Andy Edwards</b></sub>](http://helloandy.xyz)<br />[💻](https://github.com/renatorib/react-powerplug/commits?author=jedwards1211 \"Code\") | [<img src=\"https://avatars2.githubusercontent.com/u/1159781?v=4\" width=\"100px;\"/><br /><sub><b>Andrea Vanini</b></sub>](http://uidu.org)<br />[🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3Aapuntovanini \"Bug reports\") |\n| :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n| [<img src=\"https://avatars3.githubusercontent.com/u/5077042?v=4\" width=\"100px;\"/><br /><sub><b>Ivan Starkov</b></sub>](https://twitter.com/icelabaratory)<br />[🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3Aistarkov \"Bug reports\") | [<img src=\"https://avatars1.githubusercontent.com/u/25376?v=4\" width=\"100px;\"/><br /><sub><b>Sean Roberts</b></sub>](http://factore.ca)<br />[📖](https://github.com/renatorib/react-powerplug/commits?author=SeanRoberts \"Documentation\") | [<img src=\"https://avatars3.githubusercontent.com/u/83964?v=4\" width=\"100px;\"/><br /><sub><b>Braden Kelley</b></sub>](https://github.com/redbmk)<br />[🐛](https://github.com/renatorib/react-powerplug/issues?q=author%3Aredbmk \"Bug reports\") |\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n# Contribute\n\nYou can help improving this project sending PRs and helping with issues.  \nAlso you can ping me at [Twitter](http://twitter.com/renatorib_)\n","maintainers":[{"email":"renatoribroman@gmail.com","name":"renatorib"},{"email":"trysound@yandex.ru","name":"trysound"}],"time":{"modified":"2022-06-26T07:39:44.989Z","created":"2017-09-05T04:11:46.041Z","0.0.1-alpha.1":"2017-09-05T04:11:46.041Z","0.0.1":"2017-09-11T03:12:29.110Z","0.0.2":"2017-09-11T04:11:47.861Z","0.1.0":"2017-09-29T06:00:50.544Z","0.1.1":"2017-10-02T17:30:34.697Z","0.1.2":"2017-10-17T01:36:28.403Z","0.1.3":"2018-01-16T20:24:40.970Z","0.1.4":"2018-02-08T20:19:53.392Z","1.0.0-alpha.2":"2018-02-14T16:07:06.630Z","0.1.5":"2018-02-19T18:15:52.917Z","1.0.0-alpha.3":"2018-02-22T22:04:58.685Z","1.0.0-alpha.4":"2018-04-11T01:35:22.374Z","1.0.0-alpha.5":"2018-05-23T09:22:23.099Z","1.0.0-alpha.6":"2018-05-23T09:55:36.963Z","1.0.0-alpha.7":"2018-06-01T14:49:54.923Z","1.0.0-rc.0":"2018-06-11T11:27:56.875Z","0.1.6":"2018-06-15T11:57:33.865Z","1.0.0-rc.1":"2018-07-02T21:21:59.929Z","1.0.0":"2018-11-06T22:37:26.193Z"},"homepage":"https://github.com/renatorib/react-powerplug","repository":{"type":"git","url":"git+https://github.com/renatorib/react-powerplug.git"},"author":{"name":"Renato Ribeiro","url":"http://github.com/renatorib"},"bugs":{"url":"https://github.com/renatorib/react-powerplug/issues"},"license":"MIT","readmeFilename":"README.md","keywords":["react","reactjs","components","dumb","state"],"users":{"matthamlin":true,"shanewholloway":true,"kvangrae":true,"xiechao06":true}}