{"_id":"@tensorflow/tfjs-vis","_rev":"52-03e77b6c4b7ff63346ef03abbcbd1468","name":"@tensorflow/tfjs-vis","dist-tags":{"latest":"1.5.1","alpha":"1.0.3-alpha.7","next":"1.4.2-pre.1"},"versions":{"0.0.1":{"name":"@tensorflow/tfjs-vis","version":"0.0.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tf-core.min.js","unpkg":"dist/tf-core.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","build-npm":"./scripts/build-npm.sh"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"^3.18.2"},"devDependencies":{"@tensorflow/tfjs":"^0.12.5","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"^3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-jasmine":"^1.1.2","karma-typescript":"^3.0.13","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","vega":"^4.2.0","webpack":"^4.16.3","webpack-cli":"^3.1.0"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.5"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"1f21b2f2c23a7afea6da8337ab2192002c42911a","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.0.1","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-JGeIQP8Nv5ilA+4pROqbYV7g4FKhBKSaxAhPRcjfjwurYZsHcpOUxpX/pUYJYPA6oy/1X04p3Dnrn3/xvSU1WA==","shasum":"5342ac38f3e3a9e4f5c82d74a455b99957c8413e","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.0.1.tgz","fileCount":106,"unpackedSize":4698454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbopwwCRA9TVsSAnZWagAAYJIP/RE6lGoh2/qeewUIw5ZI\n5S5zD9HtIZdsIZfnmsau+cCXTxZG/wEAEAl/k3iV8Giup9/TsnVQqr1o2i/P\nJggFe8sTxtNsCH9kEAswrB9GQGCEfcLYyl/jRM2YMRWTuTXPsZatFMqoW4h+\nI74rmBWw0sOI3930L+KlIWkmmlTycN/GYTbTy/ZOhOvVbkB3nrf/UcMgst+O\nsU06zxbSGL0P8KW1pinD4Uw2lmZjubw8okaef5KU0XA2hSrfh/QvOLWjv6Up\nKVxKA/YcNdge/1wfRip0v9HGIqtfW42d6s64n8bf3boTev67SfPe9r9ACQJ0\n2MuLRKsQePwQweZLBKmA9151hkX/qyKJvzRHN48FMHhJUUpqaB++PEywRGaN\nhPSJulvlcEmH/M7sQGTXmpRJNcduk/iYnTvTPj1K+bvbWaWF4rZDi1+zVnWf\ngnGDw6bw8Cv6/yd5KLUgUj32yVPxAtpB3k0o8mUHiCXbH0thh9IdtHXBryI/\n8qCHkdyboItfHSFB7Wz3x49Dh48MGk+WqA71TS2bMnGSK+oVpva6BatXgM8y\nvBKuvT4eX+Y+b23b9cfDwpUhFM9NkLZ7yxIqwVjiCoVk+EhqokDPeeKZSMnj\nTOWTmT8W5Mz98tVqIxUbg5XAIkE4xS51KBm3mkK1Y7NANOEg1l4Bp0otsx2i\nnj9N\r\n=ilnS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAQyodpdSFCyUAa9QtMuhI4UyAf0ZdOSzcxrsr4rnX8sAiEAkaPWInynDmgiRc/EsRzc7QxLETgkpTG4qFvsLMYTrJM="}]},"maintainers":[{"name":"annxingyuan","email":"annyuan@gmail.com"},{"name":"bileschi","email":"bileschi@gmail.com"},{"name":"caisq","email":"cais@google.com"},{"name":"davidsoergel","email":"soergel@google.com"},{"name":"dsmilkov","email":"dsmilkov@gmail.com"},{"name":"ericdnielsen","email":"ericdnielsen@gmail.com"},{"name":"jimbojw","email":"wilson.jim.r@gmail.com"},{"name":"nkreeger","email":"nick.kreeger@gmail.com"},{"name":"nsthorat","email":"nsthorat@google.com"},{"name":"pyu10055","email":"ping.yu.11@gmail.com"},{"name":"shancarter","email":"shanjcarter@gmail.com"},{"name":"tafsiri","email":"yassogba@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.0.1_1537383471234_0.11951086001831501"},"_hasShrinkwrap":false},"0.1.0":{"name":"@tensorflow/tfjs-vis","version":"0.1.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tf-vis.umd.js","unpkg":"dist/tf-vis.umd.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","build-npm":"./scripts/build-npm.sh"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"^3.18.2"},"devDependencies":{"@tensorflow/tfjs":"^0.12.5","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"^3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-jasmine":"^1.1.2","karma-typescript":"^3.0.13","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","vega":"^4.2.0","webpack":"^4.16.3","webpack-cli":"^3.1.0"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.5"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"c0eb7852d5cf17153357de882b9ac3db4e475768","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.1.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-uot+rw4f7iYo1f7YxNT6dbAey5ti/oy4jtTm3e4XhRZc9zqNH6QYpIiWGUjRjKlG+OWAVLFWjeLQz8WbwHAeeg==","shasum":"e3b030c0f93fb2b5d493667dd6c2693f00ae4420","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.1.0.tgz","fileCount":106,"unpackedSize":4698508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJborgNCRA9TVsSAnZWagAAd8IP/0gS1ZXGOgVsHf4GG3FJ\n6B0PvltUFTV7Ee4+kc3zPzBxnl2xu2GQb6/DWbGlgc7jvW31E2GKYVWBDHTN\nfKOYExVvBV9tOrqytVS0aQJYGK2RSK+dGnRCf3TBxQ8UU/uskeJGe6IFYVUa\ng08ykaSekjvbyWLYeFVrKsPAYikhXFBZlSUQfXyz2iOJLIev27wzQe12Ljjm\n8U7G9bhDfGdSmpOMV0mhSVKg8FdWCA8tHT/m3UVDchjz0DbrTgPr1VCgCEza\ngSHNYIvzKHCzva+Cy+XJTeGPwSdNY7slsvTI3mIHP6mfCc2Nvg7PCo5d5UD7\nXtOTWLBkN2JWNYJ2RKxeBvgdM1FYCvShgnKAXQLgUJivcqyphKqZXVbcFTgV\n4t3Lnb1rlmyHy7whOdzoKQPYQIaKprwCaS5w7snJPiGm2ZoNo89BdHdTYJrh\npHf8i11fAvSPLRY5d+hMoFBGs+8rhMlUGD2fjuy7io+gbk8UiUjEhW9/1A2b\n5nP2jRmaPxy1J7dpAieT0uz7mCZuhSke63aioDHQlcBOLkKR8awb3c1xCJOs\nyYTHTFaz/O0auRy3jCTkOq7SZeUSyW+n95fy0c3SOHM++b9JT9v9M17dbiPg\nXrm4P006evDRcBayLqOhAhH/bAfDvpW65ADndau3BRfseZA/IQd80hP9DzVJ\ntBO6\r\n=lFWD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHeKqagqrzaXq0VAlm2P1Zw3GgOQZHTjuyXg8eNNhaSNAiEAq8LzpN84jiDURCdTvgyAO9BFsjj0dj3OPVrMV+AsAm4="}]},"maintainers":[{"name":"annxingyuan","email":"annyuan@gmail.com"},{"name":"bileschi","email":"bileschi@gmail.com"},{"name":"caisq","email":"cais@google.com"},{"name":"davidsoergel","email":"soergel@google.com"},{"name":"dsmilkov","email":"dsmilkov@gmail.com"},{"name":"ericdnielsen","email":"ericdnielsen@gmail.com"},{"name":"jimbojw","email":"wilson.jim.r@gmail.com"},{"name":"nkreeger","email":"nick.kreeger@gmail.com"},{"name":"nsthorat","email":"nsthorat@google.com"},{"name":"pyu10055","email":"ping.yu.11@gmail.com"},{"name":"shancarter","email":"shanjcarter@gmail.com"},{"name":"tafsiri","email":"yassogba@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.1.0_1537390604366_0.45902349587585567"},"_hasShrinkwrap":false},"0.1.1":{"name":"@tensorflow/tfjs-vis","version":"0.1.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","build-npm":"./scripts/build-npm.sh"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"^3.18.2"},"devDependencies":{"@tensorflow/tfjs":"^0.12.5","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"^3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-jasmine":"^1.1.2","karma-typescript":"^3.0.13","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","vega":"^4.2.0","webpack":"^4.16.3","webpack-cli":"^3.1.0"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.5"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"a2568f0880666372b789e0410cf53150aaf83b6a","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.1.1","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-WdTkuoQ8VfLfTlssiar+HDTFJUqcpYuLsiwzD0pg9Qw3vgBkfRnFm/e36SadNRfAE+CMU9i3Yfe3Qil1IWf8zA==","shasum":"f0c84e2cdf325379cb21f190cc71da162bb2e655","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.1.1.tgz","fileCount":106,"unpackedSize":4698707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbor58CRA9TVsSAnZWagAAubcQAJjHSxG5/gM9FUnZ0Jcu\nrDss/F/h8cqASGq1qnZXRMmnPYgTEFguwV7uPtqt952MyC+ZXaLDjUxpnudU\nqkAGq2BsPf2PzjhJeaq6X3IKy9zzx49F6Je7rVxcstLPnGKct9pZtayYX5Tb\n4oUrth6au4KyVlHDW1xlCzHmdK7oLha4QbdiyqqTREKrgFeTNHetcnuXfXRH\nNfv/RvdVKqcENXiuy/c3pZivXcD9/dUfbqYksDoGwCeb6TS8UOftYpmjNhGS\nCWf0MOtfxPNPep8Q9Dsb6+EPCBV3sC5UqtkrWzZhieNj/FBK0J+fWS6GfNzp\nJ4ueEm7ArUOps/aU+5sm7AeL0DrKNuibVY7rEUAIEKETpxchaUwA0g/Q1HzG\nu2vU/neoNJowoMjqfOD2aRc5eIPGG9FsZQrLAGQgp6XXLjoeVQBQD/8PQgQf\n2xkEvbPLcYz/lPxgtUzaX7dBje6RMYJTy5YuF+yzXrWOhQStF4oo0U4BN3Wv\nyZjKQNgpsKg8U/r8HW7gKTCjQeB/1xwL+qbFSWdawNnwRUzi324L/cH12rrO\ngsXUw8x2cHWUSwRQeRMK1FQ6OjwJW8Y4dH2kaRIKx5dVL5Zq2V75LZiw8oV1\njOvEwPCJldCcLX4TiuLobKbusUqh6u4QOzAigeXZqLsJBxvi9VNaQZjX/E+B\nsZ7d\r\n=UfWG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPR0V1RZjcV7P+BBctbFBA7RDuvGyTgfuRsTRP1NWxfgIhALNE8uXSB0HLQh5jEaIeNzyedIJ9U+itBXUIHbaVezfF"}]},"maintainers":[{"name":"annxingyuan","email":"annyuan@gmail.com"},{"name":"bileschi","email":"bileschi@gmail.com"},{"name":"caisq","email":"cais@google.com"},{"name":"davidsoergel","email":"soergel@google.com"},{"name":"dsmilkov","email":"dsmilkov@gmail.com"},{"name":"ericdnielsen","email":"ericdnielsen@gmail.com"},{"name":"jimbojw","email":"wilson.jim.r@gmail.com"},{"name":"nkreeger","email":"nick.kreeger@gmail.com"},{"name":"nsthorat","email":"nsthorat@google.com"},{"name":"pyu10055","email":"ping.yu.11@gmail.com"},{"name":"shancarter","email":"shanjcarter@gmail.com"},{"name":"tafsiri","email":"yassogba@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.1.1_1537392251182_0.1836014770370089"},"_hasShrinkwrap":false},"0.2.0":{"name":"@tensorflow/tfjs-vis","version":"0.2.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"^3.18.2"},"devDependencies":{"@tensorflow/tfjs":"^0.12.5","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^1.1.2","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.3","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","vega":"^4.2.0","webpack":"^4.16.3","webpack-cli":"^3.1.0"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.5"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"7b2b163a36009b2de6729a5a6fa26e2c4d5f6628","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.2.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-+niRNgLf8aSddUuINGZEbBVJJQL2OEeAIEBqoDrkKqgXJ4iK9KwoRLKAyQOJdzHVHIuKeSden/doP/YrcrSouw==","shasum":"3f8c232322eec496f2a14e632244250ea1ba5502","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.2.0.tgz","fileCount":106,"unpackedSize":4707816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbv10lCRA9TVsSAnZWagAAhCgP/01l7DRotkpllbUtcYD8\nmeNYnZ9HF+VAdV5lK9Jxl20esEgrCqVwBE8pqIUHox0zv0Pqa1mt7913ZxYx\nMBrAZupfh2okiufOGUQj2v5rMj/rgDu5qtLEPCCfSqXiHpEfA8/BJIM49bZ4\nXsRlakg67ueD8Qr3NZVsMFk9Y1T9j0tkYO1arzUknG2xW/yrwBWFYyyzswIm\np1n3bHsUth2PE5k9pe9Foq4UeTycamxyOv5xbCwVj2d1yL5uwakvocBtlN3e\n8QXnOqRbvNWOIVLOl22PY8onCQKxaT55DWBokRscWP2hECuHOLiPLCqa+pT1\nfLsjcWZLyZQY0771vVLbcOsCC77xnWNagZrgvCkKbBEDX1zSBSksGHxQLB4I\nveqSmFWFabJPMf10W+dqHaUEX+brRG2r3K3LHlGF6PQsKR404jsTvF1VXdMA\nmHrhVmzLC6MqBbN4+PYX7h3gJhHDnBnPOKZRWJ4x4b206eR0hdVRAvhk0yqG\nGMoZfYratl9HspdybBKoywHBJmYudy/Q4L22U3S36o+3ixENf7j2Ey66B4pT\nBbn4MvfqBo6vdcJRqkKYqxRVvXM46IEhHbypoYdaqGlBcCtWlBlD7YT4X2TY\npEmh2DTWFrePzUM3WMUl91YYOm471Mv9eUS/siwC1uEiV/AjYV97dMTP4hgD\n6UvB\r\n=t1s/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBzb8luLkXzkBwoJc5K00OFfTLLKzA11rKh7h8RbZtoQIhALX3vQFxaW7kZe75yo37npsXvwFAUwYXMWl0qDK4euJZ"}]},"maintainers":[{"name":"annxingyuan","email":"annyuan@gmail.com"},{"name":"bileschi","email":"bileschi@gmail.com"},{"name":"caisq","email":"cais@google.com"},{"name":"davidsoergel","email":"soergel@google.com"},{"name":"dsmilkov","email":"dsmilkov@gmail.com"},{"name":"ericdnielsen","email":"ericdnielsen@gmail.com"},{"name":"jimbojw","email":"wilson.jim.r@gmail.com"},{"name":"nkreeger","email":"nick.kreeger@gmail.com"},{"name":"nsthorat","email":"nsthorat@google.com"},{"name":"pyu10055","email":"ping.yu.11@gmail.com"},{"name":"shancarter","email":"shanjcarter@gmail.com"},{"name":"tafsiri","email":"yassogba@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.2.0_1539267876374_0.617342026121265"},"_hasShrinkwrap":false},"0.3.0":{"name":"@tensorflow/tfjs-vis","version":"0.3.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"^3.18.2"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^1.1.2","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.3","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","vega":"^4.2.0","webpack":"^4.16.3","webpack-cli":"^3.1.0"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.5"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"71f99439ec8856837e6715a6458bec399dd01d07","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.3.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-+9NTrjSqbpl4CTvaytdJbj7ADVLFuNXYzuveYg3gwOAGvQwdJr9J8n1LkG5OC4KHQoyTpJ3BnTT4prUx+sL2vQ==","shasum":"57eff2cc0cde894334f36d68b00aa569725d687c","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.3.0.tgz","fileCount":858,"unpackedSize":10765820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5EYgCRA9TVsSAnZWagAAzb4P/167vAePzqDEk8bucauZ\nF7FAuHPV9QUXYgPIk94/mrm2SK9PiljxfeuY8prkAOBPoIqc6iesGzP41llh\nUdxsEJwcZ4I79/Ivl2Ha4U0eKEbvFRNJUChDCB0AnYtRkPx4KKW79PFaq95K\nS/mZz4S9t22rpAjSc7bTfeV+e/LYf1a2eCKwEshEgkccddRyW7tT9/LOZChl\nqOEYm8z+cwJmri9ZwgKBZmBD2kpqjhM60cjZDATDZPfXG+O/HZoUZfH8gLol\nWTFVe5y24FPLkwig7dIfuVLpTL4nJQnk0y3OcxnG4ZbOVbOSg8lwpWuWPmi1\nwhQIY8OiCM6/GAs+H+ecTkEiQuN4iBDBFs/BY3lh/dzvPP8DbjkeUCwvdG2W\n0rdn+KRHebyhrU7lz+KWXux09ywOV2+taxSa76wAUMw8DAnFcHh4NhYxw5p5\nN46F863EoA+H1ACm4T2M9JMgK9JSF270g9gvUJk/QHFj/zy11xCFAF8mjTde\nbputHdictqnlqhGxzVP4spifcfuNvL1iDe9GHkl+CwSUM0q25tYL91qdQq3M\n13oUx0RxkfDyXDTNTIPlLMja60fshav/CluJgseUHJKyAyGv38q2xPMFAkgY\nVVheZKd0hKkKIxkvnujoVmuVVlJedZPKpvMVUmCC+Vt+vJ1OzYx0iulMVYuF\nurxy\r\n=3bBg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC79Nf2Ip+8/F1i3Zz0w20Bg+Y9vgIfj9PGKShjZVQRxAiAtYJ4LRSwGxa4b3H6Z1gKB1z5RjEoui5QE6qlhy6OmQg=="}]},"maintainers":[{"name":"annxingyuan","email":"annyuan@gmail.com"},{"name":"bileschi","email":"bileschi@gmail.com"},{"name":"caisq","email":"cais@google.com"},{"name":"davidsoergel","email":"soergel@google.com"},{"name":"dsmilkov","email":"dsmilkov@gmail.com"},{"name":"ericdnielsen","email":"ericdnielsen@gmail.com"},{"name":"jimbojw","email":"wilson.jim.r@gmail.com"},{"name":"nkreeger","email":"nick.kreeger@gmail.com"},{"name":"nsthorat","email":"nsthorat@google.com"},{"name":"pyu10055","email":"ping.yu.11@gmail.com"},{"name":"shancarter","email":"shanjcarter@gmail.com"},{"name":"tafsiri","email":"yassogba@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.3.0_1541686815070_0.9321564252357117"},"_hasShrinkwrap":false},"0.4.0":{"name":"@tensorflow/tfjs-vis","version":"0.4.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-lite":"^2.6.0","vega-embed":"^3.26.0"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","vega":"^4.2.0","webpack":"^4.16.3","webpack-cli":"^3.1.0"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.7"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"f894c0693c333696543df33ea4b776283a74aa5a","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.4.0","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-wGbC97YLTAoxdKK1Y/lUBz7cM7yR/RR0sCPccITab1gKP50S5+Ed4EaLPzfoucmKeWsnpbX0xeiXsYbPkq7oBw==","shasum":"03fd0d5875b074d4af684ed318b8acbe3b5dfe30","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.4.0.tgz","fileCount":108,"unpackedSize":4998817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCtV2CRA9TVsSAnZWagAAwVsP/2kSrZpRQVCqOd4mA7Q1\nEXxm6JObaEzHsYBMj3XA5c0FXi6Hv6fhdtixdggV34BdUiHQAKEBQ4Ljg24e\n1n5N8Ig3cMXyLNgi7rAE3qslnIyeuPAQpT8KfpREqsWWE8rOsYm0+vTaHEEC\n2KgYjfQCfRQO1u4LmLrs+SLs8PydBNdz0N2swZKtb3pdwTkLvd1TTI03qnVC\n6nfNEG4/N028Vv/1NqoDtq1rwxesDJgjl3+pdoIsz5fI9ANZVLNyTNOqFwsR\nQ/mzOQvtVdbsi2AqdhXYcOoXM317D/B+73HuYMC8q0bP9eyKOLihkYXseUcz\nD3j0OxfXPM13r7hjA4c1W9CWUtURYftrl9gaVmu4YTPFU10OvEtabIU/ftmu\n6Ngm2g4oS2Se1Lq0zIp1geHen7TzaGpa4ZzMbz3Juw0mSGwoJCz4LjBh4MM/\ntK3pmt41s49wwqcX0+fUwTwIOX3RKvc2oLUGGhgh7cd5O+3TP60SrGrPbK+/\neQ3AhLdky+qpieoDYPUDGBMfVpqBNfxZRdmG3qO6wL2TnIbuolef9/C+PYVI\nBkg/ocKOG07os1buMOhQhr9c1Ju0SkusXpERTf/FTFNrUfR+1ASkakwJ59FG\nszjHiDjgKVp0DrJfoe7NSR3nUdQPUNC5dszXFBK3RAEOh7EFn9gwMR0lIfTi\nl9A6\r\n=R6XH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBGEPGos2w/xLV4a7vCgcJyrQC2Ixbe4KrDeWzPiSwqpAiASf20MFZ896yJdhXFLWal5xTx8P6ZePxUncnlzFhg7wg=="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"wilson.jim.r@gmail.com","name":"jimbojw"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"shanjcarter@gmail.com","name":"shancarter"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.4.0_1544213877683_0.626077947777204"},"_hasShrinkwrap":false},"0.4.1":{"name":"@tensorflow/tfjs-vis","version":"0.4.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-lite":"2.6.0","vega-embed":"3.26.1"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","vega":"4.4.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.7"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"4ab056e165f2551df9bd7f275240fa250c160ed2","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.4.1","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-fwWCqexkOZF1jUlzc/Hrq8K1rJ76fiNUTW+RwjdrXEgxWfCFAkUHpJqadG1UPCyHZjhZe2ECGHwwk2pQAcHahg==","shasum":"1957c93940aa4e7f3f2ee1874d06bdd2e6d2f3d1","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.4.1.tgz","fileCount":108,"unpackedSize":5003595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLpDlCRA9TVsSAnZWagAAVDQQAKEB5QFeez3OzVNNKCz3\neOS4cUiSX21lqbOx9puXq1Xlw6LX5vDaXYSslOk7nNIs3VNA3iVOjqWPz50B\nh+NIe2e3uBaeENUmEy8tgVeH8S5KzuHUeCdg56QTipUpdOIjOVfRqn+t+kaQ\nKCqpVJBGO6kiybdqpNyFkV5M6G6CDQk+aSr8Nr+xySxVSI5XRukDOtmWCbwP\n2y/0++v025yxXXFacXto1qQrjP0eaO0pHbD+CQEa5NG9sb5ryk+Qs3pl+B/a\nUZKFQyCwkkaTOjua0kgmh6qEllygp1/KE4EKN/97z2DsS0T4HD93yGcnT3yL\nHjd4+RYwNLt1DboX2fv3dTo6CPNjK/FD8wgwtkB3ZAO62Wwz4CBGvcAGxiuL\n/pfqmaKyvXbNw/ewB8UVe7Fl0ysZLhi70yyrR6Q+XeFXPiVzfF/PqDIzPXs8\nfHlRWf0vpaW11yuhFwMw7tzZuL/+Y1l1N8hN+i6ki6kFFulur5yxh2z+yn4z\ngg8wxsKaa4uyQlft+a7HS9L2zjytLCKooypPvv57JdVtH5pTphkHGM7xEBtw\nfNQurbst0Z54p7tOJ1atThKtYWc6QAbFS6Nl4/oE8vTVSsAGVrkcLN4UVSqs\n3w4ao4Sc+ez3TOudQGhwNp57turaMTssG+QZKvoMi/MIRBLe2SOWA81DwD7a\nqnHu\r\n=rVXt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYy/uka1bOIK1uMVQmNTaHnNRYep0xtPnDWI5/pxMMKAiEAzY0hVp1bm8kBnmPsfgz1hVkvrh/KjflQtrlXe/96W0s="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"wilson.jim.r@gmail.com","name":"jimbojw"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"shanjcarter@gmail.com","name":"shancarter"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.4.1_1546555621156_0.685461138812353"},"_hasShrinkwrap":false},"0.4.2-alpha.1":{"name":"@tensorflow/tfjs-vis","version":"0.4.2-alpha.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-lite":"2.6.0","vega-embed":"3.18.2"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","vega":"4.4.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.7"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"4ab056e165f2551df9bd7f275240fa250c160ed2","readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\n## Visors, Surfaces and Tabs\n\n### visor() => Visor\n\nReturns a singleton object with the public API of the visor. This will create\nthe necessary DOM elements for the visor on initialization.\n\nInitially calling visor() will create a panel that is displayed on the right. It hovers over your pages content and shouldn't disturb the flow of your page's DOM Elements. It has some display controls and by default also supports the following keyboard shortcuts:\n\n * __`__ (backtick): Shows or hides the visor\n * __~__ (tilde, shift+backtick): Toggles betweeen full width and smaller width view of the visor.\n\nThe returned object has the following properties, documented here with the\nprefix `visor()` and annotated with type information. You can call visor() as much as you want or store a reference to the returned object.\n\n#### visor().el: HTMLElement\n\nThe containing `HTMLElement` for the whole visor.\n\n#### visor().surface(options: SurfaceInfo) => Surface;\n\nReturns a `Surface`, creating one if necessary. This is the primary container\nof visualizations. Surfaces are organized onto `Tabs`.\n\n`options` has the following structure.\n\n```ts\n{\n  //The name / label of this surface\n  name: string,\n  // The name of the tab this surface should appear on (optional)\n  tab?: string,\n  // Display Styles for the surface (optional)\n  styles?: StyleOptions,\n}\n```\n\nStyleOptions has the following structure. All properties are optional\nand generally represent css styles that will be added to the `Surface`. As these are css properties, they can be in any valid css unit e.g. `%` or `px`.\n\n```ts\n{\n  width?: string;\n  height?: string;\n  maxWidth?: string;\n  maxHeight?: string;\n}\n```\n\n#### visor().isOpen() => boolean;\n\nReturns true if the visor is currently open/visible.\n\n#### visor().isFullscreen() => boolean;\n\nReturns true if the visor is in fullscreen mode. Note that the visor may be in a closed state even if it is in fullscreen mode.\n\n#### visor().open() => void;\n\nOpens the visor.\n\n#### visor().close() => void;\n\nCloses the visor.\n\n#### visor().toggle() => void;\n\nToggles the visor open and closed.\n\n#### visor().toggleFullScreen() => void;\n\nToggles the fullscreen mode of the visor.\n\n#### visor().setActiveTab(tabName: string) => void;\n\nSet the currently active tab. tabName must be the name of an existing tab.\n\n#### visor().unbindKeys() => void;\n\nRemoves the default keyboard handlers that control visor visibility.\n\n#### visor().bindKeys() => void;\n\nRestores the default keyboard handlers that control visor visiblity.\n\n### Surface\n\nA surface is the object returned by a call to visor().surface(...). It returns\nan object with no methods and the following properties:\n\n```ts\n{\n  //The containing HTML element for this surface\n  container: HTMLElement;\n  // A textual label for the surface.\n  label: HTMLElement;\n  // A container for plots and other renderings\n  drawArea: HTMLElement;\n}\n```\n\nGenerally speaking you would only access `.drawArea` to add plots and other renders.\n\n## Show Functions\n\nThis library exposes a `show` namespace that provides a number of higher level functions useful for rendering tfjs concepts. They lean towards being opinionated\nrather than flexible but are generally combinations of `Renderers` (see below), so one can easily roll their own.\n\n### Model Training Visualization\n\n## show.history(container: Surface, history: HistoryLike,  metrics: string[], opts?: {}) => Promise<void>\n\nRenders a `tf.Model` training 'History' or callback 'Logs'. These are useful for plotting training metrics after or during\ntraining respectively.\n\n* @param container A `Surface` or `{name: string, tab?: string}` object specifying which surface to render to.\n* @param history A history-like object. Either a tfjs-layers `History` object or an array of tfjs-layers `Logs` objects. `Logs` are produced by the callbacks on [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit) and a `History` object is returned from [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit).\n* @param metrics An array of strings reprenting training metrics of a [tf.model](https://js.tensorflow.org/api/latest/#tf.Model.compile)\n* @param opts Optional parameters for the line charts. See the opts parameter for render.linechart for details. Notably for 'accuracy' related plots the domain of the yAxis will always by 0-1, i.e. `zoomToFit` and `yAxisDomain` options are ignored.\n* @param opts.zoomToFitAccuracy a boolean controlling whether to set `zoomToFit` to true on accuracy plots as well. Generally speaking` zoomToFit` is disabled for accuracy plots as that is desireable most of the time. However there may be cases, such as when doing transfer learning, where more resolution is desired. Set `zoomToFitAccuracy` to true to turn on zoomToFit for accuracy plots.\n\n\n## show.fitCallbacks(container: Surface  metrics: string[], opts?: {}) => {[key: string]: (iteration: number, log: Logs) => Promise<void>}\n\nReturns a collection of callbacks to pass to [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit).\nCallbacks are returned for the following events, `onBatchEnd` & `onEpochEnd`.\n\nThese callbacks will plot line charts for the metrics specified at the end of every batch\nand every opoch.\n\nSee [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit) for more info\non how to pass in callback functions to the training process.\n\n* @param container A `Surface` or `{name: string, tab?: string}` object specifying which surface to render to.\n* @param metrics An array of strings representing training [metrics](https://js.tensorflow.org/api/latest/#tf.Model.compile) of a [tf.model](https://js.tensorflow.org/api/latest/#class:Model)\n* @param opts Optional parameters for the line charts. See the opts parameter for render.linechart for details. Notably for 'accuracy' related plots the domain of the yAxis will always by 0-1, i.e. zoomToFit and yAxisDomain options are ignored.\n* @param opts.zoomToFitAccuracy a boolean controlling whether to set `zoomToFit` to true on accuracy plots as well. Generally speaking` zoomToFit` is disabled for accuracy plots as that is desireable most of the time. However there may be cases, such as when doing transfer learning, where more resolution is desired. Set `zoomToFitAccuracy` to true to turn on zoomToFit for accuracy plots.\n* @param opts.callbacks Array of strings with callback names. Valid options are 'onEpochEnd' and 'onBatchEnd'. Defaults to ['onEpochEnd', 'onBatchEnd'].\n\n## show.perClassAccuracy(container: Drawable, classAccuracy: {accuracy: number[], count: number[]}, classLabels?: string[]) => Promise<void>\n\nRenders a per class accuracy table for classification task evaluation\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param classAccuracy An `Array<{accuracy: number, count: number}>` array with\n  the accuracy data. See metrics.perClassAccuracy for details on how to\n  generate this object.\n* @param classLabels An array of string labels for the classes in\n  `classAccuracy`. Optional.\n\n## show.confusionMatrix(container: Drawable, confusionMatrix: number[][], classLabels?: string[]) => Promise<void>\n\nRenders a confusion matrix for classification task evaluation\n\nCan optionally exclude the diagonal from being shaded if one wants the visual\nfocus to be on the incorrect classifications. Note that if the classification\nis perfect (i.e. only the diagonal has values) then the diagonal will always\nbe shaded.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param confusionMatrix A nested array of numbers with the confusion matrix\n  values. See metrics.confusionMatrix for details on how to generate this.\n* @param classLabels An array of string labels for the classes in\n  `classAccuracy`. Optional.\n\n## show.valuesDistribution(container: Drawable, tensor: Tensor) => Promise<void>\n\nRenders a histogram showing the distribution of all values in a tensor.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param tensor a `Tensor`\n\n## show.modelSummary(container: Drawable, model: tf.Model) => Promise<void>\n\nRenders a summary of a `tf.Model`. Displays a table with layer information.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param model a `tf.Model`\n\n## show.layer(container: Drawable, layer: Layer) => Promise<void>\n\nRenders summary information about a layer and a histogram of parameter values in that layer.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param layer a `tf.layers.Layer`\n\n## Renderers\n\nThe library exposes a `render` namespace that provides a number of functions that plot particular visualizations.\n\n## render.barchart(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a barchart.\n\n\n* @param data Data in the following format:\n  * `[ {index: number, value: number} ... ]`\n* @param container A `Surface` or `HTMLElement` in which to draw the barchart. Note thatthis chart expects to have complete control over the contents of the container and can clear its contents at will.\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x-axis, set to null to hide the\n* @param opts.yLabel label for y-axis, set to null to hide the\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @returns Promise - indicates completion of rendering\n\n\n## render.table(data: {headers: [], values: [][]}, container: Surface|HTMLElement) => void\n\nRenders a table.\n\n* @param data Data in the following format\n  * `{ headers: string[], values:  any[][] }`\n  * data.headers are the column names\n  * data.values is an array of arrays (one for  each row). The inner\n  array length usually matches the length of data.headers else there will be\n  some empty cells. Usually the values are strings or numbers, these are\n  inserted as html content so html strings are also supported.\n\n* @param container An `HTMLElement` or `Surface` in which to draw the table.\n                   Note that the chart expects to have complete control over\n                   the contents of the container and can clear its contents\n                   at will.\n* @param opts.fontSize fontSize in pixels for text in the chart\n\n## render.histogram(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Histogram.\n\n* @param data Data in the following format:\n  * `[ {value: number}, ... ]` or `[number]` or `TypedArray`\n* @param container An `HTMLElement` or `Surface` in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.maxBins maximimum number of bins to use in histogram\n* @param opts.stats summary statistics to show. These will be computed\n                    internally if no stats are passed. Pass `false` to not\n                    compute any stats. Callers are allowed to pass in their\n                    own stats as in some cases they may be able to compute\n                    them more efficiently.\n                    Stats should have the following format:\n\n      {\n        numVals?: number,\n        min?: number,\n        max?: number,\n        numZeros?: number,\n        numNans?: number\n      }\n\n## render.linechart(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Line Chart.\n\n* @param data Data in the following format\n  ```ts\n  {\n    // A nested array of objects each with an x and y property,\n    // one per series.\n    // If you only have one series to render you can just pass an array\n    // of objects with x, y properties\n    values: {x: number, y: number}[][]\n\n    // An array of strings with the names of each series passed above.\n    // Optional\n    series: string[]\n  }\n  ```\n* @param container An HTMLElement in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x axis\n* @param opts.yLabel label for y axis\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.zoomToFit a boolean indicating whether to allow non-zero baselines\n                        setting this to true allows the line chart to take up\n                        more room in the plot.\n* @param opts.yAxisDomain array of two numbers indicating the domain of the y axis\n\n\n\n## render.scatterplot(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Scatter Plot.\n\n* @param data Data in the following format\n  ```ts\n  {\n    // A nested array of objects each with an x and y property,\n    // one per series.\n    // If you only have one series to render you can just pass an array\n    // of objects with x, y properties\n    values: {x: number, y: number}[][]\n\n    // An array of strings with the names of each series passed above.\n    // Optional\n    series: string[]\n  }\n  ```\n* @param container An HTMLElement in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x axis\n* @param opts.yLabel label for y axis\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.zoomToFit a boolean indicating whether to allow excluding zero from\n                        the domain of the charts axes setting this to true allows\n                        the points to take up more room in the plot.\n* @param opts.xAxisDomain array of two numbers indicating the domain of the x axis\n                          this is overriden by zoomToFit\n* @param opts.yAxisDomain array of two numbers indicating the domain of the y axis\n                          this is overriden by zoomToFit\n\n## render.confusionMatrix(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a confusion matrix\n\n* @param data Data consists of an object with a 'values' property\n  and a 'labels' property.\n  ```ts\n  {\n    values: number[][],\n    // a matrix of numbers representing counts for each (label, prediction) pair\n\n    labels?: string[]\n    // Human readable labels for each class in the matrix. Optional\n  }\n  ```\n  e.g.\n  ```js\n  {\n    values: [[80, 23], [56, 94]],\n    labels: ['dog', 'cat'],\n  }\n  ```\n* @param container An `HTMLElement` or `Surface` in which to draw the chart\n* @param opts optional parameters\n* @param opts.shadeDiagonal boolean that controls whether or not to color cells\n* on the diagonal. Defaults to false\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.fontSize fontSize in pixels for text in the chart\n\n\n## Metrics\n\nThe `metrics` namespace contains a few utility functions for computing quality metrics\nlike accuracy or creating confusion matrices.\n\n## metrics.confusionMatrix(labels: Tensor1D, predictions: Tensor1D, numClasses?: number, weights?: Tensor1D) => Promise<number[][]>\n\nComputes a confusion matrix from predictions and labels. Each value in\nlabels and predictions should correspond to some output class. It is assumed\nthat these values go from 0 to numClasses - 1.\n\nThe result will be a 2D array of size numClasses * numClasses\n\n\n* @param labels 1D tensor of true values\n* @param predictions 1D tensor of predicted values\n* @param numClasses Number of distinct classes. Optional. If not passed in\n numClasses will equal the highest number in either labels or predictions\n plus 1\n* @param weights 1d tensor that is the same size as predictions.\n  If weights is passed in then each prediction contributes its corresponding\n  weight to the total value of the confusion matrix cell.\n\n\n## metrics.perClassAccuracy(labels: Tensor1D, predictions: Tensor1D, numClasses?: number, weights?: Tensor1D) => Promise<{accuracy: number[], count: number[]}>\n\nComputes per class accuracy between prediction and labels. Each value in labels and predictions should correspond to some output class. It is assumed that these values go from 0 to  numClasses - 1.\n\nReturns an array of objects that each have an an `accuracy` and a `count` property for each class.\n\n* @param labels 1D tensor of true values\n* @param predictions 1D tensor of predicted values\n* @param numClasses Number of distinct classes. Optional. If not passed in\n numClasses will equal the highest number in either labels or predictions\n plus 1\n\n\n## metrics.accuracy(labels: Tensor, predictions: Tensor) => Promise<number>\n\nComputes how often predictions matches labels.\n\n* @param labels tensor of true values\n* @param predictions tensor of predicted values\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.4.2-alpha.1","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-Dw1MQ0/DU1dhWxUieLXntxaEb4h22KLQlcNVqAh5GQy5U0qAj696LcC+OP1TonbGrP9krINIwzavgQFNsTTdlg==","shasum":"7c6161b78a28db0c5e9bc5848fc156fd0c8df9a0","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.4.2-alpha.1.tgz","fileCount":108,"unpackedSize":4841973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLqNGCRA9TVsSAnZWagAAABgQAJQpybeZARk5DD/RK7h0\n/UT+Q0bQj8CxkyTu0j9KvhANhYJ6sK3mBnzyc5M6MVDeiKlQYBxTKfzCLCTL\nnEsEvn2xpst/jJ0ifv2rzlQTSogfD0hTPgxS3GHRm8b9WHNbuzNXz9Zz/6nl\n1rezeUfJT2J3bSHmfSF2UWpYfF8eU/M0TPXJdJXHOn3jbUve7DprAjEK7lHk\nfPMXW0eJSu/O25oLWnvFQQ9odV8CE6K7OqM3CXWsm/w8IdT5JbjBAPipQm40\nSylTCQLjiWjRIFuWBUGnohHNtrsgFJjR6zJpes5BcgOul3Zbh2UDelWkD+0a\nS+Byr1o9ZB15PVUsc9G0dU24RKRc09P2F7Au9B2k49AjBgv6REWuFW3gCU0E\nBxH8sPd6Tpocs5wCoUwjCAZnVPke1HdvfuIyf5mnA+/1/HCc8TrDXBDIAhtN\nk8ktqHisIvBYrEt2hptW8qLWzVlvsGc/JEP2S1tiMW/y51o7mxWTPFmqa00f\nKvf6OFzx+1JnG5AJhNJBt2GgXUynklWhj5stwqGpfA1wHXBKAtx9t2JjRENv\n0awOO6sMrWIn9x512w24KVZFS9WvZAaYPrH9LRShyKaBs1JGcIeQzsuN+9IO\nXWpRZKE7J4oRVWI8IK0gT7/BU1djIwbjIWvRHgpaICrWlak0SG0MNHD420OP\nUXsg\r\n=eu5J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3/9lDdc8zCTdMeyEjRp81+0S8oTImopYYJwm9+5wGmQIhAM6GJbDsjUaFh5p/48pjG7Q1vmfrcsMEujT3y26XKxwS"}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"wilson.jim.r@gmail.com","name":"jimbojw"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"shanjcarter@gmail.com","name":"shancarter"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.4.2-alpha.1_1546560326343_0.8845849341407432"},"_hasShrinkwrap":false},"0.4.2-alpha.2":{"name":"@tensorflow/tfjs-vis","version":"0.4.2-alpha.2","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-lite":"2.6.0","vega-embed":"3.18.2"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","vega-lib":"3.3.1","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.7"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\n## Visors, Surfaces and Tabs\n\n### visor() => Visor\n\nReturns a singleton object with the public API of the visor. This will create\nthe necessary DOM elements for the visor on initialization.\n\nInitially calling visor() will create a panel that is displayed on the right. It hovers over your pages content and shouldn't disturb the flow of your page's DOM Elements. It has some display controls and by default also supports the following keyboard shortcuts:\n\n * __`__ (backtick): Shows or hides the visor\n * __~__ (tilde, shift+backtick): Toggles betweeen full width and smaller width view of the visor.\n\nThe returned object has the following properties, documented here with the\nprefix `visor()` and annotated with type information. You can call visor() as much as you want or store a reference to the returned object.\n\n#### visor().el: HTMLElement\n\nThe containing `HTMLElement` for the whole visor.\n\n#### visor().surface(options: SurfaceInfo) => Surface;\n\nReturns a `Surface`, creating one if necessary. This is the primary container\nof visualizations. Surfaces are organized onto `Tabs`.\n\n`options` has the following structure.\n\n```ts\n{\n  //The name / label of this surface\n  name: string,\n  // The name of the tab this surface should appear on (optional)\n  tab?: string,\n  // Display Styles for the surface (optional)\n  styles?: StyleOptions,\n}\n```\n\nStyleOptions has the following structure. All properties are optional\nand generally represent css styles that will be added to the `Surface`. As these are css properties, they can be in any valid css unit e.g. `%` or `px`.\n\n```ts\n{\n  width?: string;\n  height?: string;\n  maxWidth?: string;\n  maxHeight?: string;\n}\n```\n\n#### visor().isOpen() => boolean;\n\nReturns true if the visor is currently open/visible.\n\n#### visor().isFullscreen() => boolean;\n\nReturns true if the visor is in fullscreen mode. Note that the visor may be in a closed state even if it is in fullscreen mode.\n\n#### visor().open() => void;\n\nOpens the visor.\n\n#### visor().close() => void;\n\nCloses the visor.\n\n#### visor().toggle() => void;\n\nToggles the visor open and closed.\n\n#### visor().toggleFullScreen() => void;\n\nToggles the fullscreen mode of the visor.\n\n#### visor().setActiveTab(tabName: string) => void;\n\nSet the currently active tab. tabName must be the name of an existing tab.\n\n#### visor().unbindKeys() => void;\n\nRemoves the default keyboard handlers that control visor visibility.\n\n#### visor().bindKeys() => void;\n\nRestores the default keyboard handlers that control visor visiblity.\n\n### Surface\n\nA surface is the object returned by a call to visor().surface(...). It returns\nan object with no methods and the following properties:\n\n```ts\n{\n  //The containing HTML element for this surface\n  container: HTMLElement;\n  // A textual label for the surface.\n  label: HTMLElement;\n  // A container for plots and other renderings\n  drawArea: HTMLElement;\n}\n```\n\nGenerally speaking you would only access `.drawArea` to add plots and other renders.\n\n## Show Functions\n\nThis library exposes a `show` namespace that provides a number of higher level functions useful for rendering tfjs concepts. They lean towards being opinionated\nrather than flexible but are generally combinations of `Renderers` (see below), so one can easily roll their own.\n\n### Model Training Visualization\n\n## show.history(container: Surface, history: HistoryLike,  metrics: string[], opts?: {}) => Promise<void>\n\nRenders a `tf.Model` training 'History' or callback 'Logs'. These are useful for plotting training metrics after or during\ntraining respectively.\n\n* @param container A `Surface` or `{name: string, tab?: string}` object specifying which surface to render to.\n* @param history A history-like object. Either a tfjs-layers `History` object or an array of tfjs-layers `Logs` objects. `Logs` are produced by the callbacks on [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit) and a `History` object is returned from [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit).\n* @param metrics An array of strings reprenting training metrics of a [tf.model](https://js.tensorflow.org/api/latest/#tf.Model.compile)\n* @param opts Optional parameters for the line charts. See the opts parameter for render.linechart for details. Notably for 'accuracy' related plots the domain of the yAxis will always by 0-1, i.e. `zoomToFit` and `yAxisDomain` options are ignored.\n* @param opts.zoomToFitAccuracy a boolean controlling whether to set `zoomToFit` to true on accuracy plots as well. Generally speaking` zoomToFit` is disabled for accuracy plots as that is desireable most of the time. However there may be cases, such as when doing transfer learning, where more resolution is desired. Set `zoomToFitAccuracy` to true to turn on zoomToFit for accuracy plots.\n\n\n## show.fitCallbacks(container: Surface  metrics: string[], opts?: {}) => {[key: string]: (iteration: number, log: Logs) => Promise<void>}\n\nReturns a collection of callbacks to pass to [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit).\nCallbacks are returned for the following events, `onBatchEnd` & `onEpochEnd`.\n\nThese callbacks will plot line charts for the metrics specified at the end of every batch\nand every opoch.\n\nSee [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit) for more info\non how to pass in callback functions to the training process.\n\n* @param container A `Surface` or `{name: string, tab?: string}` object specifying which surface to render to.\n* @param metrics An array of strings representing training [metrics](https://js.tensorflow.org/api/latest/#tf.Model.compile) of a [tf.model](https://js.tensorflow.org/api/latest/#class:Model)\n* @param opts Optional parameters for the line charts. See the opts parameter for render.linechart for details. Notably for 'accuracy' related plots the domain of the yAxis will always by 0-1, i.e. zoomToFit and yAxisDomain options are ignored.\n* @param opts.zoomToFitAccuracy a boolean controlling whether to set `zoomToFit` to true on accuracy plots as well. Generally speaking` zoomToFit` is disabled for accuracy plots as that is desireable most of the time. However there may be cases, such as when doing transfer learning, where more resolution is desired. Set `zoomToFitAccuracy` to true to turn on zoomToFit for accuracy plots.\n* @param opts.callbacks Array of strings with callback names. Valid options are 'onEpochEnd' and 'onBatchEnd'. Defaults to ['onEpochEnd', 'onBatchEnd'].\n\n## show.perClassAccuracy(container: Drawable, classAccuracy: {accuracy: number[], count: number[]}, classLabels?: string[]) => Promise<void>\n\nRenders a per class accuracy table for classification task evaluation\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param classAccuracy An `Array<{accuracy: number, count: number}>` array with\n  the accuracy data. See metrics.perClassAccuracy for details on how to\n  generate this object.\n* @param classLabels An array of string labels for the classes in\n  `classAccuracy`. Optional.\n\n## show.confusionMatrix(container: Drawable, confusionMatrix: number[][], classLabels?: string[]) => Promise<void>\n\nRenders a confusion matrix for classification task evaluation\n\nCan optionally exclude the diagonal from being shaded if one wants the visual\nfocus to be on the incorrect classifications. Note that if the classification\nis perfect (i.e. only the diagonal has values) then the diagonal will always\nbe shaded.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param confusionMatrix A nested array of numbers with the confusion matrix\n  values. See metrics.confusionMatrix for details on how to generate this.\n* @param classLabels An array of string labels for the classes in\n  `classAccuracy`. Optional.\n\n## show.valuesDistribution(container: Drawable, tensor: Tensor) => Promise<void>\n\nRenders a histogram showing the distribution of all values in a tensor.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param tensor a `Tensor`\n\n## show.modelSummary(container: Drawable, model: tf.Model) => Promise<void>\n\nRenders a summary of a `tf.Model`. Displays a table with layer information.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param model a `tf.Model`\n\n## show.layer(container: Drawable, layer: Layer) => Promise<void>\n\nRenders summary information about a layer and a histogram of parameter values in that layer.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param layer a `tf.layers.Layer`\n\n## Renderers\n\nThe library exposes a `render` namespace that provides a number of functions that plot particular visualizations.\n\n## render.barchart(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a barchart.\n\n\n* @param data Data in the following format:\n  * `[ {index: number, value: number} ... ]`\n* @param container A `Surface` or `HTMLElement` in which to draw the barchart. Note thatthis chart expects to have complete control over the contents of the container and can clear its contents at will.\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x-axis, set to null to hide the\n* @param opts.yLabel label for y-axis, set to null to hide the\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @returns Promise - indicates completion of rendering\n\n\n## render.table(data: {headers: [], values: [][]}, container: Surface|HTMLElement) => void\n\nRenders a table.\n\n* @param data Data in the following format\n  * `{ headers: string[], values:  any[][] }`\n  * data.headers are the column names\n  * data.values is an array of arrays (one for  each row). The inner\n  array length usually matches the length of data.headers else there will be\n  some empty cells. Usually the values are strings or numbers, these are\n  inserted as html content so html strings are also supported.\n\n* @param container An `HTMLElement` or `Surface` in which to draw the table.\n                   Note that the chart expects to have complete control over\n                   the contents of the container and can clear its contents\n                   at will.\n* @param opts.fontSize fontSize in pixels for text in the chart\n\n## render.histogram(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Histogram.\n\n* @param data Data in the following format:\n  * `[ {value: number}, ... ]` or `[number]` or `TypedArray`\n* @param container An `HTMLElement` or `Surface` in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.maxBins maximimum number of bins to use in histogram\n* @param opts.stats summary statistics to show. These will be computed\n                    internally if no stats are passed. Pass `false` to not\n                    compute any stats. Callers are allowed to pass in their\n                    own stats as in some cases they may be able to compute\n                    them more efficiently.\n                    Stats should have the following format:\n\n      {\n        numVals?: number,\n        min?: number,\n        max?: number,\n        numZeros?: number,\n        numNans?: number\n      }\n\n## render.linechart(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Line Chart.\n\n* @param data Data in the following format\n  ```ts\n  {\n    // A nested array of objects each with an x and y property,\n    // one per series.\n    // If you only have one series to render you can just pass an array\n    // of objects with x, y properties\n    values: {x: number, y: number}[][]\n\n    // An array of strings with the names of each series passed above.\n    // Optional\n    series: string[]\n  }\n  ```\n* @param container An HTMLElement in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x axis\n* @param opts.yLabel label for y axis\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.zoomToFit a boolean indicating whether to allow non-zero baselines\n                        setting this to true allows the line chart to take up\n                        more room in the plot.\n* @param opts.yAxisDomain array of two numbers indicating the domain of the y axis\n\n\n\n## render.scatterplot(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Scatter Plot.\n\n* @param data Data in the following format\n  ```ts\n  {\n    // A nested array of objects each with an x and y property,\n    // one per series.\n    // If you only have one series to render you can just pass an array\n    // of objects with x, y properties\n    values: {x: number, y: number}[][]\n\n    // An array of strings with the names of each series passed above.\n    // Optional\n    series: string[]\n  }\n  ```\n* @param container An HTMLElement in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x axis\n* @param opts.yLabel label for y axis\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.zoomToFit a boolean indicating whether to allow excluding zero from\n                        the domain of the charts axes setting this to true allows\n                        the points to take up more room in the plot.\n* @param opts.xAxisDomain array of two numbers indicating the domain of the x axis\n                          this is overriden by zoomToFit\n* @param opts.yAxisDomain array of two numbers indicating the domain of the y axis\n                          this is overriden by zoomToFit\n\n## render.confusionMatrix(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a confusion matrix\n\n* @param data Data consists of an object with a 'values' property\n  and a 'labels' property.\n  ```ts\n  {\n    values: number[][],\n    // a matrix of numbers representing counts for each (label, prediction) pair\n\n    labels?: string[]\n    // Human readable labels for each class in the matrix. Optional\n  }\n  ```\n  e.g.\n  ```js\n  {\n    values: [[80, 23], [56, 94]],\n    labels: ['dog', 'cat'],\n  }\n  ```\n* @param container An `HTMLElement` or `Surface` in which to draw the chart\n* @param opts optional parameters\n* @param opts.shadeDiagonal boolean that controls whether or not to color cells\n* on the diagonal. Defaults to false\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.fontSize fontSize in pixels for text in the chart\n\n\n## Metrics\n\nThe `metrics` namespace contains a few utility functions for computing quality metrics\nlike accuracy or creating confusion matrices.\n\n## metrics.confusionMatrix(labels: Tensor1D, predictions: Tensor1D, numClasses?: number, weights?: Tensor1D) => Promise<number[][]>\n\nComputes a confusion matrix from predictions and labels. Each value in\nlabels and predictions should correspond to some output class. It is assumed\nthat these values go from 0 to numClasses - 1.\n\nThe result will be a 2D array of size numClasses * numClasses\n\n\n* @param labels 1D tensor of true values\n* @param predictions 1D tensor of predicted values\n* @param numClasses Number of distinct classes. Optional. If not passed in\n numClasses will equal the highest number in either labels or predictions\n plus 1\n* @param weights 1d tensor that is the same size as predictions.\n  If weights is passed in then each prediction contributes its corresponding\n  weight to the total value of the confusion matrix cell.\n\n\n## metrics.perClassAccuracy(labels: Tensor1D, predictions: Tensor1D, numClasses?: number, weights?: Tensor1D) => Promise<{accuracy: number[], count: number[]}>\n\nComputes per class accuracy between prediction and labels. Each value in labels and predictions should correspond to some output class. It is assumed that these values go from 0 to  numClasses - 1.\n\nReturns an array of objects that each have an an `accuracy` and a `count` property for each class.\n\n* @param labels 1D tensor of true values\n* @param predictions 1D tensor of predicted values\n* @param numClasses Number of distinct classes. Optional. If not passed in\n numClasses will equal the highest number in either labels or predictions\n plus 1\n\n\n## metrics.accuracy(labels: Tensor, predictions: Tensor) => Promise<number>\n\nComputes how often predictions matches labels.\n\n* @param labels tensor of true values\n* @param predictions tensor of predicted values\n","readmeFilename":"README.md","gitHead":"4ab056e165f2551df9bd7f275240fa250c160ed2","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.4.2-alpha.2","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-iJrQ055w8Po41UcOWNYKIgPRHcXXVMar01qWChsEA0+BD9vh7AFplyk0Aclcn88IC3Ysg06QeZT//uO1UP+DXw==","shasum":"c53629fcb6dfe387bbc61b335846024b502f5640","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.4.2-alpha.2.tgz","fileCount":108,"unpackedSize":4849191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLqlfCRA9TVsSAnZWagAAc7QQAJHjUrd9WsmfrXK2b75z\nADNLfseCPXbqzt6IA+61+ZbEsB7bNwZELxXrl+h54S+fPif2l5vfmFTiyacL\nOCNn5Sa+1Xm2eK8FeLeCUT++AO483OsYDH9aUOJS0v8gOb9k1OEIZviQ/Hga\nXxBrk6jrhSx6wV8GwMRLsurfDNi9NDUcpsMrstGylURUVs30ClfGRCA0DM8x\n7YPGiPaP636Bcqm5krsl5bvtiZyNWvh7W5/MiaUJN97o+bnUzLOQ+Ptrv+Rv\n81UKGiJCa1mZWNKY6HB7f2rzJqw+wbIIzAhQv7Y0rdJzCYyNSuKrLxjyP4q5\nqUgE/CrjxF/cHQgSPd/RPuGFFcrHlw3+CWQoa1G9W1l+1HYDeP7E91t5n3zS\naZN6tFc2f7C1amRapr1lsnDYpKsfZE5NZDRzyLJ5VSPrxNoZCZeEKU7Yfg8l\nvC9geRg4IDxZ1hxUI7Y06f9veKoQy2SI79gH/6+X+V0Z+Y+UmhhxlJKKFZNd\n5mLfrslP3YlQekM4hjFQDT+uajs4nplnAip4tErowSA5g5aRy9AiMM6s2vTA\nqz59DyiGyhJMgePg8wOMXoEA+49r9+AIrVJWeU9zhZHWehol9LqmODgq567e\ntGmnGQJYczUzSiqsMIvKoK+ER+ckhHfUVwinXxUMlrmRLyceXgAiAQdGPJMf\nrDIy\r\n=MpTZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuxVUMc1RnjCvDt/L4boglzUNeMsGARUOVgm3EQtdMWAIhALG56ShtJs+Maef7/hInJncKGH07J1sfNxTGXBBRfWaQ"}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"wilson.jim.r@gmail.com","name":"jimbojw"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"shanjcarter@gmail.com","name":"shancarter"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.4.2-alpha.2_1546561887154_0.7350498963506469"},"_hasShrinkwrap":false},"0.4.2-alpha.3":{"name":"@tensorflow/tfjs-vis","version":"0.4.2-alpha.3","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-lib":"3.3.1","vega-lite":"2.6.0","vega-embed":"3.18.2"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.7"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\n## Visors, Surfaces and Tabs\n\n### visor() => Visor\n\nReturns a singleton object with the public API of the visor. This will create\nthe necessary DOM elements for the visor on initialization.\n\nInitially calling visor() will create a panel that is displayed on the right. It hovers over your pages content and shouldn't disturb the flow of your page's DOM Elements. It has some display controls and by default also supports the following keyboard shortcuts:\n\n * __`__ (backtick): Shows or hides the visor\n * __~__ (tilde, shift+backtick): Toggles betweeen full width and smaller width view of the visor.\n\nThe returned object has the following properties, documented here with the\nprefix `visor()` and annotated with type information. You can call visor() as much as you want or store a reference to the returned object.\n\n#### visor().el: HTMLElement\n\nThe containing `HTMLElement` for the whole visor.\n\n#### visor().surface(options: SurfaceInfo) => Surface;\n\nReturns a `Surface`, creating one if necessary. This is the primary container\nof visualizations. Surfaces are organized onto `Tabs`.\n\n`options` has the following structure.\n\n```ts\n{\n  //The name / label of this surface\n  name: string,\n  // The name of the tab this surface should appear on (optional)\n  tab?: string,\n  // Display Styles for the surface (optional)\n  styles?: StyleOptions,\n}\n```\n\nStyleOptions has the following structure. All properties are optional\nand generally represent css styles that will be added to the `Surface`. As these are css properties, they can be in any valid css unit e.g. `%` or `px`.\n\n```ts\n{\n  width?: string;\n  height?: string;\n  maxWidth?: string;\n  maxHeight?: string;\n}\n```\n\n#### visor().isOpen() => boolean;\n\nReturns true if the visor is currently open/visible.\n\n#### visor().isFullscreen() => boolean;\n\nReturns true if the visor is in fullscreen mode. Note that the visor may be in a closed state even if it is in fullscreen mode.\n\n#### visor().open() => void;\n\nOpens the visor.\n\n#### visor().close() => void;\n\nCloses the visor.\n\n#### visor().toggle() => void;\n\nToggles the visor open and closed.\n\n#### visor().toggleFullScreen() => void;\n\nToggles the fullscreen mode of the visor.\n\n#### visor().setActiveTab(tabName: string) => void;\n\nSet the currently active tab. tabName must be the name of an existing tab.\n\n#### visor().unbindKeys() => void;\n\nRemoves the default keyboard handlers that control visor visibility.\n\n#### visor().bindKeys() => void;\n\nRestores the default keyboard handlers that control visor visiblity.\n\n### Surface\n\nA surface is the object returned by a call to visor().surface(...). It returns\nan object with no methods and the following properties:\n\n```ts\n{\n  //The containing HTML element for this surface\n  container: HTMLElement;\n  // A textual label for the surface.\n  label: HTMLElement;\n  // A container for plots and other renderings\n  drawArea: HTMLElement;\n}\n```\n\nGenerally speaking you would only access `.drawArea` to add plots and other renders.\n\n## Show Functions\n\nThis library exposes a `show` namespace that provides a number of higher level functions useful for rendering tfjs concepts. They lean towards being opinionated\nrather than flexible but are generally combinations of `Renderers` (see below), so one can easily roll their own.\n\n### Model Training Visualization\n\n## show.history(container: Surface, history: HistoryLike,  metrics: string[], opts?: {}) => Promise<void>\n\nRenders a `tf.Model` training 'History' or callback 'Logs'. These are useful for plotting training metrics after or during\ntraining respectively.\n\n* @param container A `Surface` or `{name: string, tab?: string}` object specifying which surface to render to.\n* @param history A history-like object. Either a tfjs-layers `History` object or an array of tfjs-layers `Logs` objects. `Logs` are produced by the callbacks on [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit) and a `History` object is returned from [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit).\n* @param metrics An array of strings reprenting training metrics of a [tf.model](https://js.tensorflow.org/api/latest/#tf.Model.compile)\n* @param opts Optional parameters for the line charts. See the opts parameter for render.linechart for details. Notably for 'accuracy' related plots the domain of the yAxis will always by 0-1, i.e. `zoomToFit` and `yAxisDomain` options are ignored.\n* @param opts.zoomToFitAccuracy a boolean controlling whether to set `zoomToFit` to true on accuracy plots as well. Generally speaking` zoomToFit` is disabled for accuracy plots as that is desireable most of the time. However there may be cases, such as when doing transfer learning, where more resolution is desired. Set `zoomToFitAccuracy` to true to turn on zoomToFit for accuracy plots.\n\n\n## show.fitCallbacks(container: Surface  metrics: string[], opts?: {}) => {[key: string]: (iteration: number, log: Logs) => Promise<void>}\n\nReturns a collection of callbacks to pass to [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit).\nCallbacks are returned for the following events, `onBatchEnd` & `onEpochEnd`.\n\nThese callbacks will plot line charts for the metrics specified at the end of every batch\nand every opoch.\n\nSee [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit) for more info\non how to pass in callback functions to the training process.\n\n* @param container A `Surface` or `{name: string, tab?: string}` object specifying which surface to render to.\n* @param metrics An array of strings representing training [metrics](https://js.tensorflow.org/api/latest/#tf.Model.compile) of a [tf.model](https://js.tensorflow.org/api/latest/#class:Model)\n* @param opts Optional parameters for the line charts. See the opts parameter for render.linechart for details. Notably for 'accuracy' related plots the domain of the yAxis will always by 0-1, i.e. zoomToFit and yAxisDomain options are ignored.\n* @param opts.zoomToFitAccuracy a boolean controlling whether to set `zoomToFit` to true on accuracy plots as well. Generally speaking` zoomToFit` is disabled for accuracy plots as that is desireable most of the time. However there may be cases, such as when doing transfer learning, where more resolution is desired. Set `zoomToFitAccuracy` to true to turn on zoomToFit for accuracy plots.\n* @param opts.callbacks Array of strings with callback names. Valid options are 'onEpochEnd' and 'onBatchEnd'. Defaults to ['onEpochEnd', 'onBatchEnd'].\n\n## show.perClassAccuracy(container: Drawable, classAccuracy: {accuracy: number[], count: number[]}, classLabels?: string[]) => Promise<void>\n\nRenders a per class accuracy table for classification task evaluation\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param classAccuracy An `Array<{accuracy: number, count: number}>` array with\n  the accuracy data. See metrics.perClassAccuracy for details on how to\n  generate this object.\n* @param classLabels An array of string labels for the classes in\n  `classAccuracy`. Optional.\n\n## show.confusionMatrix(container: Drawable, confusionMatrix: number[][], classLabels?: string[]) => Promise<void>\n\nRenders a confusion matrix for classification task evaluation\n\nCan optionally exclude the diagonal from being shaded if one wants the visual\nfocus to be on the incorrect classifications. Note that if the classification\nis perfect (i.e. only the diagonal has values) then the diagonal will always\nbe shaded.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param confusionMatrix A nested array of numbers with the confusion matrix\n  values. See metrics.confusionMatrix for details on how to generate this.\n* @param classLabels An array of string labels for the classes in\n  `classAccuracy`. Optional.\n\n## show.valuesDistribution(container: Drawable, tensor: Tensor) => Promise<void>\n\nRenders a histogram showing the distribution of all values in a tensor.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param tensor a `Tensor`\n\n## show.modelSummary(container: Drawable, model: tf.Model) => Promise<void>\n\nRenders a summary of a `tf.Model`. Displays a table with layer information.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param model a `tf.Model`\n\n## show.layer(container: Drawable, layer: Layer) => Promise<void>\n\nRenders summary information about a layer and a histogram of parameter values in that layer.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param layer a `tf.layers.Layer`\n\n## Renderers\n\nThe library exposes a `render` namespace that provides a number of functions that plot particular visualizations.\n\n## render.barchart(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a barchart.\n\n\n* @param data Data in the following format:\n  * `[ {index: number, value: number} ... ]`\n* @param container A `Surface` or `HTMLElement` in which to draw the barchart. Note thatthis chart expects to have complete control over the contents of the container and can clear its contents at will.\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x-axis, set to null to hide the\n* @param opts.yLabel label for y-axis, set to null to hide the\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @returns Promise - indicates completion of rendering\n\n\n## render.table(data: {headers: [], values: [][]}, container: Surface|HTMLElement) => void\n\nRenders a table.\n\n* @param data Data in the following format\n  * `{ headers: string[], values:  any[][] }`\n  * data.headers are the column names\n  * data.values is an array of arrays (one for  each row). The inner\n  array length usually matches the length of data.headers else there will be\n  some empty cells. Usually the values are strings or numbers, these are\n  inserted as html content so html strings are also supported.\n\n* @param container An `HTMLElement` or `Surface` in which to draw the table.\n                   Note that the chart expects to have complete control over\n                   the contents of the container and can clear its contents\n                   at will.\n* @param opts.fontSize fontSize in pixels for text in the chart\n\n## render.histogram(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Histogram.\n\n* @param data Data in the following format:\n  * `[ {value: number}, ... ]` or `[number]` or `TypedArray`\n* @param container An `HTMLElement` or `Surface` in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.maxBins maximimum number of bins to use in histogram\n* @param opts.stats summary statistics to show. These will be computed\n                    internally if no stats are passed. Pass `false` to not\n                    compute any stats. Callers are allowed to pass in their\n                    own stats as in some cases they may be able to compute\n                    them more efficiently.\n                    Stats should have the following format:\n\n      {\n        numVals?: number,\n        min?: number,\n        max?: number,\n        numZeros?: number,\n        numNans?: number\n      }\n\n## render.linechart(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Line Chart.\n\n* @param data Data in the following format\n  ```ts\n  {\n    // A nested array of objects each with an x and y property,\n    // one per series.\n    // If you only have one series to render you can just pass an array\n    // of objects with x, y properties\n    values: {x: number, y: number}[][]\n\n    // An array of strings with the names of each series passed above.\n    // Optional\n    series: string[]\n  }\n  ```\n* @param container An HTMLElement in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x axis\n* @param opts.yLabel label for y axis\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.zoomToFit a boolean indicating whether to allow non-zero baselines\n                        setting this to true allows the line chart to take up\n                        more room in the plot.\n* @param opts.yAxisDomain array of two numbers indicating the domain of the y axis\n\n\n\n## render.scatterplot(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Scatter Plot.\n\n* @param data Data in the following format\n  ```ts\n  {\n    // A nested array of objects each with an x and y property,\n    // one per series.\n    // If you only have one series to render you can just pass an array\n    // of objects with x, y properties\n    values: {x: number, y: number}[][]\n\n    // An array of strings with the names of each series passed above.\n    // Optional\n    series: string[]\n  }\n  ```\n* @param container An HTMLElement in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x axis\n* @param opts.yLabel label for y axis\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.zoomToFit a boolean indicating whether to allow excluding zero from\n                        the domain of the charts axes setting this to true allows\n                        the points to take up more room in the plot.\n* @param opts.xAxisDomain array of two numbers indicating the domain of the x axis\n                          this is overriden by zoomToFit\n* @param opts.yAxisDomain array of two numbers indicating the domain of the y axis\n                          this is overriden by zoomToFit\n\n## render.confusionMatrix(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a confusion matrix\n\n* @param data Data consists of an object with a 'values' property\n  and a 'labels' property.\n  ```ts\n  {\n    values: number[][],\n    // a matrix of numbers representing counts for each (label, prediction) pair\n\n    labels?: string[]\n    // Human readable labels for each class in the matrix. Optional\n  }\n  ```\n  e.g.\n  ```js\n  {\n    values: [[80, 23], [56, 94]],\n    labels: ['dog', 'cat'],\n  }\n  ```\n* @param container An `HTMLElement` or `Surface` in which to draw the chart\n* @param opts optional parameters\n* @param opts.shadeDiagonal boolean that controls whether or not to color cells\n* on the diagonal. Defaults to false\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.fontSize fontSize in pixels for text in the chart\n\n\n## Metrics\n\nThe `metrics` namespace contains a few utility functions for computing quality metrics\nlike accuracy or creating confusion matrices.\n\n## metrics.confusionMatrix(labels: Tensor1D, predictions: Tensor1D, numClasses?: number, weights?: Tensor1D) => Promise<number[][]>\n\nComputes a confusion matrix from predictions and labels. Each value in\nlabels and predictions should correspond to some output class. It is assumed\nthat these values go from 0 to numClasses - 1.\n\nThe result will be a 2D array of size numClasses * numClasses\n\n\n* @param labels 1D tensor of true values\n* @param predictions 1D tensor of predicted values\n* @param numClasses Number of distinct classes. Optional. If not passed in\n numClasses will equal the highest number in either labels or predictions\n plus 1\n* @param weights 1d tensor that is the same size as predictions.\n  If weights is passed in then each prediction contributes its corresponding\n  weight to the total value of the confusion matrix cell.\n\n\n## metrics.perClassAccuracy(labels: Tensor1D, predictions: Tensor1D, numClasses?: number, weights?: Tensor1D) => Promise<{accuracy: number[], count: number[]}>\n\nComputes per class accuracy between prediction and labels. Each value in labels and predictions should correspond to some output class. It is assumed that these values go from 0 to  numClasses - 1.\n\nReturns an array of objects that each have an an `accuracy` and a `count` property for each class.\n\n* @param labels 1D tensor of true values\n* @param predictions 1D tensor of predicted values\n* @param numClasses Number of distinct classes. Optional. If not passed in\n numClasses will equal the highest number in either labels or predictions\n plus 1\n\n\n## metrics.accuracy(labels: Tensor, predictions: Tensor) => Promise<number>\n\nComputes how often predictions matches labels.\n\n* @param labels tensor of true values\n* @param predictions tensor of predicted values\n","readmeFilename":"README.md","gitHead":"4ab056e165f2551df9bd7f275240fa250c160ed2","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.4.2-alpha.3","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-Ou6LKM2Bx5wo3XkTN6W+uAZr9sF0Bmvou31JG/Es6Z2WtvnWFR4rrDJnmGs/LIiG9+Wep5zahanutDkdG8joog==","shasum":"d26c4ec111c1541520d6dc848aab4bf12abba979","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.4.2-alpha.3.tgz","fileCount":108,"unpackedSize":4849191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLqsECRA9TVsSAnZWagAA/90P/R6ZXHBNRcnPYYlNLCql\nS4B9SgO5vkZaMOgTtb9s8G3bfEVPOrAsdPUJ6ydL9Z4TSYiJ9lhNHbJdwyrQ\nu5rs4sRm7nMq5wceCbHNC7gYn7YYaGBDHItgQXFqewblep/Ct6T9Cgrst7Xe\nW8KmXTVunlI/aqJv8gRsWaHqzBjSJY1vp+6npK1gZjS+XJMHRuZYs42BCzOG\nhNaQfjoiEq54dHDf9k1p8I4dE6+VDQDYkIUJUO+Wyfn84/xumNfpIVTGh0BG\nV0MEQAKnH50C0wTQQaUfZu4fTsmBgWPaueSju4xy/Hheh36LeFADiUqZSRlB\nZA0UZ7cUTBdc0zGy3XSBEGWqwZViszyYnjBGZeyyyjdJ4eVq/sq8C6VjYf3C\nzy06WVWYPifDFFQbdPtRakoAwgqC2Ngwj4Uz9UDZhgx0/AF/zzhjoKEbbBVU\nUFTKvCAW92024SJ/t5VDzmicv53VLH0sOPDBmS3/ViVVLg6ww+wwXpIGdrgZ\nO7AEGLSBlITHPwcn4earMhUGB/SuUkzfZ1tJesiZf7u7DhqqwtDo0hjPEspF\nT6Nkq2ODqV1+hYiliHiSJP3S/qiXY6+F6TLVbzfUaHJ3r6CEVfFT/7kp2pSc\n7znOQmPxcCV9UOEEj4ra97H8+2QN6TzeVEfrrnVG5hAmzcscXYEZHS7VB7D3\nohUU\r\n=C8xZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFSkgUB5+ZIcZoGsAI+QlXptpU6EHFrB+GedxwPLi59nAiEAwcpd5VdSYSs5Jj8Sh+9tjLtgoUF5ZXlqQc3bEdFvS/I="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"wilson.jim.r@gmail.com","name":"jimbojw"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"shanjcarter@gmail.com","name":"shancarter"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.4.2-alpha.3_1546562307992_0.5482111514635337"},"_hasShrinkwrap":false},"0.4.2-alpha.4":{"name":"@tensorflow/tfjs-vis","version":"0.4.2-alpha.4","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.28.0","vega-lib":"4.4.0","vega-lite":"3.0.0-rc10"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.7"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\n## Visors, Surfaces and Tabs\n\n### visor() => Visor\n\nReturns a singleton object with the public API of the visor. This will create\nthe necessary DOM elements for the visor on initialization.\n\nInitially calling visor() will create a panel that is displayed on the right. It hovers over your pages content and shouldn't disturb the flow of your page's DOM Elements. It has some display controls and by default also supports the following keyboard shortcuts:\n\n * __`__ (backtick): Shows or hides the visor\n * __~__ (tilde, shift+backtick): Toggles betweeen full width and smaller width view of the visor.\n\nThe returned object has the following properties, documented here with the\nprefix `visor()` and annotated with type information. You can call visor() as much as you want or store a reference to the returned object.\n\n#### visor().el: HTMLElement\n\nThe containing `HTMLElement` for the whole visor.\n\n#### visor().surface(options: SurfaceInfo) => Surface;\n\nReturns a `Surface`, creating one if necessary. This is the primary container\nof visualizations. Surfaces are organized onto `Tabs`.\n\n`options` has the following structure.\n\n```ts\n{\n  //The name / label of this surface\n  name: string,\n  // The name of the tab this surface should appear on (optional)\n  tab?: string,\n  // Display Styles for the surface (optional)\n  styles?: StyleOptions,\n}\n```\n\nStyleOptions has the following structure. All properties are optional\nand generally represent css styles that will be added to the `Surface`. As these are css properties, they can be in any valid css unit e.g. `%` or `px`.\n\n```ts\n{\n  width?: string;\n  height?: string;\n  maxWidth?: string;\n  maxHeight?: string;\n}\n```\n\n#### visor().isOpen() => boolean;\n\nReturns true if the visor is currently open/visible.\n\n#### visor().isFullscreen() => boolean;\n\nReturns true if the visor is in fullscreen mode. Note that the visor may be in a closed state even if it is in fullscreen mode.\n\n#### visor().open() => void;\n\nOpens the visor.\n\n#### visor().close() => void;\n\nCloses the visor.\n\n#### visor().toggle() => void;\n\nToggles the visor open and closed.\n\n#### visor().toggleFullScreen() => void;\n\nToggles the fullscreen mode of the visor.\n\n#### visor().setActiveTab(tabName: string) => void;\n\nSet the currently active tab. tabName must be the name of an existing tab.\n\n#### visor().unbindKeys() => void;\n\nRemoves the default keyboard handlers that control visor visibility.\n\n#### visor().bindKeys() => void;\n\nRestores the default keyboard handlers that control visor visiblity.\n\n### Surface\n\nA surface is the object returned by a call to visor().surface(...). It returns\nan object with no methods and the following properties:\n\n```ts\n{\n  //The containing HTML element for this surface\n  container: HTMLElement;\n  // A textual label for the surface.\n  label: HTMLElement;\n  // A container for plots and other renderings\n  drawArea: HTMLElement;\n}\n```\n\nGenerally speaking you would only access `.drawArea` to add plots and other renders.\n\n## Show Functions\n\nThis library exposes a `show` namespace that provides a number of higher level functions useful for rendering tfjs concepts. They lean towards being opinionated\nrather than flexible but are generally combinations of `Renderers` (see below), so one can easily roll their own.\n\n### Model Training Visualization\n\n## show.history(container: Surface, history: HistoryLike,  metrics: string[], opts?: {}) => Promise<void>\n\nRenders a `tf.Model` training 'History' or callback 'Logs'. These are useful for plotting training metrics after or during\ntraining respectively.\n\n* @param container A `Surface` or `{name: string, tab?: string}` object specifying which surface to render to.\n* @param history A history-like object. Either a tfjs-layers `History` object or an array of tfjs-layers `Logs` objects. `Logs` are produced by the callbacks on [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit) and a `History` object is returned from [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit).\n* @param metrics An array of strings reprenting training metrics of a [tf.model](https://js.tensorflow.org/api/latest/#tf.Model.compile)\n* @param opts Optional parameters for the line charts. See the opts parameter for render.linechart for details. Notably for 'accuracy' related plots the domain of the yAxis will always by 0-1, i.e. `zoomToFit` and `yAxisDomain` options are ignored.\n* @param opts.zoomToFitAccuracy a boolean controlling whether to set `zoomToFit` to true on accuracy plots as well. Generally speaking` zoomToFit` is disabled for accuracy plots as that is desireable most of the time. However there may be cases, such as when doing transfer learning, where more resolution is desired. Set `zoomToFitAccuracy` to true to turn on zoomToFit for accuracy plots.\n\n\n## show.fitCallbacks(container: Surface  metrics: string[], opts?: {}) => {[key: string]: (iteration: number, log: Logs) => Promise<void>}\n\nReturns a collection of callbacks to pass to [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit).\nCallbacks are returned for the following events, `onBatchEnd` & `onEpochEnd`.\n\nThese callbacks will plot line charts for the metrics specified at the end of every batch\nand every opoch.\n\nSee [model.fit](https://js.tensorflow.org/api/latest/#tf.Model.fit) for more info\non how to pass in callback functions to the training process.\n\n* @param container A `Surface` or `{name: string, tab?: string}` object specifying which surface to render to.\n* @param metrics An array of strings representing training [metrics](https://js.tensorflow.org/api/latest/#tf.Model.compile) of a [tf.model](https://js.tensorflow.org/api/latest/#class:Model)\n* @param opts Optional parameters for the line charts. See the opts parameter for render.linechart for details. Notably for 'accuracy' related plots the domain of the yAxis will always by 0-1, i.e. zoomToFit and yAxisDomain options are ignored.\n* @param opts.zoomToFitAccuracy a boolean controlling whether to set `zoomToFit` to true on accuracy plots as well. Generally speaking` zoomToFit` is disabled for accuracy plots as that is desireable most of the time. However there may be cases, such as when doing transfer learning, where more resolution is desired. Set `zoomToFitAccuracy` to true to turn on zoomToFit for accuracy plots.\n* @param opts.callbacks Array of strings with callback names. Valid options are 'onEpochEnd' and 'onBatchEnd'. Defaults to ['onEpochEnd', 'onBatchEnd'].\n\n## show.perClassAccuracy(container: Drawable, classAccuracy: {accuracy: number[], count: number[]}, classLabels?: string[]) => Promise<void>\n\nRenders a per class accuracy table for classification task evaluation\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param classAccuracy An `Array<{accuracy: number, count: number}>` array with\n  the accuracy data. See metrics.perClassAccuracy for details on how to\n  generate this object.\n* @param classLabels An array of string labels for the classes in\n  `classAccuracy`. Optional.\n\n## show.confusionMatrix(container: Drawable, confusionMatrix: number[][], classLabels?: string[]) => Promise<void>\n\nRenders a confusion matrix for classification task evaluation\n\nCan optionally exclude the diagonal from being shaded if one wants the visual\nfocus to be on the incorrect classifications. Note that if the classification\nis perfect (i.e. only the diagonal has values) then the diagonal will always\nbe shaded.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param confusionMatrix A nested array of numbers with the confusion matrix\n  values. See metrics.confusionMatrix for details on how to generate this.\n* @param classLabels An array of string labels for the classes in\n  `classAccuracy`. Optional.\n\n## show.valuesDistribution(container: Drawable, tensor: Tensor) => Promise<void>\n\nRenders a histogram showing the distribution of all values in a tensor.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param tensor a `Tensor`\n\n## show.modelSummary(container: Drawable, model: tf.Model) => Promise<void>\n\nRenders a summary of a `tf.Model`. Displays a table with layer information.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param model a `tf.Model`\n\n## show.layer(container: Drawable, layer: Layer) => Promise<void>\n\nRenders summary information about a layer and a histogram of parameter values in that layer.\n\n* @param container A `{name: string, tab?: string}` object specifying which\n  surface to render to.\n* @param layer a `tf.layers.Layer`\n\n## Renderers\n\nThe library exposes a `render` namespace that provides a number of functions that plot particular visualizations.\n\n## render.barchart(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a barchart.\n\n\n* @param data Data in the following format:\n  * `[ {index: number, value: number} ... ]`\n* @param container A `Surface` or `HTMLElement` in which to draw the barchart. Note thatthis chart expects to have complete control over the contents of the container and can clear its contents at will.\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x-axis, set to null to hide the\n* @param opts.yLabel label for y-axis, set to null to hide the\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @returns Promise - indicates completion of rendering\n\n\n## render.table(data: {headers: [], values: [][]}, container: Surface|HTMLElement) => void\n\nRenders a table.\n\n* @param data Data in the following format\n  * `{ headers: string[], values:  any[][] }`\n  * data.headers are the column names\n  * data.values is an array of arrays (one for  each row). The inner\n  array length usually matches the length of data.headers else there will be\n  some empty cells. Usually the values are strings or numbers, these are\n  inserted as html content so html strings are also supported.\n\n* @param container An `HTMLElement` or `Surface` in which to draw the table.\n                   Note that the chart expects to have complete control over\n                   the contents of the container and can clear its contents\n                   at will.\n* @param opts.fontSize fontSize in pixels for text in the chart\n\n## render.histogram(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Histogram.\n\n* @param data Data in the following format:\n  * `[ {value: number}, ... ]` or `[number]` or `TypedArray`\n* @param container An `HTMLElement` or `Surface` in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.maxBins maximimum number of bins to use in histogram\n* @param opts.stats summary statistics to show. These will be computed\n                    internally if no stats are passed. Pass `false` to not\n                    compute any stats. Callers are allowed to pass in their\n                    own stats as in some cases they may be able to compute\n                    them more efficiently.\n                    Stats should have the following format:\n\n      {\n        numVals?: number,\n        min?: number,\n        max?: number,\n        numZeros?: number,\n        numNans?: number\n      }\n\n## render.linechart(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Line Chart.\n\n* @param data Data in the following format\n  ```ts\n  {\n    // A nested array of objects each with an x and y property,\n    // one per series.\n    // If you only have one series to render you can just pass an array\n    // of objects with x, y properties\n    values: {x: number, y: number}[][]\n\n    // An array of strings with the names of each series passed above.\n    // Optional\n    series: string[]\n  }\n  ```\n* @param container An HTMLElement in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x axis\n* @param opts.yLabel label for y axis\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.zoomToFit a boolean indicating whether to allow non-zero baselines\n                        setting this to true allows the line chart to take up\n                        more room in the plot.\n* @param opts.yAxisDomain array of two numbers indicating the domain of the y axis\n\n\n\n## render.scatterplot(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a Scatter Plot.\n\n* @param data Data in the following format\n  ```ts\n  {\n    // A nested array of objects each with an x and y property,\n    // one per series.\n    // If you only have one series to render you can just pass an array\n    // of objects with x, y properties\n    values: {x: number, y: number}[][]\n\n    // An array of strings with the names of each series passed above.\n    // Optional\n    series: string[]\n  }\n  ```\n* @param container An HTMLElement in which to draw the chart\n* @param opts optional parameters\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.xLabel label for x axis\n* @param opts.yLabel label for y axis\n* @param opts.fontSize fontSize in pixels for text in the chart\n* @param opts.zoomToFit a boolean indicating whether to allow excluding zero from\n                        the domain of the charts axes setting this to true allows\n                        the points to take up more room in the plot.\n* @param opts.xAxisDomain array of two numbers indicating the domain of the x axis\n                          this is overriden by zoomToFit\n* @param opts.yAxisDomain array of two numbers indicating the domain of the y axis\n                          this is overriden by zoomToFit\n\n## render.confusionMatrix(data: {}, container: Surface|HTMLElement, opts: {}) => Promise<void>\n\nRenders a confusion matrix\n\n* @param data Data consists of an object with a 'values' property\n  and a 'labels' property.\n  ```ts\n  {\n    values: number[][],\n    // a matrix of numbers representing counts for each (label, prediction) pair\n\n    labels?: string[]\n    // Human readable labels for each class in the matrix. Optional\n  }\n  ```\n  e.g.\n  ```js\n  {\n    values: [[80, 23], [56, 94]],\n    labels: ['dog', 'cat'],\n  }\n  ```\n* @param container An `HTMLElement` or `Surface` in which to draw the chart\n* @param opts optional parameters\n* @param opts.shadeDiagonal boolean that controls whether or not to color cells\n* on the diagonal. Defaults to false\n* @param opts.width width of chart in px\n* @param opts.height height of chart in px\n* @param opts.fontSize fontSize in pixels for text in the chart\n\n\n## Metrics\n\nThe `metrics` namespace contains a few utility functions for computing quality metrics\nlike accuracy or creating confusion matrices.\n\n## metrics.confusionMatrix(labels: Tensor1D, predictions: Tensor1D, numClasses?: number, weights?: Tensor1D) => Promise<number[][]>\n\nComputes a confusion matrix from predictions and labels. Each value in\nlabels and predictions should correspond to some output class. It is assumed\nthat these values go from 0 to numClasses - 1.\n\nThe result will be a 2D array of size numClasses * numClasses\n\n\n* @param labels 1D tensor of true values\n* @param predictions 1D tensor of predicted values\n* @param numClasses Number of distinct classes. Optional. If not passed in\n numClasses will equal the highest number in either labels or predictions\n plus 1\n* @param weights 1d tensor that is the same size as predictions.\n  If weights is passed in then each prediction contributes its corresponding\n  weight to the total value of the confusion matrix cell.\n\n\n## metrics.perClassAccuracy(labels: Tensor1D, predictions: Tensor1D, numClasses?: number, weights?: Tensor1D) => Promise<{accuracy: number[], count: number[]}>\n\nComputes per class accuracy between prediction and labels. Each value in labels and predictions should correspond to some output class. It is assumed that these values go from 0 to  numClasses - 1.\n\nReturns an array of objects that each have an an `accuracy` and a `count` property for each class.\n\n* @param labels 1D tensor of true values\n* @param predictions 1D tensor of predicted values\n* @param numClasses Number of distinct classes. Optional. If not passed in\n numClasses will equal the highest number in either labels or predictions\n plus 1\n\n\n## metrics.accuracy(labels: Tensor, predictions: Tensor) => Promise<number>\n\nComputes how often predictions matches labels.\n\n* @param labels tensor of true values\n* @param predictions tensor of predicted values\n","readmeFilename":"README.md","gitHead":"4ab056e165f2551df9bd7f275240fa250c160ed2","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.4.2-alpha.4","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-Xk5JA03OwgUgUIJ1tLCU4yWRGqScJrPI6xvY68CxFEbgkqCgkctRQE0Zgmx0x3OutcYqljG/Q/vAeiDyqaC9PA==","shasum":"342c8c07acb8fe6cc4cbd07e50ef96965f4dd6f4","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.4.2-alpha.4.tgz","fileCount":108,"unpackedSize":5007873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLq9tCRA9TVsSAnZWagAALLAP/i3W/4kWIsQVtTrqzLpJ\nvQHNWalBTJLFzscwYnjfBYD6yYJjBuYyx/N8wisHiw2L3xKk2F6xZuHQ46vY\nNuuvH+rrr83i8egaajwA/Uj82lb+p7uQED1N4nXJLKne5eWOGrNy+wT+ZKwm\n4JGATmNiLKrbPSGlAUUsIAjSxpR8J+0BDXFSKrT4BKEhRhAzH2L5/IIareWB\nVkeMfo/6PoU3/zzq/7dKaFkxUTYzw2hVPITgeN/wlbmKcBqf7nmjVCRNFwQy\nimBtWWuNoqXFNrw4J//irvT622KD3M8BzAl0lGgpaGO81o1FjLtoMbZy/WDa\n+t13yrA3kuVbAp4aJUEcLCrmIxtB57cbqH4Oyy6YDuAA5faQu8KzMvLLIpTn\ncYSgvtGdeivXo/JtdKM6at4JULDiCNcsS6w5bfyAGMvaYZbZiua9DyA3KXZj\nE76vgult7KY6Ffy1mNPebnWNybCHZrQZQqYpFiAB5izkywR8+8kEH4cNRKHi\nfltRxWKlDhEK5MFON+GEZtTC1n1fMoURHVq8gP7Ui0RzCkjhrV7uoFRg4JpF\nvcvcdQ8QtwqBOLU3YjoSj43kcGR2oHhGu0Q07pMiyxRPs4Pma1tbVlSPbV2K\nMLhdss7uYxaYoyFMeRHLGXT4claG8224qBlATlwroTGp2lN+IyrYT1AgmOBg\n2xVJ\r\n=+s5F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoe62tZ0lhVRCztMgANp3a0lnk5mA4spua4CxIIWrCjwIgaqvs0yPYKZT4qid9CO/3Ib4p5oYQ6nhFJK3sQnwZeDM="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"wilson.jim.r@gmail.com","name":"jimbojw"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"shanjcarter@gmail.com","name":"shancarter"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.4.2-alpha.4_1546563436884_0.002919202173278901"},"_hasShrinkwrap":false},"0.4.2":{"name":"@tensorflow/tfjs-vis","version":"0.4.2","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.28.0","vega-lib":"4.4.0","vega-lite":"3.0.0-rc10"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.7"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"fe732c5ea17a6f5c9b94e674df939ca2150c38c7","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.4.2","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-WMe6Xr3WIeKm4lme2Hz4IRwPnObTOD/eyBUc5vTS2DIXGqK2N9KjzundW3DS2UOFXDicN85bEyHqq6xBaLsNyg==","shasum":"6d4f81e26dc6c3d8c06345f18e80c2d52c6b551f","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.4.2.tgz","fileCount":108,"unpackedSize":5001236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL48LCRA9TVsSAnZWagAAx8UP/ib1l9Kwy936j4cLZXgv\nEZh112A5ROPRWajByKwR4rhI2P37EmnDitKKPox8T3dDHRY67vA4yVvZ5M31\nDvLHPXqsCq+o1Zs31DSteFGVc919k6y1k6ECYaWeulv4MG5nW+aNNaLqYuMM\nDEg1VyjEmjF6ncwhvB/5tajZP8Luc+tLF7sM8Rwwqf4tRYTQgunkSbp7sgHY\nti4Q/jR8FDM9HAsnZh+DW/heAZV+AKa0V2U3IQLbtWRXXWqnYUWIdmcCGOgJ\nRXv8j6aHcbxXWxXva9rjPZJSnTC+H/ji8dcSU++LpFVEVvZN+vX2I5lzH1+u\nRPyfidEeD2g9NKtDOzixvWgF74qCbsIK+GdGnMuEWckoHQZCWR7Gyf10i/6F\ngraO4g5BGsPN686YCCoO+xXz6vLoGFhvoYvVp+TGlf+YtrislEsYKmu/d9Kx\n3F1OE43WFGA80JxPZJiBGhvNb68dPD690ijA3DJYwYCJlrjkiiWeVKVIee1T\nUoPU5V3/aUVDLyMblx3WmsGiTblT+GiA92ikIrt1ys8CKq3pxCa/g1AdmfG5\nmJnS/9uRZVpsG7Ylc3nnh/XlSCd53pCKrFkLY8j6zpYPngYqTtQpF74Bem6J\n2FVUN1oBmav7TLr2UCTddyeF+Oce/qoJmM5nhVfbatzMGddwDAqDarvEAd9G\nfQkR\r\n=R9kj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQCLppOPt2SMkWACv3gSywB/R/y3pdniG1yMMRZ7uTVQjwIfAzQauMQmusl/SH1AH73klj/ME15Gic/eTcFfMb1BMg=="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"wilson.jim.r@gmail.com","name":"jimbojw"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"shanjcarter@gmail.com","name":"shancarter"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.4.2_1546620682556_0.7697989919877952"},"_hasShrinkwrap":false},"0.5.0":{"name":"@tensorflow/tfjs-vis","version":"0.5.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.28.0","vega-lib":"4.4.0","vega-lite":"3.0.0-rc10"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.7"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"efc2800d52bf04c89ccef125e3c01bb9510e053a","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.5.0","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-SKuiZ9bt2dSTzD91OqMAaqUPJ4FhFRbpNsLPL9HpIfMsR3EDwlIX+ybGt3ZxCA62RK9gInTxPZSUEaKQfKwhag==","shasum":"5c88955bc19ecf070bf5aba06ae6ca58198f2073","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.5.0.tgz","fileCount":114,"unpackedSize":5036462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUyogCRA9TVsSAnZWagAAYlwP/jyzQjhaBRc1wv6qs+Fc\nlksI1hkdyv24xPtMZdCtIPanCXOqBbReCPgjsO7zxVAcgsXRGJE6elhQn6Ix\nf5LprWi1v+fkaxUlTXnmH0ATugEtNJAjl4zchh0XItau8qX2TFvS4UJ4wed6\ntQELmmOg1jn2EgagSzFMov2RiW+M5g3qGxcq+/yGYbz0oTq9yV1rMD5cdnJM\nTgPZMFfHtvxuwsBHBxU1HtJLUnn08Skn4bI+AscOoiztRJ7+PF4oyyihxJOn\nydLONUM0HW9QdF4GqGVA0slcwTJnrS8xcrZCo5ll/3ndgfxX8zxtUv9WKbRj\n7tOtRSUBx9dnCXH+Mpc9RB/efH96wBJMBDIsvcBj5fbsxN6NQaC3kEGtg8f7\nAR2RHxMtRlt8idTY2efjqFnFM6qHqama/GbsGYX2RO6JZu5z4VqS8bh9oEaO\nHVBZfxNwnBeks29uK9wdZ7d5SH0O/vhNSqJ/BVcjkVmlJobZzIz8B35L3TeW\nrdSxEHJCQ/TzEpqtI7hOknMJYEvr4X+kGBiVHKIu3TNMUukDCGMJtz27CaYh\nRiU5vtM2JM1EnCQgGmm7daoSJx8PDigj11ke57wPtoc2js1pHmRK+TzlNrak\nR8JwXk+QT/68/nkapqZYipnSyXqbmUZ0+IYYn+rzQL15EFqoDjr6GowJNCkA\nfn0X\r\n=7pNs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxg7tS8TUqYBOjbEBm4FIh01oqYMH+AO/LorozjYiqSAIhAPW0iPwIIvKnbBmxJCtmQuPtQyiBsmonNzHrYg2JsfGV"}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"wilson.jim.r@gmail.com","name":"jimbojw"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"shanjcarter@gmail.com","name":"shancarter"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.5.0_1548954143490_0.29620190045054695"},"_hasShrinkwrap":false},"0.5.1":{"name":"@tensorflow/tfjs-vis","version":"0.5.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.28.0","vega-lib":"4.4.0","vega-lite":"3.0.0-rc10"},"devDependencies":{"@tensorflow/tfjs":"~0.13.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 0.12.7"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"47c49a29cec726dd96685a1935a147d49fe6e701","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@0.5.1","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-ePypPWfl52B33TUCrkWxBfYAZNbZL68M3+9IgxO71wz5LQu2MUSyC9PhTQ7GGafGOqNEe94CxuiL0MhlGidt7w==","shasum":"d4d9a8706574a13d4e03cb68973d01639b1f845a","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-0.5.1.tgz","fileCount":115,"unpackedSize":5224440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcdZZWCRA9TVsSAnZWagAAaBAP/jv8Ut8nA3nMGFim7WKB\n2m1+hnqGZs5eB73DBsJf0xWLteFtJvRo7aAZuZW9iD8XcxU5Jm+bjPaUm6BN\npfZvXyhfnvxZDRROp8yAJW9JchUlt0Uy0JbIHPUV67eR6Wh2rhxZd9DWDu9L\nHTWmkGIhccEbmtAYaWO6sgreULRoGXnLVx4AAgqJScqWrTUaBcjAE28yBVda\nJVy/c5FwAzz9F5ngpB2dOM9LDo68CkysisIGeR8+peKxz8KNtsGFpneqsAIA\nqImi5ot22FJtXZZt0OKJrotLaExmewCOHhbgg7MkxzTkhzi+2xfL61dtLGiF\nvQxGbuEAYY6vcdxfGd1yIG5ST54mtxJjSenJF9jufpmdhcrSuNxPawo0AO0Q\nIU2F+gYANmKUISgpT0oN2RovK+bvBIVHfC4b/vWEnsWs7k/vRjqEsWbEk10i\notJSSgRBJEjxHTWfLdMCsgJ4WIhVkq7n7lCmjlMiql9rZmjbt+HuYreH+AgD\nXCEaUVra4eMep9f45rFh/Zom2YG9eynyDDOkt9MJ2thzNPSxb7Mf0iz9Wen3\nFiIoFbEFqzkzGcumSwaj6gyL+c4FTkhxVkL4lImt1i5XxB50j1f5D0BRqwRc\ntAp1JbyRJF4EhZBc0NBHiTwphUlr+fHJsRTSf3xqhAmAWr7fJsfexXV4q7yo\npLg4\r\n=nNtP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC430X4XhfS5Puzm7QJfuvUceCJupaEw2EOsE3On8IVaQIhAIascYOGLhwDquZBn62ltbBU4H6YNCHPv7HunTG8R9E1"}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_0.5.1_1551210069971_0.09414386518163131"},"_hasShrinkwrap":false},"1.0.0":{"name":"@tensorflow/tfjs-vis","version":"1.0.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.28.0","vega-lib":"4.4.0","vega-lite":"3.0.0-rc10"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"3a385f8883296ad0988d70dda84343ec1419e67a","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-KK4n8Oa4y+IK35EmIO+8gag18u7yv/sMWhMqmaCjdL/vcgDl7n/AE1cllkGYKx9FchAxSv1F68ruu9R3QvcN4g==","shasum":"f9d82922ba7e654cd6ce8852917a5c0f13c603b6","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.0.tgz","fileCount":115,"unpackedSize":5202371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfuhhCRA9TVsSAnZWagAAZsYP/RGsGr/rZYyqvvGrUJbH\nEWOtcTuiS/fz+uQg+ipDJ3CnEjs0H76B37/mS8CiTXK/c5MIa5VI0LtJzzYs\n98KEH1s/DtwTUI+YlHyO39cFiEKyxZjGRaraCcrrhzz12CfqXPH1c/njcJb4\nT7ORvnO1TUVI7mmuG8+iSTUAxs+296U3BcVS5S8cUZSmYSENNXHH1Mw+ynBu\nBULtkItxb4Pzmskq3XxlUVEdpUSF4rocJlEgi/orLrr7kUoYl7Bk00k15ii+\ndnOQqS0df51le3EATSuallcLk0wd4Z1fOTVnwSXve58GfL7Kxs0KwjwZUiCS\nRJAQGi+cPrsXHaJhia6MmKYScPdEwOqpcN0Gx9qtXSS6e0kD1Y7TSad0xvyC\nAufGafwAaNWbfMSVrLS9HQpVHQH5i3ETMvkvhwaXRRpr2K9ci2onxKSSbQLi\nmbcMTIYunbE71dG7Pi+yY9rV/SvZZvO6Vpc9mamRPD55VxofuMGZnO9zEHKG\navGSI7mqmJaQKjOXkst+hazvr3O9JmP9owHdmbjLIFvcb88gRwlfniqmNsGn\ngZGRwbf1sEDNt4IKlMGiYERUkdzq0pahSqQpNGHiQybXJdq+d8HWDzYS84ul\n0v26o6nirwx3lBtXIbyp+NaSoFGWOiW+9UQxKkGGK5aCNUpmW45/E79yivhH\naxkM\r\n=jTNC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqNc/M7hBJTz4UzgXQla6DjA07eMjNUjJPwyVPrc6gcAiEAgpAHBlBT9rtGr9pJJdv+KFbS0E7G5zQusITtF9QNNpo="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.0_1551820896518_0.9729248257385248"},"_hasShrinkwrap":false},"1.0.1":{"name":"@tensorflow/tfjs-vis","version":"1.0.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.28.0","vega-lib":"4.4.0","vega-lite":"3.0.0-rc10"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"535d16e916ca8fb8c346091488d01aa04bc224d5","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-Q2G6wAS1clWvqknNS70+wvUwftCfOUGRP32eA/ncX4ReEgEhQ7uhKETAkzmdg0CxOZEtExnsEKREBHAHRjG6ow==","shasum":"af062a8e874a49020018480b57e5a0ff6554c446","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.1.tgz","fileCount":115,"unpackedSize":5200615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcf/KtCRA9TVsSAnZWagAAi9YQAJTFU382rkSOWFFTlbRA\nDEkoT+uT7zWqq+/p0ePc/VbzkMbcs8C8FDkyl6ZOEUQYqkTa0NpIdakDLIjA\nsNzJYDVgP8wWfC5bEHOeZikxvQsuE/K32dJuGMdiUXqgbeYz/5q2NDaAmgD7\nThNcaO+CGwY+mlF7GMyQmCkVkjnRdcVGBmkE6DKEBYp4JfQQPQN9vhrp6FxB\n+yY8EkWfw5ZyRL31HnvO6CDFajs4emBcbUsxEIkHZZ3a6DCjgCnPg/kgbdGX\nlDWIdsem0XkWHqT5z2+fhJ45m6rogGktG3sZ7UV4OiFyywo18TSPHxPtWKjh\ndTqr50AGizgLIJpNqZvuLYlu2Ne82UKf9XBeUwMm8h919vN/dBiXoS+k25uQ\nxpjW8I9EBUDIR7W5UckWR13st3vAXKpPC3bO7KSSclmFGjMFK9YeAmPOk3jW\ngP6spYjBy+qdc5ooNAL9JA+m6igA/PqtjiDvvEzOW5gVORhmu3gBuJQ3xOQJ\n3rGnjhESl2xrNyVIketMOUdfRvN5K1HZXCRT6B3+RCAy0+TSpSKcpGt5T25X\nG51NR5RHUd+qR8GPHfxPed/f1wZ23T3Gqbkex9BFoBVIcOJsLECtieuDXBLJ\nAO84MtsUSaK8SDqmbxHicPGiE0IakMK2/RP0ZQDtpGCm883APC/KhzehUqAA\n6/PM\r\n=++rq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICJ7781Wmj3/II4LZQpyE1RSWTLeSSDYeZ2w2jy3CArcAiABedrc/LRdZNJu37LpLokI8B4uuaasiAVTwMvtaByYMg=="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.1_1551889068546_0.8554163398225811"},"_hasShrinkwrap":false},"1.0.2":{"name":"@tensorflow/tfjs-vis","version":"1.0.2","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.28.0","vega-lib":"4.4.0","vega-lite":"3.0.0-rc10"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"91d42f7b34ae3ac4951f2726cb5e1c3f16bdfb60","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.2","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-8uOWzY1VtMHexyUG2EcXKNRmIMF2u0/pOExGEBOtZU8ZZqRfO9o4qSGzJKRjOB7AZ9nXERtx5QpJ8qjAOvYwJQ==","shasum":"e5094cfe4c1ac34315b97553d0a3309898301e96","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.2.tgz","fileCount":115,"unpackedSize":5201445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgAEoCRA9TVsSAnZWagAAWAMQAJV2ZS2UCyUz0dm5KR8j\n0P9vJ0yJOdkYhRmU5pa3GGzrIIXRz+c6CCwGlhoCqEXUCLLfPm0ywVsUtvGo\nnPuH3ZyhXc0wswnl7zWCW8wPsCfiap6BC/JJyy+ydxDncB4cZ+IIlw4jVf0c\nM3K+OLU1abMgJOcx8iuxNp6Rr32XG1DSkV6WSiOJPx2fudI/dyQPB+5zl97r\n913tjaepejbPmcSlFBULclxHETthTahpUxTGV2g5LZDni8648ixRIwVz2OZR\nMf8hKvNalabPxoBQMc/wSiqyJOSpFoaYBepEsrSiGTjx0B0qLdDxcbu5P6dl\nFkJt5mtvPTzaLvQyCP6Vsewp5BjyKqJ3N8OlyENKyt0/pPoAuPmXrcUmLLAC\n3B6Jytv37ryNBCume5GilUvdcHvoX+BbZeo3CH3YiDG5g+eEZGIVpO/Wmcbz\nt53cIUDtIyu8oGAOkY62htS6vNosqHGiHx2UEpMlT4SFSMx66BGBOxpgvlA5\nOvBGyvJM2c6De2A2w3iPWgFM+4PxzLoc6JJYbjOlVyIdqK3WHJOP86U3CyPt\nUSQJb1n1IUYAZ1MLecFl1cFRkdT40nZBZl1z1SuTdpB5ULPYIeYfoWbM0UAm\nEbeeFzmB6ihh3kJPHC28exODf4u+gdShnLh+TXH9BPtdAL9uQKlRFZSRnCC9\nlnMr\r\n=YIWt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGY4Mola6DvIgiW7os83hAw2yK0xGQuwq4YN2CxZrrozAiALaJt3UDdH/HfsM5xmlhkWTi1DIDZIdyyEeJ/PBwJnEA=="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.2_1551892775881_0.3868703505801112"},"_hasShrinkwrap":false},"1.0.3-alpha.0":{"name":"@tensorflow/tfjs-vis","version":"1.0.3-alpha.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-lite":"3.0.0-rc10","vega-lib":"4.4.0","vega-embed":"3.28.0"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\nSee https://js.tensorflow.org/api_vis/latest/ for interactive API documentation.\n","readmeFilename":"README.md","gitHead":"cf40b45d8c02a20f490746b124dee12ed8daefc2","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.3-alpha.0","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-FQQ50y0KwlBoZ8CIsphQbOIhE/ALpy+j4mIVvt8bPCvFk5eC7GMIse98jTafEJV+QoxpOtf+6xOVRVy9tyd1MA==","shasum":"14d024a75c5dbea5c42d5d875eb1c1d58b39e349","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.3-alpha.0.tgz","fileCount":115,"unpackedSize":5228029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchrWYCRA9TVsSAnZWagAAKPIP/ApIr4ZXvq98Og+LP9ww\n1OQdRVdxudPczzcGvePDPGhXSF5Wvm/vSPdgvLvSmsFXRpJpenviMDVYUM1w\n1dz2mBZu6oty5HTNqeCTQXkiC0LRbM5oiN3D0Y2fw0gdMvbT6uicSgO9nEdp\ncZASKSCKG8WCRDNoxNt1LjxTIK1Ya6J6kV/dGuIoHFL6VQks3WAbA8Hh52us\nRyFub9wbz2yYHfBry1zxP66quArhEvtoJ941RypYrUpiiadh+iZGwtP9R0Ug\nakJ3USlD8oOb5hsptM0sv7Bcr1uychE+tkoIrM0KLbsNhZru/vPcpQ5d6wUQ\n1WuniAiq+kHuNwXODulaw5mbosGlhmNH8OvaKpXZuAzbiogXe3I4pIKybgK6\n2zjTC804CDUoFUL8VApLhWhJympAZMt1rIDo6y0BtPHZTUxc7u0ZgEHODXwc\nX/tk6oQYmnhe3zdG+l4RaLYIIgWB8Bywhgq3neP6UqepEe2uM/UR9UFT0oed\niZQbtomFfDBuF/224KhNDF2D4uGBo+M9/YmpGIfHxfAuC9db4TKz6A2d7O1i\nLmyTHBCakRNTClox7Fl6w75FhKSQbfIgK5SBl5vuM0xOOmvOL2tZoPE8SNXd\notviP9PUss1LI57KYEgxugcQKQBh7+A8ZXD6UIEnYGc33CrLCeSYo9+roWmS\nVi+Q\r\n=S04d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVh9s+4c3YSFEhCDqiWOItKKX+pSlhO1x6/CbxZLW5/AIhAKKXLrCoJxSscOfxHssISxDp2V8NqwcFlBTvXnWiBOpE"}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.3-alpha.0_1552332184425_0.2597942070681394"},"_hasShrinkwrap":false},"1.0.3-alpha.1":{"name":"@tensorflow/tfjs-vis","version":"1.0.3-alpha.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-lite":"3.0.0-rc10","vega-lib":"4.4.0","vega-embed":"3.28.0"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\nSee https://js.tensorflow.org/api_vis/latest/ for interactive API documentation.\n","readmeFilename":"README.md","gitHead":"e04907d57113e7bc1e00be6b72d775172404d9d7","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.3-alpha.1","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-lVF530DRdZ3dd7pIqEVvedSYz+OUZLkTMi5aLhM2AbxPgG3mQSUA7zkaPqH/8/2DmbV/eqd6Ia/RMXrmwJJv8g==","shasum":"788e8296be798082f821664fa6be8f8b937fe145","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.3-alpha.1.tgz","fileCount":116,"unpackedSize":5463219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchrlpCRA9TVsSAnZWagAAjpEP+wdjFax9393sJVCTZNG1\nrs7C5vgeOLsRj6k29SvkP77MPLrXSXjgZJ/4OdJWcie2ZgZYQmlY6qKekafG\nY6gJQ/XB8rHJDNK1og6qPd94M11wMDx2BYkj73b0Pjm2CSzQVShveKWc/fkI\nMRHoojQsdemJWkxhg2vxCBHuNIkBAALzd75UcXnVnQ8F/6U6bmkp6D0MNCQO\nopaImxs6i+LH4YHnLasy+QFymAuFVUCDfU+X9Qmy6+T26QmtIkO5uIDbDgnF\nMbSpezJy1jJayYw+1Ur4MBT3H+WkXygf1r9fR6KTXAbcr2uDGEt3uppY49HC\nOWKPMXvo+UrcToh0jEwXKmZXfMbVmBNbe5ji7Fo9hB5JvedJgDjazaGMABx3\ng9ZEsVtIZnX2IXSjfzi6OhQeJQd9hg1tZSP5tquDLgbBOkRKtTgRB/PBx+Ry\no2KWx4D3kbruwti9rEePi+gl8AbueXUK8wsVJGYPidx9sht0G32A7RAnfbTP\nuc+bbOVoJSSgTsIlsKchXOO2oCCwZYXihOpIm9FsqM6BjfJJDV2N84NlyzBs\nyiH4IcynrmVgxeSAzf+C1vF2ix8C1yRoWuv29ccFJXlwqfi80dtWtq/OFF2y\n+mvy8Ck9xdzFLUdmvefg19+dQ22YnLmeV0/t4pw1dCW0wV2ID5QvGUbwUlDr\nntyb\r\n=O10D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxkwDPFMkMFIzREk/p2vBro7n+pZPjXmXCgApKM5HEeAiB1LG6C5X3LtF6dpLpdxhvRDFhWUucK82B21v6JkpQmvQ=="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.3-alpha.1_1552333161044_0.5708564169094434"},"_hasShrinkwrap":false},"1.0.3-alpha.2":{"name":"@tensorflow/tfjs-vis","version":"1.0.3-alpha.2","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/tfjs-vis.umd.min.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-lite":"3.0.0-rc10","vega-lib":"4.4.0","vega-embed":"3.28.0"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\nSee https://js.tensorflow.org/api_vis/latest/ for interactive API documentation.\n","readmeFilename":"README.md","gitHead":"e04907d57113e7bc1e00be6b72d775172404d9d7","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.3-alpha.2","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-JnYql2WO/qENRvwt46h5BcN1HG2+Y8yIOYV/y8fl8cxwJijrFPmgkjtylLz/lsYmdbdf014S4aewQtailvyE6A==","shasum":"8e6773cac0b83d74681bb9f57c5bfe1522906816","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.3-alpha.2.tgz","fileCount":116,"unpackedSize":5463230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchsB1CRA9TVsSAnZWagAAPq0P/jCwIsgZICo789lAkTkR\nYv7nKssm9VQZ9MWeqrKt+8+BNn95gNvGCq1H13GOU5FXyV37GtNHrU2nVoaG\nFdfGop5sirt5J+joTveDnhcVvJCiwuU2pJxRjILGYKyaUVe6jKVjkmNAv13O\nDLSZg/+xRbHpcQq8s8vSJwztYZrQXrf6zOgBbkpejFo58qIY6qk1vaIgcNNe\nQDM4TxErWR8XXdQEMO6z9ZH8yfgHMhhz1Q/3v0qhp72GZpFoG7uTzrR5soxX\n9pH5aUSTY8Q3rwkbG7n7NMt/WCavaHkqTll9NkBRfnXkBEtZB7+dH1oIhxEt\nnifZKh3tTIe4nZQAoFnhrIt0jRGjMJ8rUBh+9hQWWS7QSC7c9nTm39NK8bVt\nxJyz4DM/40aHiRYstA8XxTrt8DoTg1Ifk4xuUflHXuKUWq8pzu50D71b5ZmB\n1T3S2JRI47ZGKu6oPeA9pM8jZHNZW7BbnMp7yR5T3vajdVuwyohJ4qGYcWeS\nDYGjpbQiaaswttsl83n33QBFaJQo0knyMFJ9qhKddX4lc5h8QZMVTZE+umO5\nt/OqC1piCTS6CrvzFQyp9p1tZ+uINbO4SOehvNDHAg49y0xYtf+ICWAk02RR\ngoV2SAXOXWF/UrG58sXLHSo0Lx9QmCmJ1R/bFatDQkkSEmh92VJVoAURCPvk\nJdeZ\r\n=sYM0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVL5lWgsw3+dvlXKIxTy1/2mgRUJlNoLfGuGGWeT9HnAIgLkp/DvdLTi8jygVnJ9xfj25/F+miVqPabXPRQckfHVU="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.3-alpha.2_1552334964336_0.6153409650972799"},"_hasShrinkwrap":false},"1.0.3-alpha.3":{"name":"@tensorflow/tfjs-vis","version":"1.0.3-alpha.3","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-lite":"3.0.0-rc10","vega-lib":"4.4.0","vega-embed":"3.28.0"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"resolutions":{"vega-lite":"3.0.0-rc10"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\nSee https://js.tensorflow.org/api_vis/latest/ for interactive API documentation.\n","readmeFilename":"README.md","gitHead":"e04907d57113e7bc1e00be6b72d775172404d9d7","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.3-alpha.3","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"dist":{"integrity":"sha512-y6gkB0lfb9dNsaq1sFg9IdQP1oM5kv2dZte9gRW/VhMPmG/aWlgwaqSZH2shD4Hbaqkz6YYo6b59AgAXLSkUdA==","shasum":"593ea2d2c24aada6e34be313b818536e1ea65301","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.3-alpha.3.tgz","fileCount":116,"unpackedSize":5463273,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchszOCRA9TVsSAnZWagAAFjMQAJ5BM3EMwy5HMz3yk+at\ntaQ+eLRBpm19DnpMej9ePwU58KI8/q9KXvQoA0Hbet8ynKz0Fe8IEFBv1ttS\n1dJU1H/bwIQqcttrqihGeqlCSBFg+vnnmPtJoLdqn2cg0Eb4Gtw3krY0B877\nOJju12un7OmTbtK5IYZ8Ry5EvKFi7DuI8ZN3aqznrYHfFWKI6q/dVdvF7Mcl\nsZtbASMFVpJHpgrbF2fNPklVfbYR836b3Hr7DhDCsQJtmmAwqE/xlwqqDCrL\nwa3Y+VVfjz/cgY62u0NDdYy5fznU5QXee9zEyoNskK+RLVMrGVfxUtivbqef\n0f8thOhWuU80AI0yskW3GMoGQY9dXZTzP3Mq9XvI/p4ziOzMtC2Lcw/ggKEQ\n46xb3zbKJZ9cJ1udZSdCNlZMIo7gkwrXQNjOPNGyHQETgkEGhxvlrJR50PMu\nmpqDQXEv2FM1czhs6X9MMI9WSJg+1OmtA6VuVFXuMAJ/fFkxopSqKenaDSa2\n9Y3MD3PgI2maX1qwaOSDvXVaFDIjFEzu3WS8CqD2wNs94CY4jaGwmm4KGzyN\n4vKD7rmCwa+kSgNhQPjgyjk/HDG0+Ql4FfOCK9t0mha5V4UxoOgcrQZGAZvc\nD1bibqt8sQtOMDyYqwoEtRbbc5aVGCL1NcXe4xtibKiJ6q3kzf79tCtFflqr\nXFXd\r\n=7yaK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDaDx3JTekjmWcVasnyb+NuPPn7VJ51YWp3YPR77+0hFAiBDIqJOmU9o484rKu9rPUkNtPjNLqc1RGU3h1QbG+OcDA=="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.3-alpha.3_1552338126214_0.7821611739519367"},"_hasShrinkwrap":false},"1.0.3-alpha.5":{"name":"@tensorflow/tfjs-vis","version":"1.0.3-alpha.5","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega":"5.0.0","vega-lite":"3.0.0-rc14","vega-embed":"4.0.0-rc1"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~3.0.0","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"^3.0.13","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"^3.0.0","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\nSee https://js.tensorflow.org/api_vis/latest/ for interactive API documentation.\n","readmeFilename":"README.md","gitHead":"e04907d57113e7bc1e00be6b72d775172404d9d7","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.3-alpha.5","_nodeVersion":"11.11.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-PKtHRWAuMsCdW1s/ugGV8AWO14Nm+Fpmrw2Kttf0SC2VpSmy9+NQseqsE8Kdk0IdDje3juN94bMUxroE6IixPA==","shasum":"ddb30f2349f2569cdc6c9e704ffe3dda1d8b4b7c","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.3-alpha.5.tgz","fileCount":116,"unpackedSize":5464606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchtZyCRA9TVsSAnZWagAAsG0P/is8tetZJnQSBVl2kUp0\nLMvP3WHQQe1gSCi+E6lKL1q6+MOBy+GlGIq/dnpryV29a1AxCJtAx6nerWYg\nwyI7QY1zrREAwRADmEbajH4NF98RsEJnHK94W3BDaQVS944DFWLRxLci6A1r\nXKjyUFWijHnf6qd0dUdVcHj4DvATZkpye9Xw/5x/QHZu0xBseIY5MIdBbbhM\ntwbPdtrjdPmJhj5akgIC4WjyatnkHproCLAfh+P2HSc9NjMGN7Sbo+hO/W7E\nJX3JK5564Aq/yMtzH0ry1L29POmvbsOx5hg1SHU6EjYlDRsKRRkPsfL8AQy8\nN/Qh4m1is5Muzaru4lRZchbxWyJQ6NJ8t7kxe1a1S52q7D9i9epVBS/GVzI9\nZdhAM+kgkLOk9xS2fDWn2k+OWslQdMtgLfRLgRGsLdD1oDya9OHER8jzk3Kt\nbcvwK1VUoOB23BAYfuiIpxplpZLdVUS+PODMEN6cFKn3yIjhmT7x/UUucT5W\nrKL+INZry2YBrq3Z/6UB+SLn7uiyQL8UCsCHAvCkcy1z8Ez2u/9lUIRcFkS4\nvMox7uEdv3trhroieNxr6bWxW4U+GmElg6FLuDLv7nwgLMfELxHoAjaFODlI\n/XQy69S0rgRazF28H98YAISU2wTH7+E+2giJByh5UWKTZXgjXspxR7XRi6ap\n1JEQ\r\n=5DCK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHsn2hRxCs9S72UpjJy5mIc1H+CtNQFOcxdqrYCm5rbsAiEArj7069gXZYNrOz4NNTnUKVkulPU3KkDF7eVMP2K6ozA="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.3-alpha.5_1552340594029_0.698534948609848"},"_hasShrinkwrap":false},"1.0.3-alpha.6":{"name":"@tensorflow/tfjs-vis","version":"1.0.3-alpha.6","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega":"5.0.0","vega-embed":"4.0.0-rc1","vega-lite":"3.0.0-rc14"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"~4.0.0","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"3.3.3333","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\nSee https://js.tensorflow.org/api_vis/latest/ for interactive API documentation.\n","readmeFilename":"README.md","gitHead":"3f29969ce5f01c53ee9f417531a7e139f123d255","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.3-alpha.6","_nodeVersion":"11.11.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-a2VeY03VdUYe372RD1YEZUY7hPpQr2hc4EYRO4a5Cn9+b27Mq9IT7I+BFrPpaldwpSy3xwV8d3t9fb9btviYrw==","shasum":"35e3c5a8ca15dfc869a074472952d1f2e7eb8fbd","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.3-alpha.6.tgz","fileCount":114,"unpackedSize":5226178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJch9e2CRA9TVsSAnZWagAAjQEP/3rWdtXtKRcTVU4qrNpm\neyz2WD0A0N/1LCKhJhtA0w1SlvU+knV2F7VlOfp0yNUN+TxUf8w+M1WFUIyP\n4IDolcxIIaqIM3XMoYdkVRTggM8ZLNleLcQaHSwKEory8Zg0HCxzQ1RX058q\nTdDZIDV3d68r1cBauV/oiRW7XBg/j1YfDWag3phcy5hYf1jOw9o4IbxEYUKn\nYlyIG0L1eBrmOLthutuRY6CU5ArrzC9ZzWyLI5dpcPymA9zaO44Jc3oNe+54\n0/bVqtpUyXqkN0latHdao8IdH19HwnPVEYVb28CHgdWxAEyCiNpC2MLnMsYK\nXJwQMOdwYEpjKpwUwfnzQ5olxMGPf+uTqHql/WvOx9iqaFq3HiBEMT25U6V+\ngjDqOvTKFUepEvqN/7OcRO9KhMqLpVvPoqO03WzWKhXfdd4SQ9DOjcTWZthg\n7My/VDGh1lCtTwZojJw/JFkJI/MtQ7kx+c+jGaghUFnlnoS5ObeZYWVz6eof\neK63A+iKwxvZeOvhIlDXsclbdrXdI8cT4oAjsDHgcX/5HFApk9JwYMTw7e/0\ns8YVBGXCuk0r1iNDmTHWFQeJ/JB0Ot/P7N4fRK8BPGYp/se3LaEbuMjT0D8k\nV3sGrqU4ET3pHeRykRUdh57zns2P8jKfJlkvW/KpxQgRgy9eZpVhJeJGya2f\no1F6\r\n=oSdZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPJnKT7wCRKvkboaRSlm82Og6adm2S5Bw7sKcqeE1nGgIgWVLgHuNITyKcIa4u042pA4TjIfuDrzg5XsZUJlYxhGY="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.3-alpha.6_1552406453817_0.8207812961696599"},"_hasShrinkwrap":false},"1.0.3-alpha.7":{"name":"@tensorflow/tfjs-vis","version":"1.0.3-alpha.7","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.30.0"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"~4.0.0","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"3.3.3333","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(data, surface, {});\n```\n\nThis should show something like the following\n\n![visor screenshot with barchart](./docs/visor-usage.png)\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## API\n\nSee https://js.tensorflow.org/api_vis/latest/ for interactive API documentation.\n","readmeFilename":"README.md","gitHead":"3f29969ce5f01c53ee9f417531a7e139f123d255","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.3-alpha.7","_nodeVersion":"11.11.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-ChM9ljsJ77/0kKm4L0JVSFs4Mn3yDWp7PSLAE8yFNTLku+fp53240X9Oocb5J/HLjYUdszaru3ubBMU/xV54cQ==","shasum":"1c0e61cb88d54d82dda1813d665e66ca3abbd712","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.3-alpha.7.tgz","fileCount":114,"unpackedSize":5235468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJch94GCRA9TVsSAnZWagAAsYMP/00huW++l2CHuHWNE3rV\nOJFxTqg60o5C6G3DXvP/kzEgr67+Ov9hZR9XF1D73BqBRo7TsiwM8f4U3PNU\n7/ldarlHKEzTSDZAxmc8AYhnA467cgAMPbT2xmlvMoj4KYznMtV02OslqvvR\nveuxRxLlJFQNBTccSbyriXDDOqGVLad1Pl6FYS8bXOWgitlFLp+XrwEMEXOG\nVTSoFdThF1B4i9rYyzB6/crqbj2sVPpct2n9pt13RxYDKUlqtFaAuIjuJVXU\n+VT3FiJI+GEKBx0WJGWSHBaCNkgIvOVHyggC83Pr6FKsHF1vkrxhQ4hOfMEf\njs0LfF7yAyCoqTOJzA2RoI4rT0DTSvEzJcP6vmeuCgEIZwvbxjAoRKWf4GUH\nHFgPQCEIWVQzFXqLWC0gXQlNDieCfOupmQu8YrE+6BlinqHCn+b0D3ejuj/D\n83zKgHFVN1xz0zECLnHueySjS0EnYqoaNzkn9CAcERonVEXfs44ZJ8IqbIDm\nU+1qOvCG/bfrgiPpRLK2WFdBrvTHFgeflrEsb1RmPh4ZooZ2Au81l2/uqHTz\nkDxi7SFp+OojIxPQ1Fd3SedQ/YQqUs3vR+SI8QTD8hhGw+tlh976ms2teoPI\nconeW83kfMQ9uovlVc2zV5wg6oNfnOuFIvFBicO+wW1PJU1WxlMcfIqS2FoJ\n/0La\r\n=OuSx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGTCveUIsn25ize0lcXE47cY08OWr42gcB8QfCKqhtH6AiBAHyadrfYnemgmwpv1ml5+B1Zqvq0A7RrXw01Qc3euEA=="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.3-alpha.7_1552408070133_0.936214044965407"},"_hasShrinkwrap":false},"1.0.3":{"name":"@tensorflow/tfjs-vis","version":"1.0.3","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"yarn lint && tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn lint && karma start","test-travis":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-all-travis":"./scripts/test-all-travis.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.30.0"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"~4.0.0","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"3.3.3333","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"499f37e5a52173e44fdd9751599828cf4b915bea","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.0.3","_nodeVersion":"11.11.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-WHyqN7l8M/luTdQNk7VpGrcrEBUSTYNPkK2fHCoxLjhqSnbr5yFEohgHgHnySneW0GUomGjz2C4LjBLlomDTCw==","shasum":"624bafaa900920e0cf8d00d1047497fd86ac1d91","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.0.3.tgz","fileCount":152,"unpackedSize":5412774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciAq8CRA9TVsSAnZWagAAlJwP/iXYC6wDp/IPMDu0fIhv\nR9ntoJes0aSaR/6MBJ/Saqv8ib03bJOnS73ni0HZ/ouyY38ZC4dFyDR31eDN\nJhQX3Pc8SFXHLzwiExL9eUg1K8gn5LUzGqGKDNF+ML/kNpnakuz74oOuRkpn\nXvsz45y67n9Mg03AQNO4TYZkFI6NDv0d7Y9lFyjIfLduIl7PZQvH2gZxNgi9\nTtfcYgM89schsavaQXQgBxORYLmEtu6Nyr8WGyzW04Mff+pMZwcHjhAC9Vwq\ngXlPS/YYuh/dj7Pw1ijFj2+rd1Tf6rKhqOoS7hvVIBId6qYcHrRI8KNMmmZ8\nsrq0Z6orNq56g8mGIRlXjSOyK4KVcBEsz/aHmNYO5OtohwCax1ccdL59NGqp\nHyxzM/dicKmKGBUIeLXFXrOfjgPPgUKBL7qfCw+Pk3GJvRBh5LTWLG0uT8Kk\nI+RqJi3t2nL6aumJ2UKaC6QgeM0I/CIG1LNAeyAEVGGwKjHB1JIOncraz8fR\nCXKoQf2x/TQ6eBtg7SyfQoByc74SuqIgv05NwcE1Wn9P2wLAXx3LxbKEDPZK\nrLTr3w+CZjQDZWBe62QG8trXW1fVUyy24xuwoW85S31pIAunKFflhs4cxNxQ\niDrS0FkvE2Yc61Wj1Q6asgdSWzhJIo/QN5A369FiQdUkSI+6qANw1fxgeEeD\n31QG\r\n=IdN9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdgA5pNBs3Fxca8ikAgOF+qsAmkdeAqiP6eJpKHma4bwIhAKsjaVW9gB2sDFHTZnlum6jaRjA7hsJcVY68YRI5o1TP"}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.0.3_1552419515890_0.3643241978070433"},"_hasShrinkwrap":false},"1.1.0":{"name":"@tensorflow/tfjs-vis","version":"1.1.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"karma start","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"^1.3.0","d3-selection":"^1.3.0","glamor":"^2.20.40","glamor-tachyons":"^1.0.0-alpha.1","preact":"^8.2.9","vega-embed":"3.30.0"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"^1.3.0","@types/d3-selection":"^1.3.2","@types/jasmine":"^2.8.8","@types/json-stable-stringify":"^1.0.32","clang-format":"~1.2.2","jasmine":"^3.2.0","jasmine-core":"^3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^2.0.0","karma-safari-launcher":"^1.0.0","karma-typescript":"~4.0.0","npm-run-all":"^4.1.5","preact-render-spy":"^1.3.0","rimraf":"^2.6.2","tslint":"^5.11.0","tslint-no-circular-imports":"^0.5.0","typescript":"3.3.3333","webpack":"^4.16.3","webpack-cli":"^3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"gitHead":"566146ce16a2054f81f8a00d8afb7e26b3d32340","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.1.0","_nodeVersion":"11.11.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-pLVZ2Qv/beQxriEUjeMX/wqLL4YenTXEI3zDSgCbdcfOsswixhsTeFUC5wggiw4R0oOTK7OzdCdwgDvQExNfxQ==","shasum":"b3376ecf8ef8e72b250265732f12d32f5b79a1cb","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.1.0.tgz","fileCount":152,"unpackedSize":5413535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcy082CRA9TVsSAnZWagAA/SgP/0DlSJoXgQU908Nq5+dM\nTD0iIy27VQ2rAR817H/5K50DMwbOK9sqOAHsRXwqhl53zL3VYGz0as+3l50q\nlDFiXhYY9fAkc3nzb/8kxnNvmAISn4gItpcUGE4KLAz8+Fckfly9kvhbJVOt\nTVWIZB3T1HonYMXkgWQPT0cvmT5HkKG4a3DZd8oMgR0EKiF91mnqkDH6BuLB\nT+UdvXV/OjN58IpKHmLKBQk3esyi8AAPT3HVpDObKzXmYH5kW5jjbIO5fAWW\nyB2ZAOop0sO+NNt7F8A0s9aLvdF49L12lcyD55vw/Vyoipk6tc3mtIHmgJqG\nU5iTI6iIiNVEh63YV1Ih0NncFJNpcebftXrlqQbDoRRwRNoNWyLo1HBac6mz\nrM3hA07meqT/NviUL6mGCJe+zJW5/Ctmu3C+cME+u/KXPsH+Tr7Um2ajOs/z\nT3SCRO72orawpAYim4jVo0QWAer7gKnRktT1uWlPSnpVbBdp/gqj+BgCH/Qe\ngo5MUH1wVUOYK9zd+mqH39XrLXTxrrhhPENmULIYZHCgxEHamWkU1Vf54cJ5\nBqarP0UjISAxyV3RsRaDNoLBn+UpitxY81euaILk4xxp2ZJtAJQ7FpLSo12d\neP0Rrr3EO3jJWGtXpGnltEueZsHX+GA9y7BdYUelct+NcFB49NWW/QzOuhPE\nhV9w\r\n=W/Kp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDopvFkzgPC+txzrzzEyFm01by993+OhTRqrMGoVzSH2gIhAPXdspqVE42pHpxUI4NR+T3D4wbVzIlixSjAUhUo7Sg0"}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.1.0_1556827957317_0.7451260648744937"},"_hasShrinkwrap":false},"1.2.0":{"name":"@tensorflow/tfjs-vis","version":"1.2.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"karma start","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"~1.3.0","d3-selection":"~1.3.0","glamor":"~2.20.40","glamor-tachyons":"~1.0.0-alpha.1","preact":"~8.2.9","vega":"~5.4.0","vega-embed":"~5.1.2","vega-lite":"~4.0.0-beta.1"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"~1.3.0","@types/d3-selection":"~1.3.2","@types/jasmine":"~2.8.8","@types/json-stable-stringify":"~1.0.32","clang-format":"~1.2.2","jasmine":"~3.2.0","jasmine-core":"~3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"~1.3.0","karma-chrome-launcher":"~2.2.0","karma-firefox-launcher":"~1.1.0","karma-jasmine":"~2.0.0","karma-safari-launcher":"~1.0.0","karma-typescript":"~4.1.1","karma-typescript-es6-transform":"~4.1.1","npm-run-all":"~4.1.5","preact-render-spy":"~1.3.0","rimraf":"~2.6.2","tslint":"~5.11.0","tslint-no-circular-imports":"~0.5.0","typescript":"3.5.3","webpack":"~4.16.3","webpack-cli":"~3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.2.0","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-AdRLPw2gkm2jT/bSjD1zIYmNL8h/Uv312FHEX4qRcmlCcfMkcSE5UADLyOTVlmFgYf64w+R9vJbsLeNU+jycpw==","shasum":"76d1f879cdf0200f9fc29136cdf8440d523f7a6f","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.2.0.tgz","fileCount":155,"unpackedSize":5782315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdi3gsCRA9TVsSAnZWagAAYyQP/RPqMtwo9qTSjdCdELiL\nCd5YRTkuNIBX+q7770QUy54naUc2yj9njVlcWKvV5LgYIxCIq7UEFmrG9aUq\n49eSpQSVQOmeqKptvAQcFqldF9U1vyqEGfHoc+LHp8iD9amAOo/7WjboXbQn\nWiO4NmJqvGf6FxMmQ1cy3zvd+/4btZkn6gjfgfk+96SCvOFGlRdMGlLvozFs\ncKuUM0TFBzKE7uThMb8+ATvoXMM9DHT3JxfhLK8vM+HrK6m8o+FO0vTYZMtT\n9jP1ykNRzddkmDIsp/TQDXGQavUP0OQsTGqPji5Rw4kljX8otCz4qYE8QXFL\nRRO275+GFqcHU9UuOSD5FUF0UAS+oM+/qJdH5szE8KpZoitwuZYKO1PRDusS\nO3MTC27aaixsEQtOHoDPDdmOoJJgc41HYO3P/52QaNzJ5JvXAKiTZ/EZm6mq\niqiXiLyu9/SMQY6D787Nldx4s1ob11g0dDu9GEInzUryRh7ofNvcpralr7dy\noatxcKXn5NkuhGysj27m9/npAOr3Rwsa/GBOH9sMXQhBe7Zu3/W/HcXZLYqh\nGM/v+M7bSD6zREIgl6COiWHsxH0UdOU/W7+F/wwE2EZAGr+L+avTuusWqLvb\nzz36S1x4o7SozO/21hB55Xw4HqQsTZ0falHYBIvxuyXHw66Ct82F8zUv0kcM\nrlo5\r\n=kznZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFGBtBX25kQq7A4Ey2AWmFJQtuSQrob5eOWUgMQO6EnLAiB8BkJpO+NBdTE+z//W6sh4fTMxCcCkIWf5BOtRfJDnzA=="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.2.0_1569421355427_0.6225528107380627"},"_hasShrinkwrap":false},"1.3.0":{"name":"@tensorflow/tfjs-vis","version":"1.3.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"karma start","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"~1.3.0","d3-selection":"~1.3.0","glamor":"~2.20.40","preact":"~8.2.9","vega":"~5.4.0","vega-embed":"~5.1.2","vega-lite":"~4.0.0-beta.1"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"~1.3.0","@types/d3-selection":"~1.3.2","@types/jasmine":"~2.8.8","@types/json-stable-stringify":"~1.0.32","clang-format":"~1.2.2","jasmine":"~3.2.0","jasmine-core":"~3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"~1.3.0","karma-chrome-launcher":"~2.2.0","karma-firefox-launcher":"~1.1.0","karma-jasmine":"~2.0.0","karma-safari-launcher":"~1.0.0","karma-typescript":"~4.1.1","karma-typescript-es6-transform":"~4.1.1","npm-run-all":"~4.1.5","preact-render-spy":"~1.3.0","rimraf":"~2.6.2","tslint":"~5.11.0","tslint-no-circular-imports":"~0.5.0","typescript":"3.5.3","webpack":"~4.16.3","webpack-cli":"~3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.3.0","_nodeVersion":"12.10.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-12jNUK/9jk6XneblrNmotxCluX+w08TWpQtgXi5RHaLHGnWGUxlTl1cWQRSQmAYA68BYRrsu00k30x565seIfg==","shasum":"a083024fc97ba85ebe0c47a1b5477cdb22050a62","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.3.0.tgz","fileCount":155,"unpackedSize":5345817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwE9sCRA9TVsSAnZWagAAx6MP/0y6bY77E4zMTs81Omgj\n8NKW44B+A/xWvhBTOl2JxH5zv7pNV3Y9HFz9ncu+YZejst+Z8NbL+4+7gOwo\njZ1SnMO9S8onVHlmgEgqfvsmTKvp+mu+DI8vi/pFZBVB7fQsAIpL7ZhHAr1j\nTg287HllvKelpUZMd8w1JHrW3zjKfYaZXhHtfs+DCpi1FHcr6ddyJvyWDr7Z\n8onTkQO611TPXRQMudN9C19Crztj1aPV2/WUk7etjsEU0gLSo9UpFzwCFudR\n+JIbQ5StSeUR5ARwl/fmk1x9gH9fG1C0+QpEAe14TAuIENXz7ShMRjLXfLtE\n1NmJoF9MRdQQp0S2DDnGb0r4oYi8dSfldhLu/U4QgjPnexmgeL/p3WncAzNv\nePOK7E6GDP/b8yDduu110lGnEGxXApRA4lHZG3YWoy8b/fZ68K1MRl8Z77Mb\n8FNLEL65VM+jcure9M8wNReYe4I/OPeG7qg7NVabGPVIUWIxCGrllD905a7u\ntrDIZrfM9hKSH7CsqB11TvruCJz1cKZzJxYfdUBRJA6YZIyANX1Jtz4IpmNi\nndARRfYLbj33sOFKM9hz/4IOZJQla1qj1w2vINNCY0KMjWuKGjoaZsl5D9jQ\nwqYkaxVU5cH54bsaqoI8J4GFyVe06KcBgiDwfrMyjzvnlKa6ql1TMgWphm2M\n4ON0\r\n=HFz0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCehojg7zX8EYDsZuGr3wGxMlgAC03ywTsqVqjUps9BZAIgHjJ2vIbtqu0QGebFXYrbtCp/nbBYjVxH0jG9iGK96qk="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.3.0_1572884331410_0.08651928928524355"},"_hasShrinkwrap":false},"1.4.0":{"name":"@tensorflow/tfjs-vis","version":"1.4.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"karma start","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"~1.3.0","d3-selection":"~1.3.0","glamor":"~2.20.40","preact":"~8.2.9","vega":"~5.4.0","vega-embed":"~5.1.2","vega-lite":"~4.0.0-beta.1"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"~1.3.0","@types/d3-selection":"~1.3.2","@types/jasmine":"~2.8.8","@types/json-stable-stringify":"~1.0.32","clang-format":"~1.2.2","jasmine":"~3.2.0","jasmine-core":"~3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"~1.3.0","karma-chrome-launcher":"~2.2.0","karma-firefox-launcher":"~1.1.0","karma-jasmine":"~2.0.0","karma-safari-launcher":"~1.0.0","karma-typescript":"~4.1.1","karma-typescript-es6-transform":"~4.1.1","npm-run-all":"~4.1.5","preact-render-spy":"~1.3.0","rimraf":"~2.6.2","tslint":"~5.11.0","tslint-no-circular-imports":"~0.5.0","typescript":"3.5.3","webpack":"~4.16.3","webpack-cli":"~3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.4.0","_nodeVersion":"12.10.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-q47Pd6wl8O2NKVfD2dNSX6JIVXzVKpsPRTr1mEsNlzXjX0XLZWaydzVKbgajWvkY2/BwpTFynSC/68v6iDxKlw==","shasum":"23fb7e5d9a15202fecd17c04bdec57e1cd95978c","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.4.0.tgz","fileCount":155,"unpackedSize":5348489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHjqlCRA9TVsSAnZWagAAo9AP/2HoCVh9ddLI/XpGFHso\nkd4ZDeEPG1n7K/Q5r08AMP84XDYCbo9cxmykXtLowVNZCoHz7zKpwtL6492k\nZjjW46csQZ45s8I9rGnimwsNp0Zh/l9Xh4wVA1wE9bUOPs1tThIKDwi6oUyp\nZwYFm/+Ur6G+yUau9IidVEOEMwnTYvymMcx+jkVrUGL8yydIyAqZctvB250C\nAQWXOrSAj5xcXAgc/XtLuxcccAYCJ5GmEdG622pCJThv0bzyh5jUjsL2JfCI\nzH5w6EGAbQ6ykOOt9YMGz64gJyu4VT5Dev0fJELpJHTtlorUeycpWV2ywJTo\nNvXACutuKpY69/Ft3/ACV/vUVzkA8UEMLIxmyEn+/cz6btpcFlqLGAATZwW1\noAqCFhcubgkvcOMpJ50OJTc8meu4RjH6VxGiModVdzW+EiMetMnL7KtppwYa\nbXMYHMNTaB1w8G/Ssy8om1VEhHKVffPxoiuv0GR8QJjOtXRzUOasbLt2iIy5\nQmWGT/7hyuDPFCbN+wG+Mq4lYnjY8mXk2RU3evRDa72eKhgu/RIWBzhrEfbU\nD/6pja8zBh34gQNBgZtgUEmoPqBSARK+KXIZRYQ7JijpIxPYTRlQM7ji3aL5\nrx481id3lKYr5v55KlfLlR/bPJbDSu+ZHvZhLYKQYGhWAIEg9x2C641BBSkK\nqwRK\r\n=8PP5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVVX01g1srt3S0JvINy0+HUsm57XidwbQQ9ufa9Vau9gIgNwlW3/TmCElmwUlL8lNrB88axu3LDCKWOrGwNSq5k/A="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"linazhao128@gmail.com","name":"linazhao128"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.4.0_1579039396784_0.5738560781453867"},"_hasShrinkwrap":false},"1.4.1":{"name":"@tensorflow/tfjs-vis","version":"1.4.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"karma start","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"~1.3.0","d3-selection":"~1.3.0","glamor":"~2.20.40","preact":"~8.2.9","vega":"5.4.0","vega-embed":"5.1.2","vega-lite":"4.0.2"},"devDependencies":{"@tensorflow/tfjs":"~1.0.0","@types/d3-format":"~1.3.0","@types/d3-selection":"~1.3.2","@types/jasmine":"~2.8.8","@types/json-stable-stringify":"~1.0.32","clang-format":"~1.2.2","jasmine":"~3.2.0","jasmine-core":"~3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"~1.3.0","karma-chrome-launcher":"~2.2.0","karma-firefox-launcher":"~1.1.0","karma-jasmine":"~2.0.0","karma-safari-launcher":"~1.0.0","karma-typescript":"~4.1.1","karma-typescript-es6-transform":"~4.1.1","npm-run-all":"~4.1.5","preact-render-spy":"~1.3.0","rimraf":"~2.6.2","tslint":"~5.11.0","tslint-no-circular-imports":"~0.5.0","typescript":"3.5.3","webpack":"~4.16.3","webpack-cli":"~3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.4.1","_nodeVersion":"12.10.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-L3jfJ1Wyw7LYbKHwGWIngqcT2sTBKYqI1jtodBpl50HCi97orc55ZqTf+/6oJN3aL32tCOp/PSGIqfFRftifAw==","shasum":"5a736e35fa7b17e07d868b693b4ac00ea6a79307","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.4.1.tgz","fileCount":155,"unpackedSize":5555406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe360fCRA9TVsSAnZWagAArDIP/2asuPfoRfnX3j4UOXr0\nX13yNzXHob3JxAZXckIXUoUjhKmzDGB2I+wTW75i+fGwGHw3WEuIgS7FQ2/R\nU634KXWzU6FMU5UwGxifkrAxtxuYySkAiyqJdoqRj3HwPwnDLLAYc5h0plIw\nUPUhGMGjC6kAvXZTshh+xUvSVUH/e8PDxE45BJrCZId5AnkRGhMfppa4xgYF\nUdN2jiNhIQ3VrKb+yJppbCe3krr7mHvs953Zj92GOk8uMhy+IhVZ5gqyU9nf\nyaFOtH8WcRAuooNL3KWeDV/+Mau1CA3PZTxUEAKt9P51URAjRls/CCB5a2mE\npp8DGmYZD+TCmi+atIQSxSIJTgBanSOU1671sNwE+cGEm9zPQhizM2UZAMTs\nHlJKSHeclujC41PtJb5/fc+SjfvOLESlUDbLT3snWC1UjZbC9UHZU0XuZGf3\n4lqp+nCRUaiwGbz/rWXs33D8KtpMMqI2vQhwqOernCh2QSzajnQviA7NYsEw\numoMBbTuxl+9CCieJ+zujPSpX/rc7Nj652c8esnWUFqja1GZUM/xO6kpDLLn\n7Kr+QyqvmH1kSrWb8mEPGe5KS7wMbJ3hd1aLRvarjRpTrrbHbb2akQu8aGgb\noYKCy7Du49rvB8BCJSfBQyCXHzttBDXg1Mngk2tVv5N8cgwEc8neg5ESuQrR\nPh3+\r\n=HJkp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBC92ecm+i/ZbNKlYTG+OUGGWlShVsJvkHfZ0HxaTheGAiEAunyCvradrNphYmdXC7HzY3XjPJ00qoWd5aPROBqsb7Y="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"linazhao128@gmail.com","name":"linazhao128"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.4.1_1591717150930_0.6967006317606628"},"_hasShrinkwrap":false},"1.4.2-pre.1":{"name":"@tensorflow/tfjs-vis","version":"1.4.2-pre.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"karma start","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"~1.3.0","d3-selection":"~1.3.0","glamor":"~2.20.40","preact":"~8.2.9","vega":"5.12.3","vega-embed":"6.8.0","vega-lite":"4.13.1"},"devDependencies":{"@tensorflow/tfjs":"~1.7.4","@types/d3-format":"~1.3.0","@types/d3-selection":"~1.3.2","@types/jasmine":"~2.8.8","@types/json-stable-stringify":"~1.0.32","clang-format":"~1.2.2","jasmine":"~3.2.0","jasmine-core":"~3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"~1.3.0","karma-chrome-launcher":"~2.2.0","karma-firefox-launcher":"~1.1.0","karma-jasmine":"~2.0.0","karma-safari-launcher":"~1.0.0","karma-typescript":"~4.1.1","karma-typescript-es6-transform":"~4.1.1","npm-run-all":"~4.1.5","preact-render-spy":"~1.3.0","rimraf":"~2.6.2","tslint":"~5.11.0","tslint-no-circular-imports":"~0.5.0","typescript":"3.5.3","webpack":"~4.16.3","webpack-cli":"~3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIt's main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations (the visor) of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Example Screenshots\n\n### Training Metrics\n\n![Training metrics (loss and accuracy) for a model](https://storage.googleapis.com/tfjs-assets/tfjs-vis/tfjs-vis-training.png)\n\n### Model Evauation\n\n![Dataset accuracy metrics in a table and confusion matrix visualization](https://storage.googleapis.com/tfjs-assets/tfjs-vis/tfjs-vis-evaluation.png)\n\n### Model Internals\n\n![Model summary table and histogram of conv2d weights](https://storage.googleapis.com/tfjs-assets/tfjs-vis/tfjs-vis-model-details.png)\n\n### Activations and custom visualizations\n\n![visualization of dataset activations in a conv2d layer and a dense layer](https://storage.googleapis.com/tfjs-assets/tfjs-vis/tfjs-vis-model-internals.png)\n\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n## API\n\nSee https://js.tensorflow.org/api_vis/latest/ for interactive API documentation.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(surface, data, {});\n```\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.4.2-pre.1","_nodeVersion":"12.10.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-BoMGbkcR8ciuEiJccsP8zVSRChAYzSTdWi1PEqiH/9FWfdFKDdIFwk3wB1lHUQeGwMwySGfy9McdwJxwJCwgsg==","shasum":"030451bc22e7ca501b7feb90501f4c1ced5e574a","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.4.2-pre.1.tgz","fileCount":156,"unpackedSize":5946831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4DpACRA9TVsSAnZWagAAzCQQAJj/NBuVDEf9ZKPfGMMK\nOOQVdGk8wI3Sy1cnP+osdu0OLdy1gbQlbNWXQ2v+7L2m4pkJpaTmvlucnocz\nKrBOOPVO47Gm7euICeGdNk2iL4Prqm41U8LpTF58l2eV/8rt/+IGiTCZj0c0\n/uGELQ6KOyH9RITCuqvcHNsJP9+wm+sKYEltWQtelH+rJB3GU9Y3Q+t0SRP5\nvXsaYiiKqM5JKbl9d37Q4aqINKWdUWIwburjKKrrDmpW12kfX2xJmCkaOwXM\nDfJK42o4HfsH7z/O3ruxF814mr1dRYoSRrXAHUfPGAHPWmkKyfinqlqcvHiJ\n+FgG3EVjKmLYT2QtUVSkI3zRakaZJOzXvMemHlkXLHvi7EU2J5PuKNitZqKB\nIUYyC1acOOdNEo1s22HpLfQNTV48lN3MLSyYfnJ8jf2nDaRpQy5yhVcNQyIW\naT26h5JCww9PiS8YMG6AGo52x6pPdMTkQuoZ2vu/kqS8Xp9uzFx1OyVqZPEm\nimOZObf8//vVZ/UARrU2BskaeBiuk6mIl75XOZjsxWstjBSf4Rn0qiH8lSkW\ncqGz44O1ZlCW3kcyeIonAWMmvocLBQHKbpBJGE/kI8c0dXe02exkA9asvhrN\neFQ9PFOm5OLS1JeY6Ra6CmgjPLSGV+/+1Zr/9KA1f+oTuMyLkc0PtvbvA/fB\nGfHH\r\n=MNrt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMDx58dvCPfg04cLkumgvaAfpM6KUsBOznKZySfkLqkAIhAIobiQy5b254eITK3WZNg4eYgIJSNHDLh8rAevJp0uhK"}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"linazhao128@gmail.com","name":"linazhao128"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.4.2-pre.1_1591753279489_0.6021728084060494"},"_hasShrinkwrap":false},"1.4.2":{"name":"@tensorflow/tfjs-vis","version":"1.4.2","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"karma start","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"~1.3.0","d3-selection":"~1.3.0","glamor":"~2.20.40","preact":"~8.2.9","vega":"5.12.3","vega-embed":"6.8.0","vega-lite":"4.13.1"},"devDependencies":{"@tensorflow/tfjs":"~1.7.4","@types/d3-format":"~1.3.0","@types/d3-selection":"~1.3.2","@types/jasmine":"~2.8.8","@types/json-stable-stringify":"~1.0.32","clang-format":"~1.2.2","jasmine":"~3.2.0","jasmine-core":"~3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"~1.3.0","karma-chrome-launcher":"~2.2.0","karma-firefox-launcher":"~1.1.0","karma-jasmine":"~2.0.0","karma-safari-launcher":"~1.0.0","karma-typescript":"~4.1.1","karma-typescript-es6-transform":"~4.1.1","npm-run-all":"~4.1.5","preact-render-spy":"~1.3.0","rimraf":"~2.6.2","tslint":"~5.11.0","tslint-no-circular-imports":"~0.5.0","typescript":"3.5.3","webpack":"~4.16.3","webpack-cli":"~3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.4.2","_nodeVersion":"12.10.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-g5FEtlrAdY5H+F6q6OnPr4RIEeWl1SQGJh3hbEIuYLO/l6Mpr28oCTdZfumfLCRyFnVCmVp0wg8MVw58P3Xojw==","shasum":"eb47728aedbfc383a181f487d5c47cd0a0592659","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.4.2.tgz","fileCount":155,"unpackedSize":5946772,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4TIhCRA9TVsSAnZWagAASO4P/1So0J6joIqHqNQq9EJ1\nVjm00Kq+B3s8p8m7c2+gRWMLpFZaSYpll8XfEnsFX5AJ4QqlN+3UJv9iFKUq\nw1QpSEeUmqnX6jVe+f7KrQPHwGKZEZ5nGpGW7N6ywmeIo5wAJT8zJ4PpBSUz\nsDUBKyd0xMF7XXsZyWuZr7TaFQnlhyohkfBWChgWUH3u9xiPZLiJCYpKVsF2\nTWfwmlXpWvs2ALYWiQ6sbPgBBn+1nR8lb6DGjNa34qFqtDL49TOA+fqcjPDT\np4dpmva4+wWqS0epKyAjlN1mWv7EbOcK4+15TLDTS/w02ZcvWrKy1oDqbuY9\nTQCOzkYj0PCCeANoabiQFMzNHAGjcFVG/qvbEqxcut8xVHOLUmuuK+MhnxMt\ncx7LeZSszPf2JXIpYW4nzVlYQQofpuQylciY2uYI96MGvNYOIrybh5JxOIpj\nErJ9C2aAIEbfkWPHhjKmscRQSxz0bAByHrUJh0GgabTg8oQXc1Cf3dCo4DkC\nOOM2rCYoKXD2COPXoKdiYmS5wwZbFrxbkv6+JOuFzaV3t2ImRZ0hl+xj4Jar\nHFqvOZYKCEUpWMyeCQmnLB4Y1ILZRjzAvXaqOA/nQRWtyM+juPRmwzn8WORX\n2am+ES4obQWwT+RhKjNIxAbnKsJ57WwbAe3dJSSz6ps3KvX9PzPKFGmgqDog\nqqeG\r\n=LcY0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEGHX9OIQ2LLTvvuLybvTwN+fLzdM3VOkpVv16ru4dh2AiEA4Br7dib6pJ0YSsDMBDCXKYAav/vXeI2naG5TkfaKKF0="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"linazhao128@gmail.com","name":"linazhao128"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.4.2_1591816736515_0.20512936796854753"},"_hasShrinkwrap":false,"deprecated":"Build error for pre-built bundle fixed in v1.4.3"},"1.4.3":{"name":"@tensorflow/tfjs-vis","version":"1.4.3","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"karma start","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"~1.3.0","d3-selection":"~1.3.0","glamor":"~2.20.40","preact":"~8.2.9","vega":"5.13.0","vega-embed":"6.8.0","vega-lite":"4.13.1"},"devDependencies":{"@tensorflow/tfjs":"~1.7.4","@types/d3-format":"~1.3.0","@types/d3-selection":"~1.3.2","@types/jasmine":"~2.8.8","@types/json-stable-stringify":"~1.0.32","clang-format":"~1.2.2","jasmine":"~3.2.0","jasmine-core":"~3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"~1.3.0","karma-chrome-launcher":"~2.2.0","karma-firefox-launcher":"~1.1.0","karma-jasmine":"~2.0.0","karma-safari-launcher":"~1.0.0","karma-typescript":"~4.1.1","karma-typescript-es6-transform":"~4.1.1","npm-run-all":"~4.1.5","preact-render-spy":"~1.3.0","rimraf":"~2.6.2","tslint":"~5.11.0","tslint-no-circular-imports":"~0.5.0","typescript":"3.5.3","webpack":"~4.16.3","webpack-cli":"~3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.4.3","_nodeVersion":"12.10.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-clUp6Tbn1MiUm3/wf6/S8secbIDer218RALI9CJG0z7Jx0b+7M1Va7AsqKH0H0iM+uPK1iTXddgKuSHlnTsyEw==","shasum":"555626e07ee63a979ae6547d53294cd3f8ec6685","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.4.3.tgz","fileCount":155,"unpackedSize":5801754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe558RCRA9TVsSAnZWagAA8EgP+QCxeyuMrKOYZfDew3we\nkX09u+bxRuv8BzXFgv/aIs2Nkc+8HxKuTDEeQDmGvx5LT/H2cTo0COSzQ0dJ\ngDe/kJERIUM7JxEchaQzRVD/obQB61EEqUW5wQPtl7IXD/o0oxvd2SA9K2zl\nGJRCMGYiK/sjnKzs0kJ78P2+U+hTnylqgKLhABkgcHfGmWgpw0c3LJwMfN+2\n1wmy49wL5P8ob4tDSDM+rcik5qwAZJjytHFNAhXauRFsBcEuCCUOdVnyiD6X\n3b7P33Bp1FvfV1LLpS2wBQbdiHIZEBO3xmJm4sTPaGluokk/oeo3NK1eK6FQ\naqwORE3/8zcgTOVfvot1l2RX9IS7m0ttGsRS9gQVIx2kBR54abkGhh1jfgm6\nOmJbisAN+48HIKbnr24tQh8qW9E2xx+y+1oFMsoYlaeoVW4jg3RJlDriQjsY\novy9vAREL7al5fm+hlcYvdXywccc64VQJj2H/PCZ8Yh8CVZbBy34+jTxFCBe\nvFA68B2j7jBwlEjIEv5TnHbOWqX5KKvjztnNdK5PnFlhxmsYZFu6cDU2jTpF\nGNu7tfbPfKXAJAVsXwvWsQ40tK0YLvgXEXeMRb+a+SJcds8oV8Frt3MwtB2I\n7A3IHPsZCUiV7XebfcI5cTR0/+LoVBbBcpr1yDgwFsfdC5vntW3MA9wJFpR5\neKXt\r\n=pgvl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr52Fc5uyhygI2YJGoWvFzlV57dKKgHQoHdzmwPgxi/gIgRyjJFZ8QvxZ+1m1DYEgj6NJ5Km3zA0xt0GUO6uKjx3I="}]},"maintainers":[{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"bileschi@gmail.com","name":"bileschi"},{"email":"cais@google.com","name":"caisq"},{"email":"soergel@google.com","name":"davidsoergel"},{"email":"dsmilkov@gmail.com","name":"dsmilkov"},{"email":"ericdnielsen@gmail.com","name":"ericdnielsen"},{"email":"kangyizhang@google.com","name":"kangyizhang"},{"email":"linazhao128@gmail.com","name":"linazhao128"},{"email":"nick.kreeger@gmail.com","name":"nkreeger"},{"email":"nsthorat@google.com","name":"nsthorat"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"yassogba@gmail.com","name":"tafsiri"}],"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.4.3_1592237841164_0.24762748188148942"},"_hasShrinkwrap":false},"1.5.0":{"name":"@tensorflow/tfjs-vis","version":"1.5.0","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn && yarn build && karma start","test-dev":"karma start","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"~1.3.0","d3-selection":"~1.3.0","glamor":"~2.20.40","preact":"~8.2.9","vega":"5.13.0","vega-embed":"6.8.0","vega-lite":"4.13.1"},"devDependencies":{"@tensorflow/tfjs-core":"3.0.0","@tensorflow/tfjs-layers":"3.0.0","@tensorflow/tfjs-backend-webgl":"3.0.0","@types/d3-format":"~1.3.0","@types/d3-selection":"~1.3.2","@types/jasmine":"~2.8.8","@types/json-stable-stringify":"~1.0.32","clang-format":"~1.2.2","jasmine":"~3.2.0","jasmine-core":"~3.2.0","karma":"~4.0.1","karma-browserstack-launcher":"~1.6.0","karma-chrome-launcher":"~2.2.0","karma-firefox-launcher":"~1.1.0","karma-jasmine":"~2.0.0","karma-safari-launcher":"~1.0.0","karma-typescript":"~4.1.1","karma-typescript-es6-transform":"~4.1.1","npm-run-all":"~4.1.5","preact-render-spy":"~1.3.0","rimraf":"~2.6.2","tslint":"~5.11.0","tslint-no-circular-imports":"~0.5.0","typescript":"3.5.3","webpack":"~4.16.3","webpack-cli":"~3.1.0","yalc":"~1.0.0-pre.21"},"peerDependencies":{"@tensorflow/tfjs-core":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.5.0","_nodeVersion":"15.5.0","_npmVersion":"7.3.0","dist":{"integrity":"sha512-40iXfb0a9sXWO1XpdWwiRUz8a/FhDu5f4BEFfF8CkJCffaUV59QM2yBIGrTkHFLGCYBFgByJ+BPb2QqPHLaWJw==","shasum":"65f0ea4995ee8e618606e25f46e6c12c66e3160d","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.5.0.tgz","fileCount":161,"unpackedSize":13295395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEegCCRA9TVsSAnZWagAA5G0P/AtQcylhCp21VQsnURoc\nXGoQU0KK3jINIbmO6oBMDCV/n+7ElUNb4zgEjJ6O4bEB6VwmOKhQX+8MNfQD\nv/3VCde4H4k9PAYk7KccXuFUFP4Vt1tcFOXJZi4Sh/ZnEQTgI5yJ7ULxKFFp\noDqDCv/Ry1PQ9/YzH9BxT7XtpynhKuWblrvy5CWUEEx8Ut2VTC4izucoiXvq\ngoOjedriSyca9DEh/ihrr0woZ2mPMdNwJFICiqRZ/mIDNbxG5YxLtDacZup0\nYj2n3UPOXZG/NVCMuh7xjeeJxEhdtD3Z6im9SDHFeZz/HwXzwjN77/1yoaP1\nZAIccVAZj/M5XL1t6y9sQy4zMJSCU9oga6/XFCqOSyfAN/mvpryM00NJFRpM\nqL8gTWJCFAhOL/rm7vh1OzPDndBO0Vz9TWu/jSjGy/z6z/2roUBQZyYGsK1Y\nAb0zOxn7+zIaIdFhSRgnl/sRWiAEkjARlsv3vx6uae9FgIpiuEEf622rjPno\nqY0xn9lNj5og2Nq8hZv3x1s0pjiZ13a75XBS3rvh1c1i7/vw8TZAG8T5breg\nNKkUBBQreVEyZwJvbC4vnC3VFG11zwzv9dAmVOq3xj2TStUuZsUNGbgzk8w2\nWNQNb4Zi9lj0OO1n+ru9YeUXKjhOj/uU7qlHG1nBvgQSzlRXR6FWQF4uFbfo\nBuGW\r\n=Mrpz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+vKgqs+gbgepLTSvhoU22bi1qg7uwJOMIKOI2pF71RAiBWMHf9yXWNXDAjrZbceSc7rLsYityjUXmqaxgv8D6goQ=="}]},"_npmUser":{"name":"tafsiri","email":"yassogba@gmail.com"},"directories":{},"maintainers":[{"name":"mattsoulanille","email":"matthew@soulanille.net"},{"name":"nkreeger","email":"nick.kreeger@gmail.com"},{"name":"pyu10055","email":"ping.yu.11@gmail.com"},{"name":"dsmilkov","email":"dsmilkov@gmail.com"},{"name":"nsthorat","email":"nsthorat@google.com"},{"name":"davidsoergel","email":"soergel@google.com"},{"name":"tafsiri","email":"yassogba@gmail.com"},{"name":"caisq","email":"cais@google.com"},{"name":"ericdnielsen","email":"ericdnielsen@gmail.com"},{"name":"bileschi","email":"bileschi@gmail.com"},{"name":"annxingyuan","email":"annyuan@gmail.com"},{"name":"kangyizhang","email":"kangyizhang@google.com"},{"name":"linazhao128","email":"linazhao128@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.5.0_1611786241589_0.46936990893894803"},"_hasShrinkwrap":false},"1.5.1":{"name":"@tensorflow/tfjs-vis","version":"1.5.1","description":"Utilities for in browser visualization with TensorFlow.js","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"license":"Apache-2.0","private":false,"main":"dist/index.js","jsdelivr":"dist/tfjs-vis.umd.min.js","unpkg":"dist/tfjs-vis.umd.min.js","types":"dist/index.d.ts","scripts":{"build":"tsc && NODE_ENV=production webpack","lint":"tslint -p . -t verbose","test":"yarn && yarn build && karma start","test-dev":"karma start","run-flaky":"node ../scripts/run_flaky.js","run-browserstack":"karma start --singleRun --reporters='dots,karma-typescript,BrowserStack' --hostname='bs-local.com'","test-ci":"./scripts/test-ci.sh","build-npm":"./scripts/build-npm.sh","link-local":"yalc link","publish-local":"rimraf dist/ && yarn build && yalc push"},"dependencies":{"d3-format":"~1.3.0","d3-selection":"~1.3.0","glamor":"~2.20.40","preact":"~8.2.9","vega":"5.20.0","vega-embed":"6.17.0","vega-lite":"4.13.1"},"devDependencies":{"@tensorflow/tfjs-backend-webgl":"3.5.0","@tensorflow/tfjs-core":"3.5.0","@tensorflow/tfjs-layers":"3.5.0","@types/d3-format":"~1.3.0","@types/d3-selection":"~1.3.2","@types/jasmine":"~2.8.8","@types/json-stable-stringify":"~1.0.32","clang-format":"~1.2.2","jasmine":"~3.2.0","jasmine-core":"~3.2.0","karma":"^6.3.1","karma-browserstack-launcher":"~1.6.0","karma-chrome-launcher":"~2.2.0","karma-firefox-launcher":"~1.1.0","karma-jasmine":"~2.0.0","karma-safari-launcher":"~1.0.0","karma-typescript":"~5.5.1","karma-typescript-es6-transform":"~4.1.1","npm-run-all":"~4.1.5","preact-render-spy":"~1.3.0","rimraf":"~3.0.2","tslint":"~6.1.3","tslint-no-circular-imports":"~0.7.0","typescript":"3.5.3","webpack":"^5.28.0","webpack-cli":"^4.5.0","yalc":"~1.0.0-pre.50"},"peerDependencies":{"@tensorflow/tfjs-core":">= 1.0.0"},"alias":{"react":"preact","react-dom":"preact"},"bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"homepage":"https://github.com/tensorflow/tfjs-vis#readme","_id":"@tensorflow/tfjs-vis@1.5.1","_nodeVersion":"14.16.0","_npmVersion":"7.6.2","dist":{"integrity":"sha512-oNithKiR7VZaE+xUvz6Leww4TYEPhKi8j5xnEYvT3j7brK2Njdvril7UgFtZ8EYZBdeX6XNim5Eu3/23gTQ1dA==","shasum":"e959832ee42ed99f71b073a3e6cf8bbfe136e589","tarball":"https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.5.1.tgz","fileCount":162,"unpackedSize":12713987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgghh/CRA9TVsSAnZWagAA6LUP/1Jqqd9x3vnkhB1e8pzD\ngF3kNs/Amg3HrK9Kgeg2KHIRqbxPfk42Bo3uogCYOmV8oREb8nIUpEQrv8j0\nsTl9U20qgDlOThdGdjjvf+HnmoWo2GWw/C+R97cytF3sBuXV56zRhX5SR3Wq\ntMIN0mV9x7RdLFePWUbvjzlX/qek7h0jdViLeOUgo4CMTJTuwKPztW2A0L/U\nl5e1PMJS1ed97aJQR6ggY+uLuEZLF2iMwUWw2aTfzrI6xHadr3zJz7EvzfSn\nyYCz1a/GNDHVkaE0Zy0v6BD2iptt143FUYlz/K6YUlpZQ7qfzZZUnEuWyi/7\n3DQ/bZ1HT3oMtP6p0ilRskSWci1N3Yb/wtuJOBak2eHT0EREL1BMKZMWW7gT\ndYo7/xLMODFx4+p3r7A1qSKVJDROR2x5RRKbislKpsIfVrOcr6d3Wf5CEWRQ\ndbB+Gl7UHd6wjXQ4YI3fRRJj0LVW9OxuoBb2VheAuCKL/z3dkWahvvSzzZ/3\n3wyMBNTJRPBZzOHoMCmdUPLiaytCbPU18c+wMw0Uum704Mm+Tuw1Nq80cwNB\nH8DiDoOOGl09PXnxRsWO2nKV3E53MYhiq94k6j/Khes4PcUj8dutkSibpkvf\nsoltfU0wsx6448mxK6lAgnL/SJxeEWad6SJA/9c46yZ4/Wih3dMGc7bskJWP\ndUom\r\n=8tha\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICu8Z2OefP/syP+GlrO81O7n1LN3EI1t6oB9HLbZQTUTAiEAh8cdtbxZiXC1uuZ4OdpizOCdaZIsb2Y380roUC37bHc="}]},"_npmUser":{"name":"jinjingforever","email":"jinjingforever@gmail.com"},"directories":{},"maintainers":[{"name":"jinjingforever","email":"jinjingforever@gmail.com"},{"name":"mattsoulanille","email":"matthew@soulanille.net"},{"name":"pyu10055","email":"ping.yu.11@gmail.com"},{"name":"dsmilkov","email":"dsmilkov@gmail.com"},{"name":"nsthorat","email":"nsthorat@google.com"},{"name":"tafsiri","email":"yassogba@gmail.com"},{"name":"caisq","email":"cais@google.com"},{"name":"annxingyuan","email":"annyuan@gmail.com"},{"name":"kangyizhang","email":"kangyizhang@google.com"},{"name":"linazhao128","email":"linazhao128@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tfjs-vis_1.5.1_1619138687204_0.22076057382826253"},"_hasShrinkwrap":false}},"time":{"created":"2018-09-19T18:57:51.108Z","0.0.1":"2018-09-19T18:57:51.413Z","modified":"2023-11-10T23:53:44.780Z","0.1.0":"2018-09-19T20:56:44.564Z","0.1.1":"2018-09-19T21:24:11.394Z","0.2.0":"2018-10-11T14:24:36.572Z","0.3.0":"2018-11-08T14:20:15.466Z","0.4.0":"2018-12-07T20:17:57.879Z","0.4.1":"2019-01-03T22:47:01.345Z","0.4.2-alpha.1":"2019-01-04T00:05:26.534Z","0.4.2-alpha.2":"2019-01-04T00:31:27.331Z","0.4.2-alpha.3":"2019-01-04T00:38:28.144Z","0.4.2-alpha.4":"2019-01-04T00:57:17.086Z","0.4.2":"2019-01-04T16:51:22.771Z","0.5.0":"2019-01-31T17:02:23.654Z","0.5.1":"2019-02-26T19:41:10.214Z","1.0.0":"2019-03-05T21:21:36.733Z","1.0.1":"2019-03-06T16:17:48.840Z","1.0.2":"2019-03-06T17:19:36.009Z","1.0.3-alpha.0":"2019-03-11T19:23:04.582Z","1.0.3-alpha.1":"2019-03-11T19:39:21.282Z","1.0.3-alpha.2":"2019-03-11T20:09:24.580Z","1.0.3-alpha.3":"2019-03-11T21:02:06.392Z","1.0.3-alpha.5":"2019-03-11T21:43:14.241Z","1.0.3-alpha.6":"2019-03-12T16:00:54.236Z","1.0.3-alpha.7":"2019-03-12T16:27:50.320Z","1.0.3":"2019-03-12T19:38:36.055Z","1.1.0":"2019-05-02T20:12:37.578Z","1.2.0":"2019-09-25T14:22:35.639Z","1.3.0":"2019-11-04T16:18:51.713Z","1.4.0":"2020-01-14T22:03:17.041Z","1.4.1":"2020-06-09T15:39:11.162Z","1.4.2-pre.1":"2020-06-10T01:41:19.719Z","1.4.2":"2020-06-10T19:18:56.730Z","1.4.3":"2020-06-15T16:17:21.376Z","1.5.0":"2021-01-27T22:24:01.846Z","1.5.1":"2021-04-23T00:44:47.407Z"},"maintainers":[{"email":"delhibabu@google.com","name":"delhibabu"},{"email":"laxmareddyp@google.com","name":"laxma4675"},{"email":"yaofengwu123@gmail.com","name":"fengwuyao"},{"email":"linchan@google.com","name":"linchan"},{"email":"ping.yu.11@gmail.com","name":"pyu10055"},{"email":"cais@google.com","name":"caisq"},{"email":"annyuan@gmail.com","name":"annxingyuan"},{"email":"linazhao128@gmail.com","name":"linazhao128"},{"email":"matthew@soulanille.net","name":"mattsoulanille"},{"email":"jinjingforever@gmail.com","name":"jinjingforever"}],"description":"Utilities for in browser visualization with TensorFlow.js","homepage":"https://github.com/tensorflow/tfjs-vis#readme","repository":{"type":"git","url":"git+https://github.com/tensorflow/tfjs-vis.git"},"bugs":{"url":"https://github.com/tensorflow/tfjs-vis/issues"},"license":"Apache-2.0","readme":"# tfjs-vis\n\n__tfjs-vis__ is a small library for _in browser_ visualization intended for use\nwith TensorFlow.js.\n\nIts main features are:\n\n* A set of visualizations useful for visualizing model behaviour\n* A set of high level functions for visualizing objects specific to TensorFlow.js\n* A way to organize visualizations (the visor) of model behaviour that won't interfere with your web application\n\nThe library also aims to be flexible and make it easy for you to incorporate\ncustom visualizations using tools of your choosing, such as d3, Chart.js or plotly.js.\n\n## Example Screenshots\n\n### Training Metrics\n\n![Training metrics (loss and accuracy) for a model](https://storage.googleapis.com/tfjs-assets/tfjs-vis/tfjs-vis-training.png)\n\n### Model Evauation\n\n![Dataset accuracy metrics in a table and confusion matrix visualization](https://storage.googleapis.com/tfjs-assets/tfjs-vis/tfjs-vis-evaluation.png)\n\n### Model Internals\n\n![Model summary table and histogram of conv2d weights](https://storage.googleapis.com/tfjs-assets/tfjs-vis/tfjs-vis-model-details.png)\n\n### Activations and custom visualizations\n\n![visualization of dataset activations in a conv2d layer and a dense layer](https://storage.googleapis.com/tfjs-assets/tfjs-vis/tfjs-vis-model-internals.png)\n\n\n## Demos\n\n- [Visualizing Training with tfjs-vis](https://storage.googleapis.com/tfjs-vis/mnist/dist/index.html)\n- [Looking inside a digit recognizer](https://storage.googleapis.com/tfjs-vis/mnist_internals/dist/index.html)\n\n## Installation\n\nYou can install this using npm with\n\n```\nnpm install @tensorflow/tfjs-vis\n```\n\nor using yarn with\n\n```\nyarn add @tensorflow/tfjs-vis\n```\n\nYou can also load it via script tag using the following tag, however you need\nto have TensorFlow.js also loaded on the page to work. Including both is shown\nbelow.\n\n```\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs\"> </script>\n<script src=\"https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis\"></script>\n```\n\n## API\n\nSee https://js.tensorflow.org/api_vis/latest/ for interactive API documentation.\n\n## Sample Usage\n\n```js\nconst data = [\n  { index: 0, value: 50 },\n  { index: 1, value: 100 },\n  { index: 2, value: 150 },\n];\n\n// Get a surface\nconst surface = tfvis.visor().surface({ name: 'Barchart', tab: 'Charts' });\n\n// Render a barchart on that surface\ntfvis.render.barchart(surface, data, {});\n```\n\n## Issues\n\nFound a bug or have a feature request? Please file an [issue](https://github.com/tensorflow/tfjs/issues/new) on the main [TensorFlow.js repository](https://github.com/tensorflow/tfjs/issues)\n\n## Building from source\n\nTo build the library, you need to have node.js installed. We use `yarn`\ninstead of `npm` but you can use either.\n\nFirst install dependencies with\n\n```\nyarn\n```\n\nor\n\n```\nnpm install\n```\n\nThen do a build with\n\n```\nyarn build\n```\n\nor\n\n```\nnpm run build\n```\n\nThis should produce a `tfjs-vis.umd.min.js` file in the `dist` folder that you can\nuse.\n\n\n","readmeFilename":"README.md"}