{"_id":"@hackcapital/hd3","_rev":"51-efa5161ade86f2aef808f0a3b40c4040","name":"@hackcapital/hd3","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@hackcapital/hd3","version":"1.0.0","keywords":["d3","hd3","graph","graphing"],"author":{"name":"Mark Niehe","email":"mark.niehe@hackcapital.com"},"license":"MIT","_id":"@hackcapital/hd3@1.0.0","maintainers":[{"name":"alexkushner","email":"alex.kushner@gmail.com"},{"name":"brendan-kelly","email":"brendanhkelly@gmail.com"},{"name":"brettcampbell","email":"brett@hackcapital.com"},{"name":"chowmein","email":"carmenchow@protonmail.com"},{"name":"coreysan","email":"corey@sancosoftware.ca"},{"name":"danielalmeida","email":"daniel.almeida@live.com"},{"name":"fayezosaadi","email":"fayez@hackcapital.com"},{"name":"filipe.hc","email":"filipe@hackcapital.com"},{"name":"gaossou","email":"sxgao3001@gmail.com"},{"name":"hackcapitaladmin","email":"kc@hackcapital.com"},{"name":"hackcapitalbot","email":"ops@hackcapital.com"},{"name":"hackmatt","email":"matthew.butler@hackcapital.com"},{"name":"hounslow","email":"hounslowmatthew@gmail.com"},{"name":"hugodorea","email":"hugo@aioninnovations.com"},{"name":"jesstice","email":"jessica.dieuique@gmail.com"},{"name":"jmeintjes","email":"jaco@hackcapital.com"},{"name":"jplew","email":"jp@hackcapital.com"},{"name":"magitron","email":"maggie@hackcapital.com"},{"name":"mariomejia","email":"mario@hackcapital.com"},{"name":"markbahnman","email":"mark.bahnman@gmail.com"},{"name":"mniehe","email":"mniehe@gmail.com"},{"name":"mwillcox","email":"mattjwillcox@gmail.com"},{"name":"nicholedlc","email":"nichole@hackcapital.com"},{"name":"nicohackcapital","email":"nico@hackcapital.com"},{"name":"pabloaredu","email":"pablo@hackcapital.com"},{"name":"prachis","email":"prasg19@gmail.com"},{"name":"slajax","email":"kc@kc.io"},{"name":"slaterb1","email":"ben@hackcapital.com"},{"name":"thalesfsp","email":"thalesfsp@gmail.com"}],"contributors":[],"homepage":"https://git.cto.ai/hackcapital/tools/hd3","bugs":{"url":"https://git.cto.ai/hackcapital/tools/hd3/issues"},"dist":{"shasum":"66c2b5aa727cceb4a1aac5c1a4a1fb9fd557e210","tarball":"https://registry.npmjs.org/@hackcapital/hd3/-/hd3-1.0.0.tgz","fileCount":8,"integrity":"sha512-0pMI48YW2Dm0v9IgMaS8iFszKvZyTI4Fjyw6r9r72HMF95HGYYQndXMI6aykgRxwRkVo6AVTO27+Ej0EtfQB3w==","signatures":[{"sig":"MEQCIFThk6GF5eEd3fw2ZrVmBJ5Igxwc+IrJdYvRKZ4agcVgAiAbJgHfywrn9O8YU1wMDyiAGl3zgKUi3aJgF+Io8WwZCA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbotduCRA9TVsSAnZWagAAYn8P/0Ll5f6mMRyvHj9gxLw1\n1tNOrDrdW2uMM4qwPFigwt3lwooZ+RtS8URKFXoYXBUNJpr9ItRwXh6UW/3n\n267TYdpisXJhoRqWzT2EQ5Cr5qEHjLeIdlEW3YFhdBGJBdL7YTgT1Hkyu2x2\nSlvfqaMMeNLUU+JiRZLFQGgCcU7/MelV6ek6VtoA7VsecuyeZYVY1WMa8YNo\nNTBpXYHZySq0os5Zs1KnVTNtEHM4YIUiAR9pRgN7H47cHhp6q4ktWDqilB/S\n6VqehqkU1c/+dT5grRMDM/io6SwP8xHfH+TKOS01t4UerGe1KLvEWyGefkFU\nx13qCwsyKrPdFXhnwYRy3LalP8KYURI+F7bZbNO7VoNq8B6Ksp+/EyACAmCe\nEKX7gX7cts38CGgzOwStXLN6kPu/7NRj3mwWa6u4nRSh/PmLuv/RS1f8pADN\nEE+dmOVreZCmIkwdCffpJ5T9T0hYfj2Z8MhmjsRVDAXpZ9eI6xSyuIhMpe5A\nk0oyShljmP5HfKqxRzwAPKRGX1F1ni6aWB+tDQPTWbE28yFAcWn1epoAm0Aq\nSXqlb2/kjuJpd9g1hlLNqD5Pxq69iMoD74E+B8cUU4lmPUh3DJEzcf+yL9Sb\nWH0sNNQYIpFQ69YvGr/1OirU1hTdHPHpg7JvDwG41bDXxEH0W1MJ6c50mV/P\nh0F0\r\n=eWQv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","gitHead":"1de6530370f50d31db7ce403e0ae7b0b4848b273","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"babel src -d build"},"_npmUser":{"name":"mniehe","email":"mniehe@gmail.com"},"repository":{"url":"git+https://git.cto.ai/hackcapital/tools/hd3.git","type":"git"},"_npmVersion":"5.6.0","description":"A module D3 library for React.","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-preset-react":"^6.24.1","babel-preset-es2015":"^6.24.1"},"peerDependencies":{"d3":"^5.7.0","react":"^16.5.0"},"_npmOperationalInternal":{"tmp":"tmp/hd3_1.0.0_1537398638281_0.5424928872632979","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@hackcapital/hd3","version":"1.0.1","keywords":["d3","hd3","graph","graphing"],"author":{"name":"Mark Niehe","email":"mark.niehe@hackcapital.com"},"license":"MIT","_id":"@hackcapital/hd3@1.0.1","maintainers":[{"name":"alexkushner","email":"alex.kushner@gmail.com"},{"name":"brendan-kelly","email":"brendanhkelly@gmail.com"},{"name":"brettcampbell","email":"brett@hackcapital.com"},{"name":"chowmein","email":"carmenchow@protonmail.com"},{"name":"coreysan","email":"corey@sancosoftware.ca"},{"name":"danielalmeida","email":"daniel.almeida@live.com"},{"name":"fayezosaadi","email":"fayez@hackcapital.com"},{"name":"filipe.hc","email":"filipe@hackcapital.com"},{"name":"gaossou","email":"sxgao3001@gmail.com"},{"name":"hackcapitaladmin","email":"kc@hackcapital.com"},{"name":"hackcapitalbot","email":"ops@hackcapital.com"},{"name":"hackmatt","email":"matthew.butler@hackcapital.com"},{"name":"hounslow","email":"hounslowmatthew@gmail.com"},{"name":"hugodorea","email":"hugo@aioninnovations.com"},{"name":"jesstice","email":"jessica.dieuique@gmail.com"},{"name":"jmeintjes","email":"jaco@hackcapital.com"},{"name":"jplew","email":"jp@hackcapital.com"},{"name":"magitron","email":"maggie@hackcapital.com"},{"name":"mariomejia","email":"mario@hackcapital.com"},{"name":"markbahnman","email":"mark.bahnman@gmail.com"},{"name":"mniehe","email":"mniehe@gmail.com"},{"name":"mwillcox","email":"mattjwillcox@gmail.com"},{"name":"nicholedlc","email":"nichole@hackcapital.com"},{"name":"nicohackcapital","email":"nico@hackcapital.com"},{"name":"pabloaredu","email":"pablo@hackcapital.com"},{"name":"prachis","email":"prasg19@gmail.com"},{"name":"slajax","email":"kc@kc.io"},{"name":"slaterb1","email":"ben@hackcapital.com"},{"name":"thalesfsp","email":"thalesfsp@gmail.com"}],"contributors":[],"homepage":"https://git.cto.ai/hackcapital/tools/hd3","bugs":{"url":"https://git.cto.ai/hackcapital/tools/hd3/issues"},"dist":{"shasum":"b94c41aafa9751acd19768eda724edc737bd3140","tarball":"https://registry.npmjs.org/@hackcapital/hd3/-/hd3-1.0.1.tgz","fileCount":8,"integrity":"sha512-XxMkI3BIegvQ2h1syrCFMpdTTlOB9O9gf6ZD0S7A/A19LsynTG1H31zZpp0FLo2VEHckXTQPbCCW4K2ZCtEOAA==","signatures":[{"sig":"MEQCIGUYGuBc6tD3y/jtQyQLVtcbXIuOzYte7pGHvXX/5SsmAiAzlzUKUmKBho/uuHidekw8qYRJR/NG0nf9nXAbtc8aXA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbott1CRA9TVsSAnZWagAAggYQAI0rB2fRe3/smKuLz2nK\nIwvzIILJRvlMb6vJbRppjV0g78Ap8/4KDYNa5IpnoM8idaE0UPPtWLWBGMBZ\nj5E4HtZxYCHht0KLXdHbUuSCUQPcOUg2dPspjbr0t8u6kPZWgOYlscOvXDp9\nJbKrYOyR+1ybUMYwkqtpkGM4BsqJb83Pt+gYgImbDpEUlCGS7BkWWFw8J72u\nJkonwx0NZoD/Sne2oC33Z6wB+TW9m2Y+Jl+ow+skQZNkB27SLDhiuTTspaKY\nMT+M/imYthKKGeo1IfjZ5efz1IkDFVZSH5hA7972yTy2Dlla3JSU/UuNoRQG\nZnqXEzPvhLleDqaHkPUTpkSlnFKYxe2uItc4Qj6sH/f4jHNu8hZp01WLI06J\n31ywFfLVPRH0PmFJ/yTOWcUOUupsGJqqEYvyYmo8KsNli9x8T1girkcrL51a\nMPbGFJvQ6kdoAe0yrtjXmOlYt5p62QVPyrCz8VveK6gMd90ymMf1+1RUtbYV\nHDioYbD1P0Khq0SUMuzzCCLK2gvlcdpnxE+GrPi+ofIIS6pC0arAKCVGiTxP\nj0uYPQpqzNeNWiTk9aSfuLBRUQYz27KjyKx7yqLkQxUbSfjx8tPM9S+RezPh\nsm56nlgE0sZj1vxjyXwSm5sd21ywAsEJSIBVbQNG49M8943J2KqQQ2PVlAbZ\nMbja\r\n=nL7V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","gitHead":"74d31fae4fe66d33770e776668294ad1ff6908d0","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"babel src -d build","prepublish":"npm run build"},"_npmUser":{"name":"mniehe","email":"mniehe@gmail.com"},"repository":{"url":"git+https://git.cto.ai/hackcapital/tools/hd3.git","type":"git"},"_npmVersion":"5.6.0","description":"A module D3 library for React.","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-preset-react":"^6.24.1","babel-preset-es2015":"^6.24.1"},"peerDependencies":{"d3":"^5.7.0","react":"^16.5.0"},"_npmOperationalInternal":{"tmp":"tmp/hd3_1.0.1_1537399669184_0.09517193179151429","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@hackcapital/hd3","version":"1.0.3","keywords":["d3","hd3","graph","graphing"],"author":{"name":"Mark Niehe","email":"mark.niehe@hackcapital.com"},"license":"MIT","_id":"@hackcapital/hd3@1.0.3","maintainers":[{"name":"alexkushner","email":"alex.kushner@gmail.com"},{"name":"brendan-kelly","email":"brendanhkelly@gmail.com"},{"name":"brettcampbell","email":"brett@hackcapital.com"},{"name":"chowmein","email":"carmenchow@protonmail.com"},{"name":"coreysan","email":"corey@sancosoftware.ca"},{"name":"danielalmeida","email":"daniel.almeida@live.com"},{"name":"fayezosaadi","email":"fayez@hackcapital.com"},{"name":"filipe.hc","email":"filipe@hackcapital.com"},{"name":"gaossou","email":"sxgao3001@gmail.com"},{"name":"hackcapitaladmin","email":"kc@hackcapital.com"},{"name":"hackcapitalbot","email":"ops@hackcapital.com"},{"name":"hackmatt","email":"matthew.butler@hackcapital.com"},{"name":"hounslow","email":"hounslowmatthew@gmail.com"},{"name":"hugodorea","email":"hugo@aioninnovations.com"},{"name":"jesstice","email":"jessica.dieuique@gmail.com"},{"name":"jmeintjes","email":"jaco@hackcapital.com"},{"name":"jplew","email":"jp@hackcapital.com"},{"name":"magitron","email":"maggie@hackcapital.com"},{"name":"mariomejia","email":"mario@hackcapital.com"},{"name":"markbahnman","email":"mark.bahnman@gmail.com"},{"name":"mniehe","email":"mniehe@gmail.com"},{"name":"mwillcox","email":"mattjwillcox@gmail.com"},{"name":"nicholedlc","email":"nichole@hackcapital.com"},{"name":"nicohackcapital","email":"nico@hackcapital.com"},{"name":"pabloaredu","email":"pablo@hackcapital.com"},{"name":"prachis","email":"prasg19@gmail.com"},{"name":"slajax","email":"kc@kc.io"},{"name":"slaterb1","email":"ben@hackcapital.com"},{"name":"thalesfsp","email":"thalesfsp@gmail.com"}],"contributors":[],"homepage":"https://git.cto.ai/hackcapital/tools/hd3","bugs":{"url":"https://git.cto.ai/hackcapital/tools/hd3/issues"},"dist":{"shasum":"7d1611b8c30d3aceade5b6b81225af560ffdeceb","tarball":"https://registry.npmjs.org/@hackcapital/hd3/-/hd3-1.0.3.tgz","fileCount":8,"integrity":"sha512-ATL3N/81e3L6y6a190zVPrBackR/AhppJEYVjPw0+W6h9W8oYoIxiFyWNDSm1nuTjVESX0vwKvuCniGwEhXKfA==","signatures":[{"sig":"MEUCIEiJMb3jp3b9oWWWh42PVvRADsiMEfOukmzPyKSKGuAgAiEA8phVqV5Pn8eBwpbWkIqhxaaqlo5/KM1lj07KbQqqEeo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbo+IQCRA9TVsSAnZWagAA0FQP/20+OV539WePESvVDQMe\nQMh1htwLffkZaJxGeldRKFiLZZbE3XyVg71l4juOOp8Uth92VXgcZH2oZ8ZN\nuu7yBDSPkVLBZRGEhAOxPsHjKDtXmpdh6JZo8xwvHNISLdzxZvgzI7RMEpkT\ndegqXb7eLREDp93w2KQ8fJLrLpJg5fPQswl6V66rXjlf13srP085rAfyVS8E\nJ95J7sKt+shZD6q4a/l28I1qSZM3RgOOVTDERNPklbkRjKg4SB4JPua1QuAu\nFsjL4Kt28FHE8vvmc/GbaE6pARSYR/qTUHT7MJbhhcqW5WHan6M7c5/meOU2\nbfVHn6wsR77eUtrvCF4pzFTJN6faLqeOyWXquUSqFqRtL4BqsqhEQ6gflqox\nEHi60QXo18jUOYy5V65Mx0TSzL2NoiT7lOtoFk2tQkphK7v29PKd8X4gVYuC\nn7gwk++b/lE74iStv/h3f7DgN2hHn14T/pqIGO7I5NX+YQ4Q5Run+04ajJBX\n1ru6R2KStP0WVGaOypvA9jXS8eQmkDCoesIwZNlp+ALHPm+5LUckX+J5R+aF\nYfZYWtQMhHe4ZVi6AyDBHKza/O/Rd6qyuZcooTLqoFLgfje2EFSpk02jktbZ\nS+zytSKwZ/EZXiIawNfDm6EFEJJFJP7CiowlgTXn1X9BpfkdIA5JTL18hZIe\npqF9\r\n=jAAh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","gitHead":"563b519ccfc78fd4df33e383f3c3142b8beaf0c1","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"babel src -d build","prepublish":"npm run build"},"_npmUser":{"name":"mniehe","email":"mniehe@gmail.com"},"repository":{"url":"git+https://git.cto.ai/hackcapital/tools/hd3.git","type":"git"},"_npmVersion":"5.6.0","description":"A module D3 library for React.","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-preset-react":"^6.24.1","babel-preset-es2015":"^6.24.1"},"peerDependencies":{"d3":"^5.7.0","react":"^16.5.0"},"_npmOperationalInternal":{"tmp":"tmp/hd3_1.0.3_1537466896169_0.23115048101983593","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@hackcapital/hd3","version":"1.0.4","keywords":["d3","hd3","graph","graphing"],"author":{"name":"Mark Niehe","email":"mark.niehe@hackcapital.com"},"license":"MIT","_id":"@hackcapital/hd3@1.0.4","maintainers":[{"name":"alexkushner","email":"alex.kushner@gmail.com"},{"name":"brendan-kelly","email":"brendanhkelly@gmail.com"},{"name":"brettcampbell","email":"brett@hackcapital.com"},{"name":"chowmein","email":"carmenchow@protonmail.com"},{"name":"coreysan","email":"corey@sancosoftware.ca"},{"name":"danielalmeida","email":"daniel.almeida@live.com"},{"name":"fayezosaadi","email":"fayez@hackcapital.com"},{"name":"filipe.hc","email":"filipe@hackcapital.com"},{"name":"gaossou","email":"sxgao3001@gmail.com"},{"name":"hackcapitaladmin","email":"kc@hackcapital.com"},{"name":"hackcapitalbot","email":"ops@hackcapital.com"},{"name":"hackmatt","email":"matthew.butler@hackcapital.com"},{"name":"hounslow","email":"hounslowmatthew@gmail.com"},{"name":"hugodorea","email":"hugo@aioninnovations.com"},{"name":"jesstice","email":"jessica.dieuique@gmail.com"},{"name":"jmeintjes","email":"jaco@hackcapital.com"},{"name":"jplew","email":"jp@hackcapital.com"},{"name":"magitron","email":"maggie@hackcapital.com"},{"name":"mariomejia","email":"mario@hackcapital.com"},{"name":"markbahnman","email":"mark.bahnman@gmail.com"},{"name":"mniehe","email":"mniehe@gmail.com"},{"name":"mwillcox","email":"mattjwillcox@gmail.com"},{"name":"nicholedlc","email":"nichole@hackcapital.com"},{"name":"nicohackcapital","email":"nico@hackcapital.com"},{"name":"pabloaredu","email":"pablo@hackcapital.com"},{"name":"prachis","email":"prasg19@gmail.com"},{"name":"slajax","email":"kc@kc.io"},{"name":"slaterb1","email":"ben@hackcapital.com"},{"name":"thalesfsp","email":"thalesfsp@gmail.com"}],"contributors":[],"homepage":"https://git.cto.ai/hackcapital/tools/hd3","bugs":{"url":"https://git.cto.ai/hackcapital/tools/hd3/issues"},"dist":{"shasum":"d04a62ab413a66ea7ca298202c68fe8e11148733","tarball":"https://registry.npmjs.org/@hackcapital/hd3/-/hd3-1.0.4.tgz","fileCount":8,"integrity":"sha512-oVb095RuHbi0w01ud444xZwifbCRm9AD5mmjIPkgrhHvySTCr/pCBBvuGyzIDzke1hZrH71HYz5zkfroxoz9YA==","signatures":[{"sig":"MEUCIB3Z6X8wJllDjmvWL/i1WVTNTKSzFixssjZ3uKlMZxFuAiEAqu/zDs9SyZdg1PzzMAJpUKmO29K8yFPjakOOREOL9Kw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37023,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpTZhCRA9TVsSAnZWagAARHgP/1rSs/YfZW6g/m0eOTiJ\n628Xa17Q3q8jkmrQIML2bndbykXl2zBaX69dwUAVSpDlWztTsk7dCnUkNAWL\nmZFGuXNh9s43qr3+qM3MgYQF0UhylEddF6ushfeNJWyr9lWn3SBslAPZNn9k\nT6i5OYX8I6l94jgRvjTHKIlnLgoFzl8ghB4V6DSPumD8+oxbccd92n1e38Ef\n0L2bEKwxk99FmUhRgiRW/aoygsmLWcBtLkg2iy8y5/IdMl8pM3TmpoPHpwbS\nBsAxFZhdA7H15b5pG5pZXt4AX4WnzFC/Ki4+pq69LGVIW7PMZ6RVv+CRZvha\nSTWB2t1EXSz7BpmLCtU2C+Hue5oQHTKaf1ijDb28vcHwOj4iS5mkJ98nEaNY\nD3OtD5u/FUWBnM3eI+5bD6vdd/BnN/xf4IuITZ/e5BLRbcj7uOn/j7uc8LVS\nSOUNedbfwHXDPE7z/h2876126C9tzXgpR8SVi9eDxUPrIVjERKhYplF6qPkS\n+yjdn/pVNkuScfZs7zrMAcZEj7OpEAcCHuhDqgAsVmP/fBIO1SAk/dvl/Qju\noom73HSIp5erV2RNSTJOCqcSHSYShfUT2RWaH/nAO453AaQmA3q66Ha7CFmF\nyx/+oot7bFxoI5qpGzl29/5UTT//uLeCAQFCn7KrUwn60C8MCF61uRfGi/q4\n96Q9\r\n=yCZY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","gitHead":"9a52ce109c83f769a4ad1bf18e425ee2c873c185","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"babel src -d build","prepublish":"npm run build"},"_npmUser":{"name":"mniehe","email":"mniehe@gmail.com"},"repository":{"url":"git+https://git.cto.ai/hackcapital/tools/hd3.git","type":"git"},"_npmVersion":"5.6.0","description":"A module D3 library for React.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"debug":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^9.0.0","babel-preset-react":"^6.24.1","babel-preset-es2015":"^6.24.1"},"peerDependencies":{"d3":"^5.7.0","react":"^16.5.0"},"_npmOperationalInternal":{"tmp":"tmp/hd3_1.0.4_1537554016988_0.10234991052742992","host":"s3://npm-registry-packages"}}},"time":{"created":"2018-09-19T23:10:38.279Z","modified":"2025-09-08T21:14:43.846Z","1.0.0":"2018-09-19T23:10:38.427Z","1.0.1":"2018-09-19T23:27:49.298Z","1.0.3":"2018-09-20T18:08:16.302Z","1.0.4":"2018-09-21T18:20:17.175Z"},"bugs":{"url":"https://git.cto.ai/hackcapital/tools/hd3/issues"},"author":{"name":"Mark Niehe","email":"mark.niehe@hackcapital.com"},"license":"MIT","homepage":"https://git.cto.ai/hackcapital/tools/hd3","keywords":["d3","hd3","graph","graphing"],"repository":{"url":"git+https://git.cto.ai/hackcapital/tools/hd3.git","type":"git"},"description":"A module D3 library for React.","contributors":[],"maintainers":[{"email":"brett@cto.ai","name":"brettcampbell"},{"email":"kc@hackcapital.com","name":"hackcapitaladmin"},{"email":"kc@kc.io","name":"slajax"}],"readme":"# HD3 (_HackCapital D3_)\n## Installation\n\n`npm install @hackcapital/hd3`\n\n## Examples\n\n### Basic usage:\nHere's an example of a very basic graph:\n```javascript\nimport React, { Component } from 'react';\nimport { scaleLinear } from 'd3-scale';\nimport { line } from 'd3-shape';\nimport { GraphElement, Graph } from '@hackcapital/hd3';\n\n// Some random test data\nconst testData = [\n  { x: 1, y: 2 },\n  { x: 2, y: 4 },\n  { x: 3, y: 9 },\n  { x: 4, y: 15 },\n  { x: 5, y: 5 },\n];\n\n/**\n * This is a very basic Line that extends the GraphElement. The only method that needs to\n * exist within a class that extends GraphElement is the `draw()` method. This is the one\n * that will be called by the parent Graph to actually draw the element.\n * \n * Inside the `draw()` function you will have access to:\n * - `this.graph` is a reference to the base graph.\n *   - `this.graph.plotNode` is a reference to the base SVG element that's already wrapped by\n *     the D3 select function.\n * - `this.props` includes any properties that were passed in to this element.\n */\nclass Line extends GraphElement {\n  draw() {\n\n    // Take the data that was passed in to the props.\n    const { data } = this.props;\n    \n    // Define a basic line using the x and y scale of the parent graph.\n    const meanLine = line()\n      .x(d => this.graph.xScale(d.x))\n      .y(d => this.graph.yScale(d.y));\n\n    const lineObj = this.graph.plotNode\n      .append('g')\n      .append('path')\n      .attr('d', meanLine(data));\n\n    this.applyStyles(lineObj);\n  }\n}\n\n/**\n * This component will be the wrapper for the graph. If we need to position the graph in an specific\n * way, it should be done using the wrapper div.\n */\nclass BasicGraph extends Component {\n  render() {\n\n    // Find the xRange and yRange of our data set\n    const xRange = [Number.MAX_SAFE_INTEGER, -Number.MAX_SAFE_INTEGER];\n    const yRange = [Number.MAX_SAFE_INTEGER, -Number.MAX_SAFE_INTEGER];\n    \n    for (let point of testData) {\n      if (point.x < xRange[0]) {\n        xRange[0] = point.x;\n      } else if (point.x > xRange[1]) {\n        xRange[1] = point.x;\n      }\n\n      if (point.y < yRange[0]) {\n        yRange[0] = point.y;\n      } else if (point.y > yRange[1]) {\n        yRange[1] = point.y;\n      }\n    }\n\n    return (\n      <div>\n        <Graph\n          name={'basic-graph'}\n          style={{ backgroundColor: 'blue' }}\n          xRange={xRange}\n          yRange={yRange}\n          scaleType={scaleLinear}\n          height={500}\n          width={500}\n        >\n          <Line \n            data={testData} \n            name={'scope'}\n            style={{ fill: 'none', 'stroke-width': 2, stroke: '#50E7F1' }}\n          />\n        </Graph>\n      </div>\n    );\n  }\n}\n\nexport default BasicGraph;\n```\n\n### Responsive Graph:\nThis next example demonstrates how to make that same graph responsive. When the \n`responsive` property is set to true on the `Graph` component, the graph will size\nitself based on whatever it is placed inside of. In this example, the `Graph` is\nplaced inside a `div` that is placed in the middle of the page and sized to be\n50% of the page.\n```javascript\nimport React, { Component } from 'react';\nimport { scaleLinear } from 'd3-scale';\nimport { line } from 'd3-shape';\nimport { GraphElement, Graph } from '@hackcapital/hd3';\n\n// Some random test data\nconst testData = [\n  { x: 1, y: 2 },\n  { x: 2, y: 4 },\n  { x: 3, y: 9 },\n  { x: 4, y: 15 },\n  { x: 5, y: 5 },\n];\n\nclass Line extends GraphElement {\n  draw() {\n\n    // Take the data that was passed in to the props.\n    const { data } = this.props;\n    \n    // Define a basic line using the x and y scale of the parent graph.\n    const meanLine = line()\n      .x(d => this.graph.xScale(d.x))\n      .y(d => this.graph.yScale(d.y));\n\n    const lineObj = this.graph.plotNode\n      .append('g')\n      .append('path')\n      .attr('d', meanLine(data));\n\n    this.applyStyles(lineObj);\n  }\n}\n\nclass BasicResponsiveGraph extends Component {\n  render() {\n\n    // Find the xRange and yRange of our data set\n    const xRange = [Number.MAX_SAFE_INTEGER, -Number.MAX_SAFE_INTEGER];\n    const yRange = [Number.MAX_SAFE_INTEGER, -Number.MAX_SAFE_INTEGER];\n    \n    for (let point of testData) {\n      if (point.x < xRange[0]) {\n        xRange[0] = point.x;\n      } else if (point.x > xRange[1]) {\n        xRange[1] = point.x;\n      }\n\n      if (point.y < yRange[0]) {\n        yRange[0] = point.y;\n      } else if (point.y > yRange[1]) {\n        yRange[1] = point.y;\n      }\n    }\n\n    return (\n      <div\n        style={{ \n          width: '100vw', \n          height: '100vh', \n          backgroundColor: 'pink',\n          display: 'flex',\n          justifyContent: 'center',\n          alignItems: 'center'\n        }}\n      >\n        <div\n          style={{ width: '50vw', height: '50vh' }}\n        >\n          <Graph\n            name={'basic-graph'}\n            style={{ backgroundColor: 'blue' }}\n            xRange={xRange}\n            yRange={yRange}\n            scaleType={scaleLinear}\n            height={500}\n            width={500}\n            responsive={true} // Responsive defaults to false. Set it to true here to enable responsiveness.\n          >\n            <Line \n              data={testData} \n              name={'scope'}\n              style={{ fill: 'none', 'stroke-width': 2, stroke: '#50E7F1' }}\n            />\n          </Graph>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default BasicResponsiveGraph;\n```\n\n### An Element Outside\nThis example shows how to handle a `GraphElement` that needs to be drawn outside the plot. For example,\nlets say you have an X-axis that should be drawn below the graph.\n```javascript\nimport React, { Component } from 'react';\nimport { scaleLinear } from 'd3-scale';\nimport { line } from 'd3-shape';\nimport { axisBottom } from 'd3-axis';\nimport { GraphElement, Graph } from '@hackcapital/hd3';\n\n// Some random test data\nconst testData = [\n  { x: 1, y: 2 },\n  { x: 2, y: 4 },\n  { x: 3, y: 9 },\n  { x: 4, y: 15 },\n  { x: 5, y: 5 },\n];\n\nclass Line extends GraphElement {\n  draw() {\n\n    // Take the data that was passed in to the props.\n    const { data } = this.props;\n    \n    // Define a basic line using the x and y scale of the parent graph.\n    const meanLine = line()\n      .x(d => this.graph.xScale(d.x))\n      .y(d => this.graph.yScale(d.y));\n\n    const lineObj = this.graph.plotNode\n      .append('g')\n      .append('path')\n      .attr('d', meanLine(data));\n\n    this.applyStyles(lineObj);\n  }\n}\n\n/**\n * A basic X-Axis that would normally be outside the bounds of the SVG. We can\n * add padding to account for this element by explicitly stating how much\n * padding will be need and in what direction.\n */\nclass XAxis extends GraphElement {\n\n  /**\n   * Overriding the paddingBottom to `30`, will let the parent graph know that\n   * this element needs at least an extra `30px` to be able to render properly.\n   */\n  get paddingBottom() {\n    return 30;\n  }\n\n  /**\n   * The rest of the directions do not need to be set to `0` since they default\n   * to `0`. They are set here to show how they can be set.\n   */\n  get paddingTop() {\n    return 0;\n  }\n\n  get paddingRight() {\n    return 0;\n  }\n\n  get paddingLeft() {\n    return 0;\n  }\n\n  draw() {\n    let axis = axisBottom()\n      .scale(this.graph.xScale);\n\n    const axisNode = this.graph.plotNode\n      .append('g')\n      .attr('transform', `translate(0, ${this.graph.height + 25})`)\n      .call(axis);\n    \n    this.applyStyles(axisNode);\n  }\n}\n\nclass BasicPaddingGraph extends Component {\n  render() {\n\n    // Find the xRange and yRange of our data set\n    const xRange = [Number.MAX_SAFE_INTEGER, -Number.MAX_SAFE_INTEGER];\n    const yRange = [Number.MAX_SAFE_INTEGER, -Number.MAX_SAFE_INTEGER];\n    \n    for (let point of testData) {\n      if (point.x < xRange[0]) {\n        xRange[0] = point.x;\n      } else if (point.x > xRange[1]) {\n        xRange[1] = point.x;\n      }\n\n      if (point.y < yRange[0]) {\n        yRange[0] = point.y;\n      } else if (point.y > yRange[1]) {\n        yRange[1] = point.y;\n      }\n    }\n\n    /**\n     * Any padding that is set on the `Graph` component will be added to the\n     * largest minimum of all the children.\n     */\n    return (\n      <div>\n        <Graph\n          name={'basic-graph'}\n          style={{ backgroundColor: 'blue', padding: 20 }}\n          xRange={xRange}\n          yRange={yRange}\n          scaleType={scaleLinear}\n          height={500}\n          width={500}\n        >\n          <Line \n            data={testData} \n            name={'scope'}\n            style={{ fill: 'none', 'stroke-width': 2, stroke: 'red' }}\n          />\n          <XAxis style={{ color: 'white' }}/>\n        </Graph>\n      </div>\n    );\n  }\n}\n\nexport default BasicPaddingGraph;\n```\n\n## API\n\n### `Graph` \n- Component Properties:\n  - `name`: The name for the graph being drawn.\n  - `style`: Regular styling object that React Javascript uses. (ie. `{ \"color\": \"blue\" }`)\n  - `xRange`: An array with 2 elements. First element is the minimum of the X-range and the second is the maximum of the X-range. (ie. `[0, 15]`)\n  - `yRange`: An array with 2 elements. First element is the minimum of the Y-range and the second is the maximum of the Y-range. (ie. `[0, 15]`)\n  - `scaleType`: The D3 scale function to be used for this graph. (ie. `scaleLinear`, `scaleLog`)\n  - `height`: Height for the graph in pixels. This will be ignored if `responsive` is set. (ie. `400` is `400px`)\n  - `width`: Width for the graph in pixels. This will be ignore if `responsive` is set. (ie. `400` is `400px`)\n  - `responsive`: Use this to force you graph to take up the entire height and width of the parent element (whatever that size may be).\n- API (accessible from within `GraphElements`):\n  - `plotNode`: An instance of a D3 selection for the plot that was drawn for the graph. All `GraphElements` should draw themselves within this.\n  - `height`: Height of the plot in pixels.\n  - `width`: Width of the plot in pixels.\n  - `name`: Name of the graph.\n  - `xRange`: Minimum and maximum of the X-Axis. (ie. `[0, 15]`)\n  - `yRange`: Minimum and maximum of the Y-Axis. (ie. `[0, 15]`)\n  - `xScale`: The X-scale generated by the `xRange` and the `scaleType`.\n  - `yScale`: The Y-scale generated by the `YRange` and the `scaleType`.\n\n### `GraphElement`\n- Component Properties\n  - `style`: Any styling that should be applied using the `applyStyles()` method. *Any styles that are passed in should be the regular CSS3 \n             property names rather than the React style property names (which are `camelCase`). (ie. use `stroke-width` instead of `strokeWidth`).\n  - Any property can be passed in here and be accessible within the `draw()` method. The only reserved property is `style`.\n- API:\n  - `draw()`: The function that will be called by the parent `Graph` component during rendering.\n  - `applyStyles(node)`: Apply any styles that were passed to the component to a given node.\n    - `node`: should be an instance of an element selected using D3's `select()` function.\n  - `graph`: The parent `Graph` component.\n  - `props`: An object that contains any properties that were passed in to the component.\n  - `paddingTop`: The amount of padding in pixels that this element needs on the top of the `Graph`.\n  - `paddingRight`: The amount of padding in pixels that this element needs on the right of the `Graph`.\n  - `paddingBottom`: The amount of padding in pixels that this element needs on the bottom of the `Graph`.\n  - `paddingLeft`: The amount of padding in pixels that this element needs on the left of the `Graph`.","readmeFilename":"README.md"}